用c++实现矩阵的初等变换

来源:百度知道 编辑:UC知道 时间:2024/05/17 00:29:30
就是有一个3*4的矩阵,这么样用c++来实现它的初等变换呢。还有就是怎么样得出他们的结果,也就是未知数的值呢。。。

*by : dreadnaught */
/*finished date: February 24th ,2008 */
/*参数:
A是原矩阵指针,可用一维数组或者二维数组调用,
Ainv是原矩阵指针,可用一维数组或者二维数组调用,
n是方阵维数.
*/

#include<stdlib.h>
#include<stdio.h>

double *inverse(double *A,double*Ainv,int n)
{
int i,j,k;
double d=1.0,temp=0,lamda=0;
double *a=(double*)malloc(sizeof(double)*2*n*n);
for(i=0;i<n;i++) /*初始化处理*/
for(j=0;j<n;j++)
{
a[i*2*n+j]=A[i*n+j];
a[i*2*n+n+j]=(i==j?1.0:0.0);
}
/*根据初等变换原理,采用列消去法*/
for(i=0;i<n;i++)
{
double aii=a[i*2*n+i];
if(aii+d==d)
{
k=i+1;
while(k<n&&a[k*2*n+i]+d==d) k++;
if(k==n)
{
free(a);
printf("err**The Matrix is singular!Can't be inverse!\n");
return NULL;
}