// 输入 a[i][j],b[i] cout< <\…\{ for(j=1;j<=nu m;j++) { cout<<\cin >>a[i][j]; } } cout< <\…\{ cout<<\cin> >b[i]; } t=0; for(i=1;i<=nu m;i++) { m=0; for(j=i;j<=nu m+1;j++) { for(k=1;k<=i-1;k++) m=m+a[i][k]*a[k][j]; a[i][j]= a[i][j]-m; } for(j=i+1;j<=nu m;j++) { for(k=1;k<=i-1;k++) t=t+a[j][k]*a[k][i]; a[j][i]=(a[j][i]-t)/a[i][i]; } } a[nu m][ nu m+1]=a[ nu m][ nu m+1]/a[ nu m][ nu m]; q=0; for(k =nu m-1;k>=1;k--) { for(j=k+1;j<=nu m;j++) q=q+a[k][j]*a[j][ num+1]; a[k][ num+1]=(a[k][ nu m+1]-q)/a[k][k]; } cout<<\方程组的解为:\for(i=1;i<=nu m;i++)
cout<<\
return 0;
丿口
*C:\\Docu>ents and Settings\\Ad>inistrator\\Debug\\sanjiao.exe* 歸翩■数:M nou input the matrix 卜
a[i][j],i,j=l...3 : k[l][ll=6 2 ^1 1 4 -2 -3 1 4
k[l][2]-a[l][3]-a[2][l]-a[2][2]-a[2][3]-a[3][l]-a[3][2]-a[3][3]-now input ths ma tpix b[i],i=1...3 :
b[ll=-3 2 4
k2]-b[3]-方程组的解为:x[lJ=0.0697509
L[21=0.0520741
Lc[3 3=0.165049
Press any key to continue
结果: 流程图:
1
开始
矩阵阶数 系数矩阵
for(k=1;k<=i-1;k++) m=m+a[i][k]*a[k][j]; a[i][j]= a[i][j]-m; a[k][ nu m+1]=(a[k][ num+1]-q)/a[k][k]
结束
⑤欧拉显式方法
#in elude
#in elude
#in elude
return x*pow(y,1.0/3); }
int mai n()
{ int i;
double x,y,y0=1,dx=0.1; double xx[11];
double euler[11],euler_2[11]; double temp;
double f(double x,double y); for (i=0;i<11;i++) xx[i]=i*dx; euler[0]=y0;
for (i=1,x=0;i<11;i++,x+=dx)
euler[i]=euler[i-1]+dx*f(x,euler[i-1]); euler_2[0]=y0;
for (i=1,x=0;i<11;i++,x+=dx) {
temp=euler_2[i-1]+dx*f(x,euler_2[i-1]);
euler_2[i]=euler_2[i-1]+dx*(f(x,euler_2[i-1])+f(x+dx,temp))/2; }
for (i=0,x=0;i<11;i++,x+=dx)
prin tf(\}
流程图:
⑥欧拉隐式方法 #in clude
double xn,yn,xn1,yn1,yn 1b; double h;
prin tf(\prin tf(\
scan f(\
prin tf(\if(m<=0)
{pri ntf(\}
h=(b-a)/m; xn=a;yn=yO; for(i=1;i<=m;i++) {xn 1=x n+h;
yn 1b=yn+h*f(x n,yn);
yn 1=yn+h/2*(f(x n,y n)+f(x n1,y n1b)); prin tf(\xn=xn1; yn=yn1; }return(0); }
流程图:
二、 实验结果及分析
雅克比迭代法的全部分量都是间接利用,由于新值比旧值好, Gauss-Seidel迭代法直接对算出 的分量加以使用,这样使得迭代的收敛情况有所改善,而超松弛法是在 Gauss-Seidel迭代法的 基础上,应用加速收敛思想而构造的一种方法;欧拉公式和梯形公式在计算上有明显的区别, 欧拉公式的特点是可以有 U直接计算U+1,也就是显式的,而梯形公式右端也有 U+1,必须通过解 方程才能求得,这类是隐式的。从算法的角度看显式远比隐式方便,隐式通常用迭代法求解。 三、 实验小节、建议及体会
任何一种方法都有它的优点和局限性,只有找到一种方法能够解决我们的问题,又尽量减少出错,减少 计算量就是符合这个问题的好方法。
良好的编程习惯有助于检查错误,也可以增强程序的可阅读性。