-6 0.99
-5 0.94
-4 0.88
-3 0.78
-2 0.615
-1 0.31
0 0
1 0.31
2 0.615
3 0.78
4 0.88
5 0.94
6 0.99
a)
Hallar un modelo de padé que vincula a 't' con 'y', es decir y=G(t), que ajuste a los datos de la tabla con error menor a 0.04. Usando dicha función pronostique los valores que tomaría y(t) para t=3.5 y para t=4. Estime lim t->inf (G(t)).
b)
Para el modelo hallado en a) considere la ecuación diferencial:
y''(t)=y(t)*G(t)
y(0)=0.15
y'(0)=0.03
Encuentre T tal que y(t)=1.8 y grafique para x(t) para t en [0,T]
voy a usar funciones:
1)
function [n,m]=busca_grados_pade(x,y,err_rel_propuesto) n=0; m=1; gt=n+m; [P,Q]=padefit(x,y,n,m); err=norm(y-padeval(P,Q,x))/norm(y); while err>=err_rel_propuesto gt=gt+1; for k=gt:-1:1 m=k; n=gt-k; [P,Q]=padefit(x,y,n,m); err=norm(y-padeval(P,Q,x))/norm(y); if err<err_rel_propuesto return; end end end
2)
function [P,Q]=padefit(x,y,n,m) A=[]; for k=n:-1:0 A=[A x.^k]; end for k=m:-1:1 A=[A -y.*(x.^k)]; end param=pinv(A)*y; P=param(1:n+1); Q=param(n+2:end);
3)
function y=padeval(P,Q,x) y=polyval(P,x)./polyval([Q;1],x);
4)
function y=fun(x,n) a=cputime; if nargin==1 n=2+round(log(0.5*x.^2+1)); end y=exp(-x.^2/5)+x; if n==0 y=y-1; %a %cputime %puf=1 %pause while cputime<a+2 %puf=puf+1 a=a-0.0001*rand(1,1); %b=cputime %pause; end return; end y=fun(y,n-1);
SOLUCION:
>> t=[-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6]
>> y=[0.99,0.94,0.88,0.78,0.615,0.31,0,0.31,0.615,0.78,0.88,0.94,0.99];
>> t=t';
>> y=y';
>> [a,n]=busca_grados_pade(t,y,0.04)
a =
2
n =
2
>> [P,Q]=padefit(t,y,a,n);
>> F=@(x)padeval(P,Q,x);
>> F(3.5)
ans =
0.8392
>> lim=P(1)/Q(1)
lim =
1.0866
No comments:
Post a Comment