[問題] fsolve 解非線性方程式的問題已回收

看板MATLAB作者 (Let's go cubbies)時間13年前 (2010/12/01 08:01), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/2 (看更多)
請問一下版上的高手... 我想用 fsolve 解一個非線性方程式. 我有最初始的 H(1) 值.所以可以找出 H1(1) 和 H1(2). 然後每一個 H(i+1) 都是用 H1(i+1) 解出來的. 所以勢必要放在迴圈裡跑. function G = myfun(H) G = 1.535*(H-0.7)^(-2.715)+3.3-H1(1,j1+1); 我在主程式裡的迴圈寫成下面這樣.. ____________________________________________________ for j1=p1:N-1 H1(1,j1) = 1.535*(H(1,j1)-0.7)^(-2.715)+3.3; % Start point H1 FH1(1,j1) = 0.0306*(H1(1,j1)-3)^(-0.653); H1(1,j1+1) = (Ue(1,j1)*H1(1,j1)*Theta2(1,j1)+FH1(1,j1)*... Ue(1,j1)*ds(1,j1))/(Ue(1,j1+1)*Theta2(1,j1+1)); H(1,j1+1) = fsolve(@myfun,3); end ____________________________________________________ 可是一直有錯誤訊息說我沒有定義 j1 變數. 所以想請問一下版上的高手知道問題是在哪裡嗎..?? 看了很久的 help 檔還是不知道問題在哪. 貼上Matlab 給我的錯誤訊息. ______________________________________________________ ??? Undefined function or variable 'j1'. Error in ==> myfun at 3 G = 1.535*(H-0.7)^(-2.715)+3.3-H1(1,j1+1); Error in ==> fsolve at 253 fuser = feval(funfcn{3},x,varargin{:}); Error in ==> HW7 at 80 H(1,j1+1) = fsolve(@myfun,3); Caused by: Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue. _______________________________________________________ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 146.244.89.133

12/01 08:03, , 1F
你的myfun裡面有j1,但是ji卻無任何定義或是傳入
12/01 08:03, 1F

12/01 08:07, , 2F
因為我要定義 j1 在主程式裡..@@~
12/01 08:07, 2F

12/01 08:08, , 3F
還是說可以在 function 的 M file 裡也加入迴圈
12/01 08:08, 3F

12/01 08:08, , 4F
這樣 function 的迴圈會和主程式的同步進行嗎..??
12/01 08:08, 4F

12/01 11:44, , 5F
那你的傳入要再加個ji才行,函式的變數和主程式不互通的
12/01 11:44, 5F

12/01 11:44, , 6F
像這樣function G = myfun(H,j1)
12/01 11:44, 6F
文章代碼(AID): #1CzP0yZT (MATLAB)
文章代碼(AID): #1CzP0yZT (MATLAB)