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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

太原理工大学数值计算实验报告.docx

1、太原理工大学数值计算实验报告实验由本人当时亲自完成仅供参考,希望可以帮助大家本科实验报告课程名称: 计算机数值方法B 实验项目: Gauss消元法,迭代法,方程求根,拉格朗日插值法,幂法,最小二乘法,追赶法 实验地点: 中区ZSA301 专业班级: 0000 学号: 0000000000 学生姓名: 氣宇軒昂 指导教师: 2012 年 13 月 13 日实验一:Gauss消元法实验一、实验目的数值计算方法是一门实践性和实用性都很强的课程,学习的目的在于应用已有的理论基础和技术方法,实现对实际计算问题的计算机求解。本实验配合计算数值方法课堂教学,通过上机实践实验环节,巩固课堂和书本上所学的知识、

2、加强实践能力、提高解决实际计算问题的水平、启发创新思想。其基本目的是:(1) 培养理论联系实际的思路,训练综合运用已经学过的理论和实际知识去分析和解决实际问题的能力。(2) 帮助学生全面消化已学的相关课程内容,深刻理解计算数值方法课程的内涵,培养使用电子计算机进行科学计算和解决问题的能力。(3) 进行基本技能训练和巩固。使学生得到选择算法、编写程序、分析数值结果、写数值试验报告、课堂讨论等环节的综合训练。二、实验内容 合理利用Gauss消元法、LU分解法或追赶法求解下列方程组:(n=5,10,100,)3、主要仪器设备 1.笔记本电脑;2.软件vc+6.0;4、操作方法与实验步骤(代码)1.G

3、uass消元法;#include Stdio.h#define N 3 void Gauss_eliminant(double aNN+1) /*建立系数及常数项的二维数组*/ double bN; /*建立解的一位数组*/ double s; /*计算解系时的变量*/ int i,j,k; for(k=0;kN;k+) /*消元过程*/ for(i=k;i=0;j-) ai+1j=ai+1j-akj*ai+1k/akk; printf(消元后得到上三角矩阵:);printf(n); for(i=0;iN;i+) /*输出消元后的上三角矩阵*/ for(j=0;j=0;i-) /*回代过程*/

4、 s=0; for(j=N-1;ji;j-) s=aij*bj+s; bi=(aiN-s)/aii; for(i=0;iN;i+) /*输出解系*/ printf(x(%d)=%lfn,i+1,bi); main() int i ,j; double aNN+1; printf(输入系数及常数项矩阵:); printf(n); for(i=0;iN;i+) for(j=0;j=N;j+) scanf(%lf,&aij); Gauss_eliminant(a); getch();实验结果与分析宏定义的N代表了N维矩阵改变N可以解决n维矩阵;先给出N=3,解决第一个方程组;1.第一步执行如下:2.

5、输入矩阵后执行如下:再给出N=4,解决第三个方程;1.第一步执行如下:2,输入矩阵执行如下:2.Gauss_列主元消元法;#include Stdio.h#define N 2 void Gauss_eliminant(double aNN+1) /*建立系数及常数项的二维数组*/ double bN; /*建立解的一位数组*/ double s; /*计算解系时的变量*/ int i,j,k,m,n; for(k=0;k0;m-) for(n=N-m;nm-1;n+) if(ankan+1k) s=ank; ank=an+1k; an+1k=s; for(i=k;i=0;j-) ai+1j=

6、ai+1j-akj*ai+1k/akk; printf(消元后得到上三角矩阵:);printf(n); for(i=0;iN;i+) /*输出消元后的上三角矩阵*/ for(j=0;j=0;i-) /*回代过程*/ s=0; for(j=N-1;ji;j-) s=aij*bj+s; bi=(aiN-s)/aii; for(i=0;iN;i+) /*输出解系*/ printf(x(%d)=%lfn,i+1,bi); main() int i ,j; double aNN+1; printf(输入系数及常数项矩阵:); printf(n); for(i=0;iN;i+) for(j=0;j=N;j

7、+) scanf(%lf,&aij); Gauss_eliminant(a); getch();实验结果与分析宏定义的N代表了N维矩阵改变N可以解决n维矩阵;先给出N=4,解决第二个方程组;5、第一步执行如下:2,输入矩阵执行如下:3.追赶法(n=5)#include Stdio.h#define N 5main() double a3*N-2; /*三角矩阵行的一维数组*/ double l2*N-1; /*l(ij)行的一维数组*/ double uN-1; /*u(ij)行的一维数组*/ double bN; /*常数项数组*/ double b1N; /*ly=b中的y数组*/ dou

8、ble b2N; /*ux=y中的y数组*/ int i,j,k,m; printf(输入N维三对角矩阵的行的一维数组:); printf(n); for(i=0;i3*N-2;i+) /*输入三对角矩阵的行的一维数组*/ scanf(%lf,&ai); l0=a0; u0=a1/l0; i=1,j=1,k=2;/*计算l(ij)和u(ij)*/ do li=ak; k+; i+; li=ak-uj-1*li-1; k+; uj=ak/li; j+; k+; i+; while(i2*N-1); printf(输出一维行的l(ij):); printf(n); l0=a0; for(k=0;k

9、2*N-1;k+) printf(%lf ,lk); printf(n); printf(输出一维行的u(ij):); printf(n); for(k=0;kN-1;k+) printf(%lf ,uk); printf(n); printf(输入常数项数组:); printf(n); for(i=0;iN;i+) /*输入常数项*/ scanf(%lf,&bi); printf(输出y:); printf(n); b10=b0/l0; /*计算y*/ printf(y(0)=%lf ,b10); for(i=1,j=1;i=0;i-) b2i=b1i-ui*b2i+1; for(i=0;i

10、N;i+) printf(x(%d)=%lfn,i,b2i); getch();实验结果与分析宏定义的N代表了N维矩阵改变N可以解决n维矩阵;先给出N=5,解决第四个方程组的n=5;1.第一步执行结果如下:2.输入三对角行的矩阵后执行结果如下:3.输入常数项数组后执行结果如下:追赶法(n=任意有规律的整数);#include Stdio.h#define N 10main() double a3*N-2; /*三角矩阵行的一维数组*/ double l2*N-1; /*l(ij)行的一维数组*/ double uN-1; /*u(ij)行的一维数组*/ double bN; /*常数项数组*/

11、 double b1N; /*ly=b中的y数组*/ double b2N; /*ux=y中的y数组*/ int i,j,k,m; printf(输入N维三对角矩阵第一行的矩阵:); printf(n); for(i=0;i2;i+) /*输入三对角矩阵的行的一维数组*/ scanf(%lf,&ai); for(i=2;i3*N-2;i+) ai=a1; i+; ai=a0; i+; if(i3*N-2) ai=a1; l0=a0; u0=a1/l0; i=1,j=1,k=2;/*计算l(ij)和u(ij)*/ do li=ak; k+; i+; li=ak-uj-1*li-1; k+; uj

12、=ak/li; j+; k+; i+; while(i2*N-1); l0=a0; printf(输入常数项的前两个:); printf(n); for(i=0;i2;i+) /*输入常数项*/ scanf(%lf,&bi); for(i=2;iN;i+) bi=b1; b10=b0/l0; /*计算y*/ for(i=1,j=1;i=0;i-) b2i=b1i-ui*b2i+1; for(i=0;iN;i+) printf(x(%d)=%lft,i,b2i); getch();实验结果与分析宏定义的N代表了N维矩阵改变N可以解决n维矩阵;先给出N=10,解决第四个方程组的n=10;1.第一步

13、执行结果如下:2.输入三对角第一行后执行结果如下:3.输入常数项的前两个后执行结果如下:当N=100时执行最后结果如下:7、讨论、心得 主要是对算法更熟悉,更熟悉对c语言的利用! 1.笔记本电脑;2.软件vc+6.0;3、操作方法与实验步骤(代码)1.Guass消元法;#include Stdio.h#define N 3 void Gauss_eliminant(double aNN+1) /*建立系数及常数项的二维数组*/ double bN; /*建立解的一位数组*/ double s; /*计算解系时的变量*/ int i,j,k; for(k=0;kN;k+) /*消元过程*/ fo

14、r(i=k;i=0;j-) ai+1j=ai+1j-akj*ai+1k/akk; printf(消元后得到上三角矩阵:);printf(n); for(i=0;iN;i+) /*输出消元后的上三角矩阵*/ for(j=0;j=0;i-) /*回代过程*/ s=0; for(j=N-1;ji;j-) s=aij*bj+s; bi=(aiN-s)/aii; for(i=0;iN;i+) /*输出解系*/ printf(x(%d)=%lfn,i+1,bi); main() int i ,j; double aNN+1; printf(输入系数及常数项矩阵:); printf(n); for(i=0;

15、iN;i+) for(j=0;j=N;j+) scanf(%lf,&aij); Gauss_eliminant(a); getch();6、实验结果与分析宏定义的N代表了N维矩阵改变N可以解决n维矩阵;先给出N=3,解决第一个方程组;1.第一步执行如下:2.输入矩阵后执行如下:再给出N=4,解决第三个方程;1.第一步执行如下:2,输入矩阵执行如下:8、讨论、心得 主要是对算法更熟悉,更熟悉对c语言的利用!实验二:迭代法求方程组一、实验目的数值计算方法是一门实践性和实用性都很强的课程,学习的目的在于应用已有的理论基础和技术方法,实现对实际计算问题的计算机求解。本实验配合计算数值方法课堂教学,通过

16、上机实践实验环节,巩固课堂和书本上所学的知识、加强实践能力、提高解决实际计算问题的水平、启发创新思想。其基本目的是:(1) 培养理论联系实际的思路,训练综合运用已经学过的理论和实际知识去分析和解决实际问题的能力。(2) 帮助学生全面消化已学的相关课程内容,深刻理解计算数值方法课程的内涵,培养使用电子计算机进行科学计算和解决问题的能力。(3) 进行基本技能训练和巩固。使学生得到选择算法、编写程序、分析数值结果、写数值试验报告、课堂讨论等环节的综合训练。二、实验内容使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。4.主要仪器设备 1.笔记本电脑;2.软件vc+6.0;5.操作方法与实验步

17、骤(代码)迭代法;#include Stdio.h#include math.h#define N 3main() double aNN+1; /*方程组系数及常数项的二维数组*/ double bN; /*近似解的组合*/ double b1N; /*近似解解前一个的组合*/ double s; /*为叠加准备的变量*/ int i,j; printf(输入系数及常数项矩阵:); printf(n); for(i=0;iN;i+) /*输入方程组系数及常数项*/ for(j=0;j=N;j+) scanf(%lf,&aij); printf(输入解的初值:); printf(n); for(

18、i=0;iN;i+) /*输入解的初值*/ scanf(%lf,&bi); printf(迭代列表如下:); printf(n);do /*迭代求解*/ for(i=0;iN;i+) b1i=bi; for(i=0;iN;i+) s=0; for(j=0;jN;j+) if(i!=j) s=s+aij*bj; bi=(aiN-s)/aii; for(j=0;j0.00005&fabs(b11-b1)0.00005&fabs(b12-b2)0.00005); getch();6.实验结果与分析3.宏定义N=3第一步执行结果如下:4.输入系数及常数项矩阵后执行如下:5.输入解的初值后执行如下:7、

19、讨论、心得 对迭代的思想有更深的了解,而且也能熟悉对c语言更加了解熟练!实验三:方程求根实验一、实验目的数值计算方法是一门实践性和实用性都很强的课程,学习的目的在于应用已有的理论基础和技术方法,实现对实际计算问题的计算机求解。本实验配合计算数值方法课堂教学,通过上机实践实验环节,巩固课堂和书本上所学的知识、加强实践能力、提高解决实际计算问题的水平、启发创新思想。其基本目的是:(1) 培养理论联系实际的思路,训练综合运用已经学过的理论和实际知识去分析和解决实际问题的能力。(2) 帮助学生全面消化已学的相关课程内容,深刻理解计算数值方法课程的内涵,培养使用电子计算机进行科学计算和解决问题的能力。(

20、3) 进行基本技能训练和巩固。使学生得到选择算法、编写程序、分析数值结果、写数值试验报告、课堂讨论等环节的综合训练。二、实验内容熟悉使用二分法、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:f(x)=x3+4x2-10=0在1,2内的一个实根,且要求满足精度|x*-xn|0.510-53.主要仪器设备 1.笔记本电脑;2.软件vc+6.0;4.操作方法与实验步骤(代码)6.二分法;#include Stdio.h#include math.hdouble f(double x) /*定义一个函数*/ return x*x*x+4*x*x-10; main

21、() double a=1,b=2; /*给出区间的两个端点*/ double x=(a+b)/2; double xi; /*记下计算出x的前一个数,用于满足给出的精度*/ int i=0; /*计算满足精度所需要的次数*/ do /*计算x*/ i+; xi=x; if(f(x)*f(a)0) b=x; if(f(x)*f(b)0.5*0.00001); getch(); 7.牛顿法;#include Stdio.h#include math.hdouble f(double x) /*定义函数*/ return x*x*x+4*x*x-10; double f1(double x) /*

22、由函数定义出对应的导数*/ return 3*x*x+8*x; main() double x=1.5,xi;/*定义初值和变量xi*/ int i=0; /*计算x的次数*/ do /*计算x*/ i+; xi=x; x=x-f(x)/f1(x); printf(x(%d)=%lfn,i,x); while(fabs(x-xi)0.5*0.00001); getch(); 五、实验结果与分析1.二分法输出结果为:7.牛顿法输出结果为:4.讨论、心得; 从两种方法可以看出,牛顿法比二分法收敛速度快,但用牛顿法得求函数的导数,计算机无法求得,得人为输进。通过编写程序,是我们对c语言也能更进一步的

23、了解和熟练。实验四:拉格朗日插值法实验一、实验目的数值计算方法是一门实践性和实用性都很强的课程,学习的目的在于应用已有的理论基础和技术方法,实现对实际计算问题的计算机求解。本实验配合计算数值方法课堂教学,通过上机实践实验环节,巩固课堂和书本上所学的知识、加强实践能力、提高解决实际计算问题的水平、启发创新思想。其基本目的是:(1) 培养理论联系实际的思路,训练综合运用已经学过的理论和实际知识去分析和解决实际问题的能力。(2) 帮助学生全面消化已学的相关课程内容,深刻理解计算数值方法课程的内涵,培养使用电子计算机进行科学计算和解决问题的能力。(3) 进行基本技能训练和巩固。使学生得到选择算法、编写程序、分析数值结果、写数值试验报告、课堂讨论等环节的综合训练。二、实验内容使用拉格朗日插值法或牛顿插值法求解:已知f(x)在6个点的函数值如下表所示,运用插值方法,求f(0.596)的近似值。x0.400.550.650.800.901.05f(x)0.41

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

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