Vous êtes sur la page 1sur 10

Tarea

1:
Clculo Numrico

Nombre: Jos Toms Morales O.


Profesor: lvaro Hernndez
Fecha: 13/05/2015

Problema1
Para la solucin de este problema, simplemente se siguieron los pasos del
enunciado, para luego implementar materia vista en clases. En el cdigo hay comentarios
en los que se explica paso a paso lo que se est realizando. El cdigo se muestra a
continuacin:
Cdigo
% Matriz A
A = [10 7 8 7; 7 5 6 5; 8 6 10 9; 7 5 9 10];
% Condicionamiento en norma 1,2, infinito y de Frobinous de la matriz A
Cond1 = cond(A,1);
Cond2 = cond(A);
CondInf = cond(A,inf);
CondFro = cond(A,'fro');
%nos piden demostrar que cond2 es el menor que cond1, condInf y condFro
Mcond=[Cond1 Cond2 CondInf CondFro];%calcula el mnimo de los cond
MinCond=min(Mcond);
%continuando, necesitamos calcular el radio espectra
At = A';
% valores propios de la matriz At*A
vp = eig(At*A);
% raiz cuadrado del vector de los valores propios de At*A
rvp = sqrt(vp);
%para calcular el condicionamiento de A
Maxvp = max(rvp); % valor mximo del vector vpr2;
Minrvp = min(rvp); % valor mnimo del vector vpr2;
% Condicionamiento en norma 2 de la matriz A
K = Maxvp/Minrvp;
Resultado
Condicionamiento en norma 1 de la matriz A :
Cond1= 4488.00000000005
Condicionamiento en norma 2 de la matriz A:
Cond2= 2984.09270167576
Condicionamiento en norma infinita de la matriz A:
CondInf= 4488.00000000005
Condicionamiento en norma Frbenius de la matriz A:
CondFro=3009.57870805869

Luego, se muestra el mnimo de [Cond1 Cond2 CondInf CondFro]:


MinCond=2984.09270167576
Vector de los valores propios de la matriz ! :
Vp= [0.00010302348247; 0.710829666136566; 14.884607333372420;
917.404459977008]
La raz cuadrada del vector de los valores propios de la matriz ! :
rvp= [0.010150048397619; 0.843107149854967; 3.858057455944950;
30.288685345802126]
Finalmente K(A) es:
K(A)= 2984.09270167576
Conclusin
Dado que A=At, es decir, A es simtrica, adems de ser semidefinida positiva e
invertible, se obtiene que el condicionamiento de la norma infinito es igual al
condicionamiento en nomra 1.
Cond1= 4488.00000000005= CondInf
Ahora considerando que:
MinCond=2984.09270167576 =>MinCond=Cond2
Adems,
K(A)= 2984.09270167576
Por transitividad,
Cond2=2984.09270167576=K(A)
Luego por inspeccin se puede concluir que:
Cond2=K(A) < CondFro < Cond1=CondInf
2984.09270167576 < 3009.57870805869 < 4488.00000000005,
Norma 2 de matriz A < Norma Frbenius de matriz A < Norma 1, infinita de matriz A

Problema 2
1.Se defnir el condicionamiento de la matriz de Hilbert a travs del comando
cond() de MATLAB. Considerando que n=1,,14, simplemente se debe hacer un for
para determinar K(Hn), siendo (Hn)i,j =

!!!!!

Cdigo
%Es simple calcular condi para i=1..14 pues slo hay que hacer un for y
%condicionar el comando Hilbert
for j=1:14
Condicion(j) = cond(hilb(j));
end;
Resultado
Luego se tiene que Condicion i es K (! ) en norma 2.
Condicion=
[1;
19.2814700679039;
524.056777586064;
15513.7387389281;
476607.250243405;
14951058.6409604;
475367356.592182;
15257575500.9446;
493153969335.579;
16025002543526.5;
522405529832888;
1.681574362*1016;
3.802359812*1018;
3.017806926*1017]

Condicin1
Condicion2
Condicin3
Condicion4
Condicion5
Condicion6
Condicion7
Condicion8
Condicion9
Condicion10
Condicion11
Condicion12
Condicion13
Condicion14

Conclusin
Se puede apreciar como a medida que j aumenta en el comando cond(hilb(j)), el
resultado va aumentando significativamente es facil apreciar esto por inspeccin en los
resultados obtenidos. En otras palabras:
Condicin(j)<Condicin (j+1)

con

j=1,,13

2.Ahora considerando que existe bn como vector coordenada, se ejecutarn comandos


para x i, bi y wi con i=1..14,con el comando de Hilbert. Esto no es expresado en un "for"
debido a los diferentes tamaos de los arreglos y las condiciones que plantea. Adems de
bi, se ejecutar hilb(i) como hilbert de i y wi como vector unitario
Cdigo
x1 = hilb(1);b1 = sum(x1,2); w1 = x1\b1;
x2 = hilb(2);b2 = sum(x2,2);w2 = x2\b2;
x3 = hilb(3);b3 = sum(x3,2);w3 = x3\b3;
x4 = hilb(4);b4 = sum(x4,2);w4 = x4\b4;
x5 = hilb(5);b5 = sum(x5,2);w5 = x5\b5;
x6 = hilb(6);b6 = sum(x6,2);w6 = x6\b6;
x7 = hilb(7);b7 = sum(x7,2);w7 = x7\b7;
x8 = hilb(8);b8 = sum(x8,2);w8 = x8\b8;
x9 = hilb(9);b9 = sum(x9,2);w9 = x9\b9;
x10 = hilb(10);b10 = sum(x10,2);w10 = x10\b10;
x11 = hilb(11);b11 = sum(x11,2);w11 = x11\b11;
x12 = hilb(12);b12 = sum(x12,2);w12 = x12\b12;
x13 = hilb(13);b13 = sum(x13,2);w13 = x13\b13;
x14 = hilb(14);b14 = sum(x14,2);w14 = x14\b14;
Resultado
Los resultados obtenidos son muchos, por lo que se limitar a transcribir en Exel los
resultados obtenidos para wi y bi con i=1,,14.

Conclusin
Considerando que Hnwn=bn donde (bn)i =

!
!
!!! !!!!!

, si analizamos los resultados

obtenidos se puede apreciar que a medida que n aumenta, la matriz de Hilbert comienza a
tener algunos errores. Esto probablemente se debe a que tiene un condicionamiento
bastante reducido en comparacin a otras matrices especiales como la matriz de Toepliz.

Problema 3
1.Para este problema, el resultado y anlisis se har con un ejemplo, pues se Para el
primer caso, se crearon dos Script, uno que hace la interpolacin de Lagrange, y el segundo
grafica la funcin original y la funcin interpolada. Para llevar a cabo lo pedido y entender
el funcionamiento de lo programado, se tomar como ejemplo la funcin:
f(x)= x3 - 3x + 3
Para esta funcin, se eligieron algunos valores de x(que se guardaron en un vector
x), y se evaluaron cada uno de ellos para formar un vector "y. Una vez formados los
vectores a partir de f(x), en la pestaa de comando de matlab se deben ejecutar los valores
que le otorgamos a este ejemplo:
>>x = [-3 -2 -1 0 1 2 3];
>>y = [-15 1 5 3 1 5 21];
Una vez creados y guardados en el workspace de MATLAB x e y, podemos
proceder a ejecutar la funcin de Lagrange creada, en la cual al ser ejecutada nos devolver:
yi a la funcin interpolada, p a la funcin reducida de la interpolacin de Lagrange
(inline function). EL nombre de la funcin de interpolacin ser Lagrange(x,y,n) en la cual
x e y son los vectores ejecutados anteriormente y n es el valor en el cual se desea
interpolar. Para su correcta ejecucin se eligir, por ejemplo, 10.
Por lo tanto en la pestaa de comando se ebe ejecutar:
>> [yi,p]=Lagrange(x,y,10)
Y su Output ser:
0+-15*(x--2)/(-3--2)*(x--1)/(-3--1)*(x-0)/(-3-0)*(x-1)/(-3-1)*(x-2)/(-3-2)*(x-3)/(-3-3)+
1*(x--3)/(-2--3)*(x--1)/(-2--1)*(x-0)/(-2-0)*(x-1)/(-2-1)*(x-2)/(-2-2)*(x-3)/(-2-3)+
5*(x--3)/(-1--3)*(x--2)/(-1--2)*(x-0)/(-1-0)*(x-1)/(-1-1)*(x-2)/(-1-2)*(x-3)/(-1-3)+
3*(x--3)/(0--3)*(x--2)/(0--2)*(x--1)/(0--1)*(x-1)/(0-1)*(x-2)/(0-2)*(x-3)/(0-3)+
1*(x--3)/(1--3)*(x--2)/(1--2)*(x--1)/(1--1)*(x-0)/(1-0)*(x-2)/(1-2)*(x-3)/(1-3)+
5*(x--3)/(2--3)*(x--2)/(2--2)*(x--1)/(2--1)*(x-0)/(2-0)*(x-1)/(2-1)*(x-3)/(2-3)+
21*(x--3)/(3--3)*(x--2)/(3--2)*(x--1)/(3--1)*(x-0)/(3-0)*(x-1)/(3-1)*(x-2)/(3-2)
yi =
973
p=
Inline function:

p(x) = x^3 - 3*x + 3


Luego, para graficar la funcin original y la funcion reducida e interpolada, se
ejecutara el Graficar(f,a,b,xo,yo) donde f es la funcion reducida interpolada (llamada p en
el ejemplo), a y b son para definir el dominio, y finalmente los vectores x e y de la
funcion original. Luego en rojo esta la funcin interpolarizada reducida ,es decir, p. Y En
azul se encuentra la funcin f original.
>> Graficar(p,-3,3,x,y)
El Output ser:
n=
10

25

20

15

10

-5

-10

-15
-3

-2

-1

Cdigo
Considerando que ya se explicaron los INPUT que debiesen ejecutarse, aqu slo estarn
los Script.
Script 1:
function [yi,pol]= Lagrange(xo,yo,x) %inter Lagrange
%pol regresa el polinomio de lagrange en forma visual
%yi valor ya interpolado
%x valor escalar que queremos interpolar
%xo yo vectoresn columnas
%longitud x
n=length(xo);
%validar longitud
if length(yo)~=n, error('x e y deben ser de igual tamao')
end
yi=0;
pol='0';%para que nos devuelva la expresion del polinomio
%creo pol para poder expezar el pol
%calculando lso factores de Lag.
for i=1:n
prod=yo(i);
ter=num2str(yo(i));
for j=1:n
if i~=j%concatenamos en ter lo que tenemos y los siguientes polinomios
prod=prod*(x-xo(j))/(xo(i)-xo(j));
ter=strcat(ter,'*(x-',num2str(xo(j)),...
')/(', num2str(xo(i)),'-',num2str(xo(j)),')');
%concatenamos para poder imprimir la interpolacin
end
end
%sumando
yi=yi+prod;
pol=strcat(pol,'+',ter);
if i==n
disp (pol);
end
end
%NOTA en caso que no guste la funcin inline, si se borra de aqu hacia
%abajo la funcin nos devuelve la interpolacin sin reducir.
pol=sym(pol); %creamos una variable simplica con Symbolic math
pol= simplify(pol);
pol=inline(char(pol));
%con este comando de symbolic math podemos simplificar el polinomio de
%Lagrange, ademas transformamos pol a String o char para poder ejecutar esta funcin.

Script 2:
function Graficar(f,a,b,xo,yo)
%grafico para poder graficar nuestro polinomio interpolado
%f es el polinomio reducido (funcion inline) y a,b son as dimensiones del
%grfico
n=10 %tamao
d=linspace(a,b,n);%dominio que deseamos que tenga el grafico
for i=1:n
y(i)=f(d(i));
end
plot(d,y,'r',xo,yo,'b') %grafica
grid on %hace mas vistoso el grfico
hold on
2.Para esto probema se puede utilizar la parte 1. Considerando los 20 grados, 15 y 10
solicitados, simplemente hay que reemplazar los vectores creados a partir de la funcin
dada.
Estos vectores son: x10,y10 ; x15,y15; x20,y20.
Se ejecuta
>> [yi,p]=Lagrange(x10,y10,10)
>> [yi,p]=Lagrange(x15,y15,10)
>> [yi,p]=Lagrange(x20,y20,10)
y se obtiene lo pedido, que por temas de espacio homitiremos resultados. Se pueden ver al
ejecutar los comandos.

Vous aimerez peut-être aussi