技术标签: matlab 线性方程组 限定解的个数
1. 范数分析 (norm, normest) 常用于误差估计
对于线性空间中某个向量 x = { x1, x2, ..., xn}, 其对应的p级范数定义为 abs(x)_p =
(sum(abs(xi)^p),i=1,n)^(1/p), 而 +Inf 范数值 abs(x)_+Inf =
max(abs(xi)), -Inf 为 abs(x)_-Inf = min(abs(xi));
对于矩阵
abs(A) = max(abs((A*x))/abs(x)), 常用 1、2和Inf阶范数
abs(A)_1
= max(sum(aij,i=1,n),1<=j<=n),
abs(A)_2 = sqrt(Smax{AT A}) abs(A)_Inf =
max(sum(aij,j=1,n),1<=i<=n),
式中Smax{AT A} 是矩阵A最大奇异值的平方。
使用方法: norm(A), norm(A,p); 默认2阶
对于矩阵较大时或处理稀疏矩阵时,可采用
normest函数求解
使用方法:
normest(S), normest(S,tol); 2阶范数
2. 条件数分析(cond)
描述线性方程Ax
= b的解对b的误差或不确定性的敏感度的度量 就是矩阵的条件数
k =
abs(1/A)*abs(A)
矩阵的条件数总是大于等于1 正交矩阵条件数为1,奇异阵为Inf,病态矩阵条件数非常大。
使用方法 c =
cond(A)
3. 求解非奇异线性方程组
对于恰定方程组(方程组个数==未知量个数)可以用左除命令 ""
注:对于恰定非奇异,左除得到 精确解; 恰定奇异,则提示警告并解出NaN
使用方法: A *
x = b 则 x = A b;
同时
对于条件数很大的矩阵求解, 使用左除求解会更好。
4. 求解奇异线性方程组
对于恰定方程组,如果有数值解,则可将A转化为伪逆矩阵
进行求解
使用方法: x = pinv(A) * b;
5. 求解欠定线性方程组
这类问题,解不是唯一的,求解方法可以使用
左除 或者 QR分解
使用方法: [Q, R] = qr(A);
y
= Q' * b;
xqr = R y;
或 x = A b;
6. 求解超定线性方程组
这类问题 可使用 左除 或 伪逆矩阵 进行求解
但是使用 伪逆矩阵 得到的数值解 范数要小;
使用方法: x = pinv(A) * b;
x = A b;
7. 矩阵分解
为了提高求解速度,常采用矩阵分解的方法,通常有
Cholesky分解,LU分解,QR分解,SVD分解等等。
7.1 Cholesky分解、不完全Cholesky分解
把一个对称正定矩阵A分解为一个 上三角矩阵R
与其转置矩阵的 乘积 即 A = R'R;
对于稀疏矩阵,用cholinc命令进行不完全Cholesky分解,而该命令还可以求解实数半正定矩阵的Cholesky分解。
使用方法: R = chol(A)
如果A是非正定矩阵,则返回错误信息
[R, p] = chol(A) 返回两个参数,不返回错误信息。
当A
正定时 返回 R 为 上三角矩阵 p = 0;当非正定时 返回 p为正整数 R为 三角矩阵
且矩阵阶数为 p-1 满足 A(1:p-1,1:p-1) = R'R
R = cholinc(A,droptol) droptol为丢失容限,为0时属于完全Cholesky分解
[R, p] = cholinc(A, '0') 同chol(A)
[R,
p] = cholinc(A, 'inf') 采用Cholesky-Infinity方法分解,可处理实半正定矩阵
求解方法: R =
chol(A);
Rt = transpose(R);
xr
= R (Rtb);
7.2 LU分解(高斯消元法)、不完全LU分解
将任意一个方阵A分解为一个 下三角L 和一个 上三角U 的乘积,即 A = L * U 或 PA = L * U
对于稀疏矩阵用luinc进行不完全LU分解
使用方法: [L, U] = lu(A)
[L, U, P] = lu(A)
Y
= lu(A) 满足 Y = L + U - I
[L, U] = luinc(A,droptol)
[L, U] = luinc(A,'0')
...
方阵的LU分解
满足: A = LU, inv(U)*inv(L) = inv(A), det(A) =
det(L)*det(U)
求解方法: [L,
U] = lu(A)
y
= L b;
x = U y;
7.3 QR分解
正交分解,将一个m*n的矩阵A 分解为一个正交矩阵Q 和一个 上三角矩阵 R 的乘积 ,即 A = Q*R
使用方法: [Q, R] = qr(A)
[Q,
R] = qr(A,0)
[Q, R, E] =
qr(A) A * E = Q * R
[Q1,
R1] = qrdelete(Q, R, j) A = Q * R, 删除j列 返回 A1 = Q1 * R1
[Q1,
R1] = qrdelete(Q, R, j, 'col')
[Q1, R1] = qrdelete(Q, R, j, 'row')
此外
还有 qrinsert 进行插入运算
求解方法: [Q, R] = qr(A)
y
= Q' * b;
x = R y;
7.4 SVD 奇异值分解
A 为 m * n
阶矩阵 存在:
U
= [u1, u2, ...,un] V = [v1, v2, ..., vn]
U'
* A * V = diag(sigma1, sigma2, ... sigmap)
sigma1
>= sigma2 >= ...
>=sigmap, p = min{m, n}
使用方法: [U, S, V] = svd(A)
[U, S, V] = svd(A,0)
s
= svds(A, k, 0) 向量s中包含矩阵A分解得到的k个最小奇异值
[U, S, V] = svds(A, k, 0)
8. 以后补充
mxio
2013.4.8
文章浏览阅读269次。文章目录HTML概述互联网原理互联网运行过程客户端主流浏览器及其内核浏览器功能HTTP请求与HTTP响应HTML概念纯文本文件的特点语义化网页的优势HTML规范版本vscode常用快捷键HTML基本结构DTD常见字符集编码标题标签h1-h6段落标签p换行标签br文本格式化图像标签imgimg标签属性相对路径同级查找子级查找上级查找绝对路径盘符出发网址形式音频标签audio视频标签video超级链接ahref属性target属性title属性页面内锚点跳转跨页面锚点跳转无序列表ul>li有序列表ol&g_lom/eqtf8lunpi6lr+njig==
文章浏览阅读1.8k次。今天给大家推荐一个非常有意思的开源工具 —— Text-to-handwriting。该开源工具是一名来自印度塔内的大学生 Saurabh Daware 开源,他花费了 3 个小时编写了..._开源手写字
文章浏览阅读6.5k次,点赞35次,收藏39次。RK809 是瑞芯微自研的一款高性能电源管理芯片,也就是 PMIC。_rk809
文章浏览阅读1.9k次。船舶水尺监测解决方案船舶水尺刻度监测系统一、概述船舶水尺刻度监测是港口码头正常运行不可或缺的一部分,传统方式的水尺监测是由专业人员去现场观察测量,记录数据,这种方式存在工作效率低、浪费人力物力财力、受环境因素影响较大等缺点。船舶水尺刻度监测系统(SSMS)综合应用了视频监控、电子地图、视频分析、人工智能、自动化识别、网络通信等在内的技术手段,建立起了一个能够长期稳定、高效动..._船体测水位
文章浏览阅读5.2k次,点赞2次,收藏17次。**Daz3d Iray照明教程**本Daz3d Iray照明教程将教您如何为渲染创建逼真的照明。照明有时可以是场景和渲染的主要资源。几乎总是好的灯光可以在各个方面改善你的场景。您可以强调场景的优点,并通过灯光消除缺点。如果没有良好的照明,你的场景就不可能是真实的。让我们比较仅使用默认照明的渲染:以及我们使用本文中的技术照亮的场景:你可以清楚地看到第一张照片和第二张照片相比有多平。而这两种渲染的唯一区别就是照明。所以我们决定写这篇文章。文章中,我们将探讨照明设置的所有基础知识。你将特别学_daz 使用 iray 安装
文章浏览阅读1k次。以下讲解在Macos系统中如何修改Chrome的默认显示语言 ( Macos系统是可以给任何一个app设置默认显示语言的,即不同的app设置不同的默认语言)选择应用程序, 然后选择应用程序默认显示的语言(这里支持任何可用的语言),然后点击添加。通过Chrome浏览器的语言设置已经无法更改 chrome的默认语言了。打开系统偏好设置 --> 语言和地区--> App --> 点击添加。英文版Chrome , Chrome for English。OK ,现在已经将Chrome浏览器设置为 英文了。_this language is used to display the google chrome ui
文章浏览阅读1.6w次。每个软件开发周期都涉及三个主要阶段:构建,测试和部署。这三个阶段中的任何一个滞后都会导致产品发布的延迟。为了避免此类延迟,组织依靠CI / CD工具来自动化这些过程。但是最近,随着对CI..._teamcity和jenkins
文章浏览阅读5.8k次,点赞3次,收藏8次。用的是官方的汉化包 首先查询你的 eclipse 的版本 号 :打开eclipse文件位置 -->打开Readme文件夹 ,点击里面的文件,然后如下图,例如我的eclipse版本是:Release 4.8.0 版本 ,后面有一个“Photon”。 找到你的版本之后,打开这个网址:http://www.eclipse.org..._eclipse2019汉化包安装教程
文章浏览阅读127次。我已经尝试过使用此代码画一条线,并且效果很好.import java.awt.*;import javax.swing.*;public class New extends JFrame {public New() {setSize(960, 960);setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);}public void pai..._java使用横杠生成文字
文章浏览阅读2.5k次。装了mplayer,即使你已经按设置指南安装了各个包,也无法正常观看,最常见的错误就是:“ Error opening/initializing the selected video_out(-vo) device.”解决方法如下:在mplayer的窗口(Video窗口或播放控制窗口均可)上点右键,选择“Preferences”,打开后(当然要注意提示点OK后才能进)选择上面的“Video”标签页,在上面的驱动里面选一个,比如最常见的就是“xv”。如果还不行,_error opening/initializing the selected video_out (--vo) device.
文章浏览阅读425次。本文提供Struts2整合Spring Hibernate的CRUD的实例的源代码1. 数据库脚本,数据库采用MySQL 5.0CREATE TABLE `user` (`id` int(11) NOT NULL auto_increment,`username` varchar(32) NOT NULL,`password` varchar(32) NOT_spring struts2 hibernate进行crud
文章浏览阅读6.8k次。最近公司用Mybatis-plus进行开发,虽然已经上手了,但是还没好好系统的学习。建表create table user( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAUL..._springboot+mybatisplus