C语言三角分解非奇异矩阵为L、U矩阵
#include<stdio.h>
# define N 4
int main (void)
{
double A[N][N] ?= {0};
double L[N][N] = {0};
double U[N][N] = {0};
double M[N][N] = {0};
double P[N][N] = {0};
double sum1 = 0,sum2 = 0;
int i = 0,j = 0;
int r,k;
printf("請輸入矩陣A:\n");
for(i=0;i<N;i++)
{
? ? printf("第%d行:",i+1);
? ? for(j=0;j<N;j++)
? ? {
? ? ? ? scanf("%lf",&A[i][j]);
? ? }
}
printf("你輸入的矩陣是:\n");
for(i = 0;i<N;i++)
{
? ? for(j = 0;j<N;j++)
? ? {
? ? ? ? printf("%lf\t",A[i][j]);
? ? }
? ? printf("\n");
}
/*計算U和L*/
/*U的第一行*/
for(j = 0;j<N;j++)
{
? ? U[0][j] = A[0][j];
}
/*L的第一列*/
for(i = 0;i<N;i++)
{
? ? L[i][0] = A[i][0]/U[0][0];
}
/*U的第r+1行、L的第r+1列*/
for(r=1;r<N;r++)
{
? ? for(j=0;j<N;j++)
? ? {
? ? ? ? for(k = 0;k<r;k++)
? ? ? ? {
? ? ? ? ? ? sum1 += L[r][k]*U[k][j];
? ? ? ? }
?? ??? ?M[r][j] = sum1;
?? ??? ?U[r][j] = A[r][j] - M[r][j];?? ?
?? ??? ?sum1 = 0;
? ? }
?? ?if(j == 4)
?? ?{
?? ??? ?j = r;
?? ??? ?for(r = 0;r<N;r++)
?? ??? ?{
?? ??? ??? ?for(k = 0;k<j;k++)
?? ??? ??? ?{
?? ??? ??? ??? ?sum2 += L[r][k]*U[k][j];
?? ??? ??? ?}
?? ??? ??? ?P[r][j] = sum2;
?? ??? ??? ?L[r][j] = (A[r][j] - P[r][j])/U[j][j];?
?? ??? ??? ?sum2 = 0;
?? ??? ?}
?? ?}
?? ?r = j;
}
printf("矩陣U是:\n");
for(i = 0;i<N;i++)
{
? ? for(j = 0;j<N;j++)
? ? {
? ? ? ? printf("%.3lf\t",U[i][j]);
? ? }
? ? printf("\n");
}
printf("矩陣L是:\n");
for(i = 0;i<N;i++)
? ? {
? ? for(j = 0;j<N;j++)
? ? {
? ? ? ? printf("%.3lf\t",L[i][j]);
? ? }
? ? printf("\n");
}
return 0;
}
/*咱就說:就這?!*/
總結
以上是生活随笔為你收集整理的C语言三角分解非奇异矩阵为L、U矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一次申请苹果的公司开发者账号
- 下一篇: python爬微信群_利用Python爬