admin 管理员组

文章数量: 1086019


2024年4月22日发(作者:对象图实验总结)

C语言累加求和程序代码

#include

#include

#include

#include

using namespace std;

double sumU(double L[5][5], double U[5][5], int i, int j)

{

double sU = 0.0;

for (int k = 1; k <= i - 1; k++)

{

sU += L[i - 1][k - 1] * U[k - 1][j - 1];

}

return sU;

}//计算求和1

double sumL(double L[5][5], double U[5][5], int i, int j)

{

double sL = 0.0;

for (int k = 0; k <= j - 1; k++)

{

sL += L[i - 1][k - 1] * U[k - 1][j - 1];

}

return sL;

}//计算求和2

double sumY(double L[5][5], double y[5], int i)

{

double sY = 0.0;

for (int k = 1; k <= i - 1; k++)

{

sY += L[i - 1][k - 1] * y[k - 1];

}

return sY;

}//计算求和3

double sumX(double U[5][5], double x[5], int i, int m)

{

double sX = 0.0;

for (int k = i + 1; k <= m; k++)

{

sX += U[i - 1][k - 1] * x[k - 1];

}

return sX;

}//计算求和4

int main()

{

double A[5][5] = { 4,5.3,-5.6,-3,-3.4,5,-2.1,3.2,4,-8,2,-4,-7.2,-5,-2.4,5,-3,-

8,2.3,3,4.2,-3,0,0,-2 };//将系数存入二维数组

double L[5][5] = { 0 };

double U[5][5] = { 0 };//初始化部分

double b[5] = { 100.16,-75.72,98.2,57.1,3.72 };

int n = 5;//n阶

cout << "[A]:n";//输出[Ab]

for (int i = 1; i <= n; i++)

{

for (int j = 1; j <= n; j++)

{

cout << "t" << fixed << setprecision(6) << A[i - 1][j - 1];

}

cout << 'n';

}

//计算L,U

for (int i = 1; i <= n; i++)

{

L[i - 1][i - 1] = 1;//对角线元素为1

for (int j = i; j <= n; j++)

{

//由于数组下标从0开始 所以i-1,j-1

U[i - 1][j - 1] = A[i - 1][j - 1] - sumU(L, U, i, j);

if (j + 1 <= n) L[j][i - 1] = (A[j][i - 1] - sumL(L, U, j + 1, i)) / U[i - 1][i - 1];//i变

j+1,j变i

}

}

//输出U

printf("U:n");

for (int i = 1; i <= n; i++)

{

for (int j = 1; j <= n; j++)

{

cout << "t" << fixed << setprecision(6) << U[i - 1][j - 1];

}

cout << "n";

}

//输出L

cout << "L:n";

for (int i = 1; i <= n; i++)

{

for (int j = 1; j <= n; j++)

{

cout << "t" << fixed << setprecision(6) << L[i - 1][j - 1];

}

cout << "n";

}

//由Ly=b 求y

double y[5] = { 0.0 };

y[0] = b[0];//y(1) = b(1);

for (int i = 2; i <= n; i++)

{

y[i - 1] = b[i - 1] - sumY(L, y, i);

}

//由 Ux=y 求x

double x[5] = { 0.0 };

for (int i = n; i >= 1; i--)

{

x[i - 1] = (y[i - 1] - sumX(U, x, i, n)) / U[i - 1][i - 1];

}

//输出y

cout << "y:n";

for (int i = 0; i < n; i++)

{

cout << "n" << fixed << setprecision(6) << y[i];

}

cout << "n";

//输出x

cout << "x:n";

for (int i = 0; i < n; i++)

{

cout << "n" << fixed << setprecision(6) << x[i] << endl;

}

cout << "n";

system("pause");

return 0;

}


本文标签: 求和 数组 对象 实验 对角线