资源简介
本C++程序用列主元LU分解法来解线性方程组
代码片段和文件信息
/********************************************************************
本程序用来解四维线性方程组。当然,将在最开始将N换成其他
数字、系数矩阵和右侧矩阵换掉即可解更多维的线性方程组
在运行本程序前,一定要确保方程组有解(通过线性代数里学的知识加以判断)
********************************************************************/
#include
#include
#include
#define N 4
//作函数声明:
void DirectLU(double a[N][N+1]double []); //定义函数作LU分解并求得最终解
void swap(double &double &); //交换函数用来交换两个元素
int main()
{
double x[N];
int ij;
double a[N][N+1]={
1-12-1-8
2-23-3-20
1110-2
1-1434
};
double y[N]={-8-20-24}; //输入系数矩阵和矩阵y
cout<<“系数矩阵为: \n“;
for(i=0;i for(j=0;j cout< cout< }
cout<<“矩阵 y 为: \n“;
for(i=0;i cout< cout< cout<<“----------------------------------------“<
DirectLU(ax);
cout<<“LU矩阵为: \n“;
for(i=0;i for(j=0;j cout< cout< }
cout<<“变换后的矩阵 y 为: \n“;
for(i=0;i cout< cout< cout<<“----------------------------------------“<
cout<<“方程的解为: \n“;
for(i=0;i cout<<“x[“< cout<<“----------------------------------------“<
return 0;
}
void swap(double &adouble &b)
{
a=a+b;
b=a-b;
a=a-b;
}
void DirectLU(double a[N][N+1]double x[])
{
int irkj;
double s[N]t[N];//={-20814-0.8};
double max;
for(r=0;r {
max=0;
j=r;
for(i=r;i {
s[i]=a[i][r];
for(k=0;k s[i]-=a[i][k]*a[k][r];
s[i]=s[i]>0?s[i]:-s[i]; //s[i]取绝对值
if(s[i]>max){
j=i;
max=s[i];
}
}
/*************************************************
if(max==0){
cout<<“输入的矩阵有误,该方程组无解!!!“< return;
}
*************************************************/
if(j!=r) //选出的主元所在行j若不是r则对两行相应元素进行调换
{
for(i=0;i swap(a[r][i]a[j][i]);
}
for(i=r;i for(k=0;k a[r][i]-=a[r][k]*a[k][i];
}
for(i=r+1;i {
for(k=0;k a[i][r]-=a[i][k]*a[k][r];
a[i][r]/=a[r][r];
}
}
for(i=0;i t[i]=a[i][N];
for(i=N-1;i>=0;i--) //利用回代法求最终解
{
for(r=N-1;r>i;r--)
t[i]-=a[i][r]*x[r];
x[i]=t[i]/a[i][i];
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2632 2010-12-18 12:38 列主元LU分解_数组法.cpp
----------- --------- ---------- ----- ----
2632 1
- 上一篇:双向链表的基本操作C语言
- 下一篇:《 C++编程思想》(第二版)练习题答案
相关资源
- C++程序基础课程设计——求取平均分
- 光束法区域平差c++程序
- C++程序设计原理与实践 原书第2版 基
- C++程序设计 机器人
- 数字信号处理C++程序来源《数字处理
- 最长公共子序列—c++实现
- 一个监护仪上位机C++程序
- Matlab笔记——使用GPU运算、调用C/C+
- 经典4阶 Runge-Kutta方法解常微分方程的
- 算术编码源程序c++程序
- 单像空间后方交会c++程序代码
- DES加密解密算法C++程序设计
- C++面向对象程序设计教程(第3版)—
- Gabor滤波器C++程序
- OS_页面置换算法实验c++程序代码
- 数据压缩LZW编码c++程序
- 模拟退火遗传算法的C++程序
- C++程序设计语言:第1~3部分原书第4版
- c++程序设计 谭浩强第二版答案
- 随机产生大素数的C++程序
- Gauss-Seidel 迭代和SOR迭代的通用c++程序
- Poisson泊松分布的C++程序
- C++程序设计杨长兴、刘卫国答案
- 清华大学 郑莉 C++程序设计 习题答案
- 清华大学出版社C++程序设计 第三版习
- Visual C++程序设计与应用教程课后习题
- 自适应算术编码c++程序
- 04737 c++程序设计 自考课后练习答案
- C++程序设计 Y.Daniel Liang著 习题答案
- 有限元C++程序
评论
共有 条评论