太原理工大学数值计算方法实验报告

上传人:孙哥 文档编号:169369662 上传时间:2022-11-15 格式:DOCX 页数:16 大小:259.72KB
收藏 版权申诉 举报 下载
太原理工大学数值计算方法实验报告_第1页
第1页 / 共16页
太原理工大学数值计算方法实验报告_第2页
第2页 / 共16页
太原理工大学数值计算方法实验报告_第3页
第3页 / 共16页
资源描述:

《太原理工大学数值计算方法实验报告》由会员分享,可在线阅读,更多相关《太原理工大学数值计算方法实验报告(16页珍藏版)》请在装配图网上搜索。

1、本科实验报告课程名称:电脑数值方法实验项目:方程求根、线性方程组的直接解法、线性方程组的迭代解法、代数插值和最小二乘拟合多项式实验地点:行勉楼专业班级:a、,厂,y* y* y* y* y* y* y* y*学号:学生:y* y* y* y* y* y*指导教师:李誌,崔冬华2016 年 4 月 8 日学生实验成绩实验名称实验一方程求根实验内容和要求熟悉使用二分法、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上 述方法中的两种方法求方程:f(x)=x3+4x2-10=0在1,2内的一个实根,且要求满足精度 |x*x X 10-5n1了解非线性方程求根的常见方法,如二分法、牛顿法、

2、割线法。2加深对方程求根方法的认识,掌握算法。3会进行误差分析,并能对不同方法进行比较。实验原理1. 二分法:如果要求已知函数f(x) = 0的根(x的解),那先要找出一个区间a, b, 使得f(a)与f(b)异号。根据介值定理,这个区间内一定包含着方程式的根。求该区间的 中点m=(a+b)/2,并找出f(m)的值。假设f(m)与f(a)正负号相同,则取m, b为 新的区间,否则取a, m。重复第3步和第4步,直到得到理想的精确度为止。2. 割线法是利用牛顿迭代法的思想,在根的某个领域内,函数有直至二阶的连续导数,并 且不等于0,则在领域内选取初值x0,x1,迭代均收敛。1在区间m ,n内输入

3、初值x0,x1. 计算 x2。x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0)3x0=x1,x1=x24判断是否到达精度,假设是输出x1,假设否 执行2主要仪器设备HP电脑实验记录/方程求根二分法.cpp :定义控制台应用程序的入口点。/#include stdafx.h#includeiostreamusing namespace std;class Textpublic:float x, y, a, b, c, n = 0;void Getab()cout 请输入计算区间:(以空格隔开) a b;float GetY(float x)y = x*x*x + 4 * x*x

4、- 10;return y;float Calculate(float a,float b)c = (a + b) / 2;n+;if (GetY(c) = 0 II (b - a) / 2) 0.000005) cout c 为方程的解vv endl; return 0;if (GetY(a)*GetY(c) v 0)return Calculate(a,c);if (GetY(c)*GetY(b)v 0)return Calculate(c,b);int main()cout vv 方程组为:f(x)=xA3+4xA2-10=0 vv endl; float a, b;Text text;

5、text.Getab();a = text.a;b = text.b;text.Calculate(a, b);return 0;I血 C :VflNIDOGSem 32rmd. Exe方程组为:(幻=3+4葢龙-10=0 请输入计算区间;(以空格隔开1 21.36523为方理的解 请按任意趙继续一一一2.割线法:/方程求根割线法.cpp :定义控制台应用程序的入口点。/#include stdafx.h#includeiostreamusing namespace std;class Apublic:float xO,xl,y;float GetY(float x)y= x*x*x+4*x*

6、x-10;return y;void GetNumber()coutvv请输入两个初始近似值:(以空格隔开) x0;cin x1;void Calculate(float x0,float x1)float x2;x2 = x1 - (GetY(x1) / (GetY(x1) - GetY(x0)*(x1 - x0);if (x2=x1)cout vvx2vv为方程的解 endl;elsecout x2 endl;return Calculate(x1, x2);int main()cout 方程组为:f(x)=xA3+4xA2-10=0 double a56,a056;double l5,t

7、mp;void Exchange(int i)int j,l,k;double max=aOii,temp; j=i;for(k=i;kv=3;k+)if(aOkimax)max=aOki;j=k;for(l=i;lv=4;l+)temp=aOil;aOil=aOjl; a0jl=temp;for(i=l;iv=3;i+) for(j=1;jv=4;j+) aij=a0ij;void displayA()int i,j;printf(n);for(j=1;jv=3;j+) for(i=1;i=4;i+) printf(%lf ,aji); printf(n);void main()int i,

8、j,k;for(i=1;i=3;i+)for(j=1;jv=4;j+)scanf(”lf,&aij);a0ij=aij;displayA(); printf(列主元素消元法如下”);消元过程k=1;doExchange(k);displayA();for(i=k+l;iv=3;i+)li=aOik/aOkk; printf(l%i%i=%lf,i,k,li); for(j=k;j=1;k-)tmp=0; for(j=k+1;j=3;j+)tmp+=akj*lj; lk=(ak4-tmp)/akk;for(i=1;i=3;i+)printf(x%i=%lfn,i,li);m=m+akr*arj;

9、akj=akj-m;m=0;for(i=k+l;iv=2;i+)for(r=0;rv=k-1;r+)p=p+air*ark;aik=(aik-p)/akk;p=0; void main() static double a33=1,2,3,0,1,2,2,4,1;static double b3=14,8,13;double c3;double d3;double f33;double m=0;double n=0;int r;int i,j;lu(a);printf(输出U的矩阵为n);for(i=0;i=2;i+)for(j=i;jv=2;j+)fij=aij;printf(” %f,fij

10、);printf(n);printf(输出L的矩阵为n);for(i=0;i=0;i=i-1)for(r=2;ri;r=r-1)n=n+fir*dr;di=(ci-n)/fii;n=0;printf(所求方程组解为x1=%f, x2=%f, x3=%f,d0,d1,d2); /*根据 LU分解所得两 个矩阵及求解步骤计算所求X 一组解*/1.000000 2.00Q090 3.0000001.000000 2.000000-5.000000输岀L的矩阵为1.Q0&QQQ.Q00&QQ 1.QQQQQQ2.000000 0.000000 1.000000馬求方程组解为xl =1.000000,

11、x2 =2 -000080, x3 =3.000000Press any key to conti nue心得体会对于求解线性方程组的各种直接方法来说各有优缺点,在所有的求解方法中都应 该注意其解的精度。注意不同求解方法的不同误差求法。编写程序的时候需要一步一步 慢慢来,逐步增加自己的算法知识水平和解决问题的能力。实验名称实验三线性方程组的迭代求解实验内容和要求(10x 一 x 一 2x = 7.2123v x +10x 2x = 8.3123一 x 一 x + 5x = 4.2V123使用雅可比迭代法或高斯-赛德尔迭代法对以下方程组进行求解。实验原理雅可比迭代法:设线性方程组Ax=b的系数矩

12、阵A可逆且主对角元素a ,a,,a均不为零,令1122nnD=diag(a ,a ,,a ) 1122nn并将A分解成A=(A-D)+D从而线性方程组可写成Dx=(D-A) x+b 则有迭代公式x(k+1)=B x(k)+f1 1其中,B =I-D-1A,f =D-1bo主要仪器设备HP电脑实验记录#include vstdio.h#includevmath.hint main()int i;double xl20,x220,x320;double xl0,x20,x30;printf(please input xl,x2,x3:n); scanf(%lf%lf%lf, &xl0,&x20,&

13、x30);printf(” n x1nx2nx3nn);for(i=0;ivl8;i+)xl0=xl0;x20=x20;x30=x30;x1i+1=*x2i+*x3i+;x2i+1=*x1i+*x3i+;x3i+1=*x1i+*x2i+;printf(%5d %5lf%5lf%5lfn,i,x1i,x2i,x3i);return 0;ulease input xl,x2,x3:M 0 0nxlny2nx3Lnl06.0000000.00909016.8300009.84909020.97100S1.0700001.15999931.1571001.24829941.0S53561.185340

14、1.28282951.095S981.1950991.294138G1.0983381.1983371.29803971.0994421.1994421.29933581.0998111.1998111.29977791.0999361.1999361.299924101.0999791.1999791.299975111.0999931.1999931.299991121.0999981.1999981.299997131.0999991.1999991.299999141.1S0S661.2000001.399999151.1S0S661.2000001.3999991G1.1S0S661

15、.2000001.399999171.1S0S661.2000001.399999心得体会在编写算法是不熟悉,查阅了很多资料,经过反复研究和试验后实现了题目的要求,使 用雅克比迭代法和高斯-赛德尔都可以得到方程的解,但相比之下,高斯-赛德尔的迭代次 数要比雅克比的迭代次数少,能够更快的到达所求的解的精度。实验名称实验四代数插值和最小一乘法拟合实验内容和要求1学习使用拉格朗日插值法或牛顿插值法求解方法。2.了解最小二乘法的多项式拟合的具体计算方法并且注意克服正规方程组的病态。 给定数据点x; ,y;如下:xi0y.i1(1) 使用拉格朗日插值法或牛顿插值法,求f(0.856)的近似值.(2) 用

16、最小二乘法拟合数据的(n次)多项式,求f(0.856)的近似值.(3) 比照、分析上两结果实验原理设函数在区间a,b上n+1互异节点x ,x ,x上的函数值分别为y ,y ,,y ,01n01n求n次插值多项式P (x),满足条件nP (x.)=y.,j=0,1,,nnjj令L (x)=y l (x)+y l (x)+yl (x)= Ey l (x)n0011n ni i其中l (x),l (x),,l (x)为以x,x,x为节点的n次插值基函数,01n01n则Ln(x)是一次数不超过n的多项式,且满足 L (x.)=y.,L=0,1,,nnjj再由插值多项式的唯一性,得P (x)三L (x)

17、主要仪器设备HP电脑实验记录(写出实验内容中的程序代码和运行结果)(可分栏或加页)拉格朗日插值法:#include stdio.hint main()double m=1.0,a=0.856,l=0;int i,j;double x6=0.50,0.60,0.70,0.80,0.90,1.00;double y=1.75,1.96,2.19,2.44,2.71,3.00; for(i=0;iv=5;i+)for(j=0;jv=5;j+)if(i=j) continue; m=m*(a-xj)/(xi-xj);l+=yi*m; m=l;printf(” 结果为 lf,l); return 0;g

18、g2-588736Ptess ant/to cont inue最小二乘法:#include stdio.h#include math.hint main()double x7=0,0.5,0.6,0.7,0.8,0.9,1.0, y7=1,1.75,1.96,2.19,2.44,2.71,3.00, a0,a1,sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,l,r;int m=6,i,k;for(i=0;i7;i+)sum1+=xi;sum2+=xi*xi;sum3+=yi;sum4+=xi*yi;sum5+=yi*yi;l=sum1/(m+1);a1=(sum4-l*

19、sum3)/(sum2-l*sum1); a0=(sum3-sum1*a1)/(m+1);double s=sum3*a0+sum4*a1;r=sum5-s;printf(y=a0+a1*xn);printf(aO=%f a1=%ftn,a0,a1,r);double q=0.856,p;p=a0+a1*q;printf(y=%fn,p);return 0;y=a0+al*xCi0=0_8782Gl al =1_978261 ly=2-571652Press anv key to continue心得体会拉格朗日插值的优点是插值多项式特别容易建立,缺点是增加节点是原有多项 式不能利用,必须重新建立,即所有基函数都要重新计算,这就造成计算量的浪费。 牛顿插值多项式的优点是增加节点时,原先的差商仍旧不变,仍可以使用。数据拟合的具体作法是:对给定的数据x.,y.i=O,l,m,在取定的函1i数类中,求p(x)属于此函数类,使误差r=p(x)-y (i=O,l,m )的平方和最小,iii即:工 r 2二工工p(x )-y2=minii i从几何意义上讲,就是寻求与给定点x. ,y.i=O,l,m的距离平方和为最小ii的曲线y=p(x)。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!