I to create a function using besselj function and solve it using fzero to find eigenvalues like this...

9 vues (au cours des 30 derniers jours)
t = 1:.01:30;
x = t;
y = besselj(1,t);
t = 1:.01:30;
b = 10;
y2 = besselj(0,t);
x0=[0 30];
fun = t.*y - b.*y2 ;
z = fzero(fun, x0)
  1 commentaire
N/A
N/A le 3 Juin 2015
Whe I try to put this code at the MatLab it shows this message: Error using fzero (line 169) FUN must be a function, a valid string expression, or an inline function object.
Error in Try6 (line 9) z = fzero(fun, x0)

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 3 Juin 2015
Symbolically you seem to be trying to solve
t * BesselJ(1,t) - 10 * BesselJ(0,t)
probably for t. If that is the case, then code
fzero(@(t) t .* besselj(1,t) - 10 * besselj(0,t), x0)
Note: there are 10 zeros between 0 and 30, and fzero does not promise to find the first. It might refuse to find any because the expression is negative at both 0 and 30 and so fzero would not know that there is a zero crossing.
  5 commentaires
N/A
N/A le 3 Juin 2015
Thanks a lot!! But I also used this code: a = 0:30; for x0 = 1:length(a) t = 1:.01:10; z = x0; z = fzero(@(t) t .* besselj(1,t) - 10 * besselj(0,t), x0) end
with the above code I found all the values that I want. But some values show up more than once. Do you know how to do it to they show up only once?

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by