matlab 判断矩阵是正定、半正定还是负定

用Matlab 判断矩阵是正定、半正定还是负定

function matrix_type = check_matrix_definiteness(A)
    % 输入:
    % A - 待检测的矩阵
    % 输出:
    % matrix_type - 矩阵类型: 'positive_definite', 'positive_semidefinite', 'negative_definite', 'indefinite'

    % 检查矩阵是否为对称矩阵
    if ~isequal(A, A')
        error('矩阵必须为对称矩阵');
    end

    % 计算矩阵的特征值
    eigenvalues = eig(A);

    % 根据特征值判断矩阵的类型
    num_positive = sum(eigenvalues > 0);
    num_negative = sum(eigenvalues < 0);
    num_zero = sum(eigenvalues == 0);
    n = length(eigenvalues);

    if num_positive == n
        matrix_type = 'positive_definite';
    elseif num_positive + num_zero == n
        matrix_type = 'positive_semidefinite';
    elseif num_negative == n
        matrix_type = 'negative_definite';
    else
        matrix_type = 'indefinite';
    end
end

将上述代码保存为check_matrix_definiteness.m后,就可以在另一个matlab脚本里调用了,例如:

% 定义一个对称矩阵
A = [2 -1; -1 2];

% 调用函数检查矩阵类型
matrix_type = check_matrix_definiteness(A)

输出:

matrix_type = positive_definite

有时候,会在求出海森矩阵之后去判定海森矩阵是否是正定或者半正定:

syms x1 x2;
f = x1.^2+x2.^2-x1*x2;
h = hessian(f, [x1, x2]); % 求函数f的海森矩阵
  • 6
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白水baishui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值