Undefined function or variable 'fr' and 'xm'

1 Ansicht (letzte 30 Tage)
Juliano Martins
Juliano Martins am 22 Sep. 2017
Bearbeitet: James Tursa am 22 Sep. 2017
Hello, I am trying to do this exercise of finding a root by using the bisection method and the false position method. But, when compiling, it keeps saying this error. Can someone help me?
the code:
clear all clc
f =@(x)(1.67*cos(40.0))-(2.5*cos(x))+(1.83-cos((40.0-x)));
a0=input('Entre com a primeira aproximação a0:');
b0=input('Entre com a segunda aproximação b0:');
tol=input('Entre com o valor da tolerancia:');
while (abs(b0-a0)>tol)
xm =(a0+b0)/2;
if((f(a0)*f(xm)<0))
b0=xm
else
a0=xm
end
end
fprintf("A Raiz da equação pelo método da bissecção é= %f\n", xm);
%Regula Falsi
f1 = f(a0)
f2= f(b0)
while (abs(b0-a0)>tol)
fr = (((a0)*f1)-((b0)*f2))/(f2-f1);
y=f(fr);
if((f1*y>0))
a0=fr;
f1=y;
else
b0=fr;
f2=y;
end
end
fprintf("%f",fr);

Antworten (1)

James Tursa
James Tursa am 22 Sep. 2017
Bearbeitet: James Tursa am 22 Sep. 2017
Your bisection method changes a0 and b0, which are then fed into your false position method as the starting point. You need to remember the starting point and make sure you feed that same starting point into both methods.
Also, it a0 and b0 are really good guesses and pass the tol test immediately, you never set xm or fr.

Kategorien

Mehr zu App Building finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by