收藏 分销(赏)

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

上传人:w****g 文档编号:2579528 上传时间:2024-06-01 格式:DOC 页数:10 大小:247.04KB 下载积分:8 金币
下载 相关
实验报告计算方法(小肥).doc_第1页
第1页 / 共10页
实验报告计算方法(小肥).doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
实验报告计算方法(小肥) ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途 实验一、用一般迭代法计算方程x³ -x² -1= 0在x0=1.5附近近似根,准确到10‾ ³。 1。实验目的:掌握非线性方程一般迭代算法。 2.实验内容和要求:编写求近似根的程序,并上机调试和运行.观察运行结果、所需的迭代次数和迭代结果,记录每次程序的输入输出数据。 3.算法描述:画出算法框图。 转换方程,写出迭代公式x0=1.5, e=0.001,M=100 Y Xk+1=j(xk) k=1,2…..M 输入X0=1.5,e=0.001,M=100 N |Xk+1-Xk|<ee 输出k,x并终止计算 Xk=Xk+1 输出迭代失效信息,并终止计算 4程序运行结果 5结果评论 结果运行正确,基本完成了题目给出的方程计算,但过程简单,程序没有体现方程的一般性,仅使用于此方程的计算, 6实验评论 运用一般迭代法,写出迭代公式,根据给出的初值及一般迭代法算法,分别计算x1,x2…。xk,若|x1-x0|在精度范围内,则停止计算。 7源程序 #include<iostream〉 #include<math。h> using namespace std; double f(double); //申明函数 int main() { double a,i=0,a1,pr; cout〈<”输入初值a:\n"; cin〉>a; cout<<"输入精度:\n"; cin>>pr; do { a1=a; a=f(a); i++; if(i〉1000000) {cout<<"错误,超过迭代次数!";return 0;} } while((a—a1)〉pr||(a—a1)〈-pr); cout<〈"迭代次数为 "<〈i〈〈endl; cout<<”结果为 ”<<a〈<endl; } double f(double x) //定义函数 { return pow((x+1.0),(1。0/3)); } 实验二、用列主元高斯消元法求解线性方程组. 1。实验目的:程序实现高斯列主元消去法。 2。实验内容和要求:编写用列主元高斯消元法求解方程组的程序,并上机调试和运行。反复尝试,观察程序的输出解,记录每次程序的输入输出数据。 3 算法描述 3.1 第1步消元:在增广矩阵(A,b)第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A,b)做初等行变换使原方程组转化形式: 3.2 第2步消元——在增广矩阵(A,b)中的第二列中(从第二行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化形式: 3。3 第3步消元-—在增广矩阵(A,b)中的第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化形式: 3.4回代求解出方程组的解. 4 程序运行结果 程序中输入方程元素,再根据要求输入系数矩阵。 在第一列中选主元,并将主元所在行与第一行交换,行列式变换,消元。逐步进行。 5 结果评论 此计算结果正确,过程步骤描述清晰,先输入系数矩阵,右边向量,选取了第一列的主元,再消元,完成后选取第二列的主元,再交换顺序消元,形成上三角形,用回代发计算结果。此程序基本完成了列主元解方程组的要求. 6 实验结论 我很少使用计算机语言来解方程组,但是用了这个方法之后,才发现数学跟计算机真的是一体的,好多数学问题都可以用程序来描述,然后计算,此高斯列主元消去法便是一个实例,即让我加深了对高斯主元消去法的理解,也让我进一步加深了对计算机语言的了解,在很大程度上提升了语言知识,以后考虑数学问题时都可以想一下怎么用程序解决了,这样也让计算速度提高好多倍. 7 源程序清单 #include <stdio.h> #include<math。h> int n; float a[100][100],b[100]; void output () {int i,j; printf(”矩阵a,b是:\n"); for (i=0;i〈n;i++) { for (j=0;j<n;j++) printf("%—10f",a[i][j]); printf("%—10f",b[i]); printf("\n"); } } void input() { int i,j; printf("请输入矩阵阶数: "); scanf("%d”,&n); printf(”请输入系数矩阵(a):\n"); for(i=0;i〈n;i++) for(j=0;j〈n;j++) {scanf("%f”,&a[i][j]);} printf("请输入右边数据(b):\n”); for(i=0;i〈n;i++) scanf(”%f”,&b[i]); } void gaosi () { int k,i,j,max; float ta,tb,m; for(k=0;k<n;k++) {max=k; for(i=k+1;i〈n;i++) {if(fabs(a[i][k])〉fabs(a[max][k])) max=i; } if(i!=k) {for(j=0;j〈n;j++) {ta=a[k][j];a[k][j]=a[max][j];a[max][j]=ta;} tb=b[k];b[k]=b[max];b[max]=tb; }output(); for(i=k+1;i〈n;i++) {m=a[i][k]/a[k][k]; for(j=k;j<n;j++) a[i][j]=a[i][j]—a[k][j]*m; b[i]=b[i]-m*b[k]; output(); } } } void qiujie () { int i,j; float sum; b[n-1]=b[n—1]/a[n—1][n-1]; for(i=n-2;i〉=0;i--) {sum=0; for(j=i+1;j<n;j++) sum=sum+a[i][j]*b[j]; b[i]=(b[i]—sum)/a[i][i]; } printf("结果:\n”); for(i=0;i<n;i++) printf(”x%d=%f\n",i+1,b[i]); } void main() { input(); gaosi(); qiujie(); } 编写用拉格朗日线性插值多项式求 0 3 11 sin o ¢ 实验三、给定 207912 . 0 12 sin , 190809 . 0 11 sin o o o = = 近似值的程序并估计余项。 。 1。实验目的:程序实现用拉格朗日插值法计算函数的近似值。 2.实验内容和要求:编写拉格朗日插值公式求函数的近似值的程序,并上机调试和运行。记录所用的函数,及程序的输入输出数据并分析误差。 3.算法描述: 拉格朗日插值法计算函数的近似值 (1)输入节点(xi,yi), i=0,1,…,n,以及x,令Ln(x)=0;; (2)对i=0,1,…,n,计算 ; ; (3)输出。 4.程序运行结果 5.结果评价 程序结果运行完整,且计算正确,虽然是在题目中直接给出了初始数据,但是这样就减少了输入数据的麻烦过程. 6实验结论 此实验要求我们掌握朗格朗日插值的思想过程,熟悉朗格朗日的算法,并用拉格朗日公式计算近似值,而且能计算出截断误差,实验的时候我开始根本不晓得怎么进行,但是一步步来了,最终能够得到结果了,相信拉格朗日能编写出来,牛顿插值法应该在这个基础上就不难了,以后学习多写程序,尤其是作为计算机的学生,不会写程序真的对不起这个专业。 7源程序 #include〈iostream。h〉 #include<math.h>//确定要计算的角度值 #define N 11.5//利用宏定义线性插值函数 #define L(a) (a-x_1)/(x_0-x_1)*y_0+(a-x_0)/(x_1—x_0)*y_1//利用宏定义函数,该函数用以将x0与x1逐步接近 #define X(M,n) int(M*pow(10,n)/10)/pow(10,n—1) 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_0〈<endl; //输出截断误差限 cout〈<”截断误差限为:”<<sin(x_1)*(fabs((N—x_0)*(N-x_1))/2)<<endl; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

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

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服