数值方法实验报告.docx

上传人:牧羊曲112 文档编号:5306046 上传时间:2023-06-24 格式:DOCX 页数:33 大小:195.70KB
返回 下载 相关 举报
数值方法实验报告.docx_第1页
第1页 / 共33页
数值方法实验报告.docx_第2页
第2页 / 共33页
数值方法实验报告.docx_第3页
第3页 / 共33页
数值方法实验报告.docx_第4页
第4页 / 共33页
数值方法实验报告.docx_第5页
第5页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数值方法实验报告.docx》由会员分享,可在线阅读,更多相关《数值方法实验报告.docx(33页珍藏版)》请在三一办公上搜索。

1、TAIYUAN UNIVEftSIIY OF TECHNOLOGY本科实验报告课程名称:计算机数值方法实验地点:计算机学院110专业班级: 物联网1301 学号:2013002056学生姓名:付佳指导教师:成 绩:2015年4月26日太原理工大学学生实验报告学院名称计软学院专业班级物联网1301学号2013002056学生姓名付佳实验日期3月27日成绩课程名称计算机数值方法实验题目实验一方程求根一、实验目的和要求1. 掌握方程求根的几种方法一一增值寻根法、二分法、牛顿法、迭代法2. 学会用程序编写算法,解出方程根;3. 熟练运用已有的知识,编写程序。二、实验内容和原理实验内容:1. 用增值寻根

2、法求方程x*x*x*x+2*x*x-x-4=0的根;2. 用二分法求方程2*x*x*x-5*x-1=0的根;3. 用牛顿法求方程x*x*x*x+2*x*x-x-4=0的根;4. 用迭代法求方程f(x) (sqrt(10/(4+x)=0的根。实验原理:1. 增值寻根法(1) f(Xn+1)=0,此时Xn+1即为方程的根X*(2) f(Xn)和f(Xn+1)同符号,这说明区间Xn,Xn+1 内无根(3) f(Xn)和f(Xn+1)异号,此时当f(Xn)在区间Xn,Xn+1上连续时,方程f(x)=0在Xn,Xn+1 一定有根。2. 二分法二分法的基本思想就是逐步对分区间a,b,通过判断两端点函数值

3、乘积的符号,进一步缩小有根区间,将有根区间的长度缩小到充分小, 从而求出满足精度的根X*的近似根用区间a,b的中点X1=(a+b)/2平分区间,并计算f(X1),同时记 (a1,b1) = (a,b),如果恰好有f(x1)=0,则我们已经找到方程的根x*=x1, 如若不然,f(x1) ! =0,如果 f(a1)*f(x1)0,则记(a2,b2) = (a1,x1),如 果 f(x1)*f(b1)0,则记(a2,b2) = (x1,b1),在后两种情形中(a2,b2)为 新的有根区间。它包含在旧的有根区间(a1,b 1)内,其区间长度是一半, 对新的区间(a2,b2)施行同样的办法,即平分区间,

4、求中点判断函数值乘 积的符号,得到新的有根区间(a3,b3),如此重复n次,得到方程近似值 x*3. 牛顿法设f(x)在a,b满足(1) f(a)f(b)0(2) f(x)Ea,b,f(x),f(x)均存在,且 f(x )与 f(x)的符号均 保持不变。(3) f(x)f(x)0, xEa,b则方程 f (x)=0 在a,b上有且只有一个 实根,由牛顿法迭代公式计算得到的近似解序列收敛于方程f(x)=0的根 x*。由方程f(x)=0得到的牛顿迭代形式:x=x- =1-=由于 f(x*)=0,所以当 f(x*)N0 时,(x* )= 0,牛顿法 至少是二阶收敛的,即牛顿法在单根附近至少是二阶收敛

5、的,在重根附近是 线性收敛的。牛顿法收敛很快,而且可求复根,缺点是对重根收敛较慢,要求函数的一 阶导数存在。4. 迭代法迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行: 选一个方程的近似根,赋给变量X0; 将X0的值保存于变量x1,然后计算g(x1),并将结果存于变量X0;当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤的计 算。若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法 求得的x0就认为是方程的根。三、主要仪器设备电脑、Microsoft Visual C+ 6.0四、

6、操作方法与实验步骤增值寻根法#include stdafx.h#include#include#include#define f(x) (x*x*x*x+2*x*x-x-4)#define x0 0.5#define x1 0.2#define MAXREPT 1e4double myfun(double x)5 X*void main()1 double fdouble h=1;while(h=0.0001)while(1)if(myfun(x+h)=0)coutx=x0)x=x+h;continue;else if(myfun(x)*myfun(x+h)0)couta=xb=x+hendl

7、;break;hh,0二分法#include stdafx.h#include#includeddouble fen(double a,double b,double err) d double .c;c=(a+b)/2;double x_k=x0,x_k1=x1,x_k2=x1;coutepsilon;cout迭代开始:endl;for(i=0;iMAXREPT;i+)coutGot.x_k2endl;x_k2=x_k1-func(x_k1)/dfunc(x_k1);if(fabs(x_k2-x_k1)epsilon)cout所得满足精度的解为:endl;cout!Root=x_k2endl

8、;return;x_k=x_k1;x_k1=x_k2;cout经过MAXREPT次迭代后,未达到所需精度要求 endl;迭代法#include stdafx.h#include#include#include#define f(x) (sqrt(10/(4+x)#define x0 1.0#define x1 1.5#define MAXREPT 1e4void main()int i;double epsilon;double x_k=x0,x_k1=x1,x_k2=x1;coutepsilon;cout迭代开始:endl;for(i=0;iMAXREPT;i+)coutGot.x_k2en

9、dl;x_k2 = f(x_k1);if(fabs(x_k2-x_k1)epsilon)cout所得满足精度的解为:endl;cout!Root=x_k2endl;0_ 00005IWGot. . .1Got. .1.33333Got. . .1.21251Got.1.22455Got. . .1.2221Got. . .1.22257Got.1.22248所得满足精度的解为=*Eoot =1.2225Press any key to continue迭代法:项盖令蒙辛精度:宜-00005Got-1 - 5Got.1.3484Got.1.36738Got.1.36496Got. . 1.365

10、26 所得满足精度的解为: ?Root=l.36523Press anp key to continue七、讨论、心得1. 通过实验,学会了更好的运用学过的C语言、C+语言;2. 通过编写程序,更加深刻了解每种方法的基本思想,巩固了学习的知 识;3. 通过实验,弥补了自己不不足,在学习他人的经验下,丰富自己已有 的知识,提高编程能力;4. 学会修改程序。计算机实验地点110指导教师王峥、田华太原理工大学学生实验报告学院名称计软学院专业班级物联网1301学号2013002056学生姓名付佳实验日期4月3日成绩课程名称计算机数值方法实验题目实验二线性方程组的直接求解法一、实验目的和要求1. 掌握线

11、性方程组的直接求解法一一高斯消元法;2. 编写程序,求出方程组的解;3. 运用已学习过的知识修改程序。二、实验内容和原理1. 实验内容高斯消元法求解2*X2-0.1*X3+7*X4=76.2方程组 6*X1+3*X3-5*X4=153*X1+X2+2*X3+5*X4=862*X1+4*X2+X3=482. 实验原理高斯消元法是利用每一行的主元素aii进行消元,重复n-1步后即可得到一个上三角矩阵最后进行回代过程解出方程组解的算法。追赶法是针对特殊方程组(对角线型)的一种简单有效的算法,很大程度上 减小了计算量三、主要仪器设备电脑、Microsoft Visual C+ 6.0四、操作方法与实验

12、步骤#include stdafx.h#include#include#include#define N 4void Gause_pivot(int n,double ANN+1,double x)int i,j,k;for(k=1;k=n-1;k+)int ii,jj,kk,row;double max,temp;ii=1;kk=k;max=AiiT+(kkT)kkT;for(jj=ii+1;jjfabs(max)max=AjjT+(kkT)kkT;row=jj+(kk-1);for(ii=1;ii=n+1;ii+)temp=AkkTiiT;AkkTiiT=ArowTiiT;ArowTiiT

13、=temp;for(i=k+1;i=n;i+)for(j=k+1;j=1;k)xk-1=0.0;for(j=k+1;j=n;j+) xk-1+=Ak-1j-1*xj-1;xk-1 = (Ak-1n-xk-1)/Ak-1k-1;for(i=0;i=n-1;i+)printf(%fn,xi);void main()doubleANN+1 = 0,2,-0.1,7,76.2,6,0,3,-5,15,3,1,2,5,86,2,4,1,0,48;double xN=0;Gause_pivot(N,A,x);六、实验结果与分析高斯消兀法:6.0000007.0000008.0000009.000000Pr

14、ess anij key to continue七、讨论、心得1. 通过编写程序的过程,更加深入了解高斯消元法的原理;2. 通过编写程序,弥补学习中的不足;3. 学会一步一步阅读程序,一步一步修改程序,直至程序的正确性得到保证。计算实验地点机110指导教师王峥、田华太原理工大学学生实验报告学院名称计软学院专业班级物联网1301学号2013002056学生姓名付佳实验日期4月10日成绩课程名称计算机数值方法实验题目实验三线性方程组的迭代求解法一、实验目的和要求1. 掌握线性方程组的迭代求解法;2. 掌握高斯赛德尔方法求解方程;3. 通过已有的知识编写、修改程序。二、实验内容和原理1. 实验内容用

15、高斯赛德尔方法求解方程10*X1-X2+2*X3=-118*X2-X3+3*X4=-112*X1-X2+10X3=6X1+3*X2-X3+11*X4=252. 实验原理高斯赛德尔迭代法在系数矩阵严格占优时收敛,根据迭代公式,最终将 收敛到一个稳定的值附近,即为方程组的解。三、主要仪器设备电脑、Microsoft Visual C+ 6.0四、操作方法与实验步骤#include stdafx.h#include #include #define N 600void main()int i;double x4;doublec45 = 10,T,2,0,-11,0,8,T,3,T1,2,T,10,0

16、,6,T,3,T,11,25;void GaussSeidel(double *,int,double);GaussSeidel(c0,4,x);for(i=0;i=3;i+)printf(x%d=%fn,i,xi);void GaussSeidel(double *a,int n,double x)int i,j,k=1;double d,dx,eps;for(i=0;i=3;i+)while(1)eps=0;for(i=0;i=3;i+)d=0;for(j=0;j=4;j+) ifg;d+=*(a+i*(n+1)+j)*xj;dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+

17、1)+i);eps+=fabs(dx-xi);xi=dx;if(epsN)迭代发-);六、实验结果与分析高斯赛德尔迭代法:lx 0 =-1.467391 xl=-2.358696 x2=0.657609 x3=2.842391 Press any key to continue七、讨论、心得1. 通过编写程序,深入了解迭代法求解方程组的原理;2. 每次编程过程中积累丰富的编程经验;3. 认真编写每个步骤,甚至到标点符号,学会修改错误的程序,以保证 得到正确的答案实验地点计算机110指导教师王峥、田华太原理工大学学生实验报告学院名称计软学院专业班级物联网1301学号2013002056学生姓名付

18、佳实验日期3月17日成绩课程名称计算机数值方法实验题目实验四代数插值和最小二乘法拟合一、实验目的和要求1. 掌握代数插值和最小二乘拟合的原理;2. 编写代数插值和最小二乘拟合的程序;3. 掌握vc+编程方法。二、实验内容和原理实验内容:1. 牛顿插值多项式已知f(x)在6个点的函数值如下表所示,运用插值方法,求f(0.596)的近似值。x0.400.550.650.800.901.05f(x)0.410750.578150.696750.888111.026521.253862. 最小二乘法拟合多项式给定数据点(,*),用最小二乘法拟合数据的多项式,xi00.50.60.70.80.91.0y

19、i11.751.962.192.442.713.00三、主要仪器设备电脑、Microsoft Visual C+ 6.0四、操作方法与实验步骤牛顿插值#include “stdafx.h”#include#includevoid main() float x11,y1111 ,xx,temp,newton,t,h;int i,j,n;printf(x=);scanf(%f,&xx);printf(n=);scanf(%d,&n);printf(h=);scanf(%f,&h);for(i=0;in+1;i+)printf(x%d二,i);scanf(%f,&xi);printf(y%d二,i)

20、;scanf(f,&y0i);t=(xx-xn)/h;printf(各阶差分分别为:n);for(i=1;in+1;i+)for(j=i;jn+1;j+)(yij = (yi-1j-yi-1jT);printf(fn,yij);temp=1;newton=y0n;for(i=1;in+1;i+)(temp二temp*(t+i-1)/i);newton二newton+yin*temp;printf( 求得:N(%f)=%fn,xx,newton);最小二乘拟合:#include stdafx.h”#include#include#define MAX 100void main()int i,j,

21、k,m,n,N,mi;float tmp,mx;float XMAXMAX,YMAX,xMAX,yMAX,aMAX;printf(n输入拟合多项式的次数:n); scanf(%d,&m);printf(n输入给定点的个数n及坐标(x,y):n);scanf(d,&N);printf(n);for(i=0;iN;i+)scanf(f,%f,&xi,&yi);for(i=0;i=m;i+)for(j=i;j=m;j+)tmp=0;for(k=0;kN;k+)tmp=tmp+pow(xk,(i+j);Xij=tmp;Xji=Xij;for(i=0;i=m;i+)tmp=0;for(k=0;kN;k+

22、)tmp=tmp+yk*pow(xk,i);Yi=tmp;for(j=0;jm;j+)for(i=j+1,mi=j,mx=fabs(Xjj);imx)mi=i;mx=fabs(Xij);if(jmi)tmp=Yj;Yj=Ymi;Ymi=tmp;for(k=j;k=m;k+)tmp=Xjk;Xjk=Xmik;Xmik=tmp;for(i=j+1;i=m;i+)tmp=-Xij/Xjj;Yi+=Yj*tmp;for(k=j;k=0;i)ai=Yi;for(j=i+1;j=m;j+)ai-=Xij*aj;ai/=Xii;printf(n所求的二次多项式为:n);printf(P(x)二%f,a0);for(i=1;i=m;i+)printf(+(%f)*x%d,ai,i);六、实验结果与分析牛顿插值:y4=l.02652x5=1.05y5=1.25386各阶差分分别为:0.1674000.1186000.1913600.1384100.227340-0.0488000.072760-0.0529500.0889300.121560-0.1257100.141880-0.2472700.2675900.514860求得:N=0.692184Press anv key to continue最小二乘拟合:实验地点计算机110指导教师王峥、田华

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号