You are on page 1of 11

Problema 1

function [C,L]=lagran(X,Y)
%Datos
% -X es un vector que contiene las listas de las absisas
% -Y es un vector que contiene las listas de las ordenadas
%Resultados
% -C es la matriz que contiene los coeficientes del
polinomio interpolar
% de lagrange
% -L es la matriz que contiene los coeficientes de los
polinomios
% coeficientes de lagrange

w=length(X);
n=w-1;
L=zeros(w,w);
%Formacion de los polinomios coeficienes de lagrange
for k=1:n+1
V=1;
for j=1:n+1
if k~=j
V=conv(V,poly(X(j)))/(X(k)-X(j));
end
end
L(k,:)=V;
end
%Calculo de los coeficientes del polinomio
% interpolador de lagrange
C=Y*L;

Luego usamos la funcin lagranf
function P = lagranf(f,X)

syms x
Y=eval(f,X);
[C L]=lagran(X,Y);

P=poly2sym(L);

Finalmente ejecutamos problemaaa1


X=[0 1 2 3];
P=lagranf('exp(x)',X)




>> problemaaa1

P =

- x^15/6 + x^14/2 - x^13/2 + x^12/6 + x^11 - (5*x^10)/2 +
2*x^9 - x^8/2 - (11*x^7)/6 + 3*x^6 - (3*x^5)/2 + x^4/3 + x^3



Problema 2





a) Polinomio de interpolacin de lagrange
function [C,L]=lagran(X,Y)
%Datos
% -X es un vector que contiene las listas de las absisas
% -Y es un vector que contiene las listas de las ordenadas
%Resultados
% -C es la matriz que contiene los coeficientes del polinomio interpolar
% de lagrange
% -L es la matriz que contiene los coeficientes de los polinomios
% coeficientes de lagrange

w=length(X);
n=w-1;
L=zeros(w,w);
%Formacion de los polinomios coeficienes de lagrange
for k=1:n+1
V=1;
for j=1:n+1
if k~=j
V=conv(V,poly(X(j)))/(X(k)-X(j));
end
end
L(k,:)=V;
end
%Calculo de los coeficientes del polinomio
% interpolador de lagrange
C=Y*L;




Luego ejecuto problemaaa2 cuyo cdigo es


X=[0 1 2 3];
Y=[-1 6 31 98];
[C L]=lagran(X,Y)

P=poly2sym(C)


>> problemaaa2

C =
4.0000 -3.0000 6.0000 -1.0000

L =

-0.1667 1.0000 -1.8333 1.0000
0.5000 -2.5000 3.0000 0
-0.5000 2.0000 -1.5000 0
0.1667 -0.5000 0.3333 0

P =

4*x^3 - 3*x^2 + 6*x 1




b) Mtodo de diferencias divididas de Newton.
function acum=internewton(x,y)

%Cuerpo del programa
xa=x;ya=y;
% Formacion de las diferencias divididas
d=zeros(length(y));
d(:,1)=y';
for k=2:length(x)
for j=1:length(x)+1-k
d(j,k)=(d(j+1,k-1)-d(j,k-1))/(x(j+k-1)-x(j));
end
end
% Formacion del polinomio
for w=1:length(x)
ds=num2str(abs(d(1,w)));
if w>1
if x(w-1)<0
sg1='+';
else
sg1='-';
end
end
if d(1,w)<0
sg2='-';
else
sg2='+';
end
if w==1
acum=num2str(d(1,1));
elseif w==2
polact=['(x' sg1 num2str(abs(x(w-1))) ')' ];
actual=[ds '*' polact];
acum=[acum sg2 actual];
else
polact=[polact '.*' '(x' sg1 num2str(abs(x(w-1))) ')' ];
actual=[ds '*' polact];
acum=[acum sg2 actual];
end
end






Luego ejecuto problemaaa2b cuyo cdigo es

x=[0 1 2 3];
y=[-1 6 31 98];
polinomio=internewton(x,y)


>> problemaaa2b

Polinomio =

-1+7*(x-0)+9*(x-0).*(x-1)+4*(x-0).*(x-1).*(x-2)


Problema 3





a) Calcular exactamente

Usando los comandos de matlab
>> syms x;
>> I=int('(1-x^2)/(1+x^2)',x,0,1)
I =
pi/2 1
>> I= pi/2 - 1
I=
0.5708


b) Calcular por la formula compuesta de simpson de 11 sumandos
function s=simprl(f,a,b,M)
f=inline(f)
%Datos
% -f es el integrado, dado como una cadena de caracteres 'f'
% -a y b son los extremos inferior y superior del intervalo de
% integracion
% -M es el numero de subintervalos
%Resultados
% -S es la aproximacion obtenida con la regla de simpson
h=(b-a)/(2*M);
s1=0;
s2=0;
for k=1:M
x=a+h*(2*k-1);
s1=s1+feval(f,x);
end
for k=1:(M-1)
x=a+h*2*k;
s2=s2+feval(f,x);
end
s=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;




>> simprl('(1-x^2)/(1+x^2)',0,1,11)

f =

Inline function:
f(x) = (1-x^2)/(1+x^2)


ans =

0.5708






Problema 4
a) Con el mtodo clsico RK de cuarto orden, integrar

(x, y) = 2x
3
+ 12x
2
20x + 8.5
Usando un tamao de paso h = 0.5 y la condicin inicial y = 1 en x = 0;


function [T,Y] = RK4(f,h,a,ya,m)

%--------------------------------------------------------------------------
%Este programa resuelve el PVI
% y' = f(t,y)
% y(a) = ya.
% donde t se encuentra en el intervalo [a,b] usando el Mtodo de Runge
% Kutta de orden 4
%--------------------------------------------------------------------------
% ENTRADAS
% f : Funcin
% a : Extremo izquierdo
% b : Extremo derecho
% ya : Valor inicial
% m : Nmero de pasos
% SALIDAS
% T : Vector solucin (absisas)
% Y : Vector solucin (ordenadas)
%--------------------------------------------------------------------------
% MATLAB: Un software para Ciencia e Ingeniera
% Daniel Gutierrez
% Miguel Cutipa
% EDITORIAL MACRO
%--------------------------------------------------------------------------
f=inline(f,'t','y')
b=h*m-a;
T = zeros(1,m+1);
Y = zeros(1,m+1);
T(1) = a;
Y(1) = ya;
for j=1:m,
tj = T(j);
yj = Y(j);
k1 = h*feval(f,tj,yj);
k2 = h*feval(f,tj+h/2,yj+k1/2);
k3 = h*feval(f,tj+h/2,yj+k2/2);
k4 = h*feval(f,tj+h,yj+k3);
Y(j+1) = yj + (k1 + 2*k2 + 2*k3 + k4)/6;
T(j+1) = a + h*j;

end
T;
Y;


Luego ejecuto problemaaa4 cuyo cdigo es

[X,Y1 ]=RK4('-2*t^3+12*t^2-20*t+8.5+y',0.5,0,1,5);

X
Y1



>> problemaaa4

f =

Inline function:
f(t,y) = -2*t^3+12*t^2-20*t+8.5


X =

0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000
4.0000 4.5000 5.0000 5.5000 6.0000


Y1 =

1.0000 3.2188 3.0000 2.2188 2.0000 2.7188 4.0000 4.7188
3.0000 -3.7813 -19.0000 -46.7813 -92.0000

>>



b) De manera similar integre


(x, y) = 4e
0.8x
0.5y
Utilizando h = 0.5 con y(0) = 2 desde x = 0 hasta 0.5.

function [T,Y] = RRK4(f,a,b,ya,m)

%--------------------------------------------------------------------------
%Este programa resuelve el PVI
% y' = f(t,y)
% y(a) = ya.
% donde t se encuentra en el intervalo [a,b] usando el Mtodo de
Runge
% Kutta de orden 4
%--------------------------------------------------------------------------
% ENTRADAS
% f : Funcin
% a : Extremo izquierdo
% b : Extremo derecho
% ya : Valor inicial
% m : Nmero de pasos
% SALIDAS
% T : Vector solucin (absisas)
% Y : Vector solucin (ordenadas)
%--------------------------------------------------------------------------
% MATLAB: Un software para Ciencia e Ingeniera
% Daniel Gutierrez
% Miguel Cutipa
% EDITORIAL MACRO
%--------------------------------------------------------------------------
f=inline(f,'y','t')
h=(b-a)/m;
T = zeros(1,m+1);
Y = zeros(1,m+1);
T(1) = a;
Y(1) = ya;
for j=1:m,
tj = T(j);
yj = Y(j);
k1 = h*feval(f,tj,yj);
k2 = h*feval(f,tj+h/2,yj+k1/2);
k3 = h*feval(f,tj+h/2,yj+k2/2);
k4 = h*feval(f,tj+h,yj+k3);
Y(j+1) = yj + (k1 + 2*k2 + 2*k3 + k4)/6;
T(j+1) = a + h*j;

end
T;
Y;

Luego ejecuto problemaaa4b cuyo cdigo es

[X,Y1 ]=RRK4('4*exp(0.8*t)-0.5*y',0,5,2,12);

X
Y1






>> problemaaa4b

f =

Inline function:
f(y,t) = 4*exp(0.8*t)-0.5*y


X =

0 0.4167 0.8333 1.2500 1.6667 2.0833 2.5000 2.9167 3.3333 3.7500
4.1667 4.5833 5.0000


Y1 =

2

You might also like