Matlab - Iteraciones con ciclo

 
Vista:
sin imagen de perfil

Iteraciones con ciclo

Publicado por Eduardo (7 intervenciones) el 01/11/2013 04:30:13
Hola, necesito de su ayuda para crear un ciclo que me sustituya valores anteriores, con nuevos valores, para crear las iteraciones del método de Newton Para Ecuaciones no Lineales. Quiero que el programa me muestre las iteraciones hasta que sea el Error casi 0 y cuando esto se cumpla ahí se detenga. Lo e intentado varias veces sin resultados óptimos. Por favor necesito de su ayuda. ¡AGRADECERIA MUCHO LA AYUDA!. Les dejo el código de la primera iteracion. y les señalo cual seria el nuevo valor.
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Iteraciones con ciclo

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 03/11/2013 20:11:08
Copia en modalidad de texto. Para poder copiarlo y hacer los arreglos pertinentes.
Como haz copiado una imagen, entonces se invierte mucho tiempo en volver a reproducir tu código.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]



http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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
sin imagen de perfil

Iteraciones con ciclo

Publicado por Eduardo (7 intervenciones) el 04/11/2013 02:19:03
Gracias por decirme, lo que tengo que hacer, este es el código:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
clc;
disp('METODO DE NEWTON PARA SISTEMAS DE ECUACIONES NO LINEALES');
syms x y f g;
funcion_x= input('Introduce la primera Función: ');
funcion_g= input('Introduce la segunda Función: ');
x0= input('Introduce x0: ');
y0= input('introduce y0: ');
%DERIVADAS
der_funcion_fx=diff(funcion_x,x);
der_funcion_fy=diff(funcion_x,y);
der_funcion_gx=diff(funcion_g,x);
der_funcion_gy=diff(funcion_g,y);
%SUSTITUYENDO VALORES
%F
f1=subs(funcion_x,x,x0);
f=subs(f1,y,y0);
%G
f2=subs(funcion_g,x,x0);
g=subs(f2,y,y0);
%SUSTITUYENDO EN DERIVADAS
%FX
f3=subs(der_funcion_fx,x,x0);
fx=subs(f3,y,y0);
%FY
f4=subs(der_funcion_fy,x,x0);
fy=subs(f4,y,y0);
%GX
f5=subs(der_funcion_gx,x,x0);
gx=subs(f5,y,y0);
%GY
f6=subs(der_funcion_gy,x,x0);
gy=subs(f6,y,y0);
%DELTA X y DELTA Y
format long
delta_x=(-f*gy+g*fy)/(fx*gy-fy*gx);
delta_y=(-g*fx+f*gx)/(fx*gy-fy*gx);
delta_x=double(delta_x);
delta_y=double(delta_y);
disp('Delta x= ');
disp(delta_x);
disp('Delta y= ');
disp(delta_y);
x1=x0+delta_x;
y1=y0+delta_y;
disp('Nuevo Valor de x0');
disp(x1);
disp('Nuevo Valor de y0');
disp(y1);
%CALCULANDO ERROR
error=sqrt((x1-x0)^2+(y1-y0)^2);
disp('Error= ');
disp(error);
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
sin imagen de perfil

Iteraciones con ciclo

Publicado por Eduardo (7 intervenciones) el 04/11/2013 03:35:09
Perdón se me paso, la primera función es:
x^2-10*x+y^2+8

Segunda Función:
x*y^2+x-10*y+8

X0= 0
Y0= 0

con esos valores lo pruebo.

El primer valor de delta x es= 0.8
El primer valor de delta y es= 0.88
El primer error es= 1.1892
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

Iteraciones con ciclo

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 04/11/2013 03:45:07
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
clc;
 disp('METODO DE NEWTON PARA SISTEMAS DE ECUACIONES NO LINEALES');
 syms x y f g;
  funcion_x= input('Introduce la primera Función: ');
  funcion_g= input('Introduce la segunda Función: ');
  x0= input('Introduce x0: ');
  y0= input('introduce y0: ');
%funcion_x=x^2-10*x+y^2+8
%funcion_g=x*y^2+x-10*y+8
%x0=0; y0=0;
 %DERIVADAS
 der_funcion_fx=diff(funcion_x,x);
 der_funcion_fy=diff(funcion_x,y);
 der_funcion_gx=diff(funcion_g,x);
 der_funcion_gy=diff(funcion_g,y);
 X(1)=x0; Y(1)=y0;
 N=2;
 for i=1:N
 %SUSTITUYENDO VALORES
 %F
 f1=subs(funcion_x,x,X(i));
 
 f=subs(f1,y,Y(i));
 %G
 f2=subs(funcion_g,x,X(i));
 g=subs(f2,y,Y(i));
 %SUSTITUYENDO EN DERIVADAS
 %FX
 f3=subs(der_funcion_fx,x,X(i));
 fx=subs(f3,y,Y(i));
 %FY
 f4=subs(der_funcion_fy,x,X(i));
 fy=subs(f4,y,Y(i));
 %GX
 f5=subs(der_funcion_gx,x,X(i));
 gx=subs(f5,y,Y(i));
 %GY
 f6=subs(der_funcion_gy,x,X(i));
 gy=subs(f6,y,Y(i));
 %DELTA X y DELTA Y
 format long
 delta_x=(-f*gy+g*fy)/(fx*gy-fy*gx);
 delta_y=(-g*fx+f*gx)/(fx*gy-fy*gx);
 delta_x=double(delta_x);
 delta_y=double(delta_y);
 disp('Delta x= ');
 disp(delta_x);
 disp('Delta y= ');
 disp(delta_y);
 X(i+1)=X(i)+delta_x;
 Y(i+1)=Y(i)+delta_y;
 disp('Nuevo Valor de x0');
 disp(X(i+1));
 disp('Nuevo Valor de y0');
 disp(Y(i+1));
 %CALCULANDO ERROR
 error=sqrt((X(i+1)-X(i))^2+(Y(i+1)-Y(i))^2);
 disp('Error= ');
 disp(error);
 end



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
>> newton_no_lineal7
METODO DE NEWTON PARA SISTEMAS DE ECUACIONES NO LINEALES
Introduce la primera Función: x^2-10*x+y^2+8
Introduce la segunda Función: x*y^2+x-10*y+8
Introduce x0: 0
introduce y0: 0
Delta x=
   0.800000000000000
 
Delta y=
   0.880000000000000
 
Nuevo Valor de x0
   0.800000000000000
 
Nuevo Valor de y0
   0.880000000000000
 
Error=
   1.189285499785481
 
Delta x=
   0.191787221105863
 
Delta y=
   0.111711737096164
 
Nuevo Valor de x0
   0.991787221105863
 
Nuevo Valor de y0
   0.991711737096164
 
Error=
   0.221950107872359

Solo vas modificando el valor de N.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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
sin imagen de perfil

Iteraciones con ciclo

Publicado por Eduardo (7 intervenciones) el 04/11/2013 03:52:20
Gracias muchísimas gracias, enserio, me andaba quebrando la cabeza, por que unos maestros me decían de maneras difíciles y esta manera es muy sencilla, en verdad no se como no se me ocurrio antes, gracias en verdad por tu ayuda :D
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

Iteraciones con ciclo

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 04/11/2013 04:11:25
De nada. Solo filtre tu código.
así deberían ser todo los usuarios que piden ayuda en el foro. Ponen sus avances, y acá lo ayudamos según nuestra disponibilidad de tiempo.



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com


http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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
sin imagen de perfil

Iteraciones con ciclo

Publicado por Eduardo (7 intervenciones) el 04/11/2013 04:11:38
Oyes como ya te lo dije gracias por la ayuda, me podrías orientar el como hacerle para que los datos aparezcan en forma de tabla. Sin mas que decir gracias.

Por ejemplo que se veas maso menos así:

DeltaX DeltaY Nuevo Valor DeltaX Nuevo Valor DeltaY Error



De antemano gracias por la ayuda.
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