太原理工大学数值计算方法试验报告讲解_第1页
太原理工大学数值计算方法试验报告讲解_第2页
太原理工大学数值计算方法试验报告讲解_第3页
太原理工大学数值计算方法试验报告讲解_第4页
太原理工大学数值计算方法试验报告讲解_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

3、取初值 x0,x 1, 迭代均收敛。(1) 在区间 m ,n 内输入初值 x0, x1.(2) 计算 x2。 x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0)(3) x0=x1,x1=x2 (4) 判断是否达到精度 , 若是输出 x1,若否 执行( 2)主要仪器设备HP计算机实验记录1. 二分法/ 方程求根(二分法) .cpp : 定义控制台应用程序的入口点。 /#include stdafx.h #includeiostream using namespace std;class Text public:float x, y, a, b, c, n = 0;void Geta

4、b()cout 请输入计算区间: (以空格隔开 ) a b;float GetY(float x)y = x*x*x + 4 * x*x - 10; return y;float Calculate(float a,float b) c = (a + b) / 2;n+;if (GetY(c) = 0 | (b - a) / 2) 0.000005)cout c 为方程的解 endl; return 0;if (GetY(a)*GetY(c) 0)return Calculate(a,c);if (GetY(c)*GetY(b) 0)return Calculate(c,b);int main

5、()cout 方程组为: f(x)=x3+4x2-10=0 endl;float a, b;Text text;text.Getab();a = text.a;b = text.b;text.Calculate(a, b);return 0;2. 割线法:/ 方程求根(割线法) .cpp : 定义控制台应用程序的入口点。 / #include stdafx.h#includeiostreamusing namespace std; class A public: float x0,x1,y; float GetY(float x) y= x*x*x+4*x*x-10; return y;voi

6、d GetNumber()cout请输入两个初始近似值: (以空格隔开 ) 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 x2 为方程的解 endl;elsecout x2 endl; return Calculate(x1, x2); ; int main() cout 方程组为: f(x)=x3+4x2-10=0 endl; float a, b;A text; text.GetNumber()

7、;a = text.x0;b = text.x1; text.Calculate(a,b);return 0;心得体会使用不同的方法, 可以不同程度的求得方程的解, 通过二分法计算的程序实现更加了 解二分法的特点, 二分法过程简单, 程序容易实现, 但该方法收敛比较慢一般用于求根的 初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤 一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。实验名称实验二 线性方程组的直接求解实验内容和要求合理选择利用 Gau1 2 3 x10 1 2 x22 4 1 x3(1)了解线性(2)加深对线(3)会进行误ss 消元法、主元

8、素消元法、 LU分解法、追赶法求解下列方程组:14813方程组常见的直接解法,如Guass消元法、 LU 分解法、追赶法。性方程组求解方法的认识,掌握算法。差分析,并能对不同方法进行比较。实验原理1. 高斯分解法: 将原方程组化为三角形方阵的方程组:l ik =aik /a kka ij = a ij - l ik * a kj k=1,2, ,n-1i=k+1,k+2, ,n j=k+1,k+2, ,n+1 由回代过程求得原方程组的解:x n= a nn+1/ a nnx k=( a kn+1- akj x j )/ a kk (k=n-1,n-2, ,2,1)2. LU 分解法:将系数矩阵

9、 A 转化为 A=L*U, L 为单位下三角矩阵, U 为普通上三角矩阵,然后 通过解方程组 l*y=b,u*x=y, 来求解 x.主要仪器设备HP计算机实验记录1. 高斯消元法:#include stdio.h#include math.h#include double a56,a056;double l5,tmp;void Exchange(int i)int j,l,k;double max=a0ii,temp; j=i;for(k=i;kmax)max=a0ki; j=k; for(l=i;l=4;l+) temp=a0il; a0il=a0jl; a0jl=temp; for(i=1

10、;i=3;i+) for(j=1;j=4;j+) aij=a0ij;void displayA()int i,j;printf(n); for(j=1;j=3;j+) for(i=1;i=4;i+) printf(%lf ,aji); printf(n);void main()int i,j,k; for(i=1;i=3;i+) for(j=1;j=4;j+) scanf(%lf,&aij); a0ij=aij;displayA(); printf( 列主元素消元法如下 ); /消元过程 k=1;doExchange(k);displayA(); for(i=k+1;i=3;i+) li=a0

11、ik/a0kk; printf(l%i%i=%lf,i,k,li); for(j=k;j=4;j+) aij=a0ij-li*a0kj; displayA(); k+;if(k=3) break; for(j=1;j=3;j+) for(i=1;i=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);2.LU 分解法:#include #include int i,j,k,r; double m=0,p=0; double a33; void lu(

12、double a33) for(i=1;i=2;i+) if(a00!=0) ai0=ai0/a00; for(k=1;k=2;k+) for(j=k;j=2;j+) for(r=0;r=k-1;r+)m=m+akr*arj; akj=akj-m;m=0; for(i=k+1;i=2;i+) for(r=0;r=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 f

13、33;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;j=2;j+)fij=aij;printf( %f,fij);printf(n);printf( 输出 L 的矩阵为 n);for(i=0;i=2;i+)for(j=0;j=i;j+)if(i=j)aij=1; printf( %f,aij);else printf( %f,aij);printf(n);c0=b0;for(i=1;i=2;i+) for(r=0;r=0;i=i-1)for(r=2;ri;r=r-1)

14、n=n+fir*dr;di=(ci-n)/fii;n=0;printf( 所求方程组解为 x1=%f, x2=%f, x3=%f,d0,d1,d2);/*根据 LU 分解所得两个矩阵及求解步骤计算所求 X 一组解 */心得体会 对于求解线性方程组的各种直接方法来说各有优缺点,在所有的求解方法中都应 该注意其解的精度。注意不同求解方法的不同误差求法。编写程序的时候需要一步一步 慢慢来,逐步增加自己的算法知识水平和解决问题的能力。实验名称实验三 线性方程组的迭代求解实验内容和要求10x1 x2 2x3 7.2 x1 10x2 2x3 8.3 x1 x2 5x3 4.2使用雅可比迭代法或高斯 - 赛

15、德尔迭代法对下列方程组进行求解。实验原理雅可比迭代法:设线性方程组Ax=b 的系数矩阵 A可逆且主对角元素 a11,a 22, ,a nn均不为零,令 D=diag(a 11,a22,a nn) 并将 A 分解成A=(A-D)+D 从而线性方程组可写成Dx=(D-A) x+b 则有迭代公式x(k+1)=B1x(k) +f1-1 -1其中, B1=I-D -1A,f 1=D-1b。主要仪器设备HP计算机实验记录#include #include int main()int i;double x120,x2 20,x3 20;double x10,x20,x30;printf( please in

16、put x1,x2,x3:n );scanf(%lf%lf%lf ,&x10,&x20,&x30);printf( n x1n x2n x3nn );for (i= 0;i 18;i+)x1 0=x10;x2 0=x20;x3 0=x30;x1i+ 1= 0.1*x2i+ 0.2*x3i+ 0.72;x2i+ 1= 0.1*x1i+ 0.2*x3i+ 0.83;x3i+ 1= 0.2*x1i+ 0.2*x2i+ 0.84;printf( %5d %5lf %5lf %5lfn ,i,x1i,x2i,x3i); return 0;心得体会在编写算法是不熟悉,查阅了很多资料,经过反复研究和试验后实

17、现了题目的要求,使 用雅克比迭代法和高斯 -赛德尔都可以得到方程的解, 但相比之下, 高斯 -赛德尔的迭代次 数要比雅克比的迭代次数少,能够更快的达到所求的解的精度 。实验名称实验四 代数插值和最小二乘法拟合实验内容和要求1.学习使用拉格朗日插值法或牛顿插值法求解方法。2.了解最小二乘法的多项式拟合的具体计算方法并且注意克服正规方程组的病态。 给定数据点( xi , yi )如下:xi00.50.60.70.80.91.0yi11.751.962.192.442.713.00(1) 使用(2) 用最(3) 对比拉格朗日插值法或牛顿插值法 , 求 f(0.856) 的近似值 . 小二乘法拟合数据

18、的 (n 次 ) 多项式,求 f(0.856) 的近似值 . 、分析上两结果实验原理设函数在区间 a,b 上n+1互异节点 x0,x 1, ,x n上的函数值分别为 y0,y 1, ,y n, 求 n 次插值多项式 Pn(x), 满足条件Pn(x j )=y j , j=0,1,n令Ln(x)=y 0l0(x)+y 1l 1(x)+ +ynl n(x)= yil i(x) 其中 l 0(x),l 1(x), , l n(x) 为以 x0,x1,x n为节点的 n次插值基函数, 则 Ln(x) 是一次数不超过 n 的多项式,且满足Ln(x j )=y j , L=0,1, ,n 再由插值多项式的

19、唯一性,得Pn(x) Ln(x)主要仪器设备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 y6=1.75,1.96,2.19,2.44,2.71,3.00; for(i=0;i=5;i+)for(j=0;j=5;j+)if(i=j) continue; m=m*(a-xj)/(xi-xj);l+=yi*m;m=1;printf( 结果为 %lf,l); return 0;最小二乘法 :#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

温馨提示

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

评论

0/150

提交评论