RegulaFalsi
Publicado por Vicente (3 intervenciones) el 02/05/2017 17:50:25
Esto haciendo el metodo de la Regula Falsi:
Pero me da este error:
Index exceeds matrix dimensions.
Error in RegulaFalsi (line 24)
xr(i+1)=xa(i+1)-f1*(xb(i+1)-xa(i+1))/(f2-f1);
Error in P5_3 (line 12)
RegulaFalsi(f,0,2,10^-3)
No veo porque se sale de la matriz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function [ X ] = RegulaFalsi( f,xai,xbi,tol )
syms x;
f1=subs(f,x,xai);
f2=subs(f,x,xbi);
i=1;
ea(1)=100;
if f1*f2 < 0
xa(1)=xai;f1=subs(f,x,xa(1));
xb(1)=xbi;f2=subs(f,x,xb(1));
xr(1)=xa(1)-f1*(xb(1)-xa(1))/(f2-f1); f3=subs(f,x,xr(1));
fprintf('It. Xa Xr Xb Error aprox \n');
fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \n',i,xa(i),xr(i),xb(i));
while abs(ea(i))>=tol,
if f1*f3 < 0
xa(i+1)=xa(i);f1=subs(f,x,xa(i+1));
xb(i+1)=xr(i);f2=subs(f,x,xb(i+1));
end
if f1*f3> 0
xa(1)=xr(i);
xb(1)=xb(i);
end
xr(i+1)=xa(i+1)-f1*(xb(i+1)-xa(i+1))/(f2-f1);
ea(i+1)=abs((xr(i+1)-xr(i))/(xr(i+1)))*100;
fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %7.3f \n',...
i+1,xa(i+1),xr(i+1),xb(i+1),ea(i+1));
i=i+1;
end
else
fprintf('No existe una raíz en ese intervalo');
end
end
1
2
3
4
5
6
7
8
9
10
11
syms x;
f = x^2 -sin(x) -0.5;
% funcion f | intervalo [0,2] | tolerancia 10^-3 | error = 10^-3 | n = 4
RegulaFalsi(f,0,2,10^-3)
% funcion f | intervalo [-1,0] | tolerancia 10^-3 | error = 10^-3 | n = 4
RegulaFalsi(f,-1,0,10^-3)
% funcion f | intervalo [-1,0] | tolerancia 10^-3 | error = 10^-3 | n = 4
RegulaFalsi(f,-1,0,10^-5)
Pero me da este error:
Index exceeds matrix dimensions.
Error in RegulaFalsi (line 24)
xr(i+1)=xa(i+1)-f1*(xb(i+1)-xa(i+1))/(f2-f1);
Error in P5_3 (line 12)
RegulaFalsi(f,0,2,10^-3)
No veo porque se sale de la matriz
Valora esta pregunta
0