zoukankan      html  css  js  c++  java
  • 高斯消元法求解线性方程组的解集

    问题描述:

        运用高斯消元法求解线性方程组的解集,其中线性方程组的表示方式为:

    例如:2x+4y=5

             2x+y=2

    存储在二维数组中形式为

    a[2][3]={{2,4,5,},{2,1,2}}

    具体代码实现如下:

     1 #include<malloc.h>
     2 #include<stdio.h>
     3 #include<iostream.h>
     4 void Gauss(double **A,int n)
     5 {
     6  int i,j,k;
     7  for(k=0;k<n-1;++k)
     8  for(i=k+1;i<n;++i)
     9  for(j=k+1;j<=n;++j)
    10  A[i][j]-=A[k][j]*A[i][k]/A[k][k];
    11  for(i=n-1;i>=0;--i)
    12  {
    13   for(j=i+1;j<n;++j)
    14      A[i][n]-=A[i][j]*A[j][n];
    15      A[i][n]/=A[i][i];//此处A[i][j]改为A[i][i]
    16  }
    17 }
    18 void main()
    19 {
    20     int i,j,count;
    21     printf("请输入维数:");
    22     scanf("%d",&count);
    23 
    24     //c中建立二维动态数组的方法
    25     double **A=(double**)malloc(sizeof(double*)*count);
    26     for (i=0;i<count;i++)
    27         A[i]=(double*)malloc(sizeof(double)*(count+1));
    28 
    29     //输入线性方程组的参数值,
    30     for(i=0;i<count;i++)
    31     {
    32         printf("请输入第%d行的值:",i+1);
    33         for(j=0; j<count+1; j++)
    34              scanf("%lf",&A[i][j]);
    35     }
    36 
    37     //调用高斯消元公式求解
    38     Gauss(A,count);
    39 
    40     //打印最终结果(结果保留在每一行的最后一个值中)
    41     for(i=0;i<count;i++)
    42          printf("%lf\n",A[i][count]);
    43     
    44     //最后释放空间
    45     for(i=0;i<count;i++)
    46         free(A[i]);
    47     free(A);
    48 
    49 }

    代码中采用了动态数组,其实定义全局数组也可以很好的实现。。。。

  • 相关阅读:
    vector与iterator的一些用法
    动态规划 hdu 1024
    dfs bfs hdu 1045
    hdu 2795
    poj 2828
    线段树染色
    线段树比大小
    A
    ?线程局部变量
    JRE、JDK、JVM 及 JIT
  • 原文地址:https://www.cnblogs.com/lpshou/p/2455010.html
Copyright © 2011-2022 走看看