main.cpp
来自「研究生期间上《数值计算方法》课的作业」· C++ 代码 · 共 93 行
CPP
93 行
#include <iostream>
#include <stdlib.h>
#include <math.h>
#define MaxD 10
using namespace std;
float Matrix[MaxD][MaxD];
int N;
float Sumof(int cyc, int i, int j)
{
float fReturnVal = 0;
for(int k=0; k<cyc; k++)
{
fReturnVal += Matrix[i][k]*Matrix[k][j];
}
return fReturnVal;
}
void Doolittle()
{
int i = 0,j=0;
if(Matrix[0][0] == 0.0)
{
printf("不能进行LU分解");
return;
}
for(i=1; i<N; i++)
{
Matrix[i][0] = Matrix[i][0]/Matrix[0][0];
}
for(i=1; i<N; i++)
{
Matrix[i][i] = Matrix[i][i] - Sumof(i,i,i);
if(Matrix[i][i] == 0.0)
{
printf("不能进行LU分解");
return;
}
for(j=i+1; j<N; j++)
{
Matrix[i][j] = Matrix[i][j] - Sumof(i,i,j);
Matrix[j][i] = (Matrix[j][i] - Sumof(i,j,i))/Matrix[i][i];
}
}
}
int main(int argc, char *argv[])
{
int i=0,j=0;
N = 3;
do
{
printf("请输入矩阵维数 不大于10\n");
scanf("%d",&N);
}while(N > 10);
printf("请输入矩阵元素:\n");
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("Matrix[%d][%d]=",i,j);
scanf("%f",&Matrix[i][j]);
}
}
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("Matrix[%d][%d]=%5f ",i,j,Matrix[i][j]);
}
printf("\n");
}
printf("Doolittle 分解后\n");
Doolittle();
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("Matrix[%d][%d]=%5f ",i,j,Matrix[i][j]);
}
printf("\n");
}
system("PAUSE");
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?