Finding zeros of an equation
Mostrar comentarios más antiguos
How do you find all zeros of an equation?
I have this problem and I'm suppose to find all the zeros of 3x^3 - 12x^2 - 33x + 80 over the range -10< x <10. I graphed it on my calculator and it clearly crosses the x-axis 3 times over -10 < x < 10.
When I do the problem in matlab it only gives me one of the zeros?
Any suggestions on how to find all the zeros?
Thank you.
1 comentario
Steven
el 31 de Mzo. de 2012
Respuestas (4)
Wayne King
el 31 de Mzo. de 2012
C = [3 -12 -33 80];
Pzeros = roots(C);
Pzeros
2 comentarios
Steven
el 31 de Mzo. de 2012
Jared Jones
el 14 de Mzo. de 2016
the roots of the function are all the points where your function equals zero. fzero is mainly used for nonlinear functions.
Wayne King
el 31 de Mzo. de 2012
Steven, In this case the roots are exactly the points you are looking for.
Please convince yourself:
C = [3 -12 -33 80];
Pzeros = roots(C);
x = -10:0.01:10;
y = 3*x.^3-12*x.^2-33*x+80;
plot(x,y)
grid on;
hold on
plot(Pzeros,zeros(length(Pzeros)),'r*','markersize',10);
3 comentarios
Steven
el 31 de Mzo. de 2012
Wayne King
el 31 de Mzo. de 2012
Write the primary function to accept the coefficients of the polynomial like the C vector above. Use roots() as a subfunction to find the zeros and then check the sign of the polynomial to the left and right of the zero, then you'll know whether it crosses the x-axis.
Steven
el 31 de Mzo. de 2012
bym
el 1 de Abr. de 2012
if you insist on using a subfunction , consider the following:
function x = myroots(y)
% y is an integer range to find the roots in
n = y(1):y(2);
for k = 1:numel(n)
fx=@(x)(3.*x.^3)-(12.*x.^2)-(33.*x)+80;
r(k) = fzero(fx,k);
end
separate(r)
function a = separate(r)
a = sort(r(abs(diff(r))>10*eps));
end
end
however it is sensitive to range given. Works for range[-10,10], other ranges may give different results
1 comentario
Walter Roberson
el 1 de Abr. de 2012
That's an example of a function that is a nested function but not a subfunction. To be a subfunction there would have to be a shared variable.
Categorías
Más información sobre Numeric Solvers en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!