Re: [問題] solve內如果有200個eq怎麼列呢?已回收
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章