³£¼û²åÖµ·¨ ÏÂÔØ±¾ÎÄ

³£¼û²åÖµ·¨

¡¾Õª Òª¡¿²åÖµ·½·¨ÔÚÊýÖµ·ÖÎöÖÐÆð×ŷdz£ÖØÒªµÄ×÷Óá£Ôڴ˽éÉÜһЩ³£¼ûµÄ²åÖµ·½·¨¼° ÆäÓ¦Ó÷¶Àý¡£

¡¾¹Ø¼ü×Ö¡¿ÊýÖµ·ÖÎö£»²åÖµ·½·¨£»Ó¦Óã»

1. ²åÖµ·¨¶¨Òå

²åÖµ·¨Óֳơ°Äڲ巨¡±£¬ÊÇÀûÓú¯Êýf (x)ÔÚÄ³Çø¼äÖÐ

²åÈëÈô¸ÉµãµÄº¯ÊýÖµ£¬×÷³öÊʵ±µÄÌØ¶¨º¯Êý£¬ÔÚÕâЩ

x0 x1 x2 ....... xn-1 xn y0 y1 y2 ....... yn-1 yn

±í(1) ²åÖµµã

µãÉÏÈ¡ÒÑÖªÖµ£¬ÔÚÇø¼äµÄÆäËûµãÉÏÓÃÕâÌØ¶¨º¯ÊýµÄÖµ×÷Ϊº¯Êýf (x)µÄ½üËÆÖµ£¬ÕâÖÖ·½·¨³ÆÎª²åÖµ·¨¡£Èç¹ûÕâÌØ¶¨º¯ÊýÊǶàÏîʽ£¬¾Í³ÆËüΪ²åÖµ¶àÏîʽ¡£

2.³£¼ûµÄ²åÖµ·¨¼°Æä¹¹Ôì

? Lagrange²åÖµ·¨

£¨a).¹«Ê½ÍƵ¼£º

±í£¨1£©µÄLagrange²åÖµµÄ²åÖµ¶àÏîʽ

n

Ln(x)??f(xi)li(x),(j=0,1,2....n)¡£

i?0ÆäÖвåÖµ»ùº¯ÊýÊÇ lxj)n(x)??n(x?,(i,j=0,1 2...n) ¡£ i(xi??0ji?xj)Æä²åÖµÓàÏîΪ

R(x)?f(x)?Ln(x)?f(n?1)n(?)?n?1(x),

(n?1)!

n ÆäÖÐ??£¨a,b)£¬?n?1(x)??(x?xj)(x?x) ii??0jij

(b).matlabʵÏÖ·½·¨£º

MatlabûÓÐÖ±½ÓÇó½âµÄÏà¹Øº¯Êý£¬ÏÖ±àÒëÈçÏ£º function yi = Lagarange_chazhi(x,y,xi)

% ÇóÀ­¸ñÀÊÈÕ²åÖµ,²¢·µ»ØÒ»¸öÊäÈëΪxiʱµÄº¯ÊýÖµ % x Ϊ²åÖµµãÏòÁ¿£¬ÖÁÉÙÓÐÈýÏî % y Ϊ²åÖµµãÖµµÄÏòÁ¿£¬ÏîÊýÓëxÏàͬ m = length(x); %Çó²åÖµ¸öÊý m1 = length(y); if m<=2

error('ÏîÊý²»×ã!'); end if m~=m1

error('!!!yµÄÏîÊýÓ¦ÓëxÏàͬ!!!'); end %¶Ô²ÎÊýµÄÅÐ¶Ï lag_hanshu = 0; syms X;

for (l = 1:m) %¹¹Ôì²åÖµ»ùº¯Êý la = y(l); for a = (1:l-1)

la = la*(X-x(a))/(x(l)-x(a)); end

for a = (l+1:m)

la = la*(X-x(a))/(x(l)-x(a)); end

format long

lag_hanshu = lag_hanshu+la;

%Çó½â³ö²åÖµº¯Êý end

yi = subs( lag_hanshu,'X',xi);

%·µ»Ø²åÖµº¯ÊýÊäÈëΪxiʱµÄÖµ End

(c).·½·¨È±ÏÝ£ºµ±²åÖµµã¸öÊýn?7ʱ£¬½«²úÉú

Áú¸ñÏÖÏó£º

¾­µäÀý×Ó£¬¶Ôf(x)?1(1?25x2)½øÐÐÀ­¸ñÀÊÈÕ²åֵͼ£¨1£©ÖдÓ×óµ½ÓÒ£¬´ÓÉϵ½Ï£¬n·Ö±ðΪ

ͼ(1) Lagarange²åÖµ·¨µÄÁú¸ñÏÖÏó

4,5...11£¬¿ÉÒÔ¿´³ö£¬µ±n?7ºó£¬ËüµÄ\\²åÖµº¯ÊýÔÚ

Á½¸ö¶Ëµã´¦·¢Éú¾çÁҵIJ¨¶¯£¬Ôì³É½Ï´óµÄÎó²î¡£ËùÒÔÀ­¸ñÀÊÈÕ²åÖµ·¨Ò»°ã²»ÊÊÓÃÓڸߴβåÖµ¡£

? ·Ö¶ÎÏßÐÔ²åÖµ·¨

(a).²åÖµÔ­Àí£º

Ϊ±ÜÃâ¸ß´Î²úÉúµÄÁú¸ñÏÖÏ󣬲ÉÓ÷ֶβåÖµ£¬ÏàÁÚÁ½½Úµã¼äµÄº¯ÊýΪһ´ÎÏßÐÔº¯Êý, ͼÐÎΪÏ߶Σ¬ÔÚ[a,b]¼äΪÕÛÏߣ¬Èçͼ£¨2£©¡£

x1x2xn?1

a?x0xn?b

ͼ(2) ·Ö¶ÎÏßÐÔ²åÖµ

(b).matlabʵÏÖ·½·¨£º

MatlabÖÐûÓÐÏֳɵĺ¯Êý£¬ÏÖ±àÒëÈçÏ£º function Fenduan_liner(x,y) %¶Ôx,y½øÐзֶÎÏßÐÔ²åÖµ %ÓÃÐéÏß»­³ö²åÖµºóµÄº¯Êý

m = length(x); %Çó²åÖµ¸öÊý m1 = length(y); if m~=m1

error('!!!yµÄÏîÊýÓ¦ÓëxÏàͬ!!!');

end %¶Ô²ÎÊýµÄÅÐ¶Ï hold on; for ii = 1:m-1

plot([x(ii) x(ii+1)],[y(ii) y(ii+1)]); %»­³öÏß¶Î end

plot(x,y,'o'); %»­³ö²åÖµµã end

(c).·½·¨È±ÏÝ£ºÔڽڵ㴦ÇúÏß²»Æ½»¬¡£

? ±£ÐβåÖµ£¨Hermite²åÖµ£©

£¨a).²åÖµÔ­Àí£º

Õë¶Ô·Ö¶Î²åÖµ·¨²»¹â»¬µÄÎÊÌ⣬Hermite²åÖµÒýÈë²å

ÖµµãµÄ

µ¼Êý¡£

xx0x1?xn

f(x)y0y1?ynf?(x)y?

0y1??y?n

±í(2) Hermite²åÖµ·¨ ÓÉÓÚÈô

f(x)?C1[a,b]ÇÒÒÑÖªf(x)º¯Êý±í¼°µ¼

Êý±í£¬Ôò´æÔÚΨһ²»³¬¹ý2n?1´Î¶àÏîʽH2n?1(x)Âú×ã²åÖµÌõ¼þ

??H2n?1(xi)?yiH(x'

(i?0,1,....n),

?2n?1i)?yiÔò£¬Í¨¹ýÇó½â·½³Ì£¬¿ÉµÃ³ö²åÖµº¯Êý

Æä²åÖµÓàÏîΪ Rf(2n?2)(?)2n?1(x)?(2n?2)!?2n?1(x)??(a,b)ÇÒÓëxÓйء£

(b).matlabʵÏÖ·½·¨£º

MatlabÖÐûÓÐÏֳɵĺ¯Êý£¬ÏÖ±àÒëÈçÏ£º function yi = Hermite(x,y,der_y,xi)

%¶Ôx,y½øÐÐHermite²åÖµ£¬Æä¸÷½ÚµãµÄµ¼ÊýΪder_y %·µ»ØÖµÎª´øÈë¾ØÕóxiºóµÄº¯ÊýÖµ if length(x) == length(y)

if length(y) == length(der_y)

n = length(x); %Çó²åÖµ¸öÊý end else

error('!!!yµÄÏîÊýÓ¦ÓëxÏàͬ!!!'); end if n<=1

warning('ÏîÊý²»×ã!');

end %¶Ô²ÎÊýµÄÅÐ¶Ï syms X; H = 0; for jj = 1:n a = 0; b = 0; l = 1; for ii = 1:n if ii ~= jj

a = a+1/(x(jj)-x(ii)); l = l*(X-x(ii))/(x(jj)-x(ii)); end end

A = (1-2*(X-x(jj))*a)*l^2; B = (X-x(jj))*l^2;

H = H+(A*y(jj)+B*der_y(jj)); %µü´ú·¨ÇóH end

yi = subs(H,'X',xi); end

lagarange Áú¸ñ ²åÖµ·¨ÏÖÏó ½µ´Î ·Ö ¶Î Ïß ½Úµã ÐÔ·ÀÖ¹Áú¸ñÏÖÏó ²åÖµ·¨ ²»¹â»¬ ¹â»¬ Hermite µ¼Êý²» ½Úµã´¦µ¼ÊýÏàͬ²åÖµ·¨ Ò׵õ½ ÓÉ ±ß½çÌõ¼þÍÆµ¼¸÷½Úµãµ¼Êý Èý´ÎÑùÌõ ²åÖµ·¨ 3. ²åÖµ·¨¶Ô±ÈÀýÖ¤

¶Ôy?1,x?[-1,1],ÔÚ1?25x2x=-1,-0.5,0,0.5,1µã´¦²åÖµ ´úÂëÈçÏ£º

syms X;

Y = 1./(1+25*X^2); x = -1:0.5:1; y = subs(Y,'X',x);

der_y = subs(diff(Y),'X',x); xi = -1:0.01:1; yi = 1./(1+25*xi.^2);

yi_Lagarange = Lagarange_chazhi(x,y,xi); yi_Hermite = Hermite(x,y,der_y,xi); yi_Yangtiao = spline(x,y,xi); hold on;

plot(x,y,'o',xi,yi,'b'); %»­³ö·Ö¶Î²åÖµ Fenduan_liner(x,y); %»­³öÀ­¸ñÀÊÈÕ²åÖµ plot(xi,yi_Lagarange,':g'); %»­³öHermite²åÖµ plot(xi,yi_Hermite,':'); %»­³öÈý´ÎÑùÌõ²åÖµ plot(xi,yi_Yangtiao,'--g');

(c).·½·¨È±ÏÝ£ºÎÞ·¨»ñµÃ¸÷µãµÄµ¼Êý

¢Ü Èý´ÎÑùÌõ·¨

(a).²åÖµÔ­Àí£º

¶ÔÿÁ½¸öµã¼ä½øÐÐÈý´Î¶àÏîʽµÄ²åÖµ,ÇÒͨ¹ý¶Ëµãµ¼ÊýÍÆµ¼³ö¸÷µãµ¼Êý£¬Ê¹µÃ²åÖµº¯ÊýÔÚ²åÖµµã´¦µ¼ÊýÏàµÈ¡£

(b).matlabʵÏÖ·½·¨£º

MatlabÓÐÏֳɵĺ¯Êýspline£¬ÒÔÏÂΪ¡®help spline¡¯ ¡°PP = spline(X,Y) provides the piecewise polynomial form of the cubic spline interpolant to the data values Y at the data sites X,for use with the evaluator PPVAL and the spline utility UNMKPP.X must be a vector.¡±

¢Ý ²åÖµ·¨¹ØÏµÍ¼

½á¹ûͼÐÎΪ

£¨×¢£ºÀ¶É«ÊµÏßΪԭº¯Êý£¬À¶É«Ô²µãΪ²åÖµµã£¬À¶É«¶ÌÐéÏßΪ·Ö¶ÎÏßÐÔ²åÖµ£¬À¶É«µãÐéÏßΪHermite²åÖµ£¬ÂÌÉ«µã ÐéÏßΪLagarange²åÖµ£¬ÂÌÉ«¶ÌÐéÏßΪÈý´ÎÑùÌõ²åÖµ£©

½á¹û·ÖÎö£º

ËùÓвåÖµ·¨ÖУ¬·Ö¶ÎÏßÐÔ²åÖµ×îÌù½üÔ­º¯Êý£¬Æä´ÎHermite²åÖµ·¨£¬ÔÙÆä´ÎΪÈý´ÎÑùÌõ£¬ÓëLagarange²åÖµ

·¨½Ó½ü¡£µ«·Ö¶ÎÏßÐÔ²åÖµ·¨ÔÚ½áµã´¦²»¹â»¬£¬Hermiteµ¼ÊýÐÅÏ¢²»Ò×»ñµÃ£¬Lagarange²åÖµ·¨ËäÈ»¼ÆËã¼òµ¥£¬µ«¸ß´Î²úÉúÁú¸ñÏÖÏó£¬ËùÒÔÈý´ÎÑùÌõ²åÖµ·¨±È½ÏʵÓá£

¡¾²Î¿¼ÎÄÏס¿1.MATLABÊýÖµ·ÖÎö µÚ2°æ »úе¹¤Òµ³ö°æÉç ÕÅµÂ·á µÈ±àÖø