⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 矩阵问题举例.cpp

📁 是各种常用算法的集合
💻 CPP
字号:
#include <iomanip.h> 
#include <iostream.h> 
#include <stdlib.h> 
#include <math.h>

const  int N=4;

inline void swap(double &a,double &b)
{
	double c=a;
	a=b;
	b=c;
}; 

void DinV(double A[N][N],int n) 
{ 
	int i,j,k; 
	double d; 
	int JS[N],IS[N]; 
	for (k=0;k<n;k++) 
	{
		d=0; 
		for (i=k;i<n;i++) 
			for (j=k;j<n;j++) 
			{ 
				if (fabs(A[i][j])>d) 
				{ 
					d=fabs(A[i][j]); 
					IS[k]=i; 
					JS[k]=j; 
				} 
			} 
			if (d+1.0==1.0) 
				return; 
			if (IS[k]!=k) 
				for (j=0;j<n;j++) 
					swap(A[k][j],A[IS[k]][j]); 
			if (JS[k]!=k) 
				for (i=0;i<n;i++) 
					swap(A[i][k],A[i][JS[k]]); 
			A[k][k]=1/A[k][k]; 
			for (j=0;j<n;j++) 
				if (j!=k) 
					A[k][j]=A[k][j]*A[k][k]; 
			for (i=0;i<n;i++) 
				if (i!=k) 
					for (j=0;j<n;j++) 
						if (j!=k) 
							A[i][j]=A[i][j]-A[i][k]*A[k][j]; 
			for (i=0;i<n;i++) 
				if (i!=k) 
					A[i][k]=-A[i][k]*A[k][k]; 
	} 
	for (k=n-1;k>=0;k--) 
	{ 
		for (j=0;j<n;j++) 
			if (JS[k]!=k) 
				swap(A[k][j],A[JS[k]][j]); 
		for (i=0;i<n;i++) 
			if (IS[k]!=k) 
				swap(A[i][k],A[i][IS[k]]); 
	} 
	for (i=0;i<n;i++) 
	{ 
		for (j=0;j<n;j++) 
			cout<<setw(11)<<setprecision(4)<<A[i][j];
		cout<<endl;
	} 
} 

void main() 
{
	double A[N][N]={{1,3,2,13},
					{7,2,1,-2},
					{9,15,3,-2},
					{-2,-2,11,5}}; 
	DinV(A,4); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -