Matlab - Ayuda con Newton

   
Vista:

Ayuda con Newton

Publicado por Raul Ponte raulponte3@gmail.com (1 intervención) el 14/06/2014 00:06:01

Ese es el ejercicio que debo hacer, principalmente me estoy enfocando en hacer todo sin que de el archivo .txt ya que esto no lo he investigado y no lo he podido lograr, pienso que primero me debe dar todo bien.
Mi codigo es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
syms x    %declaramos a X 
Y=cos(x/2)+2*sin(x);  %Entrada de la funcion
f=@(x)cos(x/2)+2*sin(x);
 
%graficamos la función
sup = 2*pi; %limite superior
in = -2*pi; %limite inferior
p = linspace(in,sup,500);    % vector con los valores
plot(p,subs(Y,p))               % grafica
grid on
 
n=0;
Xn=input('Ingrese el iterado: ');
Ydx = diff(Y,x);
z=fzero(f,2*pi);
    while n<100 || abs(Subs(Y,Xn))<=0.0000000001 || abs(z-Xn)<=0.0000000001      %condiciónes de terminacion 
 
         X1 = Xn - (subs(Y,Xn)/subs(Ydx,Xn));  %formula de Newton
         Xn=X1;  %asignación del nuevo valor de Xn para la siguiente iteración
         n=n+1;
 
    end

Si me pudiesen ayudar estuviese agradecido y disculpen las molestias.
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 JESUS

Ayuda con Newton

Publicado por JESUS jesus.royeth@gmail.com (758 intervenciones) el 26/04/2015 06:10:00
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
clear all; clc
format longG
syms Y(x)
Y=input('ingrese la función: ');
x0=input('ingrese x inicial: ');
q=menu('Opciones','Tolerancia','Iteraciones');
switch q
    case 1
        t=input('ingrese tolerancia: ');
        c='abs(x-x0)>t' ;
    case 2
    t=input('ingrese el número de iteraciones: ');
    c='t~=n';
end
b=1;
n=0;
er=100;
while b
n=n+1;
x=x0;
x0=x-eval(Y)/eval(diff(Y));
b=eval(c);
D(n,1:2)=[x x0];
if n~=1
er(n)=-er(n-1)*eval(diff(Y,2))/(2.*eval(diff(Y)));
end
end
D(:,3)=er';
disp('                Valor asumido         Valor calculado                  error')
disp(round(D.*1000000)./1000000)
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