主要内容

행렬이양정부호대칭행렬하기하기

여기에서는chol함수와eig함수를행렬이의정부호정부호대칭(모든고유양수인대칭행렬행렬)인지인지확인하는방법을을설명설명합니다。

방법1:촐레스키분해시도하기

행렬이양대칭인지확인하는가장인방법은단순하게에서chol을사용보는입니다입니다。행렬분해하면의정부호행렬이아닙니다아닙니다。이방법할경우에성공하기행렬이대칭대칭행렬이지않아도됩니다(대칭대칭아니면행렬행렬분해분해함함함함함함함함함함

a = [1 -1 0;-1 5 0;0 0 7]
a =3×31 -1 0 -1 5 0 0 0 7
尝试chol(a)disp(a)“矩阵是对称的确定性。”抓住我disp(“矩阵不是对称的确定性”结尾
ans =3×31.0000 -1.0000 0 0 2.0000 0 0 0 0 2.6458
矩阵是对称阳性确定的。

이방법은의의준정부호행렬행렬행렬행렬행렬행렬행렬또는또는또는일일일있음있음있음있음있음있음있음있음있음여부여부여부까지확인하기하기위해확장할할수수수입니다입니다입니다。

방법2:고유고유확인하기

eig를사용고유을계산하고해당하는방법은효율성은낮지만낮지만양의의준정부호대칭행렬인지인지확인확인하는하는하는데데데도도도사용사용할수있으므로있으므로있으므로。하지만작은경우방법간양의대칭행렬인지확인하는데걸리는걸리는계산시간시간의차이차이가크지않습니다않습니다않습니다。

이방법사용테스트를수행하기에에Issymmetric을사용대칭행렬확인합니다합니다합니다。대칭행렬이값계산할가없습니다없습니다。

tf = issymmetric(a)
tf =逻辑1
d = eig(a)
d =3×10.7639 5.2361 7.0000
isposdef = all(d> 0)
isposdef =逻辑1

이방법을하여所有(d> = 0)명령을양준정부호대칭행렬확인수있습니다있습니다있습니다。

수치고려사항

여기서방법들동일한행렬서로다른결과수있습니다있습니다있습니다。두계산반올림를포함때문에각알고리즘은一种와는다른의정부호여부확인셈입니다입니다입니다。고유값아주양수또는음수이지만정밀내적적으로으로으로으로으로으로으로으로일일일수수있기있기때문에실제로는는허용허용오차오차오차오차를를를를사용사용하는하는것이이이이이

예를들어행렬이EPS에가까운을경우경우,고유고유수치적으로으로으로으로으로으로되기되기때문행렬이행렬이의의정부호대칭분류되지만비교표현식isposdef = all(d> 0)真的를반환합니다。

허용오차해하도록다음과같이을할수있습니다있습니다。

tf = issymmetric(a)d = eig(a)isposdef = all(d> tol)issemidef = all(d> -tol)

허용오차는에가까운을정의반지름내모든고유값은은은은은으로으로으로으로으로으로으로처리됩니다됩니다。대부분의허용는큰고유값크기를고려하여长度(D)*EPS(最大(D))를선택것좋습니다좋습니다。

참고항목

|

관련항목