高斯列主元消去法解线性方程组
最近在看惯导的东西,然后想要用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;
}
运行结果如下:
高斯列主元消去法解线性方程组相关推荐
- 列主元消去法例题详解_高斯列主元消元法解方程组的步骤
高斯列主元消元法求解线性方程组 AX=b 的简要步骤 ...
- 高斯列主元消去法——C实现
1. 高斯消去法算法原理 消去法是求解线性方程组的一种方法,它对增广矩阵进行初等行变换得到一个可回代求解的矩阵,然后再进行回代求得一组解向量. 高斯列主元法在使用初等行变换消元之前增加了选主元的过程. ...
- 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 - ...
- 用gauss消去法解线性方程组(数值数学实验教程P74ex5.2)-2021-11-03
用gauss消去法解线性方程组(数值数学实验教程P74ex5.2) function [x,Ak] =caguss_elimination(A,b,epsilon) %gauss消去法解线性方程组 % ...
- 第三十四章 数论——高斯消元解线性方程组
第三十四章 数论--高斯消元解线性方程组 一.高斯消元 1.线性方程组 2.高斯消元步骤 (1)数学知识铺垫 增广矩阵和阶梯矩阵 初等变换 (2)高斯消元步骤 二.代码模板 1.问题: 2.代码 一. ...
- 数值分析—行主元消去法解线性方程组—FORTRAN程序
数值分析-行主元消去法解线性方程组-FORTRAN程序 program main implicit none real8,dimension( :,: ),allocatable::A real8,d ...
- [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题
[AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算 ...
- 高斯消元 AcWing 883. 高斯消元解线性方程组
高斯消元 AcWing 883. 高斯消元解线性方程组 原题链接 AcWing 883. 高斯消元解线性方程组 算法标签 线性代数 高斯消元 思路 代码 #include<bits/stdc++ ...
- 计算方法实验(五):高斯列主元消去法
Gauss列主元消去法数学原理 高斯(Gauss)列主元消去法:对给定的nnn阶线性方程组Ax=bAx = bAx=b,首先进行列主元消元过程,然后进行回代过程,最后得到解或确定该线性方程组是奇异的. ...
最新文章
- HTML 自学笔记(HTML框架+表单设计)
- [20181015]为什么是3秒.txt
- withMisfireHandlingInstruction
- strictmath_Java StrictMath ceil()方法与示例
- 简单粗暴的多目标跟踪神器 – DeepSort
- 开源 | 高颜值神经网络可视化工具
- Apache Phoenix学习记录(SQL on HBase)
- Flash Bootloader
- 游戏上云?-游戏设计与开发(2)
- 计算机连接小米usb驱动,win7系统安装小米usb驱动的操作方法
- blender摄像机怎么绕物体旋转
- Java面试题之IO流分为几种?
- arcgis坐标系未定义_科学网—ArcGIS中的坐标系:基本概念和常用操作 - 李郎平的博文...
- 手机也能当门卡?!--NFC技术应用
- 保姆级Google谷歌浏览器安装路径从C盘转移
- 服务器机柜规格19寸销售商,19寸网络机柜尺寸规格是多少
- python import 上级目录
- 如何理解线性回归中的“回归”,回归到哪里?
- hibernate的快照更新
- SILVACO TCAD 软件使用参考
热门文章
- 如何在CentOS 7上安装指定版本的PHP
- 电脑卡顿?性能不足?一套连招榨干你的电脑!
- 四、Vue.js 模板语法
- html5 状态栏颜色怎么改,iOS 修改状态栏颜色的3种方式
- 电脑和手机好用的播放器
- 关于使用硬盘对拷机后两硬盘UUID一样无法挂载问题
- Nginx报错Mixed Content: The page was loaded over HTTPS, This content should also be served over https
- HSQLDB数据库使用详解(入门)及快速使用
- 第二篇:到底什么才是数据资产
- 一作3篇SCI认定A类博士!享100万安家费+30万科启!三年副教授待遇+2K/月津贴!...