[問題] 如何用eval寫出兩個for?已回收

看板MATLAB作者 (....)時間15年前 (2010/11/17 03:13), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串1/2 (看更多)
我原本有聯立方程組如下 eq1='c1*x1 + c2*x2 = y1'; eq2='c1*x2 + c2*x3 = y2'; eq3='c1*x3 + c2*x4 = y3'; . . . 因為方程式有點多 所幸寫成 for i=1:n sol=['eq' num2str(i) '=''c1*x' num2str(i) '+c2*x' num2str(i+1) '=y' num2str(i) ''';']; eval(sol); end 現在如果我想增加c的數目 從c1;c2增加到c1;c2;c3;.....;cn 可以自由選定c的數量產生相對應的sol 要怎麼寫才好呢 例如當c的數量有3個 c1;c2;c3 聯立方程就變成 eq1='c1*x1 + c2*x2 + c3*x3 = y1'; eq2='c1*x2 + c2*x3 + c3*x4 = y2'; eq3='c1*x3 + c2*x4 + c3*x5 = y3'; . . . sol就變成 sol=['eq' num2str(i) '=''c1*x' num2str(i) '+c2*x' num2str(i+1) '+c2*x' num2str(i+1) '=y' num2str(i) ''';']; 請問有辦法實現嗎? 希望有強者解惑 感激不盡! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 143.215.204.68

11/17 03:42, , 1F
為什麼不直接用矩陣解.....
11/17 03:42, 1F

11/17 09:33, , 2F
對啊,為啥不用矩陣解呢,eval和solve速度又慢
11/17 09:33, 2F

11/17 09:34, , 3F
這怎麼看都是線性方程式吧
11/17 09:34, 3F

11/17 11:28, , 4F
因為我現在有c有y 想求x 列成矩陣變成x*c=y 這樣怎麼解x?
11/17 11:28, 4F

11/17 15:22, , 5F
一樣啊,AX=B,c放到A矩陣裡,y放到B矩陣裡,解X即可
11/17 15:22, 5F
沒有很懂 如果已知 c=[c1;c2;c3]; y=[y1;y2;y3] 未知x矩陣 c為3x1矩陣 y也是3x1 那x就一定要就只能是1x1的矩陣?? 這樣好像有點怪怪的...? 因為我的x是一個序列 照理說應該是 x1 x2 x3 x=[x2 x3 x4] x3 x4 x5 x4 x5 x6 所以還真的不知道怎麼用AX=B列 還請指教 感激不盡! ※ 編輯: freezein 來自: 143.215.204.68 (11/17 23:21)
文章代碼(AID): #1CujV0Jn (MATLAB)
文章代碼(AID): #1CujV0Jn (MATLAB)