MATLAB矩阵的LU分解及在解线性方程组中的应用
作者:凯鲁嘎吉 - 博客园
http://www.cnblogs.com/kailugaji/
三、实验程序
五、解答(按如下顺序提交电子版)
1.(程序)
(1)LU分解源程序:
function [l,u]=lu12(a,n)
for k=1:n-1
for i=k+1:n
a(i,k)=a(i,k)/a(k,k);
for j=k+1:n
a(i,j)=a(i,j)-a(i,k)*a(k,j);
end
end
end
l=eye(n);
u=zeros(n,n);
for k=1:n
for i=k:n
u(k,i)=a(k,i);
end
end
for k=1:n
for j=1:k-1
l(k,j)=a(k,j);
end
end
(2)直接三角分解法源程序:
function [a,l,u,y,x]=direct_triangle(a,b,n)
%a为N*N矩阵,b为n*1列向量
for k=1:n-1
for i=k+1:n
a(i,k)=a(i,k)/a(k,k);
for j=k+1:n
a(i,j)=a(i,j)-a(i,k)*a(k,j);
end
end
end
l=eye(n);
u=zeros(n,n);
for k=1:n
for i=k:n
u(k,i)=a(k,i);
end
end
for k=1:n
for j=1:k-1
l(k,j)=a(k,j);
end
end
y=ones(n,1);
x=ones(n,1);
y(1,1)=b(1,1);
for i=2:n
s=0;
for k=1:i-1
s=s+l(i,k)*y(k,1);
end
y(i,1)=b(i,1)-s;
end x(n,1)=y(n,1)/u(n,n);
for j=n-1:-1:1
s1=0;
for k1=j+1:n
s1=s1+u(j,k1)*x(k1,1);
end
x(j,1)=(y(j,1)-s1)/u(j,j);
end
2.(运算结果)
(1)求一个4阶矩阵的LU分解。
>> a=[10,7,8,7;7,5,6,5;8,6,10,9;7,5,9,10];
>> [l,u]=lu12(a,4) l = 1.0000 0 0 0
0.7000 1.0000 0 0
0.8000 4.0000 1.0000 0
0.7000 1.0000 1.5000 1.0000 u = 10.0000 7.0000 8.0000 7.0000
0 0.1000 0.4000 0.1000
0 0 2.0000 3.0000
0 0 0 0.5000
>> a=[10 7 8 7;7 5 6 5;8 6 10 9;7 5 9 10];b=[32 23 33 31]';
>> [a,l,u,y,x]=direct_triangle(a,b,4) a = 10.0000 7.0000 8.0000 7.0000
0.7000 0.1000 0.4000 0.1000
0.8000 4.0000 2.0000 3.0000
0.7000 1.0000 1.5000 0.5000 l = 1.0000 0 0 0
0.7000 1.0000 0 0
0.8000 4.0000 1.0000 0
0.7000 1.0000 1.5000 1.0000 u = 10.0000 7.0000 8.0000 7.0000
0 0.1000 0.4000 0.1000
0 0 2.0000 3.0000
0 0 0 0.5000 y = 32.0000
0.6000
5.0000
0.5000 x = 1.0000
1.0000
1.0000
1.0000
比如,希尔伯特矩阵就是一个病态矩阵,在方程组问题求解之前,可以先判断其条件数是否较大。
源程序:hilbert.m:
function [A,cond1]=hilbert(k)
format rat
A=zeros(k,k);
for m=1:k
for n=1:k
A(m,n)=1/(m+n-1);
end
end
cond1=cond(A,inf);
运行结果:
>> [A,cond1]=hilbert(3) A = 1 1/2 1/3
1/2 1/3 1/4
1/3 1/4 1/5 cond1 = 748
>> [A,cond1]=hilbert(4) A = 1 1/2 1/3 1/4
1/2 1/3 1/4 1/5
1/3 1/4 1/5 1/6
1/4 1/5 1/6 1/7 cond1 = 28375
>> [A,cond1]=hilbert(5) A = 1 1/2 1/3 1/4 1/5
1/2 1/3 1/4 1/5 1/6
1/3 1/4 1/5 1/6 1/7
1/4 1/5 1/6 1/7 1/8
1/5 1/6 1/7 1/8 1/9 cond1 = 943656
从结果可见希尔伯特矩阵是一个病态矩阵,用一般的直接法和迭代法会有较大的误差,甚至严重失真。
MATLAB矩阵的LU分解及在解线性方程组中的应用的更多相关文章
- 线性代数笔记10——矩阵的LU分解
在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积).LU分解主要应用在数值分析 ...
- 矩阵LU分解的MATLAB与C++实现
一:矩阵LU分解 矩阵的LU分解目的是将一个非奇异矩阵\(A\)分解成\(A=LU\)的形式,其中\(L\)是一个主对角线为\(1\)的下三角矩阵:\(U\)是一个上三角矩阵. 比如\(A= \beg ...
- 矩阵LU分解分块算法实现
本文主要描述实现LU分解算法过程中遇到的问题及解决方案,并给出了全部源代码. 1. 什么是LU分解? 矩阵的LU分解源于线性方程组的高斯消元过程.对于一个含有N个变量的N个线性方程组,总可以用高斯消去 ...
- 矩阵分解---QR正交分解,LU分解
相关概念: 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等.两个向量正交的意思是两个向量的内积为 0 正定矩阵:如果对于所有的非零实系数向量x ,都有 x ...
- 矩阵LU分解
有如下方程组 ,当矩阵 A 各列向量互不相关时, 方程组有位移解,可以使用消元法求解,具体如下: 使用消元矩阵将 A 变成上三角矩阵 , , 使用消元矩阵作用于向量 b,得到向量 c,, , Ax=b ...
- matlab 求解线性方程组之LU分解
线性代数中的一个核心思想就是矩阵分解,既将一个复杂的矩阵分解为更简单的矩阵的乘积.常见的有如下分解: LU分解:A=LU,A是m×n矩阵,L是m×m下三角矩阵,U是m×n阶梯形矩阵 QR分解: 秩分解 ...
- LU分解(2)
接着上次LU分解的讲解,这次给出使用不同的计算LU分解的方法,这种方法称为基于GaxPy的计算方法.这里需要了解lapapck中的一些函数.lapack中有一个函数名为gaxpy,所对应的矩阵计算公式 ...
- 矩阵LU分解程序实现(Matlab)
n=4;%确定需要LU分解的矩阵维数 %A=zeros(n,n); L=eye(n,n);P=eye(n,n);U=zeros(n,n);%初始化矩阵 tempU=zeros(1,n);tempP=z ...
- 计算方法 -- 解线性方程组直接法(LU分解、列主元高斯消元、追赶法)
#include <iostream> #include <cstdio> #include <algorithm> #include <cstdlib> ...
随机推荐
- 采用完成端口(IOCP)实现高性能网络服务器(Windows c++版)
前言 TCP\IP已成为业界通讯标准.现在越来越多的程序需要联网.网络系统分为服务端和客户端,也就是c\s模式(client \ server).client一般有一个或少数几个连接:server则需 ...
- Postgres绿色版本安装 windows
虽然PostgreSQL是为类UNIX平台开发的,但它却是可以移植的.从7.1版本开始,PostgreSQL可以编译安装和作为一个PostgreSQL服务器运行在Windows NT 4,2000,X ...
- linux有名管道fifo,进程间通信
命名管道(FIFO)不同于无名管道之处在于它提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,这样,即使与 FIFO 的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通 ...
- leetcode — longest-common-prefix
/** * Source : https://oj.leetcode.com/problems/longest-common-prefix/ * * Created by lverpeng on 20 ...
- 【ajax】1、ajax原理
Ajax核心XMLHttpRequest对象 XMLHttpRequest对象方法 XMLHttpRequest对象属性 onreadystatechange 状态改变的事件触发器.每次 readyS ...
- js实现的玫瑰花
<html> <head> <meta charset="utf-8"> <title>开心快乐每一天</title> ...
- csharp: read system DSN configured get Driver Names on windows
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- web print
<!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- window的Navigator 对象
Navigator 对象包含有关浏览器的信息. Navigator 对象属性 document.write("浏览器的代码名:" + navigator.appCodeName + ...
- 【读书笔记】iOS-解析JSON
JSON相比XML最显著的优点是不需要使用重量级的解析库,因为其本身就是面向数据的,而且非常容易转换成哈希字典.除此之外,JSON文档相比同样的XML文档更小.在网络宽带有限的情况下,你很容易在Iph ...