• 大小: 5KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: C/C++
  • 标签:

资源简介

上次传的Jacobi迭代法解方程的资源忘了把这个代码传上去这次补上

资源截图

代码片段和文件信息


/* 本程序是用Jacobi迭代法解方程组 */
/* 原方程 AX=b 迭代方程 X(k+1)=BoX(k)+f */
/* Bo=I-(D-1)A ;f=(D-1)b. (其中(D-1)表示D的逆) */

#include  
# include 
# include 
# include 
# define a_ii a[i*n+i]
# define a_jj a[j*n+j]
# define a_ij a[i*n+j]
# define a_ji a[j*n+i]

void  ShuoMing()
{
  system(“cls“);
  printf(“\n\t* * * * * * * * * * * * * * * * * * * * * * * *\n“);
  printf(“\t*                                             *\n“);
  printf(“\t*                 使用说明                    *\n“);
  printf(“\t*  =========================================  *\n“);
  printf(“\t*                                             *\n“);
  printf(“\t* 本程序是                                    *\n“);
  printf(“\t*   用 Jacobi 迭代法解方程组矩阵应            *\n“);
  printf(“\t*   满足 Jacobi 迭代法收敛                    *\n“);
  printf(“\t*                                             *\n“);
  printf(“\t* 使用时: 系数矩阵 与 常数项 分开输入        *\n“);
  printf(“\t*   输入系数矩阵时只能按行的顺序输入          *\n“);
  printf(“\t*   即依次按a11a12...a1n顺序输完第一行       *\n“);
  printf(“\t*   再依次输入第二行 依次类推直到第n行        *\n“);
  printf(“\t*   提示输入迭代终止条件时输入的数据          *\n“);
  printf(“\t*   必需大约或等于0                           *\n“);
  printf(“\t* 另外:为防止输入程序出现死循环迭代将在达到   *\n“);
  printf(“\t*   10000000次时强行结束;由于各种原因可能   *\n“);
  printf(“\t*   显示||Xn-X(n-1)||∞=1.#INF和X[i]=1.#INF   *\n“);
  printf(“\t* 更多详情参见 使用说明文档                   *\n“);
  printf(“\t*                                             *\n“);
  printf(“\t* 作者 E-mail 555exp@l63.com   QQ 649990777   *\n“);
  printf(“\t* * * * * * * * * * * * * * * * * * * * * * * *\n“);
  printf(“\t\t请按任意键继续:“);         
  getch();system(“cls“);


double *Get_A(int n)
{
  int ij;
    double *a;
a=(double *)malloc(sizeof(double)*n*n);
    if(a==NULL)
{
printf(“给系数矩阵分配存储空间失败 按任意建结束程序\n“); 
getch();
exit(0);
}  
    printf(“\n请输入系数矩阵(按行的顺序)\n“);
fflush(stdin);     /* 清除缓冲区的数据 */
for(i=0;i for(j=0;j scanf(“%lf“&a_ij); 
return a;
}       /*   Get_A End   */

double *Get_b(int n)
{
int i;
    double *b;
    b=(double *)malloc(sizeof(double)*n);
if(b==NULL)
{
printf(“给常数项分配存储空间失败 按任意建结束程序\n“); 
getch();
exit(0);
}
printf(“请依次输入常数项\n“);
fflush(stdin);    /* 清除缓冲区的数据 */
for(i=0;i scanf(“%lf“&b[i]); 
return b;

评论

共有 条评论

相关资源