⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 研究生期间上《数值计算方法》课的作业
💻 CPP
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -