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;
}
版权声明:本文标题:C语言累加求和程序代码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713785098a651406.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论