Index exceeds matrix dimensions. ¿Cómo solucionarlo?
Publicado por Zulema (3 intervenciones) el 12/10/2019 05:01:50
Hola!! Necesito ayuda con un programa que sirve para calcular la raíz de un número mediante el método de "Regula Falsi" o "Falsa Posición".
El código lo encontré de un programa que encontré online para calcular la raíz por el método de bisección, traté de adaptarlo al método de "Falsa posición" y ahora tengo un problema con ese mensaje de Index exceeds matrix dimensions
el error lo detecta en la línea 28 (xr(it+1)=xu(it+1)-((fxu(it+1)*(xi(it+1)-xu(it+1)))/(fxi(it+1)-fxu(it+1))); fxr=subs(f,x,xr(it+1));)
Se los agradeceré muchísimo si pudiesen ayudarme
El código lo encontré de un programa que encontré online para calcular la raíz por el método de bisección, traté de adaptarlo al método de "Falsa posición" y ahora tengo un problema con ese mensaje de Index exceeds matrix dimensions
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
34
35
36
syms x;
f=input('Ingrese ecuación\nf(x)= ');
xii=input('Ingrese el valor de Xi: ');
xui=input('Ingrese el valor de Xu: ');
es=input('Ingrese el porcentaje de error: ');
it=1;
fxi=subs(f,x,xii);
fxu=subs(f,x,xui);
ea(it)=100;
if fxi*fxu < 0
xi(it)=xii; fxi=subs(f,x,xi(it));
xu(it)=xui; fxu=subs(f,x,xu(it));
xr(it)=xu(it)-((fxu(it)*(xi(it)-xu(it)))/(fxi(it)-fxu(it))); fxr=subs(f,x,xr(it));
fprintf('It. Xi Xr Xu Error aprox \n');
fprintf('%2d \t %11.7f \t %11.7f \t %11.7f\n',it,xi(it),xr(it),xu(it));
while abs(ea(it)) >= es,
if fxi*fxr<0
xi(it+1)=xi(it);fxi=subs(f,x,xi(it+1));
xu(it+1)=xr(it);fxu=subs(f,x,xu(it+1));
end
if fxi*fxr>0
xi(it+1)=xr(it);fxi=subs(f,x,xi(it+1));
xu(it+1)=xu(it);fxu=subs(f,x,xu(it+1));
end
xr(it+1)=xu(it+1)-((fxu(it+1)*(xi(it+1)-xu(it+1)))/(fxi(it+1)-fxu(it+1))); fxr=subs(f,x,xr(it+1));
ea(it+1)=abs((xr(it+1)-xr(it))/(xr(it+1))*100);
fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %7.3f\n',it+1,xi(it+1),xr(it+1),xu(it+1),ea(it+1));
it=it+1;
end
fprintf('\n\nLa raiz de la ecuación es %.6f',xr(it));
else
fprintf('No existe una raíz en ese intervalo');
end
el error lo detecta en la línea 28 (xr(it+1)=xu(it+1)-((fxu(it+1)*(xi(it+1)-xu(it+1)))/(fxi(it+1)-fxu(it+1))); fxr=subs(f,x,xr(it+1));)
Se los agradeceré muchísimo si pudiesen ayudarme
Valora esta pregunta


0