Matlab - Index exceeds matrix dimensions.

 
Vista:

Index exceeds matrix dimensions.

Publicado por Juan Jimenez (1 intervención) el 23/02/2021 21:49:24
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
clc
clear all
x=-5:0.01:5;
fdx=sin(x);
plot(x,fdx,'color','r');
line([-5,5],[0,0],'color', 'k');
%genera la grafica de la funcion para asi encontrar Xi y Xu
xi=input('Valor xi:')
xu=input('Valor xu:')
%Evaluar la funcion en los valores
for i=1:30
fdxi=sin(xi)
fdxu=sin(xu)
if (fdxi*fdxu)<0
    xr=(xi+xu)/2;
    fdxr=sin(xr);
    if(fdxi*fdxr)<0
        xu=xr;
    else if(fdxi*fdxr)>0
            xi=xr;
        end
    end
end
if(fdxi*fdxr)==0
    break
end
hold on
plot(xr,0,'o')
end
plot(xr,0,'*','color','k');
xr=0; xr=NaN; n=10;
for i=1:n
    xr(i)=(xi+xu)/2
    e(i)=(abs(xr(i+1)-xr(i))/xr(i+1)*100)
end


Index exceeds matrix dimensions.

Error in Biseccioncorregido (line 34)
e(i)=(abs(xr(i+1)-xr(i))/xr(i+1)*100)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jon
Val: 354
Ha aumentado 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Index exceeds matrix dimensions.

Publicado por Jon (161 intervenciones) el 24/02/2021 09:01:01
Buenos días Juan,

El problema es que estás intentando indexar la segunda posición (i+1) del vector xr en la primera vuelta del bucle cuando solo tiene un valor todavía.

Yo te propongo lo siguiente, aunque no entiendo el objetivo de este bucle puesto que en todos los casos el error es 0.

1
2
3
4
5
xr(1) = (xi+xu)/2;
for i=1:n
    xr(i+1)=(xi+xu)/2
    e(i)=(abs(xr(i+1)-xr(i))/xr(i+1)*100)
end

Espero que te sirva de ayuda.

Un saludo,

Jon
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Index exceeds matrix dimensions.

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 24/02/2021 13:56:55
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
37
38
clc
clear
close all
x=-5:0.01:5;
fdx=sin(x);
plot(x,fdx,'color','r');
 hold on
line([-5,5],[0,0],'color', 'k');
%genera la grafica de la funcion para asi encontrar xi y xu
%xi=input('Valor xi:');
%xu=input('Valor xu:');
xi=-1.4; xu=1.3;
%Evaluar la funcion en los valores
for i=1:30
    fdxi=sin(xi);
    fdxu=sin(xu);
    if fdxi*fdxu <0
             xr=(xi+xu)/2;
             fdxr=sin(xr);
            if fdxi*fdxr<0
                    xu=xr;
            elseif fdxi*fdxr>0
                    xi=xr;
            end
    end
    if fdxi*fdxr==0
            break
    end
    plot(xr,0,'o')
    Xr(i)=xr;
end
 
plot(xr,0,'*','color','k');
%xr=0; xr=NaN; n=10;
for i=1:length(Xr)-1
    e(i)=(abs(Xr(i+1)-Xr(i))/Xr(i+1)*100);
end
hold off

Saludos
JOSE JEREMIAS CABALLERO
Asesoría Online en Proyectos con Matlab
Asesorías online en Métodos Numéricos con Matlab, Octave, Java, Freemat, Scilab , Python, Excel y C++
[email protected]


https://programacioncaballero.blogspot.com
https://www.facebook.com/programacioncaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar