数值分析实验题华科.docx
《数值分析实验题华科.docx》由会员分享,可在线阅读,更多相关《数值分析实验题华科.docx(14页珍藏版)》请在冰豆网上搜索。
数值分析实验题华科
数值分析实验题(-华科)
数值分析实验作业
专业:
姓名:
学号:
实验2.1多项式插值的振荡现象
[问题提出]:
考虑在一个固定的区间上用插值逼近一个函数,显然Lagrange插值中使用的节点越多,插值多项式的次数就越高,我们自然关心插值多项的次数增加时,Ln(x)是否也更加靠近逼近的函数,Runge给出的例子是极著名并富有启发性的,设区间[-1,1]上函数
[实验内容]:
考虑区间[-1,1]的一个等距离划分,分点为
则拉格朗日插值多项式为
其中,
,i=0,1,2,…,n是n次Lagrange插值函数。
[实验要求]:
(1)选择不断增大的分点数目n=2,3,…画出原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像,比较并分析实验结果。
(2)选择其他的函数,例如定义在区间[-5,5]上的函数,
重复上述的实验看其结果如何。
解:
以下的f(x)、h(x)、g(x)的为插值点用“*”表示,朗格朗日拟合曲线用连续曲线表示。
通过三个函数的拉格朗日拟合可以看到,随着插值点的增加,产生Rung现象。
(1)f(x)
(2)h(x)
(3)g(x)
实验3.1最小二乘法拟合
编制以函数
为基的多项式最小二乘拟合程序,并用于对表中的数据作三次多项式最小二乘拟合。
-1.0
-0.5
0.0
0.5
1.0
1.5
2.0
-4.447
-0.452
0.551
0.048
-0.447
0.549
4.552
取权数
求拟合曲线
中的参数
,平方误差
,并作离散数据
的拟合函数
的图形。
解:
三次多项式的拟合曲线为:
此题中权函数
,即W=(1,1,1,1,1,1,1)
利用法方程
求解这个方程组,就可以得到系数a。
解之得:
故拟合的函数为:
平方误差为:
2.176191667187105e-05
拟合的函数图像如下:
实验5.1常微分方程性态和R-K法稳定性试验
[试验目的]:
考察下面的微分方程右端项中函数y前面的参数对方程性态的影响(它可使方程为好条件的或坏条件的)和研究计算步长对R-K法计算稳定性的影响。
[实验题目]:
常微分方程初值问题
其中,
。
其精确解为
[实验要求]:
(1)对于参数
,分别去四个不同的数值:
一个大的正值,一个小的正值,一个绝对值小的负值和一个绝对值大的负值。
取步长
,分别用经典R-K法计算,将四组计算结果画在同一张图上,进行比较并说明相应初值问题的性态。
(2)对于参数
为一个绝对值不大的负值和两个计算步,一个计算步使参数
在经典R-K法的稳定域内,另一个步长在经典的R-K法的稳定域外。
分别用经典R-K法计算并比较计算结果。
取全域等距的10个点上的计算值,列表说明。
解:
对于4阶R-K法绝对稳定区为:
这里
,所以绝对稳定区为:
(1)
对于
,绝对稳定区:
a
2
1
-1
-2
h
0.01
0.01
0.01
0.01
(2)
对于
,稳定区
a
-20
-20
h
0.01
0.15
x
y(精确解)
数值解y1
(a=-20,h=0.01)
y1-y
数值解y2
(a=-20,h=0.15)
y1-y
0.15
0.199787
0.199789
2.35E-06
1.525000
1.325213
0.30
0.302479
0.302479
2.34E-07
2.190625
1.888146
0.45
0.450123
0.450123
1.75E-08
3.049609
2.599486
0.60
0.600006
0.600006
1.16E-09
4.174463
3.574457
0.75
0.750000
0.750000
7.23E-11
5.664886
4.914886
0.90
0.900000
0.900000
4.32E-12
7.657969
6.757969
可见h=0.01时,数值解稳定h=0.15时,数值解不稳定。
程序源代码
functiontestCharpt2_1
%对数值分析实验题第2章第1题进行分析
promps={'输入f为选择f(x);输入h为选择h(x);输入g为选择g(x)'};
result=inputdlg(promps,'请选择实验函数');
chooseFunction=char(result);
switchchooseFunction
case'f'
f=inline('1./(1+25*x.^2)');
a=-1;
b=1;
nameFuc='f(x)';
case'h'
f=inline('x./(1+x.^4)');
a=-5;
b=5
nameFuc='h(x)'
case'g'
f=inline('atan(x)');
a=-5;
b=5
nameFuc='g(x)'
end
%promps2={'n='};
%nNumble=inputdlg(promps2,'请输入分点数n');
nNumble=[2:
11]
fori=1:
length(nNumble)
x=linspace(a,b,nNumble(i)+1);
y=feval(f,x);
xx=a:
0.1:
b;
yy=lagrange(x,y,xx)
figure
fplot(f,[a,b],'*')
holdon
plot(xx,yy,'LineWidth',2)
xlabel('x')
ylabel('y')
legend(nameFuc,'lagrange(x)')
nameTitle=['多项式求值的振荡现象','n=',num2str(nNumble(i))]
title(nameTitle,'FontSize',14);
gridon
end
functionyy=lagrange(x,y,xx)
%s实现拉格朗日插值
%输入参数x,y分别为已知插值点的自变量和因变量
%输入参数xx为拟合点的自变量值
%输出参数yy为对应自变量xx的拟合值
xLength=length(x);
xxLength=length(xx);
fori1=1:
xxLength
yy(i1)=0;
fori2=1:
xLength
p=1;
fori3=1:
xLength
if(i2~=i3)
p=p*(xx(i1)-x(i3))/(x(i2)-x(i3));
end
end
yy(i1)=yy(i1)+p*y(i2);
end
end
functiontestCharpt3_1()
%对数值分析实验题第3章第1题进行分析
%输入参数:
自变量x,因变量y
%输入参数:
多项式拟合次数n
clc
clear
formatlong
x=[-1.0,-0.5,0.0,0.5,1.0,1.5,2.0]
y=[-4.447,-0.452,0.551,0.048,-0.447,0.549,4.552]
n=3
A=[];
fori=1:
length(x)
A=[A;1x(i)x(i)^2x(i)^3]
end
A2=A'*A;
a=inv(A2)*A'*y'%多项式的系数
%a=roundn(a,-6)
yy=a
(1)+a
(2)*x+a(3)*x.^2+a(4)*x.^3;
r=(y-yy)*(y-yy)'%平方误差
clf
holdon
plot(x,y,'or');
x2=-1:
0.01:
2;
y2=a
(1)+a
(2)*x2+a(3)*x2.^2+a(4)*x2.^3;
plot(x2,y2,'LineWidth',2);
legend('离散值','拟合曲线')
xlabel('x');
ylabel('y');
title(['3次多项式拟合,平方误差=',num2str(r)],'FontSize',14);
gridon
functiontestCharpt5_1
%对数值分析实验题第3章第1题进行分析
%输入参数:
参数a,步长h
%精确解和数值解图形对比
%%第1问输入
a=[21-1-2]%输入a的取值
h=[0.010.010.010.01]%输入h的取值
%%第2问输入
%a=[-20-20]%输入a的取值
%h=[0.010.15]%输入h的取值
%%
func=inline('1+(y-x).*a');%定义函数
fori=1:
length(a)
x=0:
h(i):
1;%求解区间
y=x;
N=length(x);
y
(1)=1;
forn=1:
N-1
k1=func(a(i),x(n),y(n));
k2=func(a(i),x(n)+h(i)/2,y(n)+k1*h(i)/2);
k3=func(a(i),x(n)+h(i)/2,y(n)+k2*h(i)/2);
k4=func(a(i),x(n)+h(i),y(n)+k3*h(i));
y(n+1)=y(n)+h(i)*(k1+2*k2+2*k3+k4)/6;%数值解
end
y0=exp(a(i)*x)+x;%精确解
%figure()%如果叠绘图去掉此句命令
plot(x,y0)
holdon
plot(x,y,'*')
legend('精确解','数值解')
xlabel('x');
ylabel('y');
title(['微分方程数值解,a=',num2str(a(i)),',h=',num2str(h(i))],'FontSize',14);
gridon
end