[問題] function一個變數設定一問已回收

看板MATLAB作者時間16年前 (2009/03/01 17:25), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/1
我想寫的程式是利用自己寫一個function y=g(x)的m file 然後讓內建的fsolve去解我的函數g 可是我的變數相當複雜,所以我有在外面寫了一些變數像是qD,qM,zD,zM,phiD,phiM 主要就是因為y是一個很複雜的變數>"< 程式碼如下 ## function y=g(x) m=1 a=100 wavelength=647; k0=2*pi/wavelength; episonD=2.25; episonM=-16.8617+i*1.139; qD=(x^2-episonD).^0.5; qM=(episonM-x^2).^0.5; zD=k0*qD*a; zM=k0*qM*a; phiD=(m-zD*besselk(m+1,zD)/besselk(m,zD)); phiM=(m-zM*besselj(m+1,zM)/besselj(m,zM)); y=((qD^2*phiM+qM^2*phiD)*(episonM*qD^2*phiM+episonD*qM^2*phiD)/ (m^2*(episonD-episonM)))^0.5; ## 我遇到的第一個問題就是當他讀到 qD 他會說我裡面的x沒有定義, 但是我加了syms x在最前面我可以看到最後y以一堆數字和x表示的方法。 但是如果以 function y=g(x)時後,x不就在整個file就會寫成變數嗎? 還是我搞錯了>"< 煩請高手指點 但是當我用fsolve去解g這個函數時又會發生了錯誤, "??? Function 'norm' is not defined for values of class 'sym'." 我現在想得到的只有bessel會造成裡面可能為0/0 可是我還是不大懂那個錯誤的意思>"< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.162.108

03/01 19:12, , 1F
bessel有用到norm這個指令,這個指令不吃sym格式變數
03/01 19:12, 1F

03/01 19:18, , 2F
那這樣有什麼辦法嗎>< 還是我qM qD這些參數要另外寫成
03/01 19:18, 2F

03/01 19:18, , 3F
function的形式呢>"<
03/01 19:18, 3F

03/01 19:36, , 4F
bessel算的是數值解,你可能要改用數值方法去解了
03/01 19:36, 4F

03/01 20:36, , 5F
恩恩 那我再試試看 印象中fsolve也是數值去猜解吧>"<
03/01 20:36, 5F
※ 編輯: louchanfan 來自: 140.113.162.108 (03/02 01:24)
文章代碼(AID): #19gbIADd (MATLAB)
文章代碼(AID): #19gbIADd (MATLAB)