数值分析实验题和程序报告.docx

上传人:b****1 文档编号:965722 上传时间:2022-10-14 格式:DOCX 页数:14 大小:133.23KB
下载 相关 举报
数值分析实验题和程序报告.docx_第1页
第1页 / 共14页
数值分析实验题和程序报告.docx_第2页
第2页 / 共14页
数值分析实验题和程序报告.docx_第3页
第3页 / 共14页
数值分析实验题和程序报告.docx_第4页
第4页 / 共14页
数值分析实验题和程序报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数值分析实验题和程序报告.docx

《数值分析实验题和程序报告.docx》由会员分享,可在线阅读,更多相关《数值分析实验题和程序报告.docx(14页珍藏版)》请在冰豆网上搜索。

数值分析实验题和程序报告.docx

数值分析实验题和程序报告

 

数值分析实验题和程序

实验2.1多项式插值的振荡现象

问题提出:

考虑在一个固定的区间上用插值逼近一个函数。

显然

Lagrange插值中使用的节点越多,插值多项式的次数就越高。

我们自然关

心插值多项的次数增加时,Ln(x)是否也更加靠近被逼近的函数。

Runge

给出的一个例子是极著名并富有启发性的。

设区间[-1,1]上函数

1

f(x)2

1+25x

实验内容:

考虑区间[-1,1]的一个等距划分,分点为

2i

Xj=-1•,i=0,1,2,…,n

n

则拉格朗日插值多项式为

li(x)

1

2

125xi

其中,h(x),i=0,1,2,…,n是n次Lagrange插值基函数。

实验要求:

(1)选择不断增大的分点数目n=2,3,…画出原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像,比较并分析实验结果。

(2)选择其他的函数,例如定义在区间[-5,5]上的函数

x

h(x)=,g(x)=arctanx

1+x

重复上述的实验,看其结果如何。

1、实验MATLAB程序

functioncharpt2_1

%数值实验2.1:

多项式插值的震荡现象

%输入:

函数式选择,插值节点数

%输出:

拟合函数及原函数的图形

promps={'选择实验函数,若选f(x),输入f,若选h(x),输入h,若选g(x),输

入g:

'};

result=inputdlg(promps,'charpt2_1',1,{'f'});

Nb_f=char(result);

if(Nb_f~='f'&Nb_f~='h'&Nb_f~='g')

errordlg('实验函数选择错误!

');return;

end

result=inputdlg({'请输入第一幅图插值节点数N>=2:

'},'charpt2_1',1,{'2'});

Nd0=str2num(char(result));

if(Nd0<2)

errordlg('节点数输入错误!

');return;

end

result=inputdlg({'请输入两幅图间插值节点数差值D:

'},'charpt2_1',1,{'1'});

D=str2num(char(result));

switchNb_f

case'f'

f=inline('1./(1+25*x.A2)');a=-1;b=1;

case'h'

f=inline('x./(1+x.A4)');a=-5;b=5;

case'g'

f=inline('atan(x)');a=-5;b=5;

end

fori=1:

6

Nd=Nd0+(i-1).*D;

x0=linspace(a,b,Nd+1);y0=feval(f,x0);

x=a:

0.01:

b;

y=Lagrange(x0,y0,x);

subplot(2,3,i);

plot(x0,y0,'*');

holdon;

fplot(f,[a,b],'k');

holdon;

plot(x,y,'b--');

s1='x(节点数N=';s2=num2str(Nd);

s3=')';s=[s1s2s3];xlabel(s);

ylabel('y=f(x)-andy=Ln(x)--');end

%Lagrange插值函数

functiony=Lagrange(x0,y0,x)n=length(x0);

m=length(x);

fori=1:

mz=x(i);s=0.0;

fork=1:

n

p=1.0;

forj=1:

nif(j~=k)p=p*(z-x0(j))/(x0(k)-x0(j));

endends=s+p*y0(k);

endy(i)=s;

end

2、实验结果

%g02

K(节N=2>

丄iu/=xPJn-主匕监

丄iua匕pjiE肯匕=<

-0.S0

x(节点如®

』.50

M[书点数HE

pun

丄卓-5Lpu牌mnl

电!

5«阳

徨(节点5+N=T)

图1-1函数f(x)对应的Lagrange插值函数图形(节点数2〜7)

pus:

■1-0.500.S

mf节点ftM=a>

1

丄iIrlEpUE->亘;|ei

4S

.21.S.64.2

T.ao.Qa

•1-fl.6D06

胃M=9)

-04

丄MJnrlHXpuir・CIIIL

■051一

-1-0.5QD■丐

Xf节点數

丄壬Inlp羸・ETS

iK>lrlLpuq■7T

!

/b

i/V

-0.50M

xf节点败讯酣

 

4

2.4丿-(I.

jpuH-〔«}■=』

0

Ji{节点S*N=2>

丄xxnLpum-s'

0

x(节点Hhi=3>

04Q.-aQ丄X耳L乍

ipUE-R-H*n

05

覚「节点gSN=5>

丄昌UJLIB•iiH

D5

wC节点数M=6>

X•:

•节.^M=4;

mjRttN=7)

 

图1-3函数h(x)对应的Lagrange插值函数图形(节点数2〜7)

.<511・SE-M5L■s」k

 

kf节ASSN=2>

51505d5I

1E5LP匚n宣I>1

D&

*f节jft.^N=3>

古互虽pue■S-L

n

X(帯点■数N=5>

丄305LpugAiTA

xK节磁N"

 

图1-5函数g(x)对应的Lagrange插值函数图形(节点数2〜7)

 

D&

xN=W>

=・j5aipu恒•iITE

fl

4-1

•丄昶百“土punj’il-^TiJi

xC书点HN=i2)

1

丄吕5L?

b•(工|耳

•am'5」?

:

s兀

o

xf节点KSN=fl)

■-ujlJqLpUE-iMJ

-*弓」n?

:

_r』

x{节N=11>

 

3、结果分析

根据实验结果可以看出,无论是哪个函数在某个低次以下时,插值函数值与实际函数值差别很大。

随着次数上升,插值函数值越接近实际函数值,但是这只是在一定的区间上。

如果不在此区间上,随着次数上升,会出现插值结果突然偏离原函数的现象,次数越高,偏离现象越严重。

实验3.1三次多项式最小二乘拟合

-n

编制以函数:

xk?

为基的多项式最小二乘拟合程序,并用于对表k兰

3.11中的数据作三次多项式最小二乘拟合。

表3.11

Xi

-1.0

-0.5

0.0

0.5

1.0

1.5

2.0

yi

-4.447

-0.452

0.551

0.048

-0.447

0.549

4.552

n

取权数.=1,求拟合曲线:

-;xk中的参数〕j、平方误差

k=0

-■2,并作离散数据认,的拟合函数y二*(x)的图形。

1、实验MATLAB程序

functioncharpt3_1

%数值实验3.1:

三次多项式最小二乘拟合

%输岀:

原函数及求得的插值多项式函数图形以及参数alph和误差r

x0=-1:

0.5:

2;

y0=[-4.447-0.4520.5510.048-0.4470.5494.552];

n=3;%n为拟合阶次

alph=polyfit(x0,y0,n);%参数'■-

y=polyval(alph,x0);

%平方误差

r=(y0-y)*(y0-y)';

x=-1:

0.01:

2;

y=polyval(alph,x);

plot(x,y,'k--');

xlabel('x');

ylabel('yO*andpolyval.y--');

holdon;

plot(xO,yO,'*');

title(离散数据的3次多项式最小二乘拟合');

gridon;

disp(['参数alph:

',num2str(alph)]);

disp(['平方误差:

',num2str(r)]);

2、实验结果

当取权数,=1时,所求离散数据认,yi[的3次多项式最小二乘拟合函数y=^(x)的图形如图2-1所示。

图2-1离散数据的3次多项式最小二乘拟合

3

拟合曲线0=送ot;xk中的参数的值依次为:

k-Q

1.9991-2.9977-3.9683e-0050.54912

平方误差j.2为:

2.1762e-005。

3、结果分析

最小二乘曲线拟合是在离散情形下的最佳平方逼近,拟合的曲线很光滑,而且所有的7个数值点均在曲线上,拟合效果很好,拟合的平方误差很小,为10-5量级。

实验5.1常微分方程性态和R-K法稳定性实验

实验目的:

考察下面微分方程右端项中函数y前面的参数对方程性态

的影响(它可使方程为好条件的或坏条件的)和研究计算步长对R-K法计

算稳定性的影响。

实验题目:

常微分方程初值问题

厂'

』y=cty—o(x+1,0CXC1,

』(0)=1,

其中,-50_50。

其精确解为y(x)=e〉Xx。

实验要求:

本实验题都用4阶经典R-K法计算。

(1)对参数:

-,分别取4个不同的数值:

一个大的正值,一个小的

正值,一个绝对值小的负值和一个绝对值大的负值。

取步长h=0.01,分别

用经典的R-K法计算,将四组计算结果画在同一张图上,进行比较并说明

相应初值问题的性态。

(2)取参数:

为一个绝对值不大的负值和两个计算步长,一个步长使参数在经典R-K法的稳定域内,另一个步长在经典R-K法的稳定域外。

分别用经典R-K法计算并比较计算结果。

取全域等距的10个点上的计算值,列表说明。

1、实验MATLAB程序

functioncharpt5_1

%数值实验5.1:

常微分方程性态和R-K法稳定性实验

%输入:

参数a,步长h

%输出:

精确解和数值解图形对比

promps={'若选择实验要求1,请输入1;若选择实验要求2,请输入2:

'};result=inputdlg(promps,'charpt5_1',1,{'1'});

Nb=str2num(char(result));

if(Nb~=1)&(Nb~=2)

errordlg('选择错误!

');return;

end

if(Nb==1)

result=inputdlg({'请输入参数a的一个大的正值:

'},'charpt5_1',1,{'40'});a=str2num(char(result));

result=inputdlg({'请输入参数a的一个小的正值:

'},'charpt5_1',1,{'10'});b=str2num(char(result));

result=inputdlg({'请输入参数a的一个绝对值小的负值:

'},'charpt5_1',1,{'-10'});

c=str2num(char(result));

result=inputdlg({'请输入参数a的一个绝对值大的负值:

'},'charpt5_1',1,{'-40'});

d=str2num(char(resu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1