最近在看惯导的东西,然后想要用C++解惯导控制方程,然后就重头把C++解方程组这方面的知识回顾了一下,首先就是高斯列主元消去法,这个方法还算实用,这里以3*3的矩阵为例,里面注释很详细,各位小白可以参考参考hhh

//顺序高斯消去法求线性方程组的解  AX=B,A为系数矩阵,B为常向量矩阵,X为矩阵的解
//为了减小误差,采用列主元消去法,从第k列的a[k][k]及其以下的各元素中选取绝对值最大的元素,然后行变换将这两行交换位置
//对于非奇异矩阵并且消元过程中第K步的主对角线上的元素不为0,就可以用高斯消元法来求解#include<iostream>
const int n=3;
void Gauss_elimination(double a[n][n],double b[n])
{double x[n];//解的存储数组int i,j,k;double aa[n];//左上的主对角元素为0时系数矩阵的行相互交换double bb;//左上的主对角元素为0时系数矩阵的行相互交换double mm;//找出最大的a[m][k]行的a[m][k]int m;//找出最大的a[m][i]行的行m值double c[n];//存储初等行变换的系数,用于行的相减for(k=0;k<n-1;k++)     //消元的整个过程如下,总共n-1次消元过程。{mm=a[k][k];m=k;bb=0;for(int i=1;i<n-k;i++)//找出最大的绝对值a[m][k]行的行m值{if(mm<abs(a[k+i][k])){m=k+i;mm=abs(a[k+i][k]);}}if(mm==0)              //此种情况表明a[k][k]以及下面全部是0,则方程有多解或者无解,然后结束函数{std::cout<<"此方程无解或多解"<<std::endl;return;}bb=b[m];b[m]=b[k];b[k]=bb;for(int i=k;i<n;i++)//将最大的a[m][k]行移到最上面{aa[i]=a[m][i];a[m][i]=a[k][i];a[k][i]=aa[i];}for(i=k+1;i<n;i++)//求出第K次初等行变换的系数c[i]=a[i][k]/a[k][k];for(i=k+1;i<n;i++)      //第K次的消元计算{for(j=0;j<n;j++){a[i][j]=a[i][j]-c[i]*a[k][j];}b[i]=b[i]-c[i]*b[k];}}std::cout<<"输出变换后的系数矩阵:"<<std::endl;//输出变换后的系数矩阵及常向量矩阵for(int i=0;i<n;i++){for(int j=0;j<n;j++){std::cout<<a[i][j]<<"   ";}                                      std::cout<<"b["<<i+1<<"]="<<b[i]<<std::endl;}//先计算出最后一个未知数;x[n-1]=b[n-1]/a[n-1][n-1];//求出每个未知数的值for(i=n-2;i>=0;i--){double sum=0;for(j=i+1;j<n;j++){sum+=a[i][j]*x[j];}x[i]=(b[i]-sum)/a[i][i];}std::cout<<"此方程组的解为:"<<std::endl;for(int i=0;i<n;i++){std::cout<<"x["<<i+1<<"]="<<x[i]<<std::endl;}
}

主函数如下:

int main()
{double a[3][3]={1,1,1,0,4,-1,2,-2,1};double b[3]={6,5,1};Gauss_elimination(a,b);system("pause");return 0;
}

运行结果如下:

高斯列主元消去法解线性方程组相关推荐

  1. 列主元消去法例题详解_高斯列主元消元法解方程组的步骤

    高斯列主元消元法求解线性方程组 AX=b 的简要步骤                                      ...

  2. 高斯列主元消去法——C实现

    1. 高斯消去法算法原理 消去法是求解线性方程组的一种方法,它对增广矩阵进行初等行变换得到一个可回代求解的矩阵,然后再进行回代求得一组解向量. 高斯列主元法在使用初等行变换消元之前增加了选主元的过程. ...

  3. matlab约当消去法,Gauss消去法解线性方程组(Matlab)

    clear;clc; % Gauss消去法解线性方程组 A=[3 -5 6 4 -2 -3 8; 1 1 -9 15 1 -9 2; 2 -1 7 5 -1 6 11; -1 1 3 2 7 -1 - ...

  4. 用gauss消去法解线性方程组(数值数学实验教程P74ex5.2)-2021-11-03

    用gauss消去法解线性方程组(数值数学实验教程P74ex5.2) function [x,Ak] =caguss_elimination(A,b,epsilon) %gauss消去法解线性方程组 % ...

  5. 第三十四章 数论——高斯消元解线性方程组

    第三十四章 数论--高斯消元解线性方程组 一.高斯消元 1.线性方程组 2.高斯消元步骤 (1)数学知识铺垫 增广矩阵和阶梯矩阵 初等变换 (2)高斯消元步骤 二.代码模板 1.问题: 2.代码 一. ...

  6. 数值分析—行主元消去法解线性方程组—FORTRAN程序

    数值分析-行主元消去法解线性方程组-FORTRAN程序 program main implicit none real8,dimension( :,: ),allocatable::A real8,d ...

  7. [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题

    [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算 ...

  8. 高斯消元 AcWing 883. 高斯消元解线性方程组

    高斯消元 AcWing 883. 高斯消元解线性方程组 原题链接 AcWing 883. 高斯消元解线性方程组 算法标签 线性代数 高斯消元 思路 代码 #include<bits/stdc++ ...

  9. 计算方法实验(五):高斯列主元消去法

    Gauss列主元消去法数学原理 高斯(Gauss)列主元消去法:对给定的nnn阶线性方程组Ax=bAx = bAx=b,首先进行列主元消元过程,然后进行回代过程,最后得到解或确定该线性方程组是奇异的. ...

最新文章

  1. HTML 自学笔记(HTML框架+表单设计)
  2. [20181015]为什么是3秒.txt
  3. withMisfireHandlingInstruction
  4. strictmath_Java StrictMath ceil()方法与示例
  5. 简单粗暴的多目标跟踪神器 – DeepSort
  6. 开源 | 高颜值神经网络可视化工具
  7. Apache Phoenix学习记录(SQL on HBase)
  8. Flash Bootloader
  9. 游戏上云?-游戏设计与开发(2)
  10. 计算机连接小米usb驱动,win7系统安装小米usb驱动的操作方法
  11. blender摄像机怎么绕物体旋转
  12. Java面试题之IO流分为几种?
  13. arcgis坐标系未定义_科学网—ArcGIS中的坐标系:基本概念和常用操作 - 李郎平的博文...
  14. 手机也能当门卡?!--NFC技术应用
  15. 保姆级Google谷歌浏览器安装路径从C盘转移
  16. 服务器机柜规格19寸销售商,19寸网络机柜尺寸规格是多少
  17. python import 上级目录
  18. 如何理解线性回归中的“回归”,回归到哪里?
  19. hibernate的快照更新
  20. SILVACO TCAD 软件使用参考

热门文章

  1. 如何在CentOS 7上安装指定版本的PHP
  2. 电脑卡顿?性能不足?一套连招榨干你的电脑!
  3. 四、Vue.js 模板语法
  4. html5 状态栏颜色怎么改,iOS 修改状态栏颜色的3种方式
  5. 电脑和手机好用的播放器
  6. 关于使用硬盘对拷机后两硬盘UUID一样无法挂载问题
  7. Nginx报错Mixed Content: The page was loaded over HTTPS, This content should also be served over https
  8. HSQLDB数据库使用详解(入门)及快速使用
  9. 第二篇:到底什么才是数据资产
  10. 一作3篇SCI认定A类博士!享100万安家费+30万科启!三年副教授待遇+2K/月津贴!...