Re: [問題] solve內如果有200個eq怎麼列呢?已回收

看板MATLAB作者 (eji)時間15年前 (2010/11/08 07:47), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《freezein (....)》之銘言: : 請問如果我有200個eq='';這樣的聯立方程式 : 和200個未知數 : 最後想解 [x1~x200]=solve(eq1~eq200); : 然後想把x1~x200放到一個vector裡 : 請問這樣怎麼寫呢? : 只能一個一個列嗎? (ex. x1 x2 x3... ...x200) : 因為之後可能會增長到1000個 : 不知道該用甚麼方法才好 : 感謝!! solve的語法是 [x1,x2,...,xn]=solve(eq1,eq2,...,eq3); 使用迴圈將想要的字串做出來 這裡想做出 [x1,x2,...,xn] 及 (eq1,eq2,...,eqn) 最後再組成solve語法的字串配合eval求解 這裡我假設你的eq1~eqn都已經存在並且是字串 以下是3條方程式的範例 更多條只要改迴圈指標就好 clear;clc;format long eq1='x1+x2+x3-3'; eq2='x1+2*x2+x3-4'; eq3='x1+x2+2*x3-4'; x='['; eq='('; for i=1:3 x=[x,'x',num2str(i),',']; % x=[x,'xi,']; eq=[eq,'eq',num2str(i),',']; % eq=[eq,'eqi,']; end x(end)=']'; %最右邊會多一個, 將,取代為] eq(end)=')'; %最右邊會多一個, 將,取代為) sol=[x,'=solve',eq,';']; % 將solve語法的字串做出來 eval(sol) % 執行字串語法 x=eval(eval(x)) % 裡面的eval是執行[x1,x2,x3] 此時變數型態為sym % 外面的eval把sym轉成double -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.250.2.204

11/08 09:48, , 1F
感謝!! 這對我幫助很大^^"
11/08 09:48, 1F
文章代碼(AID): #1CrpgDik (MATLAB)
文章代碼(AID): #1CrpgDik (MATLAB)