数值分析2.2 直接三角分解方法
2015-04-05 11:25
253 查看
#include <iostream> #include <cstdio> #include <math.h> using namespace std; const int MAXN = 1000; double a[MAXN][MAXN]; double l[MAXN][MAXN]; double u[MAXN][MAXN]; double b[MAXN]; double x[MAXN]; double y[MAXN]; int main() { int n; double maxs; freopen("in.txt","r",stdin); while(cin >> n){ for(int i = 0;i<n;i++)cin >> b[i]; for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ cin >> a[i][j]; } } //memset(l,0,sizeof(l)); //memset(u,0,sizeof(u)); for(int i = 0;i<n;i++)l[i][i] = 1; for(int k = 0;k<n;k++){///求第k行u和第k列l for(int j = k;j<n;j++){ u[k][j] = a[k][j]; for(int m = 0;m<k;m++){ u[k][j]-=l[k][m]*u[m][j]; } } for(int j = k+1;j<n;j++){ l[j][k] = a[j][k]; for(int m = 0;m<k;m++){ l[j][k]-=l[j][m]*u[m][k]; } l[j][k]/=u[k][k]; } } ///回带求y for(int i = 0;i<n;i++){ y[i] = b[i]; for(int j = 0;j<i;j++){ y[i]-=l[i][j]*y[j]; } } ///回带求x for(int i = n-1;i>=0;i--){ x[i] = y[i]; for(int j = n-1;j>i;j--){ x[i]-=u[i][j]*x[j]; } x[i]/=u[i][i]; } ///输出 for(int i = 0;i<n;i++){ if(!i)cout << x[i]; else cout << " " << x[i]; } cout << endl; } return 0; }
相关文章推荐
- 数值分析 第二章 解线性方程组的直接方法
- 数值分析读书笔记(2)求解线性代数方程组的直接方法
- 梯形方法(数值分析 c++)
- 新浪微博网站的技术架构详细分析 讲解到很多技术难点分解与实现方法(转)
- 数值分析课实验-求解线性方程组的直接法C代码
- 数值分析之QR因子分解篇
- 如何使用String中的Split方法来按照“分隔符”来分解字符串,可以直接运行
- 数值分析:数据插值方法
- 解线性方程组的直接方法(1):杜利特尔LU分解MATLAB实例
- python实现数值积分的Simpson方法实例分析
- Ajax中post方法直接返回以0开头数字出错问题分析
- IE不能直接顯示PDF的原因分析和解決方法
- 【数值分析】误差的分析与减少及Matlab解线性方程的四种方法
- 数值分析中插值方法-Lagrange插值
- 数值分析--矩阵QR分解的三种方法
- 分解32位数值的方法
- 数值分析方法库
- 开源Math.NET基础数学类库使用(06)数值分析之线性方程组直接求解
- 统计分析学习之数值分析方法
- CSS写出倒三角的方法分析