Documentos de Académico
Documentos de Profesional
Documentos de Cultura
T1 Cálculo NumZérico
T1 Cálculo NumZérico
1:
Clculo
Numrico
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
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
Conclusin
Considerando que Hnwn=bn donde (bn)i =
!
!
!!! !!!!!
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:
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.