LU分解和求解线性方程组
# coding:utf8
import numpy as np def lu(mat):
r,c=np.shape(mat)
s=min(r,c)
for k in range(s):
x=1.0/mat[k][k] # 将后续除法变成乘法
for i in range(k+1,r):
mat[i][k]=mat[i][k]*x # L[1:][0]*U[0][0]=A[1:][0];A[0][:]=mat[0][:]
for i in range(k+1,r):
for j in range(k+1,c):
# U[1][2]*L[1][1]=A[1][2]-U[0][2]*L[1][0];L[1][1]=1
# L[2][1]*U[1][1]=A[2][1]-U[0][1]*L[2][0];下一个k时mat[i][j]/mat[k][k](i>j)
mat[i][j]=mat[i][j]-mat[k][j]*mat[i][k]
return mat,c def solve(A,b):
mat,n=lu(A) # LU合并
print mat # [[16, 4, 8], [0.25, 4.0, -6.0], [0.5, -1.5, 9.0]]
Z= np.zeros(n) # L*Z=b U*X=Z
X= np.zeros(n)
Z[0]=b[0]
for i in range(1,n):
sumup=0
for tmp in range(0,i):
sumup+=mat[i][tmp]*Z[tmp]
Z[i]=(b[i]-sumup)
X[n-1]=Z[n-1]/mat[n-1][n-1]
for i in range(n-2,-1,-1):
sumup=0
for tmp in range(i+1,n):
sumup+=mat[i][tmp]*X[tmp]
X[i]=(Z[i]-sumup)/mat[i][i]
return X A=[[16,4,8],[4,5,-4],[8,-4,22]]
y=[-4,3,10]
print "The result of the fomula is:"+str(solve(A,y)) # [-2.25 4. 2. ]
LU分解和求解线性方程组的更多相关文章
- 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- 线性代数笔记10——矩阵的LU分解
在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积).LU分解主要应用在数值分析 ...
- matlab 求解线性方程组之LU分解
线性代数中的一个核心思想就是矩阵分解,既将一个复杂的矩阵分解为更简单的矩阵的乘积.常见的有如下分解: LU分解:A=LU,A是m×n矩阵,L是m×m下三角矩阵,U是m×n阶梯形矩阵 QR分解: 秩分解 ...
- MATLAB矩阵的LU分解及在解线性方程组中的应用
作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 三.实验程序 五.解答(按如下顺序提交电子版) 1.(程序) (1)LU分解源程序: function [ ...
- 计算方法 -- 解线性方程组直接法(LU分解、列主元高斯消元、追赶法)
#include <iostream> #include <cstdio> #include <algorithm> #include <cstdlib> ...
- LU分解(2)
接着上次LU分解的讲解,这次给出使用不同的计算LU分解的方法,这种方法称为基于GaxPy的计算方法.这里需要了解lapapck中的一些函数.lapack中有一个函数名为gaxpy,所对应的矩阵计算公式 ...
- 矩阵分解---QR正交分解,LU分解
相关概念: 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等.两个向量正交的意思是两个向量的内积为 0 正定矩阵:如果对于所有的非零实系数向量x ,都有 x ...
- 矩阵LU分解分块算法实现
本文主要描述实现LU分解算法过程中遇到的问题及解决方案,并给出了全部源代码. 1. 什么是LU分解? 矩阵的LU分解源于线性方程组的高斯消元过程.对于一个含有N个变量的N个线性方程组,总可以用高斯消去 ...
- [Matlab]求解线性方程组
转自:http://silencethinking.blog.163.com/blog/static/911490562008928105813169/ AX=B或XA=B在MATLAB中,求解线性方 ...
随机推荐
- oracle触发器如何使用2
触发器 是特定事件出现的时候,自动执行的代码块.类似于存储过程,但是用户不能直接调用他们.触发器是许多关系数据库系统都提供的一项技术.在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处 ...
- UE正则表达式查找和替换(将【,;】)替换为换行
- UIWebView的缓存策略,清除cookie
缓存策略 NSURLRequestCachePolicy NSURLRequestUseProtocolCachePolicy缓存策略定义在 web 协议实现中,用于请求特定的URL.是默认的URL缓 ...
- 偶遇makeblock
上周出去吃饭在公交站牌上看到一家叫“创客工场”的公司在打招聘广告,当时在想这公司有钱啊,广告都打到这儿了,也没细想让韩总扫了一下他们的二维码,回来搜了一下这个公司,我靠,是做开源硬件的:再一看各种机器 ...
- 数据结构《14》----并查集 Union-Find
描述: 并查集是一种描述解决等价关系.能够方便地描述不相交的多个集合. 支持如下操作 1. 建立包含元素 x 的集合 MakeSet(x) 2. 查找给定元素所在的集合 Find(x), 返回 ...
- Best Cow Fences_二分&&DP
Description Farmer John's farm consists of a long row of N (1 <= N <= 100,000)fields. Each fie ...
- Tiling Up Blocks_DP
Description Michael The Kid receives an interesting game set from his grandparent as his birthday gi ...
- Divisors_组合数因子个数
Description Your task in this problem is to determine the number of divisors of Cnk. Just for fun -- ...
- oracle注意事项
企业管理器system登陆时必须使用normal模式
- matlab 相同函数名解决
http://jingyan.baidu.com/article/1612d500a23a8ce20e1eee07.html