Mat-1.414, V2 kevät 2000

Harjoitus no 2, to 3.2.

HA



Sisältö

  1. Tehtävä 3

Tehtävä 3

Komennot

Kokeillaan ensin:

Esim: f=exp, x0=0
%%%%%%%%%%%%%%%%%%%%%%%%%%%
x0=0   % Tällöin:
derjono=[1,1,1,1,1,1];
x=-1:.25:1;
nimittaja=gamma(1+(0:length(derjono)-1))
kertoimet=derjono./nimittaja;
No nyt olemme valmiit kirjoittamaan funktioksi:
%%%%%%%%%%%%%% taypol.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function kertoimet=taypol(derjono)
% Lasketaan Taylorin polynomin kertoimet. Asteluku määräytyy 
%     derjonon pituudesta
% derjono: [f(x0),f'(x0),f''(x0),...]
% pisteet, joissa lasketaan
nimittaja=gamma(1+(0:length(derjono)-1));
kertoimet=derjono./nimittaja;
kertoimet=fliplr(kertoimet);
%%%%%%%%%%%%%% taypol.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ja sitten testaamaan:
% Esim: f=exp, x0=0
x0=0   % Tällöin:
derjono=[1,1,1,1,1,1];

x=-1:.25:1;

c=taypol(derjono);               
y=polyval(c,x);                     
plot(x,y)
hold on
plot(x,exp(x),'r--')

c=taypol(ones(1,10));x=linspace(-1,3);y=polyval(c,x);   
plot(x,y-exp(x));grid
Derivaattajono voidaan generoida Maplella:
Maple-istunto (vaikka tekstiMaple)
> f:=exp(x): [seq(eval(subs(x=0,diff(f,x$k))),k=1..10)];
                        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
Matlab-istunto, leikkau/liimaus+editointi:
derjono= [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
c=taypol(derjono);
% jne ...

Taylorpolynomitaulukko

Vaikka näin:

m=length(x);n=length(derjono);
M=zeros(m,n);  % Allokoidaan 0-matriisi.
        
for j=1:n, c=taypol(derjono(1:j));
   M(:,j)=polyval(c,x)';
end;
                                       
Mexpx=[M exp(x)'];
>> Mexpx(1:10,:)

ans =

    1.0000         0    0.5000    0.3333    0.3750    0.3667    0.3679
    1.0000    0.0404    0.5008    0.3535    0.3889    0.3821    0.3830
    1.0000    0.0808    0.5033    0.3738    0.4036    0.3981    0.3988
    1.0000    0.1212    0.5073    0.3942    0.4191    0.4147    0.4153
    1.0000    0.1616    0.5131    0.4148    0.4354    0.4320    0.4324
    1.0000    0.2020    0.5204    0.4357    0.4526    0.4499    0.4502
    1.0000    0.2424    0.5294    0.4569    0.4706    0.4686    0.4688
    1.0000    0.2828    0.5400    0.4785    0.4895    0.4880    0.4881
    1.0000    0.3232    0.5522    0.5006    0.5093    0.5081    0.5083
    1.0000    0.3636    0.5661    0.5232    0.5300    0.5291    0.5292


Kannattaa kirjoittaa taypolval(derjono,x) , joka palauttaa tuon taulukon. Helppitekstinä Maple-generointiohje.

Täydennystä harj. teht. 3:een

Numeerisen integroinnin (Simpson) oma Matlab-koodi:
function [S,R]=simpson(f,a,b,n,M4)
% HA joskus viime vuosituhannella
% Syötteet:f   -  integroitava funktio
%          a,b -  välin päätepisteet
%           n  -  "pikkuv{lien lkm. parillinen, 
%          M4  -  f(4):n itseisarvon. max
% Huom:    M4:n määrittämiseen voidaan tarvita Maplea      
% Tulokset: S Simpsonarvo, R virhearvio

  h=(b-a)/n;
  w=2*ones(1,n-1);w(1:2:n-1)=4*ones(1,n/2); % jos n pariton, niin ruma virheilmo
  w=[1,w,1];
  x=a:h:b;y=feval(f,x);
  S=(h/3)*w*y';
  if nargout==2
     R=(M4*(b-a)*h^4)/180;
  end;



V2-kotisivu