Código:
estuve buscando y encontre como era algo muy facil% 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
solo es cuestion de poner
plot(P0,F0);
hold on; %para que no borre los puntos graficados anteriormente
talvez a alguien le sirva