精华内容
下载资源
问答
  • 高斯列主元消去法

    2015-06-08 19:13:36
    高斯列主元消去法修正版 拉格郎日插值法与牛顿插值法
  • 高斯列主元消去法的python实现

    千次阅读 2020-03-23 10:37:36
    数值分析中,高斯列主元消去法的python实现 首先要了解高斯消去法的原理和代码,高斯消去法的原理和python实现,高斯列主元消去法是高斯消去法的改进。 高斯列主元消去法的python代码 import numpy as np def swap...

    数值分析中,高斯列主元消去法的python实现

    高斯列主元消去法的原理

    首先要了解高斯消去法的原理和代码,高斯消去法的原理和python实现,高斯列主元消去法是高斯消去法的改进。
    在这里插入图片描述

    高斯列主元消去法的python代码

    import numpy as np
    
    def swap(a, b, k, n):           # 找到主元并交换,这仅是一个仅用来交换的函数
        ans = 0
        for i in range(k, n):
            if ans < np.fabs(a[i][k]):    #fabs是绝对值,将a中绝对值最大的找出来
                ans = a[i][k]
                maxn = i
        a[[k, maxn], :] = a[[maxn, k], :]     #交换
        b[k], b[maxn] = b[maxn], b[k]
    
    #主算法
    def gaussin(a, b):
        cout = 0                         #定义计算次数
        m, n = a.shape                  #矩阵a的行数和列数
        if ( m < n ):
            print("There is a 解空间。")#保证方程个数大于未知数个数
        else:
            l = np.zeros((n,n))
            for i in range(n):
                # 限制条件
                if (a[i][i] == 0):
                    print("no answer")
            # j表示列
            for k in range(n - 1):          # k表示第一层循环,(0,n-1)swap(a, b, k, n)            #在每次计算前,找到最大主元,进行换行
                for i in range(k + 1, n):   # i表示第二层循环,(k+1,n),计算该行消元的系数
                    l[i][k] = a[i][k] / a[k][k]     #计算
                    cout += 1
                    for j in range(m):      # j表示列,对每一列进行运算
                        a[i][j] = a[i][j] - l[i][k] * a[k][j]
                        cout += 1
                    b[i] = b[i] - l[i][k] * b[k]
            # 回代求出方程解
            x = np.zeros(n)
            x[n - 1] = b[n - 1] / a[n - 1][n - 1] #先算最后一位的x解
    
            for i in range(n - 2, -1, -1):      #依次回代倒着算每一个解
                for j in range(i + 1, n):
                    b[i] -= a[i][j] * x[j]
                                   #自增自减
                x[i] = b[i] / a[i][i]
            for i in range(n):
                print("x" + str(i + 1) + " = ", x[i])
            print("x" " = ", x)
            print("计算次数","=",cout)
    
    
    if __name__ == '__main__':      #当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。
        a = np.array([[0.5, 1.1, 3.1], [2.0, 4.5, 0.36], [5.0, 0.96, 6.5]])
        b = np.array([-6.0, 0.020, 0.96])
        gaussin(a, b)
    
    
    展开全文
  • 高斯列主元消去法解方程组,用C语言描述了高斯列主元消去法解方程组的过程
  • 高斯列主元消去法解线性方程组
  • 高斯列主元消去法的有效程序 用matlab程序来实现
  • 数值分析或计算课程,高斯列主元消去法解方程组c++代码
  • 数值计算基础的实验之一 直接法解线性方程组 高斯列主元消去法的C语言代码实现
  • 高斯列主元消去法求解线性方程组 用高斯列主元消去法方程组 2x1+2x2+3x3=3 4x1+7x2+7x3=1 -2x1+4x2+5*x3=-7 #include<stdio.h> #include<math.h> #include<string.h> #define N 3 void ...

    用高斯列主元消去法求解线性方程组

    用高斯列主元消去法方程组
    2x1+2x2+3x3=3
    4
    x1+7x2+7x3=1
    -2x1+4x2+5*x3=-7

    
    
    #include<stdio.h>
    
    #include<math.h>
    
    #include<string.h>
    
    #define
    N 3
    
    void
    printfnum(double a[N][N],double b[N])//显示
    
    {
    
        for(int i=0;i<N;i++)
    
        {
    
           for(int j=0;j<N;j++)
    
           {
    
               printf("%f,",a[i][j]);
    
           }
    
           printf("%f\n",b[i]);
    
        }
    
    }
    
    void
    printfresult(double x[N])
    
    {
    
        for(int i=0;i<N;i++)
    
        {
    
           printf("x[%d]=%f\n",i,x[i]);
    
        }
    
    }
    
    void
    main()
    
    {
    
        double a[N][N]={{2,2,3},{4,7,7},{-2,4,5}};
    
        double b[N]={3,1,-7};
    
        double t=0,num1=0,num2=0,m=0,n,x[N]={0,0,0};
    
        printf("初始值:\n");printfnum(a,b);
    
        for(int j=0;j<N;j++)
    
        {
    
           t=fabs(a[j][j]);
    
           m=j;
    
           int i;
    
           for(i=j;i<N;i++)//列主元素
    
           {
    
               if(fabs(a[i][j])>t)//交换两行
    
               {
    
                  t=fabs(a[i][j]);
    
                  for(int y=0;y<N;y++)
    
                  {
    
                      num1=a[j][y];
    
                      a[j][y]=a[i][y];
    
                      a[i][y]=num1;
    
                  }
    
                  num2=b[j];
    
                  b[j]=b[i];
    
                  b[i]=num2;
    
               }
    
           }
    
           printf("列主元素:\n");
    
           printfnum(a,b);
    
           for(i=j;i>0;i--)//消元过程
    
           {
    
               for(int k=0;k<i;k++)
    
               {
    
                  m=a[i][k]/a[k][k];//k是已经进行了几次消元;
    
                  for(int y=0;y<N;y++)
    
                  {
    
                      a[i][y]-=m*a[k][y];
    
                  }
    
                  b[i]-=m*b[k];
    
                  
    
               }
    
           }
    
           printf("消元:\n");
    
           printfnum(a,b);
    
        }
    
        printf("列主消元完毕:\n");
    
        printfnum(a,b);
    
        x[N-1]=b[N-1]/a[N-1][N-1];
    
        for(int i=N-2;i>=0;i--)//回代过程
    
        {
    
           n=0;
    
           for(int j=i+1;j<N;j++)
    
           {
    
               n+=a[i][j]*x[j];
    
               printf("%f222",n);
    
           }
    
           x[i]=(b[i]-n)/a[i][i];
    
        }
    
        printf("\n结果:\n");
    
        printfresult(x);
    
    }
    
    
    

    展开全文
  • 高斯列主元消去法的数学原理及matlab成粗源代码
  • Gauss 高斯 消去法 求解方程组 用高斯列主元消去法求解方程组
  • /************************************** 用高斯列主元消去法求线性方程组** 2*x1 + 2*x2 + 3*x3 = 3*{4*x1 + 7*x2 + 7*x3 = 1* -2*x1+ 4*x2 + 5*x3 = -7***************************************/#include#include...

    /*************************************

    * 用高斯列主元消去法求线性方程组

    *

    * 2*x1 + 2*x2 + 3*x3 = 3

    *{4*x1 + 7*x2 + 7*x3 = 1

    * -2*x1+ 4*x2 + 5*x3 = -7

    *

    **************************************/#include

    #include

    #include

    #include

    #define N 3

    int main() {

    static double a[N][N] = { { 2, 2, 3 }, { 4, 7, 7 }, { -2, 4, 5 } };

    double b[N] = { 3, 1, -7 };

    double x[N] = { 0, 0, 0 };

    double r, s, e;

    int k, i, j, p, flag = 1;

    for (k = 0; k < N - 1; k++) {

    p = k;

    e = a[k][k];

    for (i = k; i < N; i++)

    if (fabs(a[i][k]) > e) {

    e = fabs(a[i][k]);

    p = i;

    }

    for (j = k; j < N; j++) {

    s = a[k][j];

    a[k][j] = a[p][j];

    a[p][j] = s;

    }

    s = b[k];

    b[k] = b[p];

    b[p] = s;

    if (a[k][k] == 0) {

    printf("Gauss-Method does not run!");

    flag = 0;

    break;

    } else {

    for (i = k + 1; i < N; i++) {

    r = a[i][k] / a[k][k];

    if (a[k][k] != 0) {

    for (j = k; j < N; j++)

    a[i][j] = a[i][j] - r * a[k][j];

    }

    b[i] -= r * b[k];

    }

    }

    }

    if (flag) {

    x[N - 1] = b[N - 1] / a[N - 1][N - 1];

    for (i = N - 2; i >= 0; i--) {

    s = b[i];

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

    s -= a[i][j] * x[j];

    x[i] = s / a[i][i];

    }

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

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

    }

    return 0;

    }

    展开全文
  • 高斯列主元消去法求解方程,C语言编程实现,绝对可以运行,老师已经批改过了,下载就可以使用
  • 这是数学中高斯列主元消去法用C++编写的源代码,其中带解的个数判断
  • 高斯列主元消去法,可以求逆,可以用于线性回归
  • matlab编程实现高斯列主元消去法求解线性方程组
  • 使用MATLAB来编写高斯列主元消去法求线性方程组的解
  • 高斯列主元消去法_解线性方程组的直接解法

    高斯列主元消去法_解线性方程组的直接解法

    标签:计算方法实验

    #include <stdio.h>
    #include <math.h>
    
    const int maxn = 15;
    double a[maxn][maxn], b[maxn];
    
    int main()
    {
        int n;
    
        freopen("gauss.txt", "r", stdin);  //读入数据
        scanf("%d", &n);
        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= n; j++)  scanf("%lf", &a[i][j]);
            scanf("%lf", &b[i]);
        }
        /*打印数据文件
        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= n; j++)  printf("%10f", a[i][j]);
            printf("%10f\n", b[i]);
        }
        printf("\n");
        */
    
        for(int k = 1; k <= n - 1; k++)  //n - 1列
        {
            int column = k;
            double mainelement = a[k][k];
    
            for(int i = k; i <= n; i++)  //找主元素
                if(fabs(a[i][k]) > mainelement)
                {
                    mainelement = fabs(a[i][k]);
                    column = i;
                }
            for(int j = k; j <= n; j++)  //交换两行
            {
                double atemp = a[k][j];
                a[k][j] = a[column][j];
                a[column][j] = atemp;
            }
            double btemp = b[k];
            b[k] = b[column];
            b[column] = btemp;
    
            for(int i = k + 1; i <= n; i++)  //消元过程
            {
                double Mik = a[i][k] / a[k][k];
                for(int j = k; j <= n; j++)  a[i][j] -= Mik * a[k][j];
                b[i] -= Mik * b[k];
            }
        }
    
        for(int i = 1; i <= n; i++)  //经列主元高斯消去法得到的上三角阵(最后一列为常系数)
        {
            for(int j = 1; j <= n; j++)  printf("%10f", a[i][j]);
            printf("%10f\n", b[i]);
        }
        printf("\n");
    
        b[n] /= a[n][n];  //回代过程
        for(int i = n - 1; i >= 1; i--)
        {
            double sum = 0;
    
            for(int j = i + 1; j <= n; j++)  sum += a[i][j] * b[j];
            b[i] = (b[i] - sum) / a[i][i];
        }
        for(int i = 1; i <= n; i++)  printf("x%d = %10f\n", i, b[i]);  //小优化b[]->x[]
    
        return 0;
    }

    数据文件
    input
    实验结果
    output

    展开全文
  • C语言实现高斯列主元消去法(计算方法)

    千次阅读 多人点赞 2019-06-01 17:22:06
    C语言实现高斯列主元消去法(数学实验) #include <stdio.h> #include <stdlib.h> #include <math.h> #define MAX 10 double A[MAX][MAX]; double b[MAX]; double X[MAX]; int NUM; void Input_...
  • 用c++程序实现高斯列主元消去法解方程组 简单易懂
  • 在linux中编写一个工程:利用高斯列主元消去法求取行列式的值。
  • 此报告是一份完整的数值分析实验报告,其中包含了高斯列主元消去法和追赶法以及对应的流程图和学习心得,值得下载和学习。
  • %创建高斯列主元素消去法函数 function X=liezhuyuan(A,b) B=[A b']; n=length(b; X=zeros(n,1; C=zeros(1,n+1; for k=1:n-1 [Y,j]=max(abs(B(k:n,k; C=B(k; B(k)=B(j+k-1; B(j+k-1)=C; for i=k+1:n m=B(i,k)/B(k,k;...
  • 高斯列主元消去法解线性方程组--课程设计报告,里边描述了整个课程的实现过程,且附有截图及代码
  • 在fortran环境中编写的一个高斯列主元消去程序,通用性很强

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 277
精华内容 110
关键字:

高斯列主元消去法