[討論] 請教關於符號變換與解方程式的問題

看板MATLAB作者 (無垠大地)時間5年前 (2019/02/28 22:21), 5年前編輯推噓2(208)
留言10則, 2人參與, 5年前最新討論串1/1
小弟有個關於符號轉換以及解方程式的問題想請教一下板上的大大, 我原始的code簡化如下: [步驟1] syms x y z a b c d (其中,x y z為我關心的內生變數,abcd為外生參數) e1 = ax+by e2 = cx-dy e3 = ax-cz E = symfun([e1;e2;e3],[x y z a b c d] ) [步驟2] 我想要解不同參數值下內生變數的值,但原本的模型很複雜, 沒有解析解(無法將內生變數簡化成以外生變數表示的形式)。 所以我只能土法煉鋼如下: TE = E(x,y,z,1,2,3,4) 然後Command Window就會得到特定參數值下的三條多項式: x+2y 3x-4y x-3z 為了解方程式,我另外建立一個function如下: function B = testfun(x) B = zeros(3,1); B(1) = x+2y B(2) = 3x-4y B(3) = x-3z end 然後利用ctrl+f,""手動""將x,y,z轉換成x(1) x(2) x(3) [步驟3] 接著在原本的m檔中用fsolve解方程式: SST = solve(@testfun,[0.5;0.5;0.5]) 因為有很多組參數值要測試,想請問一下大家怎麼修改code才可以輕鬆找出 不同參數值下的解。[步驟2]無限重複手很痠XDD (因為模型沒有解析解,常規的方法不管用) 我有嘗試過一開始就把x,y,z打成x(1) x(2) x(3),但command window會顯示 not a valid name >_<。 再請板上的大大幫忙,在此謝過!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.68.172.65 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1551363698.A.88C.html ※ 編輯: s4552752 (219.68.172.65), 02/28/2019 22:23:36

03/02 10:40, 5年前 , 1F
你這只是解聯立方程式吧?用不著solve找0解
03/02 10:40, 1F

03/02 10:40, 5年前 , 2F
把你的聯立方程式寫成矩陣形式,然後反除過去就得解了
03/02 10:40, 2F

03/02 10:42, 5年前 , 3F
更正:是「線性」聯立方程式,可直接寫出矩陣表達式
03/02 10:42, 3F

03/02 11:11, 5年前 , 4F
我原本的式子不是線性的,所以沒辦法用這個方式處理@@
03/02 11:11, 4F

03/02 11:53, 5年前 , 5F
既然你是想找xyz0解,你只是要try不同的係數abcd,那就
03/02 11:53, 5F

03/02 11:55, 5年前 , 6F
global a b c d 就可以將你要試的值pass 你的testfun裡
03/02 11:55, 6F

03/02 11:56, 5年前 , 7F
不需要去symfun吧?
03/02 11:56, 7F

03/02 11:58, 5年前 , 8F
所以你可以直接B(1)=a*x+by,B(2)B(3)類似
03/02 11:58, 8F

03/02 11:59, 5年前 , 9F
更正:B(1)=a*x(1)+b*x(2)
03/02 11:59, 9F

03/02 21:31, 5年前 , 10F
好的,我試試看。謝謝你的幫忙!
03/02 21:31, 10F
文章代碼(AID): #1ST-voYC (MATLAB)