
数值分析实验题(-华科).doc
13页精品文档,仅供学习与交流,如有侵权请联系网站删除数值分析实验作业专业: 姓名: 学号: 【精品文档】第 页实验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.50.00.51.01.52.0-4.447-0.4520.5510.048-0.4470.5494.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)对于,绝对稳定区:a21-1-2h0.010.010.010.01(2)对于,稳定区a-20-20h0.010.15xy(精确解)数值解y1(a=-20,h=0.01)y1-y数值解y2(a=-20,h=0.15)y1-y0.150.1997870.1997892.35E-061.5250001.3252130.300.3024790.3024792.34E-072.1906251.8881460.450.4501230.4501231.75E-083.0496092.5994860.600.6000060.6000061.16E-094.1744633.5744570.750.7500000.7500007.23E-115.6648864.9148860.900.9000000.9000004.32E-127.6579696.757969可见h=0.01时,数值解稳定 h=0.15时,数值解不稳定。
程序源代码function testCharpt2_1%对数值分析实验题第2章第1题进行分析promps={'输入f为选择f(x);输入h为选择h(x);输入g为选择g(x)'};result=inputdlg(promps,'请选择实验函数');chooseFunction=char(result);switch chooseFunction 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]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) 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))] title(nameTitle,'FontSize',14); grid onendfunction yy=lagrange(x,y,xx)%s实现拉格朗日插值%输入参数x,y分别为已知插值点的自变量和因变量%输入参数xx为拟合点的自变量值%输出参数yy为对应自变量xx的拟合值xLength=length(x);xxLength=length(xx);for i1=1:xxLength yy(i1)=0; for i2=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); endendfunction testCharpt3_1()%对数值分析实验题第3章第1题进行分析%输入参数:自变量x,因变量y%输入参数:多项式拟合次数nclcclearformat longx=[-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=3A=[];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)' %平方误差clfhold 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);grid onfunction 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的取值% 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); 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) hold on plot(x,y,'*') legend('精确解','数值解') xlabel('x'); ylabel('y'); title(['微分方程数值解,a=',num2str(a(i)),',h=',num2str(h(i))],'FontSize',14); grid onend。
