#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void swopInt(int *a,int *b)
{
int temp=(*a);
(*a)=(*b);
(*b)=temp;
}
void swopDouble(double *a,double *b)
{
double temp=(*a);
(*a)=(*b);
(*b)=temp;
}
void LUPDecomposition(double **A,int n,int *pi)
{
for(int i=0;i<n;i++)
{
pi[i]=i;
}
for(int k=0;k<n;k++)
{
double p=0.0;
int kk=0;
for(int i=k;i<n;i++)
{
if(abs(A[i][k])>p)
{
p=abs(A[i][k]);
kk=i;
}
}
if(p==0)
{
printf("singular matrix");
return;
}
swopInt(&pi[kk],&pi[k]);
for(int i=0;i<n;i++)
swopDouble(&A[k][i],&A[kk][i]);
for(int i=k+1;i<n;i++)
{
A[i][k]=A[i][k]/A[k][k];
for(int j=k+1;j<n;j++)
{
A[i][j]=A[i][j]-A[i][k]*A[k][j];
}
}
}
}
void printA(double **A,int n
算法导论 矩阵运算 LUP
最新推荐文章于 2022-12-03 17:18:24 发布
本文展示了如何使用LUP分解方法解决线性方程组。通过C语言实现LUPDecomposition、LUPSolve和generateLU等函数,对矩阵进行分解和求解,并提供了一个4x4矩阵的实例演示。
摘要由CSDN通过智能技术生成