数值分析-迭代法.doc_第1页
数值分析-迭代法.doc_第2页
数值分析-迭代法.doc_第3页
数值分析-迭代法.doc_第4页
数值分析-迭代法.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

华 北 科 技 学 院上 机 报 告系(部) 专业、班级 姓名 学号 课程名称 数值分析 上机题目 实验六,实验七 任课教师 指导教师 成绩(优、良、中、及格、不及格) 华 北 科 技 学 院 基 础 部实验六 解线性方程组的迭代法1.目的与要求:1) 熟悉求解线性方程组的有关理论哈方法。2) 会编制雅可比迭代和高斯塞得尔迭代法。3) 通过实际计算,进一步了解各算法的优缺点,选择合适的数值方法。2雅可比迭代法算法设方程组AX=b的系数矩阵的对角元素M为迭代次数容许的最大值,为容许误差. 取初始向量令k=0; 对计算 如果则输出,结束;否则执行, 如果则不收敛,终止程序;否则转.1.分别用雅可比迭代法与高斯-塞德尔迭代法解下列方程组:1.用雅可比迭代法计算:#include stdafx.h #include iostream.h#includestdio.h#includemath.h#includeconio.h#includemalloc.h#include #define EPS 1e-8#define MAX 100float *Jacobi(float a910,int n) float *x,*y,s;double epsilon;int i,j,k=1;x=(float *)malloc(n*sizeof(float);y=(float *)malloc(n*sizeof(float); for(i=0;in;i+) xi=0;while(1) k+;epsilon=0; for(i=0;in;i+)s=0;for(j=0;jEPS);if(k=MAX) return y; for(i=0;in;i+) xi=yi;void main() int i;float a910=31,-13,0,0,0,-10,0,0,0,-15,-13,35,-9,0,-11,0,0,0,0,27,0,-9,31,-10,0,0,0,0,0,-23,0,0,-10,79,-30,0,0,0,-9,0,0,0,0,-30,57,-7,0,-5,0,-20,0,0,0,0,7,47,-30,0,0,12,0,0,0,0,0,-30,41,0,0,-7,0,0,0,0,-5,0,0,27,-2,7,0,0,0,0,0,0,0,-2,29,-10; float *x; x=(float *)malloc(9*sizeof(float);printf(结果为:n);x=Jacobi(a,9); for(i=0;i9;i+) printf(x%d=%fn,i,xi);程序运行结果如下:结果为:x0=-0.200550x1=0.368393x2=-0.731859x3=-0.300318x4=-0.446577x5=0.399384x6=0.121501x7=0.151792x8=-0.334359Press any key to continue2.用高斯-塞德尔迭代法:#include stdafx.h#includestdio.h#includemath.h#includeconio.h#include iostream#includemalloc.h#define N 100void main()int i;float *x;float c90=31,-13,0,0,0,-10,0,0,0,-15,-13,35,-9,0,-11,0,0,0,0,27,0,-9,31,-10,0,0,0,0,0,-23,0,0,-10,79,-30,0,0,0,-9,0,0,0,0,-30,57,-7,0,-5,0,-20,0,0,0,0,7,47,-30,0,0,12,0,0,0,0,0,-30,41,0,0,-7,0,0,0,0,-5,0,0,27,-2,7,0,0,0,0,0,0,0,-2,29,-10;float *GauseSeide(float *,int);x=GauseSeide(c,9);for(i=0;i9;i+) printf(x%d=%fn,i,xi);float *GauseSeide(float *a,int n)int i,j,nu=0;float *x,dx,d,wucha;x=(float *)malloc(n*sizeof(float);for(i=0;i1e-8)for(i=0;i=n-1;i+)d=0.0;for(j=0;j=N)printf(迭代发散n);exit(1);nu+;return x;程序运行结果如下:x0=-0.200551x1=0.368393x2=-0.731860x3=-0.300318x4=-0.446577x5=0.399384x6=0.121500x7=0.151792x8=-0.334359Press any key to continue实验七 方程求根1.目的与要求:1) 通过对二分法与牛顿迭代法作编程练习与上机运算,进一步体会二分法与牛顿迭代法的不同特点;2) 编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较。2.二分法算法给定区间a,b,并设f(a)与f(b)符号相反,取为根的容许误差,为|f(x)|的容许误差。 令c=(a+b)/2 如果(c-a)或|f(c)|0,则令a:=c;否则b:=c,重复,。3.牛顿迭代法算法给定初始值为根的容许误差,为|f(x)|的容许误差,N为迭代次数的容许值。如果或迭代次数大于N,则算法失败,结束;否则执行,计算,若或,则输出,程序结束;否则执行, ,转向(1).实验内容:1.用牛顿法求方程在附近的解.#include stdafx.h#include #include #include #define N 100#define EPS 1e-6#define ETA 1e-8void main()float f(float);float f1(float);float x0,y0;float Newton(float (*)(float),float (*)(float),float);printf(Please input x0n);scanf(%f,&x0);printf(x(0)=%fn,x0);y0=Newton(f,f1,x0);printf(nThe root of the equation is x=%fn,y0);float Newton(float (*f)(float),float (*f1)(float),float x0)float x1,d;int k=0;dox1=x0-f(x0)/f1(x0);if(k+N)|(fabs(f1(x1)EPS)printf(nNewton method failed);exit(0);d=(fabs(x1)EPS&fabs(f(x1)ETA);return x1;float f(float x)return x*exp(x)-1;float f1(float x)return exp(x)+x*exp(x);程序运行结果如下:Please input x01x(0)=1.000000x(1)=0.683940 x(2)=0.577454 x(3)=0.567230 x(4)=0.567143 x(5)=0.567143The root of the equation is x=0.567143Press any key to continue2.编写一个割线法的程序,求解上题。#include stdafx.h#include #include #include #define N 100#define EPS 1e-6#define ETA 1e-8void main()float f(float);float f1(float);float x0,x1,y0;float xianjie(float (*)(float),float (*)(float),float,float);printf(请输入两个初始值x0,x1(逗号隔开)n);scanf(%f,%f,&x0,&x1);printf(x(0)=%f ,x(1)=%f n,x0,x1);y0=xianjie(f,f1,x0,x1);printf(n方程的根为x=%f n,y0);float xianjie(float (*f)(float),float (*f1)(float),float x0,float x1)float x2,d;int k=0;dox2=x1-(x1-x0)*f(x1)/(f(x1)-f(x0);if(k+N)|(fabs(f1(x2)EPS)printf(n弦截法错误。);exit(0);d=(fabs(x2)EPS&fabs(f(x2)ETA);return x2;float f(float x)return x*exp(x)-1;float f1(float x)return exp(x)+x*exp(x);程序运行结果如下:请输入两个初始值x0,x1(逗号隔开)1,0.6x(0)

温馨提示

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

评论

0/150

提交评论