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中,求解线性方 ...
随机推荐
- PAT 06-3 单词长度
此题为简化版,题设为“以'.'结尾”.“单词与语言无关”.三种情况下的输入输出为 . -> 无输出 a b. ->1 1(无空格) a b . ->1 1(无空格) 程 ...
- jstl表达式替换某些字符
转自:http://www.yiibai.com/jsp/jstl_function_replace.html fn:replace() 函数替换一个字符串与另一个字符串的所有匹配. 语法 fn:re ...
- Qt调用WebService
从网上查找Qt调用WebService的方案,需要下载三方的类库,而且需要使用好几个控制台命令,才能生成代理客户端类.因为只是简单的测试,没有采用这种方式,直接使用HTTP的Get获取网站内容,也非常 ...
- mantis增加密码修改
解决方式就是考虑修改Mantisbt PHP程序,增加一个密码修改框,这样管理员就可以直接修改用户密码了. 操作步骤如下: 1) 修改文件 manage_user_edit_page.p ...
- iOS 从相机或相册获取图片并裁剪
今天遇到一个用户头像上传的问题,需要从相册或者相机中读取图片.代码很简单,抽取关键部分,如下: //load user image - (void)UesrImageClicked { UIActio ...
- linxu c语言 fcntl函数和flock函数区别 【转】
flock和fcntl都有锁的功能,但他们还有一点小小的区别: 1.flock只能加全局锁,fcntl可以加全局锁也可以加局部锁. 2.当一个进程用flock给一个文件加锁时,用另一个进程再给这个文件 ...
- Shell字符串截取
shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...
- htseq-count 的使用
Given a file with aligned sequencing reads and a list of genomic features, a common task is to count ...
- hexo git配置问题笔记
本地安装hexo步骤 注意:本节教程只针对Windows用户,Linux和Mac用户请移步hexo安装. 安装Git 下载 msysgit 并执行即可完成安装. 安装Node.js 在 Windows ...
- 修饰符(static、final、abstract)第二篇
二.Final 核心:一旦创建,不可修改 可修饰:(创建即终态) 1.类:被修饰后,将不能被继承 2.方法:被修饰后,将不能被覆写 3.属性:被创建,不可修改,且必须赋值(赋值的两种形式): 1.直接 ...