运用的是克劳特(Crout)分解,也就是U是单位上三角形矩阵

import numpy as np
#np.set_printoptions(threshold=np.inf)def LU(A, n):L = [[0 for x in range(n)] for y in range(n)]U = [[0 for x in range(n)] for y in range(n)]  for i in range(n, 0, -1):for tmp1 in range(n - i, n):sum = 0for tmp2 in range(n - i):sum += L[tmp1][tmp2] * U[tmp2][n - i]L[tmp1][n - i] = A[tmp1][n - i] - sumfor tmp1 in range(n - i + 1, n):sum = 0for tmp2 in range(n - i):sum += L[n - i][tmp2] * U[tmp2][tmp1]U[n - i][tmp1] = (A[n - i][tmp1] - sum) / float(L[n - i][n - i])for i in range(n):U[i][i] = 1#print("L:")#printMat(L, 3)  #print("U")#printMat(U, 3)return L, Udef LUSolve(A, b, n):L = [[0 for x in range(n)] for y in range(n)]U = [[0 for x in range(n)] for y in range(n)]L, U = LU(A, n)Y = [0 for x in range(n)]X = [0 for x in range(n)]Y[0] = b[0][0] / L[0][0]for i in range(1, n):sum = 0for tmp in range(0, i):sum += L[i][tmp] * Y[tmp]Y[i] = (b[0][i] - sum) / float(L[i][i])X[n - 1] = Y[n - 1]for i in range(n - 2, -1, -1):sum = 0for tmp in range(i + 1, n):sum += U[i][tmp] * X[tmp]X[i] = Y[i] - sumreturn Xif __name__ == "__main__":M = np.random.random(size = (100, 100))#print("M:")#print(M)A = Mfor i in range(0, 100):A[i][i] += 1  # A = M + I#print("A:")#print(A)X = np.random.random(size = (100, 1))for i in range(0, 100):X[i][0] = i + 1#print("X:")#print(X)B = np.dot(A, X)b = np.transpose(B)#(b)result = LUSolve(A, b, 100)print(result)

用LU分解法来解矩阵方程相关推荐

  1. 紧凑存储的杜利特尔分解法Doolittle(LU分解法)_解线性方程组的直接解法

    紧凑存储的杜利特尔分解法Doolittle(LU分解法)_解线性方程组的直接解法 标签:计算方法实验 /* 紧凑存储的杜利特尔分解法Doolittle:如果初始矩阵不要求保留的话,可以紧凑存储.因为每 ...

  2. 计算方法:列主元消去法,LU分解法, 雅可比迭代法,高斯塞德尔迭代法 解线性方程(C++)

    Matrix.h包括矩阵类Matrix的定义,Matrix.cpp包括该类成员函数的实现,LinearEqu.h包括线性方程类LinearEqu的定义,继承自Matrix类,其中solve()方法为列 ...

  3. Matlab | Lab4——用LU 分解法、 Jacobi 迭代、 Gauss-Seidel 迭代 解线性病态方程组(系数矩阵为Hilbert矩阵)

    1.要求 考虑线性方程组Hx=b,其中H为n阶Hilbert矩阵,即 通过先给定解(例如取x的各个分量为1),再计算出右端向量b的办法给出一个精确解已知的问题. (1)分别编写Doolittle LU ...

  4. matlab lu解线性方程,MATLAB报告用LU分解法求解线性方程组.doc

    MATLAB报告用LU分解法求解线性方程组 <MATLAB>期末大报告 报告内容:用LU分解法求解线性方程组 学院(系): 专 业: 班 级: 学 号: 学生姓名: 2014 年 6 月 ...

  5. 解线性方程组的直接方法:LU分解法及其C语言算法实现

    在上一篇博客里面,笔者介绍了解线性方程组的列主元Guass消元法,这篇将介绍LU分解法及其算法实现. 什么是LU分解? 对于一个线性方程组Ax=b,其中A是非奇异系数矩阵,b是线性方程组右端项,在列主 ...

  6. Doolittle分解法(LU分解法)的Python实现

    在解一般的非奇异矩阵线性方程组的时候,或者在迭代改善算法中,需要使用LU分解法. 对于一个一般的非奇异矩阵A=(a11, a12,-,a1n,a21,-ann),可分解为一个下三角矩阵L和一个上三角矩 ...

  7. Python02 雅克比迭代法 Gauss-Seidel迭代法 列选主元法 LU分解法(附代码)

    1. 实验结果 (1)在定义的矩阵类中设置需要求解的方程为: (2)在 test.py 中选择雅克比迭代法求解: 输入:最大容许迭代次数和精度要求: 输出:根据谱半径判断方法是否收敛,收敛时得到满足精 ...

  8. 数值分析3-解线性方程组的高斯消去法、LU分解法及列主元消去法的matlab程序和调试方法

    对于形如Ax=b的线性方程组,在线性代数中是通过求逆的方式求解的,即x=A-1b,而在数值分析中,解线性方程组的方法是通过直接法或者迭代法来实现的,今天写的三个程序都属于直接法,分别为高斯消去法.LU ...

  9. LU分解法 | matlab

    % LU分解法 % M为输入的增广矩阵 % precision为输入的精度要求,如不输入或输入有误,则默认为10位if nargin == 2trydigits(precision);catchdis ...

最新文章

  1. 卷积网络基础知识---Depthwise Convolution Pointwise Convolution Separable Convolution
  2. java多态口诀,Java之路---Day12(多态),多态Java
  3. python3下载教程-Python3 教程
  4. SAP中凭证类型的作用
  5. GIMP 2.10教程
  6. 网络:常见的端口号及分类
  7. 一个做法是给一个解决方案一个ComDLL的目录
  8. 2016年5月心情吧 233
  9. [渝粤教育] 江西理工大学 新融合大学英语(I) 参考 资料
  10. 要点初见:用Python进行微观交通模型仿真——基于SUMO的伯克利开源项目Flow Project初探与拓展
  11. C++入门——实现十字消除游戏
  12. 根据 ”艾宾浩斯遗忘曲线“复习时间点生成的复习计划模板
  13. JavaScript代码实现冒泡排序
  14. 电子书管理神器 calibre 5.0.0中文版
  15. 001电机的分类:不骗你,如果你没读这篇文章,可能都不知道还有这种类型的电机!
  16. Android安全之使用root权限绕过检测机制,强行自动允许应用的悬浮窗/应用后台弹出界面等权限
  17. 04-读取Word文档内容
  18. 35岁以后的Android程序员出路在哪里?大牛最佳总结
  19. Leetcode 电话号码的字母组合
  20. CAN节点报文丢失超时时间检测CANoe自动化脚本实现

热门文章

  1. matlab电流可逆斩波电路,电流可逆斩波电路.PPT
  2. 清远通业(谁有 清远通业 请在跟帖中:(1) 留名 (2)留个电子邮件地址 (3)回答你分了几次红利)...
  3. Google智能家居控制ESP8266
  4. 俄警告将在东欧部署导弹报复美国 惹怒波兰
  5. 随机合并多个视频,同时更换背景音频
  6. GPT系列:GPT1 -> 2 -> 3 -> InstructGPT ->ChatGPT
  7. 伯远帖 - Java Spring 4.0 集成 MyBatis 3.1 支持
  8. Opencv学习笔记 - 使用opencvsharp和决策树进行训练和预测
  9. react - 利用a标签,完成下载及跳转
  10. 一个故事搞懂经济危机(少儿不宜)