数值分析实验题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
figure
fplot(f,[a,b],'*')
hold on
plot(xx,yy,'LineWidth',2)
xlabel('x')
ylabel('y')
legend(nameFuc,'lagrange(x)')
nameTitle=['多项式求值的振荡现象',' n=',num2str(nNumble(i))]
grid on
function testCharpt5_1
%对数值分析实验题第3章第1题进行分析
%输入参数:参数a,步长h
%精确解和数值解图形对比
%%第1问输入
a=[2 1 -1 -2]%输入a的取值
h=[0.01 0.01 0.01 0.01]%输入h的取值
%%第2问输入
% a=[-20 -20]%输入a的取值
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()%如果叠绘图去掉此句命令
解:对于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
xxLength=length(xx);
for i1=1:xxLength
yy(i1)=0;
forBiblioteka Baidui2=1:xLength
p=1;
for i3=1:xLength
if(i2~=i3)
p=p*(xx(i1)-x(i3))/(x(i2)-x(i3));
end
end
yy(i1)=yy(i1)+p*y(i2);
title(nameTitle,'FontSize',14);
grid on
end
function yy=lagrange(x,y,xx)
%s实现拉格朗日插值
%输入参数x,y分别为已知插值点的自变量和因变量
%输入参数xx为拟合点的自变量值
%输出参数yy为对应自变量xx的拟合值
xLength=length(x);
end
[实验内容]:
考虑区间[-1,1]的一个等距离划分,分点为
则拉格朗日插值多项式为
其中, ,i=0,1,2,…,n是n次Lagrange插值函数。
[实验要求]:
(1)选择不断增大的分点数目n=2,3,…画出原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像,比较并分析实验结果。
(2)选择其他的函数,例如定义在区间[-5,5]上的函数,
end
end
function testCharpt3_1()
%对数值分析实验题第3章第1题进行分析
%输入参数:自变量x,因变量y
%输入参数:多项式拟合次数n
clc
clear
format long
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]
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)'
-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。
end
% promps2={'n='};
% nNumble=inputdlg(promps2,'请输入分点数n');
nNumble=[2:11]
for i=1:length(nNumble)
x=linspace(a,b,nNumble(i)+1);
y=feval(f,x);
xx=a:0.1:b;
yy=lagrange(x,y,xx)
plot(x,y0)
hold on
plot(x,y,'*')
legend('精确解','数值解')
xlabel('x');
ylabel('y');
title(['微分方程数值解,a=',num2str(a(i)),',h=',num2str(h(i))],'FontSize',14);
grid on
% h=[0.01 0.15]%输入h的取值
%%
func=inline('1+(y-x).*a');%定义函数
for i=1:length(a)
x=0:h(i):1;%求解区间
y=x;
N=length(x);
y(1)=1;
for n=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);
clf
hold on
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);
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时,数值解不稳定。
程序源代码
function testCharpt2_1
解之得:
故拟合的函数为: ,
平方误差为:2.176191667187105e-05
拟合的函数图像如下:
实验5.1常微分方程性态和R-K法稳定性试验
[试验目的]:
考察下面的微分方程右端项中函数y前面的参数对方程性态的影响(它可使方程为好条件的或坏条件的)和研究计算步长对R-K法计算稳定性的影响。
[实验题目]:
%对数值分析实验题第2章第1题进行分析
promps={'输入f为选择f(x);输入h为选择h(x);输入g为选择g(x)'};
result=inputdlg(promps,'请选择实验函数');
chooseFunction=char(result);
switch chooseFunction
case 'f'
常微分方程初值问题
其中, 。其精确解为
[实验要求]:
(1)对于参数 ,分别去四个不同的数值:一个大的正值,一个小的正值,一个绝对值小的负值和一个绝对值大的负值。取步长 ,分别用经典R-K法计算,将四组计算结果画在同一张图上,进行比较并说明相应初值问题的性态。
(2)对于参数 为一个绝对值不大的负值和两个计算步,一个计算步使参数 在经典R-K法的稳定域内,另一个步长在经典的R-K法的稳定域外。分别用经典R-K法计算并比较计算结果。取全域等距的10个点上的计算值,列表说明。
n=3
A=[];
for i=1:length(x)
A=[A;1 x(i) x(i)^2 x(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)' %平方误差
数值分析实验作业
专业:力学系
姓名:王富海
学号:M201471568
实验2.1多项式插值的振荡现象
[问题提出]:
考虑在一个固定的区间上用插值逼近一个函数,显然Lagrange插值中使用的节点越多,插值多项式的次数就越高,我们自然关心插值多项的次数增加时,Ln(x)是否也更加靠近逼近的函数,Runge给出的例子是极著名并富有启发性的,设区间[-1,1]上函数
重复上述的实验看其结果如何。
解:以下的f(x)、h(x)、g(x)的为插值点用“*”表示,朗格朗日拟合曲线用连续曲线表示。通过三个函数的拉格朗日拟合可以看到,随着插值点的增加,产生Rung现象。
(1)f(x)
(2) h(x)
(3) g(x)
实验3.1最小二乘法拟合
编制以函数 为基的多项式最小二乘拟合程序,并用于对表中的数据作三次多项式最小二乘拟合。
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
figure
fplot(f,[a,b],'*')
hold on
plot(xx,yy,'LineWidth',2)
xlabel('x')
ylabel('y')
legend(nameFuc,'lagrange(x)')
nameTitle=['多项式求值的振荡现象',' n=',num2str(nNumble(i))]
grid on
function testCharpt5_1
%对数值分析实验题第3章第1题进行分析
%输入参数:参数a,步长h
%精确解和数值解图形对比
%%第1问输入
a=[2 1 -1 -2]%输入a的取值
h=[0.01 0.01 0.01 0.01]%输入h的取值
%%第2问输入
% a=[-20 -20]%输入a的取值
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()%如果叠绘图去掉此句命令
解:对于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
xxLength=length(xx);
for i1=1:xxLength
yy(i1)=0;
forBiblioteka Baidui2=1:xLength
p=1;
for i3=1:xLength
if(i2~=i3)
p=p*(xx(i1)-x(i3))/(x(i2)-x(i3));
end
end
yy(i1)=yy(i1)+p*y(i2);
title(nameTitle,'FontSize',14);
grid on
end
function yy=lagrange(x,y,xx)
%s实现拉格朗日插值
%输入参数x,y分别为已知插值点的自变量和因变量
%输入参数xx为拟合点的自变量值
%输出参数yy为对应自变量xx的拟合值
xLength=length(x);
end
[实验内容]:
考虑区间[-1,1]的一个等距离划分,分点为
则拉格朗日插值多项式为
其中, ,i=0,1,2,…,n是n次Lagrange插值函数。
[实验要求]:
(1)选择不断增大的分点数目n=2,3,…画出原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像,比较并分析实验结果。
(2)选择其他的函数,例如定义在区间[-5,5]上的函数,
end
end
function testCharpt3_1()
%对数值分析实验题第3章第1题进行分析
%输入参数:自变量x,因变量y
%输入参数:多项式拟合次数n
clc
clear
format long
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]
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)'
-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。
end
% promps2={'n='};
% nNumble=inputdlg(promps2,'请输入分点数n');
nNumble=[2:11]
for i=1:length(nNumble)
x=linspace(a,b,nNumble(i)+1);
y=feval(f,x);
xx=a:0.1:b;
yy=lagrange(x,y,xx)
plot(x,y0)
hold on
plot(x,y,'*')
legend('精确解','数值解')
xlabel('x');
ylabel('y');
title(['微分方程数值解,a=',num2str(a(i)),',h=',num2str(h(i))],'FontSize',14);
grid on
% h=[0.01 0.15]%输入h的取值
%%
func=inline('1+(y-x).*a');%定义函数
for i=1:length(a)
x=0:h(i):1;%求解区间
y=x;
N=length(x);
y(1)=1;
for n=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);
clf
hold on
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);
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时,数值解不稳定。
程序源代码
function testCharpt2_1
解之得:
故拟合的函数为: ,
平方误差为:2.176191667187105e-05
拟合的函数图像如下:
实验5.1常微分方程性态和R-K法稳定性试验
[试验目的]:
考察下面的微分方程右端项中函数y前面的参数对方程性态的影响(它可使方程为好条件的或坏条件的)和研究计算步长对R-K法计算稳定性的影响。
[实验题目]:
%对数值分析实验题第2章第1题进行分析
promps={'输入f为选择f(x);输入h为选择h(x);输入g为选择g(x)'};
result=inputdlg(promps,'请选择实验函数');
chooseFunction=char(result);
switch chooseFunction
case 'f'
常微分方程初值问题
其中, 。其精确解为
[实验要求]:
(1)对于参数 ,分别去四个不同的数值:一个大的正值,一个小的正值,一个绝对值小的负值和一个绝对值大的负值。取步长 ,分别用经典R-K法计算,将四组计算结果画在同一张图上,进行比较并说明相应初值问题的性态。
(2)对于参数 为一个绝对值不大的负值和两个计算步,一个计算步使参数 在经典R-K法的稳定域内,另一个步长在经典的R-K法的稳定域外。分别用经典R-K法计算并比较计算结果。取全域等距的10个点上的计算值,列表说明。
n=3
A=[];
for i=1:length(x)
A=[A;1 x(i) x(i)^2 x(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)' %平方误差
数值分析实验作业
专业:力学系
姓名:王富海
学号:M201471568
实验2.1多项式插值的振荡现象
[问题提出]:
考虑在一个固定的区间上用插值逼近一个函数,显然Lagrange插值中使用的节点越多,插值多项式的次数就越高,我们自然关心插值多项的次数增加时,Ln(x)是否也更加靠近逼近的函数,Runge给出的例子是极著名并富有启发性的,设区间[-1,1]上函数
重复上述的实验看其结果如何。
解:以下的f(x)、h(x)、g(x)的为插值点用“*”表示,朗格朗日拟合曲线用连续曲线表示。通过三个函数的拉格朗日拟合可以看到,随着插值点的增加,产生Rung现象。
(1)f(x)
(2) h(x)
(3) g(x)
实验3.1最小二乘法拟合
编制以函数 为基的多项式最小二乘拟合程序,并用于对表中的数据作三次多项式最小二乘拟合。