ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:59.91KB ,
资源ID:23450866      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23450866.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数值分析报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数值分析报告.docx

1、数值分析报告数值分析课程名称 数值分析实验报告 专业班级 应用数学111班 姓名 陈伟 学号 8 教学教师 岳雪芝 实验二 函数逼近与曲线拟合 一、问题提出 从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。 在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量与时间t的拟合曲线。 t(分)0 5 10 15 20 25 30 35 40 45 50 55 0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64 二、要求 1、用最小二乘法进行曲线拟合; 2、近

2、似解析表达式为;3、打印出拟合函数,并打印出与的误差,; 4、另外选取一个近似表达式,尝试拟合效果的比较; 5、* 绘制出曲线拟合图。 三、目的和意义 1、掌握曲线拟合的最小二乘法; 2、最小二乘法亦可用于解超定线代数方程组; 3、探索拟合函数的选择与拟合精度间的关系。四、实验步骤:输入代码:t=0 5 10 15 20 25 30 35 40 45 50 55; y=0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64; for i=1:12 A(i,1)=t(i); A(i,2)=t(i).2; A(i,3)=t(i).3; en

3、d p_star=Ay; y_star=p_star(1)*t+p_star(2)*t.2+p_star(3)*t.3; s_star=0; for i=1:12 s_star=s_star+(y_star(i)-y(i)2; end plot(t,y,*,t,y_star,g);比较拟和结果,分别取二次,三次和四次多项式,再做最小二乘法,代码如下: t=0 5 10 15 20 25 30 35 40 45 50 55; y=0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64; %3次拟合 p3=polyfit(t,y,3) y_

4、new=polyval(p3,t); s_3=0; for i=1:12s_3=s_3+(y_new(i)-y(i)2; end %2次拟合 p2=polyfit(t,y,2); y_new2=polyval(p2,t); s_2=0; for i=1:12 s_2=s_2+(y_new2(i)-y(i)2; end %4次拟合 p4=polyfit(t,y,4); y_new4=polyval(p4,t); s_4=0; for i=1:12 s_4=s_4+(y_new4(i)-y(i)2; end比较4种拟合函数,结论:常数项为0的三次拟合函数在保证拟合精度的同时,保证0点的函数值仍为0

5、,是四种拟合方法中最好的一种。原图与曲线拟合图如下所示:分析: 从上面的拟合中也可以知道多项式拟合误差平方和随着拟合多项式次数的增加而逐渐减少,拟合曲线更靠近实际数据,拟合更准确。实验三 数值积分与数值微分一、基本题 选用复合梯形公式,复合Simpson公式,Romberg算法,计算 (1)二、要求 1、 编制数值积分算法的程序; 2、 分别用两种算法计算同一个积分,并比较其结果; 3、 分别取不同步长,试比较计算结果(如n = 10, 20等); 4、 给定精度要求,试用变步长算法,确定最佳步长。 三、目的和意义 1、 深刻认识数值积分法的意义; 2、 明确数值积分精度与步长的关系; 3、

6、根据定积分的计算方法,结合专业考虑给出一个二重积分的计算问题。 四、实验步骤:代码1,复合梯形公式function result=trapezoid_integration(f,count_node,a,b) %composite trapezoid integration,f,函数表达式,count_node插入节点数量,a,开始点,b结束点 h=(b-a)/count_node;%h步长 np1=count_node+1;%包括端点,总共的点的数量 x=a:h:b;%x自变量 c=ones(np1,1); c(1,1)=0.5;c(np1,1)=0.5;%两个端点都取一半 syms sym

7、bol_x; fx=subs(f,symbol_x,x); result=vpa(h*fx*c,9);代码2,复合simpson公式function result=simpson_integration(f,count_node,a,b) %composite simpson integration,f,函数表达式,count_node插入节点数量,a,开始点,b结束点 h=(b-a)/count_node;%h步长 np1=2*count_node+1;%包括端点,总共的2n+1点 x=a:h/2:b;%x自变量 c=ones(np1,1); for i=1:np1 if(mod(i,2)=

8、0)%偶数 c(i,1)=2/3; else%奇数 c(i,1)=1/3; end end c(1,1)=1/6;c(np1,1)=1/6;%两个端点都取1/6 syms symbol_x; fx=subs(f,symbol_x,x); result=vpa(h*fx*c,9);代码3,检验复合梯形公式和复合simpson公式function result1=test_integration() %测试复合梯形公式,复合simpson公式,用到trapezoid_integration,simpson_integration syms symbol_x; f1=sin(symbol_x)/sy

9、mbol_x; syms A1;%用于输出f1积分结果 for i=1:9 A1(i,1)=trapezoid_integration(f1,i,1e-9,1); A1(i,2)=simpson_integration(f1,i,1e-9,1); end k=10; for i=10:10:100 A1(k,1)=trapezoid_integration(f1,i,1e-9,1); A1(k,2)=simpson_integration(f1,i,1e-9,1); k=k+1; end IS(2)=int(f1,symbol_x,0,1); vpa(IS(2) result1=A1;结果分析

10、 从上面的计算结果可以看出复合梯形公式和复合simpson公式的稳定性,并且步长越小精度越高,当n趋于正无穷,即步长趋于0时,上述两公式的计算值都收敛到积分值。 从收敛的速度来看,复合simpson公式优于复合梯形公式。实验四 线方程组的直接解法一、问题提出:1、三对角形线性方程组 二、要求 1、 对上述三个方程组分别利用Gauss顺序消去法与Gauss列主元消去法;平方根法与改进平方根法;追赶法求解(选择其一); 2、 应用结构程序设计编出通用程序; 3、 比较计算结果,分析数值解误差的原因; 4、 尽可能利用相应模块输出系数矩阵的三角分解式。 三、目的和意义 1、通过该课题的实验,体会模块

11、化结构程序设计方法的优点; 2、运用所学的计算方法,解决各类线性方程组的直接算法; 3、提高分析和解决问题的能力,做到学以致用; 通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点。 四、实验步骤:高斯顺序消去法:function result=Gauss(A,d) %高斯顺序消元法 n,m=size(A) k=ones(1,n);%用于记录-A(j,i)/A(i,i) for i=1:n if(A(i,i)=0) 主元为0,不能使用高斯顺序消元法 return; end for j=i+1:n k(j)=-A(j,i)/A(i,i) A(j,:)=A(i,:).*k(j)+A(j,:

12、);%加到第j行 d(j)=d(i).*k(j)+d(j); end end x=zeros(n,1) x(n)=d(n)/A(n,n); for i=n-1:-1:1 x(i)=(d(i)-A(i,:)*x)/A(i,i); end result=xGauss列主元消去法function result=Gauss2(A,d) %高斯列主元消元法 n,m=size(A); d_length,d_width=size(d); if(d_length=n | d_width=1) 方程右端向量输入有误 return; end if(n=m) 系数矩阵不是方阵 return; end AandD=A

13、 d;%增广阵 k=ones(1,n);%用于记录-A(j,i)/A(i,i) record=1:n;%用于记录行的交换情况 for i=1:n %选取第i列的最大元进行换位 l,index=max(abs(AandD(i:n,i); if(index=i)temp_record=record(index); record(index)=record(i+index-1); record(i+index-1)=temp_record; temp=AandD(i,:); AandD(i,:)=AandD(i+index-1,:); AandD(i+index-1,:)=temp; end %顺序

14、消元 if(AandD(i,i)=0) 主元为0,不能使用高斯列主元顺序消元法 return; end for j=i+1:n k(j)=-AandD(j,i)/AandD(i,i); AandD(j,:)=AandD(i,:).*k(j)+AandD(j,:);%加到第j行 end endA=AandD(1:n,1:n); d=AandD(1:n,n+1); x=zeros(n,1); x(n)=d(n)/A(n,n); for i=n-1:-1:1 x(i)=(d(i)-A(i,:)*x)/A(i,i); end %由于不是顺序消元,所以还要再换回来 for i=1:n result(i)

15、=x(record(i); end追赶法function result=chase_after(A,d) n,m=size(A); d_length,d_width=size(d); if(d_length=n | d_width=1) 方程右端向量输入有误 return; end if(n=m) 系数矩阵不是方阵 return; end for i=2:ntoCheck1=diag(A,i); toCheck2=diag(A,-i); if(norm(toCheck1)=0|norm(toCheck2)=0) 系数矩阵不是三对角阵 return; end endb=diag(A); a=ze

16、ros(n,1); a(2:n)=diag(A,-1); c=diag(A,1); if(b(1)=0) 因顺序主子式为0,不能进行Crout分解 return; endl(1)=b(1); y(1)=d(1)/l(1); u(1)=c(1)/l(1); for i=2:n l(i)=b(i)-a(i)*u(i-1); if(l(i)=0) 因顺序主子式为0,不能进行Crout分解 return; end y(i)=(d(i)-y(i-1)*a(i)/l(i); if(i=n) u(i)=c(i)/l(i); end end x(n)=y(n); for i=n-1:-1:1 x(i)=y(i

17、)-u(i)*x(i+1); end y=y;result=x;检验三种直接解线性方程组的方法function test_chase_after A= 4 -1 0 0 0 0 0 0 0 0; -1 4 -1 0 0 0 0 0 0 0; 0 -1 4 -1 0 0 0 0 0 0; 0 0 -1 4 -1 0 0 0 0 0; 0 0 0 -1 4 -1 0 0 0 0; 0 0 0 0 -1 4 -1 0 0 0; 0 0 0 0 0 -1 4 -1 0 0; 0 0 0 0 0 0 -1 4 -1 0; 0 0 0 0 0 0 0 -1 4 -1; 0 0 0 0 0 0 0 0 -1

18、 4; d=7 5 -13 2 6 -12 14 -4 5 -5;%按列存储 L,U = lu(A) %检验高斯顺序消去法 result_Gauss=Gauss(A,d) %检验高斯列主元消去法 result_Gauss2=Gauss2(A,d) %检验追赶法 result_chase=chase_after(A,d)运行结果:高斯顺序消去法的计算结果: result_Gauss = 2 1 -3 1.7849e-016 1 -2 3 -1.4874e-016 1 -1高斯列主元消去法的计算结果: result_Gauss = 2 1 -3 1.7849e-016 1 -2 3 -1.4874

19、e-016 1 -1追赶法的计算结果: result_Gauss = 2 1 -3 1.7849e-016 1 -2 3 -1.4874e-016 1 -1结果分析:高斯顺序消去法与精确解,比较其误差是1.7849*10(-16), 该误差可以忽略,事实上这是由计算机的除法引起的。而在这个问题中,因为顺序消元的除法中用到的数k的绝对值都小于1,这就避免使用绝对值较大的数,使得总体舍入误差得到有效控制,所以高斯顺序消元法的效果也很好。 同样高斯列主元消去法与精确解的误差都是(1)式的结果,说明在这个问题中误差都控制得很好。实验五 解线性方程组的迭代法一、问题提出 对实验四所列目的和意义的线性方程

20、组,试分别选用Jacobi 迭代法,Gauss-Seidel迭代法和SOR方法计算其解。 二、要求 1、体会迭代法求解线性方程组,并能与消去法做以比较; 2、分别对不同精度要求,如由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR方法时,选取松弛因子=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者; 4、给出各种算法的设计程序和计算结果。 三、目的和意义 1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较; 2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序; 3、体会上机计算时,终止步骤或k (给予的迭代次数

21、),对迭代法敛散性的意义; 4、体会初始解,松弛因子的选取,对计算结果的影响。四、实验步骤:Jacobi迭代法function result=Jacobi(A,b,x0,yupsilong) %Jacobi迭代方法,x0是迭代用的初始向量,yupsilong是解的误差上限 n,m=size(A); b_length,b_width=size(b); if(b_length=n | b_width=1) 方程右端向量输入有误 return; end if(n=m) 系数矩阵不是方阵 return; end if(det(A)=0) 系数矩阵是奇异阵 return end %分解A=D-L-U;D

22、是对角元,L是对角元为0的下三角阵,U是对角元为0的上三角阵 L=tril(A,-1); U=triu(A,1); D=A-L-U; L=-L; U=-U; %计算迭代矩阵B0=D(-1); B=B0*(L+U); g=B0*b; x=x0; delta=1; count_iteration=0; while delta=yupsilong if(count_iteration1000) 超过迭代次数上限,认为算法此时不收敛 return; end x1=B*x+g; delta=norm(x1-x); x=x1; count_iteration=count_iteration+1; end

23、count_iteration result=x;Gauss_Seidol迭代法function result=Gauss_Seidol(A,b,x0,yupsilong) %Gauss_Seidol方法,x0是迭代用的初始向量,yupsilong是解的误差上限 n,m=size(A); b_length,b_width=size(b); if(b_length=n | b_width=1) 方程右端向量输入有误 return; end if(n=m) 系数矩阵不是方阵 return; end if(det(A)=0) 系数矩阵是奇异阵 return end %分解A=D-L-U;D是对角元,

24、L是对角元为0的下三角阵,U是对角元为0的上三角阵 L=tril(A,-1); U=triu(A,1); D=A-L-U; L=-L; U=-U;%计算迭代矩阵 B0=(D-L)(-1); B=B0*U; g=B0*b; x=x0; delta=1; count_iteration=0; while delta=yupsilong if(count_iteration1000) 超过迭代次数上限,认为算法此时不收敛 return; end x1=B*x+g; delta=norm(x1-x); x=x1; count_iteration=count_iteration+1; end count

25、_iteration result=x;SOR迭代法function result=SOR(A,b,x0,yupsilong,omiga) %SOR迭代方法,x0是迭代用的初始向量,yupsilong是解的误差上限,omiga是松弛因子 n,m=size(A); b_length,b_width=size(b); if(b_length=n | b_width=1) 方程右端向量输入有误 return; end if(n=m) 系数矩阵不是方阵 return; end if(det(A)=0) 系数矩阵是奇异阵 return end %分解A=D-L-U;D是对角元,L是对角元为0的下三角阵,

26、U是对角元为0的上三角阵 L=tril(A,-1); U=triu(A,1); D=A-L-U; L=-L;U=-U; %计算迭代矩阵 B0=(D-omiga*L)(-1); B=B0*(1-omiga)*D+omiga*U); g=omiga*B0*b; x=x0; delta=1; count_iteration=0; while delta=yupsilong if(count_iteration1000) 超过迭代次数上限,认为算法此时不收敛 return; end x1=B*x+g; delta=norm(x1-x); x=x1; count_iteration=count_iter

27、ation+1; end count_iteration result=x;检验Jocobi,GS,SOR迭代方法function test_Gauss_Seidol clc; A= 4 -1 0 0 0 0 0 0 0 0; -1 4 -1 0 0 0 0 0 0 0; 0 -1 4 -1 0 0 0 0 0 0; 0 0 -1 4 -1 0 0 0 0 0; 0 0 0 -1 4 -1 0 0 0 0; 0 0 0 0 -1 4 -1 0 0 0; 0 0 0 0 0 -1 4 -1 0 0; 0 0 0 0 0 0 -1 4 -1 0; 0 0 0 0 0 0 0 -1 4 -1; 0

28、0 0 0 0 0 0 0 -1 4; b=7 5 -13 2 6 -12 14 -4 5 -5; n,m=size(A); yupsilong=1e-3 1e-4 1e-5 1e-6 1e-7 1e-8 1e-9 1e-10; x_real=2 1 -3 0 1 -2 3 0 1 -1;%精确解 测试初始点对迭代的影响for i=1:8 x0=ones(n,1)*10(i-1); x0 result_Jacobi=(Jacobi(A,b,x0,yupsilong(3); if(norm(result_Jacobi-x_real)yupsilong(3) 误差过大 end result_GS=

29、(Gauss_Seidol(A,b,x0,yupsilong(3); if(norm(result_GS-x_real)yupsilong(3) 误差过大 end result_SOR=(SOR(A,b,x0,yupsilong(3),1.1); if(norm(result_GS-x_real)yupsilong(3) 误差过大 end end 测试yupsilong对迭代的影响x0=ones(n,1); for i=1:length(yupsilong) (yupsilong(i) result_Jacobi=(Jacobi(A,b,x0,yupsilong(i); result_GS=(Gauss_Seidol(A,b,x0,yup

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

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