第二章 函数的插值方法(3)

2018-11-23 23:15

*(3.^(1./2)+sin(2.*x))./(3.+4.*x.^2).^2)+16.*(1.+tan(cos((3.^(1./2)+sin(2.*x))./(3.+4.*x.^2))).^2).^2.*sin((3.^(1./2)+sin(2.*x))./(3.+4.*x.^2)).^4.*(2.*cos(2.*x)./(3.+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3.+4.*x.^2).^2.*x).^4.*tan(cos((3.^(1./2)+sin(2.*x))./(3.+4.*x.^2)))+8.*tan(cos((3.^(1./2)+sin(2.*x))./(3.+4.*x.^2))).^3.*(1.+tan(cos((3.^(1./2)+sin(2.*x))./(3.+4.*x.^2))).^2).*sin((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).^4.*(2.*cos(2.*x)./(3+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3.+4.*x.^2).^2.*x).^4-8.*tan(cos((3.^(1./2)+sin(2.*x))./(3.+4.*x.^2))).*(1.+tan(cos((3.^(1./2)+sin(2.*x))./(3.+4*x.^2))).^2).*sin((3.^(1./2)+sin(2.*x))./(3.+4.*x.^2)).^2.*(2.*cos(2.*x)./(3.+4.*x.^2)-8*(3.^(1./2)+sin(2.*x))./(3.+4*x.^2).^2.*x).^4+6.*(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*sin((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).*(2.*cos(2.*x)./(3+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2.*x).^2.*(-4.*sin(2.*x)./(3+4.*x.^2)-32.*cos(2.*x)./(3+4.*x.^2).^2.*x+128.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^3.*x.^2-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2)+(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).*(2.*cos(2.*x)./(3+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2.*x).^4-3.*(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).*(-4.*sin(2.*x)./(3+4.*x.^2)-32.*cos(2.*x)./(3+4.*x.^2).^2.*x+128.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^3.*x.^2-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2).^2-4.*(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).*(2.*cos(2.*x)./(3+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2.*x).*(-8.*cos(2.*x)./(3+4.*x.^2)+96.*sin(2.*x)./(3+4.*x.^2).^2.*x+768.*cos(2.*x)./(3+4.*x.^2).^3.*x.^2-48.*cos(2.*x)./(3+4.*x.^2).^2-3072.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^4.*x.^3+384.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^3.*x)-(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*sin((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).*(16.*sin(2.*x)./(3+4.*x.^2)+256.*cos(2.*x)./(3+4.*x.^2).^2.*x-3072.*sin(2.*x)./(3+4.*x.^2).^3.*x.^2+192.*sin(2.*x)./(3+4.*x.^2).^2-24576.*cos(2.*x)./(3+4.*x.^2).^4.*x.^3+3072.*cos(2.*x)./(3+4.*x.^2).^3.*x+98304.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^5.*x.^4-18432.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^4.*x.^2+384.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^3)-12.*(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).^2*sin((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).^2.*(2.*cos(2.*x)./(3+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2.*x).^4.*cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))-24.*tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2.*(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*sin((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).^3.*(2.*cos(2.*x)./(3+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2.*x).^2.*(-4.*sin(2.*x)./(3+4.*x.^2)-32.*cos(2.*x)./(3+4.*x.^2).^2.*x+128.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^3.*x.^2-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2)-24.*tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2.*(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*sin((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).^2.*(2.*cos(2.*x)./(3+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2.*x).^4.*cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))+36.*tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).*(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*sin((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).*(2.*cos(2.*x)./(3+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2.*x).^2.*cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).*(-4.*sin(2.*x)./(3+4.*x.^2)-32.*cos(2.*x)./(3+4.*x.^2).^2.*x+128.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^3.*x.^2-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2)+6.*tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).*(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*cos((3.^(1./2)+sin(2.*x))./(3

86.

+4.*x.^2)).^2.*(2.*cos(2.*x)./(3+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2.*x).^4+6.*tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).*(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*sin((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).^2.*(-4.*sin(2.*x)./(3+4.*x.^2)-32.*cos(2.*x)./(3+4.*x.^2).^2.*x+128.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^3.*x.^2-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2).^2+8.*tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).*(1+tan(cos((3.^(1./2)+sin(2.*x))./(3+4.*x.^2))).^2).*sin((3.^(1./2)+sin(2.*x))./(3+4.*x.^2)).^2.*(2.*cos(2.*x)./(3+4.*x.^2)-8.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^2.*x).*(-8.*cos(2.*x)./(3+4.*x.^2)+96.*sin(2.*x)./(3+4.*x.^2).^2.*x+768.*cos(2.*x)./(3+4.*x.^2).^3.*x.^2-48.*cos(2.*x)./(3+4.*x.^2).^2-3072.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^4.*x.^3+384.*(3.^(1./2)+sin(2.*x))./(3+4.*x.^2).^3.*x)

myxx=max(yxxxx), R=(h.^4).* abs(myxx./384)

将其保存为名为myxx.m的M文件,然后在MATLAB工作窗口输入该文件名

>> myxx 运行后屏幕显示myxx =maxf???x??(4)(x)和Hn,3(x)在区间[??,?]上的误差公式

h4R?maxf384???x??(4)(x)如下

myxx = R =

73.94706841647552 1734520780029061/9007199254740992*h^4

最后在MATLAB工作窗口输入

>>h=2*pi/9; R =1734520780029061/9007199254740992*h^4

运行后屏幕显示Hn,3(x)在区间[??,?]上的误差限

R =

0.04574453029948

2.5 三次样条(Spline)及其MATLAB程序

2.5.4 用一阶导数计算的几种样条函数和MATLAB程序

计算压紧样条的MATLAB主程序

function

[m,H,lambda,mu,D,A,dY,sk]=ClampedSp (X,Y,dyo,dyn) m=length(X);A=zeros(m,m);

n=m-1;H=zeros(1,n);lambda=zeros(1,n);

mu=zeros(1,n);lambda(1)=0;A(1,1)=2;A(1,2)=lambda(1); D=zeros(1,n);H(1)=X(2)-X(1);mu(1)=1-lambda(1);D(1)=2*dyo

;

for k=1:n

hk=X(k+1)-X(k);H(k+1)=hk; end

H=H(2:n+1); for k=1:n-1

lambdak=H(k)/(H(k)+H(k+1)); lambda(k+1)=lambdak; muk=1-lambda(k+1);mu(k)=muk;

dk=3*((mu(k).*(Y(k+1)-Y(k))./H(k))+(lambda(k+1).*(Y(k+2)

-Y(k+1))./H(k+1)));

D(k+1)=dk; end

D(m)=2*dyn;mu(n)=0; n;H;lambda;mu;D; for i=1:m-1

A(i,i)=2;A(m,m)=2; A(i,i+1)=lambda(i); A(i+1,i)=mu(i); end

dY=A\\D';

87.

syms x m=length(X);S=zeros(m-1,1); for k=2:m

sk=Y(k-1)*((H(k-1)-2*X(k-1)+2*x)*(x-X(k))^2)/(H(k-1)^3)+

Y(k)*((H(k-1)+2*X(k)-2*x)*(x-X(k-1))^2)/(H(k-1)^3)+dY(k-1)*((x-X(k-1))*(x-X(k))^2)/(H(k-1)^2)+dY(k)*((x-X(k))*(x-X(k-1))^2)/(H(k-1)^2)

end

例2.5.2 用计算压紧样条的MATLAB主程序ClampedSp.m求例6.7.1的问题. 解 保存ClampedSp.m为M文件,输入程序

>> X=[0:2:6,10],Y=[0,16,36,54,82],dyo=8,dyn=7, [m,H,lambda,mu,D,A,dY,sk]=ClampedSp(X,Y,dyo,dyn)

运行后输出压紧样条函数sk,X的维数m,由hi?1(i?1,2,?,n)、?i、?i和di (6.90)式的系数矩阵A,(i?1,2,?,n?1)的坐标组成的向量H、lambda和mu、D,

线性方程组(6.90)的解向量dY如下

sk =

2*(6-2*x)*x^2+2*x*(x-2)^2+9/4*(x-2)*x^2 sk =

2*(-2+2*x)*(x-4)^2+9/2*(10-2*x)*(x-2)^2+9/4*(x-2)*(x-4)^

2+5/2*(x-4)*(x-2)^2

sk =

9/2*(-6+2*x)*(x-6)^2+27/4*(14-2*x)*(x-4)^2+5/2*(x-4)*(x-6)^2+2*(x-6)*(x-4)^2

sk =

27/32*(-8+2*x)*(x-10)^2+41/32*(24-2*x)*(x-6)^2+1/2*(x-6)

*(x-10)^2+7/16*(x-10)*(x-6)^2

m = 5 H =

2 2 2 4 lambda =

0 0.5000 0.5000 0.3333 mu =

0.5000 0.5000 0.6667 0 D =

16.0000 27.0000 28.5000 25.0000 14.0000 A =

2.0000 0 0 0 0 0.5000 2.0000 0.5000 0 0 0 0.5000 2.0000 0.5000 0 0 0 0.6667 2.0000 0.3333 0 0 0 0 2.0000 dY =

8.0000 9.0000 10.0000 8.0000 7.0000 输入程序

>> x2=3,

s2=2*(-2+2*x)*(x-4)^2+9/2*(10-2*x)*(x-2)^2+9/4*(x-2)*(x-4)^2+5/2*(x-4)*(x-2)^2

x4=8,

s4=27/32*(-8+2*x)*(x-10)^2+41/32*(24-2*x)*(x-6)^2+1/2*(x

-6)*(x-10)^2+7/16*(x-10)*(x-6)^2

运行后输出f(3)?s2(3)和f(8)?s4(8)的值如下

88.

x2 = s2 = x4 = s4 = 3 25.7500 8 68.5000 例2.5.2和例2.5.1计算的结果完全相同. 计算自然样条的MATLAB主程序

function [m,H,lambda,mu,D,A,dY,sk]=NaturalSp(X,Y) m=length(X);A=zeros(m,m);

n=m-1;H=zeros(1,n);lambda=zeros(1,n);

mu=zeros(1,n);lambda(1)=1;A(1,1)=2;A(1,2)=lambda(1); D=zeros(1,n);H(1)=X(2)-X(1);mu(1)=1;D(1)=3*(Y(2)-Y(1)); for k=1:n

hk=X(k+1)-X(k);H(k+1)=hk; end

H=H(2:n+1); for k=1:n-1

lambdak=H(k)/(H(k)+H(k+1)); lambda(k+1)=lambdak; muk=1-lambda(k+1);mu(k)=muk;

dk=3*((mu(k).*(Y(k+1)-Y(k))./H(k))+(lambda(k+1).*(Y(k+2)

-Y(k+1))./H(k+1)));

D(k+1)=dk; end

D(m)= 3*(Y(m)-Y(m-1))/H(m-1);mu(n)=1; n;H;lambda;mu;D; for i=1:m-1

A(i,i)=2;A(m,m)=2; A(i,i+1)=lambda(i); A(i+1,i)=mu(i); end

dY=A\\D'; syms x

m=length(X);S=zeros(m-1,1); for k=2:m

sk=Y(k-1)*((H(k-1)-2*X(k-1)+2*x)*(x-X(k))^2)/(H(k-1)^3)+

Y(k)*((H(k-1)+2*X(k)-2*x)*(x-X(k-1))^2)/(H(k-1)^3)+dY(k-1)*((x-X(k-1))*(x-X(k))^2)/(H(k-1)^2)+dY(k)*((x-X(k))*(x-X(k-1))^2)/(H(k-1)^2)

end

例2.5.3 用计算自然样条的MATLAB主程序NaturalSp.m求例6.7.1的问题. 解 保存ClampedSp.m为M文件,输入程序

>> X=[0:2:6,10],Y=[0,16,36,54,82],dyo=8,dyn=7, [m,H,lambda,mu,D,A,dY,sk]=NaturalSp(X,Y)

运行后输出自然样条函数sk, X的维数m,由hi?1(i?1,2,?,n)、?i、?i和di (6.88)式的系数矩阵A,(i?1,2,?,n?1)的坐标组成的向量H、lambda和mu、D,

线性方程组(6.88)的解向量dY如下

sk =

2*(6-2*x)*x^2+915/172*x*(x-2)^2+117/86*(x-2)*x^2 sk =

2*(-2+2*x)*(x-4)^2+9/2*(10-2*x)*(x-2)^2+117/86*(x-2)*(x-4)^2+471/172*(x-4)*(x-2)^2

sk =

9/2*(-6+2*x)*(x-6)^2+27/4*(14-2*x)*(x-4)^2+471/172*(x-4)

*(x-6)^2+333/172*(x-6)*(x-4)^2

sk =

27/32*(-8+2*x)*(x-10)^2+41/32*(24-2*x)*(x-6)^2+333/688*(

x-6)*(x-10)^2+285/688*(x-10)*(x-6)^2

m = 5

H = 2 2 2 4

lambda = 1 1/2 1/2 1/3 mu = 1/2 1/2 2/3 1

D = 48 27 57/2 25 21 A =

89.

2 1 0 0 0 1/2 2 1/2 0 0 0 1/2 2 1/2 0 0 0 2/3 2 1/3 0 0 0 1 2 dY =

915/43 234/43 471/43 333/43 285/43 输入程序

>> x2=3,

s2=2*(-2+2*x)*(x-4)^2+9/2*(10-2*x)*(x-2)^2+117/86*(x-2)*

(x-4)^2+471/172*(x-4)*(x-2)^2

x4=8,

s4=s4=27/32*(-8+2*x)*(x-10)^2+41/32*(24-2*x)*(x-6)^2+333

/688*(x-6)*(x-10)^2+285/688*(x-10)*(x-6)^2 运行后输出f(3)?s2(3)和f(8)?s4(8)的值如下

x2 = s2 = x 4= s4 = 3 24.6221 8 68.5581

例2.5.3和例2.5.2用的方法不同,所以计算的结果不同,但是两种方法计算的结果相近.

2.5.6 用MATLAB计算三次样条

例2.5.6 给出节点的数据如下: -2.46 -5.26 -1.87 0.05 1.65 2.69 4.56 7.89 10.31 分别求在下列条件下在插值点x1??0.02,x2?2.56处的压紧三次样条插值,并显示该样条函数的有关信息:

?(?1)?5,Sn?(3.50)?29.16; (1)端点约束条件为Snx -1.00 -0.54 0.13 1.12 1.89 2.06 2.54 2.82 3.50 f(x) ?(?1)?0,Sn?(3.50)?0. (2)端点约束条件为Sn解 (1)输入MATLAB程序

>> X=[-1.00 -0.54 0.13 1.12 1.89 2.06 2.54 2.82

3.50];

Y=[-2.46 -5.26 -1.87 0.05 1.65 2.69 4.56 7.89 10.31];

XI=[-0.02 2.56]; YI= spline (X, [5,Y,29.16],XI), PP = spline (X, [5,Y,29.16])

x2?2.56处的插值和该样条函数的有关信运行后屏幕显示压紧样条分别在x1??0.02,

息如下

YI =

-3.1058 4.7834 PP = form: 'pp'

breaks: [-1 -0.5400 0.1300 1.1200 1.8900 2.0600 2.5400 2.8200 3.5000] coefs: [8x4 double] pieces: 8

90.


第二章 函数的插值方法(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2019北京课改版语文九年级上册第6课《应有格物致知精神》教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: