收藏 分享(赏)

雅克比迭代法…….doc

上传人:精品资料 文档编号:10063535 上传时间:2019-10-03 格式:DOC 页数:12 大小:149KB
下载 相关 举报
雅克比迭代法…….doc_第1页
第1页 / 共12页
雅克比迭代法…….doc_第2页
第2页 / 共12页
雅克比迭代法…….doc_第3页
第3页 / 共12页
雅克比迭代法…….doc_第4页
第4页 / 共12页
雅克比迭代法…….doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、实验课程名称:数值分析实验项目名称 运用插值法 实验成绩实验者 江骏 专业班级 软件 0803 组别同组者 实验日期 年 月 日第一部分:实验分析与设计一、实验内容描述研究用 Jacobi迭代法与 Gauss-Seidel迭代法解下列方程组 Ax=b的收敛性,通过上机计算,验证分析是否正确,并观察右端项对迭代收敛是否有影响,比较两法的收敛速度松弛因子对超松弛因子迭代法收敛速度的影响,要求对不同的阶数进行迭代观察欧拉显式方法的收敛性观察欧拉隐式方法的收敛性写出实验报告二、实验基本原理与设计Jacobi 迭代法: nj=1aijxj=bi(i=1,2,n) Gauss-Seidel迭代法: xi(

2、K+1)=bi- i-1j=1aijxj(k+1)- nj=i+1aijxj(k)/aij 超 松 弛 因 子 迭 代 法 : Dx(k+1)=Dx(k)+Ex(k+1)+Fx(k)+b-Dx(k)X(k+1)=x(k)+D-1R 三 角 分 解 法 : 利 用 三 角 矩 阵 将 方 程 组 化 解 为 两 个 方 程 组 , 从 而 简 化 运 算 。欧拉显式方法:在任意节点 tn+1=t0+(n+1)h 处,u(t n+1)的近似值由 Euler 公式给出:un+1=un+hf(tn,un)欧拉隐式方法:改进的 Euler 公式 n+1=yn+hf(xn,yn)yyn+1=yn+ f(x

3、n,yn)+f(xn+1, n+1)2h三、主要仪器设备及耗材WindowsXp VC+6.0第二部分:实验调试与结果分析一、调试过程Jacobi 迭代法#include #define N 10float ABS(float,float);intmain (void)int i, j, n;float aNN, bN;float xN, yN;float e,total;printf (“Please input the dimension:“);scanf (“%d“, printf (“Please input the Coefficient Matrix: “);for (i = 0;

4、 i 0.0001);for (i = 0; i int main()double x3 = 0, 0, 0;double a33 = 6,2,-1,1,4,-2,-3,1,4;double y3 = -3,2,4;double d33,g3;int round = 5, i,j;for (i=0; i#include using namespace std; float *one_array_malloc(int n); float *two_array_malloc(int m,int n); float matrix_category(float* x,int n); int main(

5、) const int MAX=100;int n,i,j,k; float* a; float* x_0; float* x_k; float precision; float w; coutprecision; coutn; a=two_array_malloc(n,n+1); coutaij; x_0=one_array_malloc(n); coutx_0i; x_k=one_array_malloc(n); coutw; float temp; for(k=0;kusing namespace std;int main()const int N=100;static double a

6、NN,bN;int i,j,k,num,p;double m,t,q;coutnum;/输入 aij,bicoutaij; coutbi;t=0;for(i=1;i=1;k-)for(j=k+1;j #include #include double f(double x,double y) return x*pow(y,1.0/3); int main() int i; double x,y,y0=1,dx=0.1; double xx11; double euler11,euler_211; double temp; double f(double x,double y); for (i=0

7、;i#include#define f(x,y)(x+y)int main()int m;int i;double a,b,y0;double xn,yn,xn1,yn1,yn1b;double h;printf(“nInput the begin and end of x:“);scanf(“%lf%lf“,printf(“Input the y value at %f:“,a);scanf(“%lf“,printf(“Input m valuedivide(%f,%f):“,a,b);scanf(“%d“,if(m=0)printf(“Please input a number large

8、r than 1.n“);return(1);h=(b-a)/m;xn=a;yn=y0;for(i=1;i=m;i+)xn1=xn+h;yn1b=yn+h*f(xn,yn);yn1=yn+h/2*(f(xn,yn)+f(xn1,yn1b);printf(“x%d=%f,y%d=%fn“,i,xn1,i,yn1);xn=xn1;yn=yn1;return(0);结果:流程图:二、实验结果及分析雅克比迭代法的全部分量都是间接利用,由于新值比旧值好,Gauss-Seidel 迭代法直接对算出的分量加以使用,这样使得迭代的收敛情况有所改善,而超松弛法是在 Gauss-Seidel迭代法的基础上,应用加速收敛思想而构造的一种方法;欧拉公式和梯形公式在计算上有明显的区别,欧拉公式的特点是可以有 UN直接计算 Un+1,也就是显式的,而梯形公式右端也有 Un+1,必须通过解方程才能求得,这类是隐式的。从算法的角度看显式远比隐式方便,隐式通常用迭代法求解。三、实验小节、建议及体会任何一种方法都有它的优点和局限性,只有找到一种方法能够解决我们的问题,又尽量减少出错,减少计算量就是符合这个问题的好方法。良好的编程习惯有助于检查错误,也可以增强程序的可阅读性。

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报