solve Bassel function matlab
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (2)
John D'Errico
il 17 Mag 2017
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 Commenti
Star Strider
il 17 Mag 2017
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 Commenti
Vedere anche
Categorie
Scopri di più su Bessel functions in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!