高斯消元法求逆矩阵 matlab,高斯消元法求逆矩阵
有多组测试数据。每组测试数据先输入一个整数n,表示方阵的阶。然后下面输入n阶方阵。输出其逆矩阵。若无逆矩阵,则输出No inverse matrix。
#include
#include
#include
using namespace std;
const double eps = 1e-6;
bool is_zero( const double num )
{
return fabs(num) < eps;
}
void create( double ** & matrix, const int n )
{
matrix = new double* [n];
for ( int i = 0; i < n; ++i )
matrix[i] = new double[n];
}
void input ( double ** matrix, const int n )
{
for ( int i = 0; i < n; ++i )
{
for ( int j = 0; j < n; ++ j )
cin >> matrix[i][j];
}
}
bool inverse ( double ** matrix1, double ** matrix2, const int n )
{
int i, j;
for ( i = 0; i < n; ++ i )
{
for ( j = 0; j < n; ++ j )
{
if ( i == j )
matrix2[i][j] = 1;
else
matrix2[i][j] = 0;
}
}
for ( i = 0; i < n; ++i )
{
int rowmaxpos = i;
for ( j = i + 1; j < n; ++j )
{
if ( matrix1[i][j] > matrix1[i][rowmaxpos] )
rowmaxpos = j;
}
for ( j = i; j < n; ++ j )
{
swap( matrix1[j][rowmaxpos], matrix1[j][i]);
swap( matrix2[j][rowmaxpos], matrix2[j][i]);
}
if ( !is_zero(matrix1[i][i]) )
{
int divisor = matrix1[i][i];
for ( j = i; j < n; ++ j )
{
matrix1[i][j] /= divisor;
matrix2[i][j] /= divisor;
}
for ( j = i + 1; j < n; ++ j )
{
int multiple = matrix1[j][i];
for ( int k = i; k < n; ++ k )
{
matrix1[i][j] -= matrix1[i][k] * multiple;
matrix2[i][j] -= matrix2[i][k] * multiple;
}
}
}
else
return false;
}
return true;
}
void output( double ** matrix, const int n )
{
for ( int i = 0; i < n; ++i )
{
for ( int j = 0; j < n; ++ j )
cout << matrix[i][j] << ' ';
cout<
}
}
void destroy( double ** matrix, const int n )
{
for ( int i = 0; i < n; ++ i )
delete [] matrix[i];
delete [] matrix;
}
int main()
{
int n;
double ** matrix1;
double ** matrix2;
while ( cin >> n )
{
create( matrix1, n );
create( matrix2, n );
input( matrix1, n);
if ( inverse(matrix1, matrix2, n) )
output( matrix2, n );
else
cout << "No inverse matrix" << endl;
destroy( matrix1, n );
destroy( matrix2, n );
}
return 0;
}
高斯消元法求逆矩阵 matlab,高斯消元法求逆矩阵相关推荐
- matlab求曲线极值程序,matlab函数求极值matlab函数求极值.ppt
matlab函数求极值matlab函数求极值 * * 函数的极值 1.一元函数的极值 函数命令:fminbnd 调用格式:[x,feval,exitflag,output]=fminbnd(fun,x ...
- matlab求两点间距离,matlab如何求一个N*2的矩阵的任意两点间的距离?
matlab如何求一个N*2的矩阵的任意两点间的距离? mip版 关注:64 答案:3 悬赏:0 解决时间 2021-02-23 20:55 已解决 2021-02-23 16:37 假设有个矩 ...
- matlab用lu求逆矩阵,Matlab实现——求矩阵的逆(LU分解)
Program ( :Solve By Factorization with Pivoting ) 思路及原理: 就得到: 程序: function X=Ni(A) %Input - A is an ...
- matlab用lu求逆矩阵,Matlab实现——求矩阵的逆(LU分解) | 学步园
Program ( :Solve By Factorization with Pivoting ) 思路及原理: 就得到: 程序: function X=Ni(A) %Input - A is an ...
- matlab中求立方根,matlab实现求复数立方根的函数代码怎么写
z2] a=[a1; a2] 来表示z 和 a=a1 + i a2 然后我们用两个实数z1和z2来写f(z) 所以 f(z: function [z, z2, 我们来求解根, niter]=ComCu ...
- Matlab三元隐函数求极值,matlab用三重循环求一个三元函数的最大值所对应的x1,x2,x3...
用MATLAB实现for循环 t=2;whileS(t)>Pstrong&&t 求一个MATLAB循环语句表示这个矩阵200分 这样的,i和j是内部虚数变量,避免轻易使用.cle ...
- java 多阶矩阵求逆_求N阶矩阵的逆矩阵 java
求N阶矩阵的逆矩阵 java 别妄想泡我 911次浏览 2020年08月01日 16:49 最佳经验 本文由作者推荐 1毫升等于多少升-岂止的意思 import r; public class 求逆矩 ...
- 求n阶矩阵的逆矩阵(C语言实现)
求n阶矩阵的逆矩阵 求行列式的值部分:https://blog.csdn.net/qq_30291317/article/details/114364893?ops_request_misc=& ...
- matlab对多项式求导,matlab中多项式求导
1 0.5 0 -0.5 -1 -1.5 -2 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 4.对比用多项式函数的 polyder 函数及符号函数中的 diff 函数,求导 x2+2x ...
最新文章
- 海康sdk返回yv12
- 编程行业里面的新行话
- depends用于测试程序运行所缺少的文件,可以帮我们很快找到问题
- 简洁的架构还能高效和准确?清华华为提出新型残差循环超分模型:RRN!
- 【网络编程】time_wait状态产生的原因,危害,如何避免
- Hadoop概述--四大组件架构及其关系
- 单变量微积分笔记——无穷级数,泰勒展开及欧拉公式的证明
- js 获取某一天的前一天时间或者后一天时间
- 备份与还原相关的基本概念
- 《给后端工程师的前端开发课程》笔记
- QuickBooks 2007 All-in-One Desk Reference For Dummies
- jmeter JSR223 PostProcessor 操作
- Python中字符串的驻留机制和常用方法
- 洛杉矶警局用 AI “预测犯罪”;北欧银行拟裁员六千,用智能机器取而代之
- 为什么WIFI信号较差的时候,网速会比较慢
- UI控件Telerik UI for Silverlight发布R3 2018 SP1|附下载
- 邻接矩阵的c语言算法思路,C语言邻接矩阵的实现
- vm12创建虚拟机(nat模式)
- 未来计算机一种新兴的计算机类型,酷毙了!10款神奇的未来计算机
- UVM Object