zoukankan      html  css  js  c++  java
  • 矩阵 求解线性方程组

    #include<iostream>
    #include<math.h>
    using namespace std;
    double a[100][100];
    int n;
    
    void gaosi()
    {
    	int i,j,k,r;
    	for(i=0;i<n;i++)
    	{
    		r=i;
    		for(j=i+1;j<n;j++)
    			if(fabs(a[j][i])>fabs(a[r][i]))
    				r=i;
    		for(j=i;j<=n;j++)
    		{
    			double w;
    			w=a[i][j];a[i][j]=a[r][j];a[r][j]=w;
    		}
    		for(j=i+1;j<=n;j++)
    		{
    			double f;
    			f=a[j][i]/a[i][i];
    			for(k=i;k<=n;k++)
    				a[j][k]-=f*a[i][k];
    		}
    	}
    	for(i=n-1;i>=0;i--)
    	{
    		for(k=i+1;k<n;k++)
    			a[i][n]-=(a[i][k]*a[k][n]);
    		a[i][n]/=a[i][i];
    	}
    }
    
    int main()
    {
    	int i,j,k;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    		for(j=0;j<n;j++)
    			scanf("%lf",&a[i][j]);
    		for(i=0;i<n;i++)
    			scanf("%lf",&a[i][n]);
    	gaosi();
    	for(i=0;i<n;i++)
    		printf("x%d:  %g\n  ",i+1,a[i][n]);
    	return 0;
    }
    

    这段代码求的是  线性方程组   比如说

    2x+y-z=8

    -3x-y+2z=-11

    -2x+y+2z=3

    求 x y z   

      先输入有多少个未知数n   再有n行 输入每个未知数前的系数  系数为0 的 就输入0

     最后一行输入 每个方程的 最右边是常数 

    实际上就是 不断的加减消元。。

  • 相关阅读:
    fork 开源项目后如何参与项目
    C51 头文件中的 extern
    windows常用命令
    boost(barrier)
    boost库(条件变量)
    线程间同步的几种方式(了解)
    stl 迭代器(了解)
    std::thread
    同步,异步,阻塞,非阻塞
    std::thread join和detach区别
  • 原文地址:https://www.cnblogs.com/assult/p/3108996.html
Copyright © 2011-2022 走看看