solve Bassel function matlab
1 回表示 (過去 30 日間)
古いコメントを表示
I am trying to solve a Bessel function depending of a variable "x", for that reason I am using the fsolve command:
%%myfun
function F = myfun(x)
F = [1.5*(1-x)*besselj(0,x)-x*bessely(0,x)*(x.^2-1)];
%%main file
x0 = [0; 0];
[x,fval] = fsolve(@myfun,x0)
I do not understand what I am doing wrong.
Regards
0 件のコメント
回答 (2 件)
John D'Errico
2017 年 5 月 17 日
myfun is a function of ONE variable, x. There is only ONE unknown, so x should be a scalar.
But if that is true, then why have you provided a VECTOR starting value in x0?
0 件のコメント
Star Strider
2017 年 5 月 17 日
You need to (1.) vectorize every multiplication and division in your function, as well as the exponentiation, and (2.) start a a point close to (not at) 0 in order to avoid fsolve throwing a ‘Objective function is returning undefined values at initial point. FSOLVE cannot continue.’ error.
This works:
myfun = @(x) 1.5*(1-x).*besselj(0,x)-x.*bessely(0,x).*(x.^2-1);
x0 = [1; 1]*eps;
[x,fval] = fsolve(myfun,x0);
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Bessel functions についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!