⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.cpp

📁 用迭代法求解线性方程组
💻 CPP
字号:
#include   <stdio.h>

#include   <math.h>

#include   <malloc.h>

void   input_output(float   **a,float   *b,int   n)

{

int   i,j;

printf("请输入系数矩阵\n",n);

for(i=0;i<n;i++)

for(j=0;j<n;j++)

     scanf("%f",*(a+i)+j);

printf("请输入b常数,共%d项:\n",n);

for(j=0;j<n;j++)

scanf("%f",b+j);

printf("您输入方程组的增广矩阵为:\n");

for(i=0;i<n;i++)

{

for(j=0;j<n;j++)

printf("%f     ",*(*(a+i)+j));

printf("%f\n",*(b+i));

}

printf("\n");

}

/*雅可比函数*/

void   Yakebi(float   **a,float   *b,float   *y,float   *x,int   n)

{

int   i,j;

float   sum1=0,sum2=0;

for(i=0;i<n;i++)

{

for(j=0;j<i;j++)

sum1=sum1+a[i][j]*x[j];

for(j=i+1;j<n;j++)

sum2=sum2+a[i][j]*x[j];

*(y+i)=(b[i]-sum1-sum2)/a[i][i];

sum1=0;sum2=0;

}

}

float   Max(float   *x,float   *y,int   n) /*求(x[i]-y[i])的最大值函数*/

{

int   i;

float   max;

max=(float)fabs(x[0]-y[0]);

for(i=1;i<n;i++)

if(fabs(x[i]-y[i])>max)

max=(float)fabs(x[i]-y[i]);

return   (max);

}

/*主函数*/

void   main()

{

int   n,k,i;

float   **a,*b   ,*y,*x,e,max,num;

e=0.001;

printf("请输入方程组的阶数:n=");

scanf("%d",&n);

//printf("请输入你所要求的最大迭代次数:m=";

//scanf("%d",&m);

/*动态开辟数组a,b,y,x的空间*/

a=(float   **)malloc(sizeof(float   *)*n);

b=(float   *)malloc(sizeof(float)*n);

x=(float   *)malloc(sizeof(float)*n);

y=(float   *)malloc(sizeof(float)*n);

for(i=0;i<n;i++)

*(a+i)=(float   *)malloc(sizeof(float)*n);

input_output(a,b,n); /*对a,b数组进行赋值*/


for(i=0;i<n;i++) /*对x数组赋初值0*/

*(x+i)=0;

/*检测对角线上是否有0*/

for(i=0;i<n;i++)

{

if(a[i][i]==0)   

num=0;

break;

}

/*如果对角线上没有0*/

if(num!=0)

{

        /*迭代过程*/

for(k=1;k<=8;k++)

{

Yakebi(a,b,y,x,n);

max=Max(x,y,n);

if(max<e)

{

for(i=0;i<n;i++)

printf("y[%d]=%f\n",i+1,y[i]);

break;

}

else

{

printf("第%d次迭代结果:",k);

for(i=0;i<n;i++)

{

printf("x[%d]=%f",i,y[i]);

x[i]=y[i];

}

printf("\n");

}

}

}

/*释放内存空间*/

free(a);

free(b);

free(x);

free(y);

}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -