1

以下のように、方程式frで解こうとしています。

syms rho
C0 = 0.5;
a_bar = sqrt(-log((1-C0)/(1+C0)));
l = 0.77;
f = @(r) exp(-r^2)*int(rho*exp(-rho^2)*besseli(0,2*r*rho),rho,0,a_bar)-(l-1)*int(rho*exp(-rho^2),rho,0,a_bar);
r1 = fzero(f,1);

ただし、最初の積分 (ベッセリを含む) からのシンボリック出力は、fzero にエ​​ラーを与えています。問題は、besseli に rho が含まれているようです (この rho のインスタンスを削除すると、エラーは発生しません)。

subs と eval をいじって、全体をシンボリックに解いてみましたが、正直言って試行錯誤でした。私が見逃している単純なものがあると確信しています-どんな助けも素晴らしいでしょう!

乾杯、

アラン

4

1 に答える 1

0

私の質問へのコメントでDavidが示唆したようにdouble、関数内に含めることでこの問題が解決します。すなわち:

f = @(r) double(exp(-r^2)*int(rho*exp(-rho^2)*besseli(0,2*r*rho),rho,0,a_bar)-(l-1)*int(rho*exp(-rho^2),rho,0,a_bar));
r1 = fzero(f,1);

これは、シンボリック式 (rho と r を含む) を数値オブジェクトに変換するときに機能します。私の方程式には根がありませんが、それは私の事前の作業の問題です。

これについて助けてくれた David と Mad Physicist に再び感謝します。

于 2015-11-25T00:36:36.327 に答える