Foros del Web » Programación para mayores de 30 ;) » Programación General »

graficar resultados intermedios con matlab

Estas en el tema de graficar resultados intermedios con matlab en el foro de Programación General en Foros del Web. necesito ayuda para graficar los resultados intermedios en un script del metodo de newton el programa da la opcion de mostrar los resultados intermedios y ...
  #1 (permalink)  
Antiguo 12/05/2011, 19:47
 
Fecha de Ingreso: octubre-2009
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 0
Pregunta graficar resultados intermedios con matlab

necesito ayuda para graficar los resultados intermedios en un script del metodo de newton el programa da la opcion de mostrar los resultados intermedios y necesito saber como graficar cada resultado usando como puntos (P0,F0) osea sacando un punto de cada resultado y graficar todos espero que alguien me pueda ayudar ahi pongo el codigo.

Código:
 
% ALGORITMO DE NEWTON-RAPHSON               
 %
 % Para encontrar una solucion a f(x) = 0 dada una
 % aproximacion inicial p0:
 %
 % ENTRADA: aproximacion inicial p0; tolerancia TOL;
 %          maximo numero de iteraciones NO.
 %
 % SALIDA:  solucion aproximada de p o un mensaje de fallo
 syms('OK', 'P0', 'TOL', 'NO', 'FLAG', 'NAME', 'OUP', 'F0');
 syms('I', 'FP0', 'D','x','s','time');
 tic;
 TRUE = 1;
 FALSE = 0;
 fprintf(1,'Este es el Metodo de Newton-Raphson\n');
 fprintf(1,'Ingrese la funcion F(x) en terminos de x\n');
 fprintf(1,'Por ejemplo: cos(x)\n');
 time=toc;
 s = input(' ');
 tic;
 F = inline(s,'x');
 fprintf(1,'Ingrese la derivada de F(x) en terminos de x\n');
 time=time+toc;
 s = input(' ');
 tic;
 FP = inline(s,'x');
 OK = FALSE;
 time=time+toc;
 fprintf(1,'Ingrese la aproximacion inicial\n');
 P0 = input(' '); 
 while OK == FALSE
 tic;    
 fprintf(1,'Ingrese tolerancia\n');
 time=time+toc;
 TOL = input(' ');
 if TOL <= 0 
 tic;
 fprintf(1,'La Tolerancia debe ser positiva\n');
 time=time+toc;
 else 
 tic;    
 OK = TRUE;
 end
 time=time+toc;
 end
 tic;
 OK = FALSE;
 time=time+toc;
 while OK == FALSE 
 tic;    
 fprintf(1,'Ingrese el maximo numero de iteraciones - sin punto decimal\n');
 time=time+toc;
 NO = input(' ');
 if NO <= 0
 tic;    
 fprintf(1,'Debe ser un entero positivo\n');
 time=time+toc;
 else
 tic;    
 OK = TRUE;
 end
 time=time+toc;
 end
 if OK == TRUE
 tic;    
 fprintf(1,'Seleccione el destino de la salida\n');
 fprintf(1,'1. Pantalla\n');
 fprintf(1,'2. Archivo de Texto\n');
 fprintf(1,'Digite 1 o 2\n');
 time=time+toc;
 FLAG = input(' ');
 if FLAG == 2 
 tic;
 fprintf(1,'Ingrese el nombre del archivo de la forma - unidad:\\nombre.ext\n');
 fprintf(1,'Por ejemplo:   A:\\SALIDA.DTA\n');
 time=time+toc;
 NAME = input(' ','s');
 tic;
 OUP = fopen(NAME,'wt');
 time=time+toc;
 else
 tic;    
 OUP = 1;
 time=time+toc;
 end
 tic;
 fprintf(1,'Seleccione tipo de la salida\n');
 fprintf(1,'1. Solo la respuesta\n');
 fprintf(1,'2. Todas las aproximaciones intermedias\n');
 fprintf(1,'Digite 1 o 2\n');
 time=time+toc;
 FLAG = input(' ');
 tic;
 fprintf(OUP, 'Metodo de Newton\n');
 time=time+toc;
 if FLAG == 2 
 tic;
 fprintf(OUP, '  I   P                     F(P)\n');
 time=time+toc;
 end
 tic;
 F0 = F(P0);
% STEP 1
 I = 1;
 OK = TRUE;       
 time=time+toc;
% STEP 2
 while I <= NO & OK == TRUE  
 tic;
% STEP 3
% compute P(I)
 FP0 = FP(P0);
 D = F0/FP0;
% STEP 6
 P0 = P0 - D;  
 F0 = F(P0);
 time=time+toc;
 if FLAG == 2
 tic;    
 fprintf(OUP,'%3d   %14.12e   %14.12e\n',I,P0,F0);
 time=time+toc;
 end
% STEP 4
 if abs(D) < TOL
 tic;    
% procedure completed successfully
 fprintf(OUP,'\nSolucion aproximada = %.12e\n',P0);
 fprintf(OUP,'con F(P) = %.12e\n',F0);
 fprintf(OUP,'Numero de iteraciones = %d\n',I);
 fprintf(OUP,'Tolerancia = %.12e\n',TOL);
 time=time+toc;
 fprintf(OUP,'tiempo de programa: %f segundos',time);
 OK = FALSE;
% STEP 5
 else
 tic;    
 I = I+1;
 end
 time=time+toc;
 end
 if OK == TRUE 
% STEP 7
% procedure completed unsuccessfully
 tic;
 fprintf(OUP,'\nLa iteracion numero %d',NO);
 fprintf(OUP,' genero la aproximacion %.10e\n',P0);
 fprintf(OUP,'con F(P) = %.10e , que no cumplio con la tolerancia  %.10e\n',F0,TOL);
 time=time+toc;
 fprintf(OUP,'tiempo de programa: %f segundos',time);
 end
 if OUP ~= 1
 fclose(OUP);
 fprintf(1,'Archivo de salida %s creado con exito \n',NAME);
 end
 end
estuve buscando y encontre como era algo muy facil
solo es cuestion de poner
plot(P0,F0);
hold on; %para que no borre los puntos graficados anteriormente

talvez a alguien le sirva

Última edición por maur1c10; 12/05/2011 a las 20:39 Razón: resuelto

Etiquetas: matlab, resultados, graficos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:50.