Está en la página 1de 28

Alumno: José Antonio Sánchez López

Tarea 4 MMIP

Codigo del Metodo grafico


clear all
close all
clc

x=0.1:0.1:10

y=sin(sqrt(x))-x;
figure(1)
plot(x,y), grid on, hold on
xlabel('Eje x'), ylabel('Eje y'), title('Metodo grafico')
Resultado obtenido aplicando el metodo grafico es 0.76
Codigo de Metodo de punto fijo
clear all
close all
clc
xi=1
ninter=1e6;
tol=1e-3;

for i=1:ninter
xn=sin(sqrt(xi))
error=abs((xn-xi)/xn)*100
figure(1)
semilogy(i,error,'or'),grid on, hold on
xlabel('iteraciones'), ylabel('% error'), title('METODO DE PUNTO FIJO')
if error<tol
disp('sol encontrado')
solf=xn; errorf=error, iterf=i
break
end
xi=xn;
end

Tabla de datos
i Xi Xi+1 %E
23.033933
0 0.5 0.649637 3
9.9631998
1 0.64964 0.721524 7
3.9122817
2 0.72152 0.750901 5
1.4690632
3 0.75090 0.762097 4
0.5417686
4 0.76210 0.766248 4
0.1984328
5 0.76625 0.767772 7
0.0724957
6 0.76777 0.768329 4
0.0264610
7 0.76833 0.768532 8
0.0096550
8 0.76853 0.768606 6
0.0035224
9 0.76861 0.768633 8
10 0.76863 0.768643 0.0012850
6
11 0.76864 0.768647 0.0004688
0.0001710
12 0.76865 0.768648 2
Codigo Metodo de Newton-Raphson.
clear all
close all
clc
xi=0.5;
tol=1e-3;
niter=1e3;
for i=1:niter
fx=sin(sqrt(xi))-xi
dfx=(cos(sqrt(xi))/(2*sqrt(xi)))-1
% ec de NR
xn=xi-fx/dfx;
error=abs((xn-xi)/xn)*100;
figure(1)
semilogy(i,error,'or'), grid on, hold on
xlabel('iteraciones 1'), ylabel('% error'), title('METODO DE NEWTON-RAPHSON')
if error<tol
disp('Solucion encontrada')
soluf=xn;
errorf=error
iterf=i,
break
end
xi=xn
end
tabla de datos
i Xi Xi+1 %E
39.290267
0 0.5 0.823591 7
7.0020783
1 0.82359 0.769696 3
0.1362331
2 0.76970 0.768649 8
5.4656E-
3 0.76865 0.768649 05
8.7963E-
4 0.76865 0.768649 12
Su grafico es el siguiente.

Codigo del metodo grafico


clear all
close all
clc

K=0.05;
pt=3;
x=0:0.1:1;

y=((x./(1-x)).*((2.*pt)./
(2+x)).^0.5)-K;
figure(1)
plot(x,y), grid on

160 El valor obtenido aplicando el


140

120 Codigo metodo de punto fijo


100
clear all
80 close all
60 clc
40
K=0.05;
20
pt=3;
0

-20 xi=0.001;
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Niter=1e3;
tol=1e-3;

for i=1:Niter
xn=(K.*((2.*pt)./(2+xi)).^0.5)*(1-xi)
Error=(abs((xn-xi)/xi))*100
figure(2)
semilogy(i,Error,'or'),grid on, hold on
xlabel('iteraciones')
ylabel('%Error')
if Error<tol
disp('Sol encontrada')
solf=xn;
Errorf=Error;
iterf=i
break
end
xi=xn;
end
%Solf=0.0783 iter=7 Error=1.3882e-4

Graficos corresponfientes
Su tabla de valores es la 104

siguiente.
102

%Error
100

10-2

10-4
1 2 3 4 5 6 7
iteraciones

i Xi Xi+1 %E
98.843854
0 0.001 0.086494 7
11.670714
1 0.08649 0.077455 1
1.1945767
2 0.07745 0.078391 8
0.1241682
3 0.07839 0.078294 5
0.0128859
4 0.07829 0.078304 5
5 0.07830 0.078303 0.0013375
0.0001388
6 0.07830 0.078303 2
1.4409E-
7 0.07830 0.078303 05

-Codigo Metodo de Newton-R


clear all
close all
clc

xi=0.001;
Niter=1e3;
tol=1e-3;
K=0.05
pt=3
for i=1:Niter
fx=((xi./(1-xi)).*((2.*pt)./(2+xi)).^0.5)-K;
dfx=(pt.*(xi.^2+xi+4))./((2.^0.5).*((xi-1).^2).*((xi+2).^2).*((pt./(xi+2)).^0.5));
xn=xi-(dfx.^-1).*fx;
Error=abs((xn-xi)/xn)*100;
figure(3)
semilogy(i,Error,'or'), grid on, hold on
xlabel('iteraciones')
ylabel('%Error')
if Error<tol
soluf=xn, Error=Error, iterf=i,
break
end
xi=xn
end
%Solf=0.0282 Error=9.2710e-4 i=3

102

101

100
%Error

10-1

10-2

10-3

10-4
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
iteraciones

i Xi Xi+1 %E
96.530783
0 0.001 0.028825 8
1 0.02882 0.028250 2.0363103
2 0.02825 0.028249 0.0009271
1.9191E-
3 0.02825 0.028249 10
Codigo De Newton-R multivariable
clear all
close all
clc

x0=1.2;
y0=1.2;
Niter=1000;
tol=1e-3;

for i=1:Niter
X0=[x0;y0];
f1=-x0^2+x0+0.75-y0;
f2=y0+5*x0*y0-x0^2;
df1x=1-2*x0;
df1y=-1;
df2x=5*y0-2*x0;
df2y=5*x0+1;

ja=[df1x,df1y;df2x,df2y];
f0=[f1;f2];
Xn=X0-ja^-1*f0

error=(sum(abs((Xn-X0)/Xn)))*100;

figure(1)
semilogy(i,error,'or'), grid on, hold on
xlabel('Iteraciones'), ylabel('%error'), title('Metodo de Newton Raphson
Multivariable')
if error<tol
disp('sol enconterada')
Xsol=Xn;
errorf=error;
iterf=i
break
end
x0=Xn(1)
y0=Xn(2)
end

Su grafico es el siguiente
Codigo Newton-R multivariable
clear all
close all
clc

ko=exp(25);
ER=104;
Ce=1;
Te=350;
Th=1;
B=1;
S=200;
Tj=350;
Co=0.98;
To=350;
Niter=1e3;
tol=1e-3;

for i=1:Niter
co=[Co;To];
f1=Th.*(Ce-Co)-Co.*ko.*exp(-ER.*(To.^-1));
f2=Th.*(Te-To)+S.*Co.*ko.*exp(-ER.*(To.^-1))-B.*(To-Tj);
df1c=-Th-ko.*exp(-ER.*(To.^-1));
df1T=-Co.*ko.*exp(-ER.*(To.^-1)).*(ER.*(1./To.^2));
df2c=S.*ko.*exp(-ER.*(To.^-1));
df2T=-Th-(S.*Co.*ko.*(ER.*(1./To.^2)).*exp(-ER.*(To.^-1)))-B;
Jo=[df1c,df1T;df2c,df2T];
fo=[Th.*(Ce-Co)-Co.*ko.*exp(-ER.*(To.^-1)); Th.*(Te-To)+S.*Co.*ko.*exp(-
ER.*(To.^-1))-B.*(To-Tj)];
cn=co-Jo^-1*fo
Error=sum(abs((cn-co)./cn))
figure(1)
semilogy(i, Error,'or'), grid on, hold on
xlabel('iteraciones'), ylabel('% Error'), title('Metodo de Newton Raphson
multivariable')
if Error<tol
disp('sol encontrada')
csol=cn
Errorf=Error
iterf=i
break
end
Co=cn(1),To=cn(2)
end

.
Inciso (a)
clear all
close all
clc

a=0;
b=10;
N=100;
Dx=0.1;
a=0;
b=Dx*(N-1)+a
x=a:Dx:b
gro=2;

f=(x.^3)+(4*x)-15
figure(1)
plot(x,f,'b','lineWidth',gro), grid on, hold on

%analitica
df=(3*x.^2)+4
figure(2)
plot(x,df,'g','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA DELANTE


dfn=zeros(1,N);
for i=1:N-1
dfn(i)=(f(i+1)-f(i))/Dx;
end
figure(2)
plot(x,dfn,'-k','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA ATRAS


dfn2=zeros(1,N);
for i=2:N
dfn2(i)=(f(i)-f(i-1))/Dx;
end
figure(2)
plot(x,dfn2,'--b','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA CENTRADA


dfn3=zeros(1,N);
for i=2:N-1
dfn3(i)=(f(i+1)-f(i-1))/(2*Dx);
end
figure(2)
plot(x,dfn3,'-.r','lineWidth',gro), grid on, hold on
legend('analitica','DF adelante','DF atras','DF centrada')
Inciso (b)
clear all
close all
clc

a=0;
b=10;
N=100;
Dx=0.1;
a=0;
b=Dx*(N-1)+a
x=a:Dx:b
gro=2;

f=x.^2.*cos(x)
figure(1)
plot(x,f,'b','lineWidth',gro), grid on, hold on

%analitica
df=2.*x.*cos(x)-x.^2.*sin(x)
figure(2)
plot(x,df,'g','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA DELANTE


dfn=zeros(1,N);
for i=1:N-1
dfn(i)=(f(i+1)-f(i))/Dx;
end
figure(2)
plot(x,dfn,'-k','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA ATRAS


dfn2=zeros(1,N);
for i=2:N
dfn2(i)=(f(i)-f(i-1))/Dx;
end
figure(2)
plot(x,dfn2,'--b','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA CENTRADA


dfn3=zeros(1,N);
for i=2:N-1
dfn3(i)=(f(i+1)-f(i-1))/(2*Dx);
end
figure(2)
plot(x,dfn3,'-.r','lineWidth',gro), grid on, hold on
legend('analitica','DF adelante','DF atras','DF centrada')
Inciso (c)
clear all
close all
clc

a=0;
b=10;
N=100;
Dx=0.1;
a=0;
b=Dx*(N-1)+a
x=a:Dx:b
gro=2;

f=tan(x/3)
figure(1)
plot(x,f,'b','lineWidth',gro), grid on, hold on

%analitica
df=1./(3.*((cos(x/3)).^2))
figure(2)
plot(x,df,'g','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA DELANTE


dfn=zeros(1,N);
for i=1:N-1
dfn(i)=(f(i+1)-f(i))/Dx;
end
figure(2)
plot(x,dfn,'-k','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA ATRAS


dfn2=zeros(1,N);
for i=2:N
dfn2(i)=(f(i)-f(i-1))/Dx;
end
figure(2)
plot(x,dfn2,'--b','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA CENTRADA


dfn3=zeros(1,N);
for i=2:N-1
dfn3(i)=(f(i+1)-f(i-1))/(2*Dx);
end
figure(2)
plot(x,dfn3,'-.r','lineWidth',gro), grid on, hold on
legend('analitica','DF adelante','DF atras','DF centrada')
Para la ecuacion del inciso d este es su codigo de Matlab
clear all
close all
clc

a=0;
b=10;
N=100;
Dx=0.1;
a=0;
b=Dx*(N-1)+a
x=a:Dx:b
gro=2;

f=sin(0.5.*sqrt(x))./x
figure(1)
plot(x,f,'b','lineWidth',gro), grid on, hold on

%analitica
df=((cos(0.5.*sqrt(x))./sqrt(x)-(sin(0.5.*sqrt(x))./(2.*x.^1.5))))
figure(2)
plot(x,df,'g','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA DELANTE


dfn=zeros(1,N);
for i=1:N-1
dfn(i)=(f(i+1)-f(i))/Dx;
end
figure(2)
plot(x,dfn,'-k','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA ATRAS


dfn2=zeros(1,N);
for i=2:N
dfn2(i)=(f(i)-f(i-1))/Dx;
end
figure(2)
plot(x,dfn2,'--b','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA CENTRADA


dfn3=zeros(1,N);
for i=2:N-1
dfn3(i)=(f(i+1)-f(i-1))/(2*Dx);
end
figure(2)
plot(x,dfn3,'-.r','lineWidth',gro), grid on, hold on
legend('analitica','DF adelante','DF atras','DF centrada')

Su grafico es el siguiente:
Para la ecuacion del inciso e este es su codigo de Matlab
clear all
close all
clc

a=0;
b=10;
N=100;
Dx=0.1;
a=0;
b=Dx*(N-1)+a
x=a:Dx:b
gro=2;

f=exp(x)+x
figure(1)
plot(x,f,'b','lineWidth',gro), grid on, hold on

%analitica
df=exp(x)+1
figure(2)
plot(x,df,'g','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA DELANTE


dfn=zeros(1,N);
for i=1:N-1
dfn(i)=(f(i+1)-f(i))/Dx;
end
figure(2)
plot(x,dfn,'-k','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA ATRAS


dfn2=zeros(1,N);
for i=2:N
dfn2(i)=(f(i)-f(i-1))/Dx;
end
figure(2)
plot(x,dfn2,'--b','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA CENTRADA


dfn3=zeros(1,N);
for i=2:N-1
dfn3(i)=(f(i+1)-f(i-1))/(2*Dx);
end
figure(2)
plot(x,dfn3,'-.r','lineWidth',gro), grid on, hold on
legend('analitica','DF adelante','DF atras','DF centrada')

Su grafico es el siguiente
Codigo de matlab aplicando diferencias finitas para estimar la velocidad.
clear all
close all
clc

dx=25;
x=0:dx:125;
N=length(x);
gro=2;

y=[0, 32, 58, 78, 92, 100];

figure(1)
plot(x,y,'*-r'), grid on, hold on
xlabel('Eje x'), ylabel('Eje y'), title('DIFERENCIAS FINITAS')

%DIFERENCIA FINITA HACIA DELANTE


df1=zeros(1,N);
for i=1:N-1
df1(i)=(y(i+1)-y(i))/dx;
end
figure(2)
plot(x,df1,'-k','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA ATRAS


dfn2=zeros(1,N);
for i=2:N
dfn2(i)=(y(i)-y(i-1))/dx;
end
figure(2)
plot(x,dfn2,'--b','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA CENTRADA


dfn3=zeros(1,N);
for i=2:N-1
dfn3(i)=(y(i+1)-y(i-1))/(2*dx);
end
figure(2)
plot(x,dfn3,'-.r','lineWidth',gro), grid on, hold on
xlabel('Eje x'), ylabel('Eje y'), title('DIFERENCIAS FINITAS')
legend('DF adelante','DF atras','DF centrada')

Sus graficos son los siguientes:

En este grafico represente los datos de la distancia recorrida vs el tiempo


Y en este grafico se muestra la estimacion de velocidad aplicando diferencias
finitas.
Codigo de matlab aplicando diferencias finitas de segundo orden para estimar la
aceleracion.

clear all
close all
clc

dx=25;
x=0:dx:125;
N=length(x);
gro=2;

y=[0, 32, 58, 78, 92, 100];

figure(1)
plot(x,y,'*-r'), grid on, hold on
xlabel('Eje x'), ylabel('Eje y'), title('DIFERENCIAS FINITAS')

%DIFERENCIA FINITA HACIA DELANTE DE SEGUNDO ORDEN


d2f1=zeros(1,N);
for i=1:N-2
d2f1(i)=(y(i+2)-2*y(i+1)+y(i))/dx^2;
end
figure(2)
plot(x,d2f1,'-k','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA HACIA ATRAS


d2f2=zeros(1,N);
for j=3:N
d2f2(j)=(y(j)-2*y(j-1)+y(j-2))/dx^2;
end
figure(2)
plot(x,d2f2,'--b','lineWidth',gro), grid on, hold on

%DIFERENCIA FINITA CENTRADA


d2f3=zeros(1,N);
for k=2:N-1
d2f3(k)=(y(k+1)-2*y(k)+y(k-1))/dx^2;
end
figure(2)
plot(x,d2f3,'-.r','lineWidth',gro), grid on, hold on
xlabel('Eje x'), ylabel('Eje y'), title('DIFERENCIAS FINITAS')
legend('DF adelante','DF atras','DF centrada')
Sus graficos son los siguientes.

De igual manera aquí tenemos el grafico de los valores que nos da el problema
Aquí tenemos plasmado la estimacion de la aceleracion aplicando diferencia finita
de segundo orden.

También podría gustarte