You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab幂法实现结果不一致问题求助

幂法实现问题排查

首先明确矩阵A1=[13 6;-12 -5]的特征值与特征向量:

  • 特征值为7(主特征值,绝对值最大)和1
  • 对应主特征值7的特征向量是k*(-1;1),其中k为任意非零常数,(1;-1)是同一特征空间的向量(仅方向相反),本质上是正确的特征向量

你代码的核心问题是递归函数的返回值处理错误:
在powerMethod函数的if n>0分支中,你调用了递归的powerMethod(A,y1,n-1),但未将调用结果赋值给yn。这会导致当n>0时,函数没有返回值,递归到n=0时生成的结果无法传递回上层调用,最终函数返回的结果未定义(Matlab中会返回空或错误默认值)。

修正后的代码需接收递归调用的结果:

A1=[13 6;-12 -5]
x=[1;1]
y=(1/norm(x))*x

result = powerMethod(A1,y,4)
disp(result)

function yn=powerMethod(A,y0,n)
    if n>0
        x1=A*y0
        y1=(1/norm(x1))*x1
        yn = powerMethod(A,y1,n-1); % 接收递归返回的结果
    else
        yn=y0
    end
end

补充验证:你得到的[0.7072;-0.7070]是正确的主特征向量,因为特征向量的非零常数倍(包括负号)都属于同一特征空间,满足A*v = λ*v。计算A1*[0.7072;-0.7070]会发现结果约等于7*[0.7072;-0.7070],符合特征向量的定义。

内容的提问来源于stack exchange,提问作者eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:57:12