Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/05/2011, 19:47
maur1c10
 
Fecha de Ingreso: octubre-2009
Mensajes: 25
Antigüedad: 14 años, 6 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