数值分析 各个算法的C语言程序
{
double A[5][5]={2,-1,0,0,0,-1,2,-1,0,0,0,-1,2,-1,0,0,0,-1,2,-1,0,0,0,-1,2},f[5]={1,0,0,0,0}; double x[5],y[5],U[5][5]; int i,j,n=5;
for(i=0;i<n;i++)
for(j=0;j<n;j++) U[i][j]=0; U[0][0]=U[n-1][n-1]=1; U[0][1]=A[0][1]/A[0][0]; for(i=1;i<n-1;i++)
{ U[i][i]=1;U[i][i+1]=A[i][i+1]/(A[i][i]-A[i][i-1]*U[i-1][i]);} y[0]=f[0]/A[0][0]; for(i=1;i<n;i++)
y[i]=(f[i]-A[i][i-1]*y[i-1])/(A[i][i]-A[i][i-1]*U[i-1][i]); x[n-1]=y[n-1];
for(i=n-2;i>=0;i--) x[i]=y[i]-U[i][i+1]*x[i+1]; printf("输出U矩阵:\n"); for(i=0;i<n;i++)
{ for(j=0;j<n;j++) printf("%f ",U[i][j]); printf("\n");} printf("输出求解结果:\n");
for(i=0;i<n;i++) printf("%f ",x[i]); printf("\n");
}
十、 雅可比迭代法
#include<stdio.h> #include<stdlib.h> #include<math.h> void main() {
double A[3][3]={5,2,1,-1,4,2,2,-3,10},x[50][3],b[3]={-12,20,3},f=0,L=1; int n=3,i,j,k=1;
for (i=0;i<3;i++) x[0][i]=0;/*初始值*/ while(L<0.003)
{
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)