📄 use_lu_for_equations.cpp
字号:
#include <iostream.h>
#define n 4
float a[n][n];
float l[n][n];
float u[n][n];
void destar() //对矩阵a,l,u 进行初始化,
{for(int i=1;i<=n;i++)
{for(int j=1;j<=n;j++)
{a[i][j]=0;
l[i][j]=0;
u[i][j]=0;
}
}
for(i=1;i<=n;i++) //矩阵l,的对角线的值置1.
l[i][i]=1;
}
void in_and_out_a() //输入矩阵A中的元素和输出矩阵A。
{ float ka;
int i,j;
cout<<"输入矩阵A中的元素:"<<endl;
for(i=1;i<=n;i++)
{ cout<<"输入第"<<i<<"行元素:"<<endl;
for(j=1;j<=n;j++)
{ cin>>ka;
a[i][j]=ka;
if(j%n==0)break;
}
}
cout<<"输出矩阵A:"<<endl;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{cout<<a[i][j]<<'\t';
if(j%n==0) cout<<endl;
}
}
void soulusion_l_u() //求U和L的元素.
{ int j,i,k,r;
float m;
for( j=1;j<=n;j++)//得U的第一行元素.
u[1][j]=a[1][j];
for( i=2;i<=n;i++)
l[i][1]=a[i][1]/u[1][1];//得L的第一列元素.
for( k=2;k<=n;k++) //求U的第k行元素和L的第k列元素
{ for(j=k;j<=n;j++){ m=0;
for(int r=1;r<k;r++)
{m=m+l[k][r]*u[r][j];}
u[k][j]=a[k][j]-m;}
for(i=k+1;i<=n;i++){m=0;
for(r=1;r<k;r++)
{m=m+l[i][r]*u[r][k];}
l[i][k]=(a[i][k]-m)/u[k][k];}
}
}
void main()
{ int i,j;
float b[n+1];
float y[n],x[n];
float m;
cout<<"输入矩阵b的值:"<<endl;
for(i=1;i<=n;i++)
{ cin>>m;
b[i]=m;
}
destar();
in_and_out_a();
soulusion_l_u();
cout<<"输出矩阵l:"<<endl;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{cout<<l[i][j]<<'\t';
if(j%n==0) cout<<endl;
}
cout<<"输出矩阵u:"<<endl;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{cout<<u[i][j]<<'\t';
if(j%n==0) cout<<endl;
}
y[1]=b[1]; //求矩阵y的值。
for(i=2;i<=n;i++)
{ m=0;
for(j=1;j<i;j++){m=m+l[i][j]*y[j];}
y[i]=(b[i]-m);
}
cout<<"输出矩阵y:"<<endl;
for(i=1;i<=n;i++)
{cout<<y[i]<<'\t';
if(i%n==0) cout<<endl;
}
x[n]=y[n]/u[n][n]; //求矩阵x的值。
for(i=n-1;i>=1;i--)
{ m=0;
for(j=i+1;j<=n;j++){m=m+u[i][j]*x[j];}
x[i]=(y[i]-m)/u[i][i];
}
cout<<"输出矩阵x:"<<endl;
for(i=1;i<=n;i++)
{cout<<x[i]<<'\t';
if(i%n==0) cout<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -