收藏 分销(赏)

实验报告计算方法(小肥).doc

上传人:w****g 文档编号:2579528 上传时间:2024-06-01 格式:DOC 页数:10 大小:247.04KB
下载 相关 举报
实验报告计算方法(小肥).doc_第1页
第1页 / 共10页
实验报告计算方法(小肥).doc_第2页
第2页 / 共10页
实验报告计算方法(小肥).doc_第3页
第3页 / 共10页
实验报告计算方法(小肥).doc_第4页
第4页 / 共10页
实验报告计算方法(小肥).doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、实验报告计算方法(小肥) 作者: 日期:2 个人收集整理 勿做商业用途实验一、用一般迭代法计算方程x -x -1= 0在x0=1.5附近近似根,准确到10 。1。实验目的:掌握非线性方程一般迭代算法。2.实验内容和要求:编写求近似根的程序,并上机调试和运行.观察运行结果、所需的迭代次数和迭代结果,记录每次程序的输入输出数据。3.算法描述:画出算法框图。转换方程,写出迭代公式x0=1.5, e=0.001,M=100YXk+1=j(xk) k=1,2.M输入X0=1.5,e=0.001,M=100N|Xk+1-Xk|ee输出k,x并终止计算Xk=Xk+1输出迭代失效信息,并终止计算4程序运行结果

2、5结果评论结果运行正确,基本完成了题目给出的方程计算,但过程简单,程序没有体现方程的一般性,仅使用于此方程的计算,6实验评论运用一般迭代法,写出迭代公式,根据给出的初值及一般迭代法算法,分别计算x1,x2。xk,若|x1-x0|在精度范围内,则停止计算。7源程序#includeiostream#includeusing namespace std;double f(double); /申明函数int main() double a,i=0,a1,pr; couta; coutpr; do a1=a; a=f(a); i+; if(i1000000) cout错误,超过迭代次数!;return

3、0; while((aa1)pr|(aa1)-pr); cout迭代次数为 iendl; cout”结果为 ”aendl; double f(double x) /定义函数return pow(x+1.0),(1。0/3);实验二、用列主元高斯消元法求解线性方程组.1。实验目的:程序实现高斯列主元消去法。2。实验内容和要求:编写用列主元高斯消元法求解方程组的程序,并上机调试和运行。反复尝试,观察程序的输出解,记录每次程序的输入输出数据。3 算法描述3.1 第1步消元:在增广矩阵(A,b)第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A,b)做初等行变换使原方程组转化形式: 3.2

4、 第2步消元在增广矩阵(A,b)中的第二列中(从第二行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化形式: 3。3 第3步消元-在增广矩阵(A,b)中的第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化形式: 3.4回代求解出方程组的解. 4 程序运行结果程序中输入方程元素,再根据要求输入系数矩阵。在第一列中选主元,并将主元所在行与第一行交换,行列式变换,消元。逐步进行。5 结果评论此计算结果正确,过程步骤描述清晰,先输入系数矩阵,右边向量,选取了第一列的主元,再消元,完成后选取第二列的主

5、元,再交换顺序消元,形成上三角形,用回代发计算结果。此程序基本完成了列主元解方程组的要求.6 实验结论我很少使用计算机语言来解方程组,但是用了这个方法之后,才发现数学跟计算机真的是一体的,好多数学问题都可以用程序来描述,然后计算,此高斯列主元消去法便是一个实例,即让我加深了对高斯主元消去法的理解,也让我进一步加深了对计算机语言的了解,在很大程度上提升了语言知识,以后考虑数学问题时都可以想一下怎么用程序解决了,这样也让计算速度提高好多倍.7 源程序清单include #includeint n;float a100100,b100;void output ()int i,j;printf(”矩阵

6、a,b是:n);for (i=0;in;i+) for (j=0;jn;j+)printf(%10f,aij);printf(10f,bi);printf(n);void input()int i,j;printf(请输入矩阵阶数: );scanf(d”,&n);printf(”请输入系数矩阵(a):n);for(i=0;in;i+) for(j=0;jn;j+) scanf(f”,&aij); printf(请输入右边数据(b):n”); for(i=0;in;i+) scanf(”f”,&bi);void gaosi () int k,i,j,max;float ta,tb,m;for(k

7、=0;kn;k+)max=k; for(i=k+1;in;i+) if(fabs(aik)fabs(amaxk) max=i; if(i!=k) for(j=0;jn;j+) ta=akj;akj=amaxj;amaxj=ta; tb=bk;bk=bmax;bmax=tb; output(); for(i=k+1;in;i+) m=aik/akk; for(j=k;jn;j+) aij=aijakj*m;bi=bi-m*bk; output(); void qiujie () int i,j;float sum;bn-1=bn1/an1n-1;for(i=n-2;i=0;i-)sum=0; f

8、or(j=i+1;jn;j+) sum=sum+aij*bj; bi=(bisum)/aii;printf(结果:n”);for(i=0;in;i+)printf(”xd=%fn,i+1,bi);void main() input(); gaosi(); qiujie();编写用拉格朗日线性插值多项式求0311sino实验三、给定207912.012sin,190809.011sinooo=近似值的程序并估计余项。1。实验目的:程序实现用拉格朗日插值法计算函数的近似值。2.实验内容和要求:编写拉格朗日插值公式求函数的近似值的程序,并上机调试和运行。记录所用的函数,及程序的输入输出数据并分析误差

9、。3.算法描述: 拉格朗日插值法计算函数的近似值(1)输入节点(xi,yi), i=0,1,n,以及x,令Ln(x)=0;;(2)对i=0,1,n,计算;;(3)输出。4.程序运行结果5.结果评价程序结果运行完整,且计算正确,虽然是在题目中直接给出了初始数据,但是这样就减少了输入数据的麻烦过程.6实验结论此实验要求我们掌握朗格朗日插值的思想过程,熟悉朗格朗日的算法,并用拉格朗日公式计算近似值,而且能计算出截断误差,实验的时候我开始根本不晓得怎么进行,但是一步步来了,最终能够得到结果了,相信拉格朗日能编写出来,牛顿插值法应该在这个基础上就不难了,以后学习多写程序,尤其是作为计算机的学生,不会写程

10、序真的对不起这个专业。7源程序includeiostream。hinclude/确定要计算的角度值#define N 11.5/利用宏定义线性插值函数define L(a) (a-x_1)/(x_0-x_1)y_0+(a-x_0)/(x_1x_0)y_1/利用宏定义函数,该函数用以将x0与x1逐步接近define X(M,n) int(Mpow(10,n)/10)/pow(10,n1)void main()double x_0=11,x_1=12,y_0=0。190809,y_1=0.207912,temp=N,temp1; for(int i=3;i=6;i+) temp1=X(temp,i) ; y_0=L(temp1);if(i=6) break; x_0=X(temp,i); /输出运算结果 cout经用线性插值法计算知sin(0。57891)的近似值为:y_0endl;/输出截断误差限 cout”截断误差限为:”sin(x_1)(fabs((Nx_0)(N-x_1))/2)endl;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服