matlan error usinghdl choll matrix must be positive definite 怎么解决

扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
3第三讲MATLAB解方程和函数极值
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口MATLAB解方程与最优化问题求解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
10页免费28页免费58页2下载券33页免费33页免费 28页1下载券11页1下载券19页免费2页免费39页1下载券
喜欢此文档的还喜欢27页免费49页免费19页免费70页1下载券61页1下载券
MATLAB解方程与最优化问题求解|M​A​T​L​A​B​解​方​程​与​最​优​化​问​题​求​解
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:125.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢matlab&基本命令
4.6 矩阵的分解运算
通过上面的学习,我们已经可以感觉到MATLAB的功能之所以强大,一个重要的原因就在它的矩阵函数功能的扩展.这一节讲的矩阵分解,在数值分析中,起着重要的作用.
矩阵的分解运算主要包括矩阵的特征值分解,Cholesky分解,QR分解,QZ分解,LU分解,Schur分解,奇异值分解等.
4.6.1 三角分解
三角分解 (lu)
分解是矩阵分解的基本方法,它在线性方程的直接解法中有重要的应用.我们知道,阶的非奇异矩阵A,如果其顺序主子式均不为零,则存在唯一的单位下三角阵L和上三角阵U,从而使得:A=L*U.在MATLAB中,用函数lu(
) 实现三角分解,其常用的格式如下.
[L, U]=lu(X) ——
产生一个上三角矩阵U和下三角矩阵L,使得:X=L*U,X可以不是方阵.
[L, U, P]=lu(X) ——
产生一个上三角矩阵U,下三角矩阵L和交换矩阵P,使得:P*X=L*U.
Y=lu(X) ——
如果X是满秩矩阵,将产生一个lapack's的dgetrf和zgetrf的输出常式矩阵Y;如果X是稀疏矩阵,产生的矩阵Y将包含严格的下三角矩阵L和上三角矩阵U.在这两种情况下,都不会有交换矩阵P.
&& X=[6 2 1 -1; 2 4 1 0; 1 1 4 -1; -1 0 -1 3]
&& [L,U]=lu(X)
0.0 1.0000 0
0 3.7 0.3333
0 0 0 2.5811
&& [L,U,P]=lu(X)
0.0 1.0000 0
0 3.7 0.3333
0 0 0 2.5811
&& Y=lu(X)
4.6.2 正交分解
为了求解矩阵的特征值,引入一个种矩阵的分解法,即正交分解 (qr)
.对于阶的非奇异矩阵A,存在正交矩阵Q和上三角矩阵R,使得:A=Q*R,当R的对交元都为正时,qr分解是唯一.在MATLAB中,用函数qr(
) 实现三角分解,其常用的格式如下.
[Q, R]=qr(A) ——
产生一个与A维数相同的上三角阵R和正交阵Q,使得:A=Q*R.
[Q, R, E]=qr(A) ——
产生一个上三角矩阵R,正交阵Q和交换矩阵E,使得:A*E=Q*R.
[Q, R]=qr(A,0) ——
对矩阵A进行有选择的qr分解.当矩阵A为m×n并且m&n,那么只会产生具有前n列的正交矩阵Q.
R=qr(A) —— 只产生矩阵R,并满足R=chol(A'*A)
&& A=[17 3 4; 3 1 12; 4 12 8]
&& [Q,R]=qr(A)
-0.4 0.1643
-0.3 -0.9856
-0.3 0.0411
-17.2 -7.6749
0 0 -10.8412
&& [Q,R,E]=qr(A)
-0.7 -0.1054
-0.8 -0.5270
-0.8 0.8433
-17.9 -5.7562
0 0 9.2760
&& [Q,R]=qr(A,0)
-0.4 0.1643
-0.3 -0.9856
-0.3 0.0411
-17.2 -7.6749
0 0 -10.8412
&& R=qr(A)
-17.2 -7.6749
0.9 -6.8967
0.1 -10.8412
4.6.3 特征分解
矩阵的特征值分解,也是用函数eig(
),但是为了解,需要在形式上作一定的变化.其常用的格式如下.
[V, D]=eig(X) ——
产生矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素构成的对角矩阵,满足:X*V=V*D.
[V, D]=eig(A, B) ——
对矩阵A,B作广义特征值分解,使得:A*V=B*V*D.
&& A=magic(4)
&& [V,D]=eig(A)
0 0 -8.9443 0
0 0 0 0.0000
&& Z=A*V-V*D
1.0e-013 *
0.9 0 -0.0154
&& B=[17 3 4 2; 3 1 12 6; 4 12 8 7; 1 2 3 4]
&& [V,D]=eig(A,B)
0 0 0.4054 0
0 0 0 -0.0000
&& Z=A*V-B*V*D
1.0e-013 *
4.6.4 Chollesky分解
当阶矩阵A对称正定时,则存在唯一的对角元素为正的上三角矩阵R,使得:A=R*R',这种分解就称为Chollesky分解,当限定R的对角元素为正时,这种分解是唯一的.在MATLAB中,用函数chol(
)来实现这种分解,当矩阵A为非正定阵时,MATBLA会提示错误信息.
&& A=[4 -1 -1; -1 4.25 2.75; 1 2.75 3.5]
4.0 -1.0000
-1.0 2.7500
1.0 3.5000
&& R=chol(A)
2.0 -0.5000
0 0 1.2990
-0.0 1.2990
&& A=[0 4 0; 3 0 1; 0 1 3]
&& R=chol(A)
Error using ==& chol
Matrix must be positive definite.
4.6.5 奇异值分解
在MATLAB中,矩阵的奇异值分解用函数svd来实现,其使用格式如下.
[U, S, V]=svd(X) ——
产生与一个矩阵X维数相同的对角矩阵S,正交矩阵U和正交矩阵V,使得:X=U*S*V'.
[U, S, V]=svd(X, 0) ——
进行奇异值的最佳分解.X为M×N阶矩阵,当M&N时,生成的矩阵U只有前N列元素被计算产生出来,并且S为N×N阶矩阵.
&& X=[1 2 3; 4 5 6; 7 8 9]
&& [U,S,V]=svd(X)
-0.2 0.4082
-0.6 -0.8165
-0.9 0.4082
0 1.0684 0
0 0 0.0000
-0.7 -0.4082
-0.7 0.8165
-0.3 -0.4082
&& X=[1 2 3; 4 5 6; 7 8 9; 10 11 12]
&& [U,S,V]=svd(X,0)
-0.7 0.5456
-0.3 -0.6919
-0.8 -0.2531
-0.6 0.3994
0 1.2907 0
0 0 0.0000
-0.8 -0.4082
-0.1 0.8165
-0.5 -0.4082
4.7 复数及其运算
MATLAB中的复数,其书写形式与数学中完全一样.复数的运算也前面所讲的也没有什么区别.要注意的就是几个与复数有关的函数.
&& C1=1-2i
1.0000 - 2.0000i
&& C2=1-2j
1.0000 - 2.0000i
&& C2=3*(2-sqrt(-1)*3)
6.0000 - 9.0000i
&& C3=sqrt(-2)
0 + 1.4142i
&& C4=(C1+C2)/C3
-7.7782 - 4.9497i
从数学我们知道复数的极坐标与直坐标有如下关系式:
在MATLAB中我们用函数real( ), imag( ), abs( ), angle(
)实现上述转换.
&& ABSC1=abs(C1)
&& RC1=real(C1)
&& IC1=imag(C1)
&& AC1=angle(C1)
&& DC1=AC1*180/pi
4.8 数组的关系和逻辑运算
MATLAB除了支持上面所述的数学运算外,还支持关系和逻辑运算.关系和逻辑运算主要提供真
命题的答案.对于所有输入的关系与逻辑表达式,MATLAB与一般的编程语言相类似,它把所有非零数值当成真,把零当成假.对于所有输出的关系与逻辑表达式,MATLAB是这样处理的:对于真值,输出为1,对于假值,输出为0.
4.8.1 数组的关系运算
两个数给可以由表4.8.1所示的6种关系进行描述.比较两个数的大小时,如果结果为1,表示关系式为真;如果结果为0,则表明关系为假.
表4.8.1 关系操作符
关系操作符
相对应的函数
函数中的A与B可以都是矩阵或数组.此时,要求它们的大小完全相同.关系操作符对矩阵或数组中各自对应的元素进行比较,返回结果与两相比较的矩阵或数组的大小相同.A与B也可以是:
一个为数组或矩阵,另一个为标量,此时,标量与数组或矩阵中的每一个元素进行比较,返回的结果与数组或矩阵的大小相同.
&& A=[1 4 3 5 7];
&& B=[2 6 9 0 7];
4.8.2 数组的逻辑运算
MATLAB中的逻辑操作符如下表所列.
表4.8.2 逻辑操作符
逻辑操作符
相对应的函数
逻辑异或.A与B都是非零或都是零返回0;有一个非零返回1
向量A中有非零元素时返回1;矩阵A中某一列有非零元素时,此列返回1
向量A中所有元素非零时返回1;矩阵A中某一列所有元素非零时,此列返回1
函数中的A与B可以都是矩阵或向量.此时,要求它们的大小完全相同.逻辑操作符对矩阵或向量中各自对应的元素进行比较,返回结果与两相比较的矩阵或向量的大不相同.A与B也可是:一个为向量或矩阵,另一个为标量,此时,标量与向量或矩阵中的每一个元素进行比较,返回的结果与向量或矩阵的大小相同.
&& A=[0 0 2 1];
&& B=[1 2 0 1];
&& c=xor(A,B)
&& A=[0 0 2 1];
&& c=or(A,B)
4.8.3 关系与逻辑函数
MATLAB能给出"逻辑数组"类型计算结果的函数有很多,它们包括:关系逻辑函数,工作状态判断函数,特殊数据判断函数,数据类型判断函数等.表4.8.3给出了关系逻辑函数.
表4.8.3 关系逻辑函数
A, B对应元素同为0,或同非0时,相应位置元素取0.否则以1.
只要向量A中有非0元素,结果就是1;否则结果是0.
当向量A的元素全非0时,结果才是1;否则结果是0.
isequal(A, B)
A,B对应元素相等时,相应元素位置取1;否则取0.
Ismember(A, B)
A的元素是属于B集,相应A元素位置取1;否则为0.
4.8.4 测试函数
测试函数主要用于测试函数特殊值或条件的存在,返回的是逻辑值1或0.MATLAB中的测试函数列于下表.
表4.8.4 测试函数
isempty(A)
若参量A为空,返回1;否则,返回0
isglobal(A)
若参量A为全局变量,返回1;否则,返回0
当前绘图状态保持ON,返回1;否则,返回0
计算执行IEEE运算,返回1;否则,返回0
若参量A无穷大,返回1;否则,返回0
isletter(A)
若参量A为字母,返回1;否则,返回0
若参量A为不定值,返回1;否则,返回0
若参量A为无虚部,返回1;否则,返回0
isspace(A)
若参量A为空格字符,返回1;否则,返回0
isstr(A)或ischar(A)
若参量A为一个字符串,返回1;否则,返回0
isstudent(A)
若MATLAB为学生版,返回1;否则,返回0
若计算机为UNIX系统,返回1;否则,返回0
若计算机为VMS系统,返回1;否则,返回0
4.9 数组运算的常用函数
常用函数通常是高等数学中常见的函数,也是我们进行数值计算常用的函数.有必了解与掌握,有利用我们在进行数值计算时使用.MATLAB提供了丰富的函数,这里简单整理如下.
4.9.1 三角函数与双曲函数
表4.9.1 三角函数和双曲函数
反双曲余弦
反双曲余切
反双曲余割
反双曲正割
反双曲正弦
四象反正切
反双曲正切
4.9.2 指数函数
表4.9.2 指数函数
以2为底的对数
4.9.3 复数函数
表4.9.3 复数函数
模,或绝对值
复数的虚部
相角(弧度)
复数的实部
4.9.4 圆整函数和求余函数
表4.9.4 圆整函数和求余函数
向圆整函数
向0圆整函数
向最近整数圆整函数
向圆整函数
4.9.5 坐标变换函数
表4.9.5 坐标变换函数
直角坐标变为球坐标
柱(或极)坐标变为直角坐标
直角坐标变为柱(或极)坐标
球坐标变为直角坐标
4.9.6 基本数据操作函数
表3.9.6 通用数据分析函数
求最大元素
求最小元素
梯形法求数值积分
求元素平均值或列元素的平均值
求列元素的累计积
求列元素的中值
求列元素的累计和
求元素标准差
梯形法求累积数值积分
求各列元素的和
按升序对元素进行排序
求列元素的积
按升序排列矩阵各行
4.9.7 其他一些常用的特殊函数
表4.9.7 其他特殊函数
误差补函数
不完全函数
刻度误差补函数
函数的对数
逆误差函数
质数为真函数
指数积分函数
数值有理化函数
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
【精品】4 第七章 matlab解方程与函数极值
下载积分:680
内容提示:matlab 解方程 matlab怎么解方程 用matlab解方程 如何用matlab解方程 matlab 矩阵 解方程 matlab 极值点 matlab 求极值 matlab 寻找极值
文档格式:PPT|
浏览次数:1|
上传日期: 10:30:46|
文档星级:
该用户还上传了这些文档
下载文档:【精品】4 第七章 matlab解方程与函数极值.PPT
官方公共微信3987人阅读
矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有LU分解、QR分解、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。
(1) LU分解
矩阵的LU分解就是将一个矩阵表示为一个交换下三角矩阵和一个上三角矩阵的乘积形式。线性代数中已经证明,只要方阵A是非奇异的,LU分解总是可以进行的。
MATLAB提供的lu函数用于对矩阵进行LU分解,其调用格式为:
[L,U]=lu(X):产生一个上三角阵U和一个变换形式的下三角阵L(行交换),使之满足X=LU。注意,这里的矩阵X必须是方阵。
[L,U,P]=lu(X):产生一个上三角阵U和一个下三角阵L以及一个置换矩阵P,使之满足PX=LU。当然矩阵X同样必须是方阵。
实现LU分解后,线性方程组Ax=b的解x=U\(L\b)或x=U\(L\Pb),这样可以大大提高运算速度。
例7-2& 用LU分解求解例7-1中的线性方程组。
命令如下:
A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]';
[L,U]=lu(A);
或采用LU分解的第2种格式,命令如下:
[L,U ,P]=lu(A);
x=U\(L\P*b)
(2) QR分解
对矩阵X进行QR分解,就是把X分解为一个正交矩阵Q和一个上三角矩阵R的乘积形式。QR分解只能对方阵进行。MATLAB的函数qr可用于对矩阵进行QR分解,其调用格式为:
[Q,R]=qr(X):产生一个一个正交矩阵Q和一个上三角矩阵R,使之满足X=QR。
[Q,R,E]=qr(X):产生一个一个正交矩阵Q、一个上三角矩阵R以及一个置换矩阵E,使之满足XE=QR。
实现QR分解后,线性方程组Ax=b的解x=R\(Q\b)或x=E(R\(Q\b))。
例7-3& 用QR分解求解例7-1中的线性方程组。
命令如下:
A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]';
[Q,R]=qr(A);
或采用QR分解的第2种格式,命令如下:
[Q,R,E]=qr(A);
x=E*(R\(Q\b))
(3) Cholesky分解
如果矩阵X是对称正定的,则Cholesky分解将矩阵X分解成一个下三角矩阵和上三角矩阵的乘积。设上三角矩阵为R,则下三角矩阵为其转置,即X=R'R。MATLAB函数chol(X)用于对矩阵X进行Cholesky分解,其调用格式为:
R=chol(X):产生一个上三角阵R,使R'R=X。若X为非对称正定,则输出一个出错信息。
[R,p]=chol(X):这个命令格式将不输出出错信息。当X为对称正定的,则p=0,R与上述格式得到的结果相同;否则p为一个正整数。如果X为满秩矩阵,则R为一个阶数为q=p-1的上三角阵,且满足R'R=X(1:q,1:q)。
实现Cholesky分解后,线性方程组Ax=b变成R‘Rx=b,所以x=R\(R’\b)。
例7-4& 用Cholesky分解求解例7-1中的线性方程组。
命令如下:
A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]';
??? Error using ==& chol
Matrix must be positive definite
命令执行时,出现错误信息,说明A为非正定矩阵。
转自:http://203.208.37.104/search?q=cache:EfIWKymoWB8J:www./forums/index.php%3Fact%3DAttach%26type%3Dpost%26id%3D;matlab+%E7%9F%A9%E9%98%B5LU%E5%88%86%E8%A7%A3&hl=zh-CN&ct=clnk&cd=15&gl=cn&client=firefox-a&st_usg=ALhdy2-W-UGiapmEd7-JkiCNACw5NK2Gew
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:512920次
积分:7715
积分:7715
排名:第830名
原创:255篇
转载:123篇
评论:157条
(8)(2)(9)(5)(19)(4)(35)(10)(6)(12)(13)(7)(16)(11)(1)(3)(1)(4)(4)(4)(4)(6)(5)(7)(1)(11)(8)(1)(3)(11)(7)(9)(11)(8)(13)(5)(4)(1)(13)(10)(7)(12)(24)(10)(2)(11)(3)}

我要回帖

更多关于 matlab chol 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信