Re: [問題] 如何用eval寫出兩個for?已回收
: 沒有很懂
: 如果已知 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列
:
: 還請指教
:
: 感激不盡!
你的資料給的不夠多
我只能用現有的資訊來寫
就你原本列的範例方程式來說
eq1='c1*x1 + c2*x2 = y1';
eq2='c1*x2 + c2*x3 = y2';
eq3='c1*x3 + c2*x4 = y3';
x1~x4未知
c1和c2已知
y1~y3已知
想要解x1~x4
可以先將方程式處理一下
c1*x1 + c2*x2 + 0*x3 + 0*x4 = y1
0*x1 + c1*x2 + c2*x3 + 0*x4 = y2
0*x1 + 0*x2 + c1*x3 + c2*x4 = y3
然後改寫矩陣格式
┌ ┐┌ ┐ ┌ ┐
│ c1 c2 0 0 ││ x1 │ │ y1 │
│ 0 c1 c2 0 ││ x2 │=│ y2 │
│ 0 0 c1 c2 ││ x3 │ │ y3 │
└ ┘│ x4 │ └ ┘
└ ┘
儲存成AX=B形式
A = [ c1 c2 0 0 ; 0 c1 c2 0 ; 0 0 c1 c2 ]
B = [ y1 ; y2 ; y3 ]
有了A和B矩陣便可將X解出來
但三條方程式理論上是不能解四個未知數的
我是不太清楚你的問題還有啥資訊
總之這樣未知數比方程式還多的情形
就算成功弄出eval來用solve解聯立
所得到的答案還是有一定的問題
矩陣運算法請用X = pinv( A ) * B
若是最後處理出未知數與方程式一樣多的話
直接用X = inv( A ) * B即可
--
On the surface, your parents sought a private life, using their great talents
to provide for you. They learned to twist the lies of church and government,
believing themselves masters of the system. But the parasites say "NO! The
child has a duty! He'll go to war and die for the nation."
─Andrew Ryan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.231.210
※ 編輯: Gwaewluin 來自: 220.131.231.210 (11/18 20:08)
推
11/18 21:01, , 1F
11/18 21:01, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章