二阶矩阵特征值与特征向量的计算matlab程序(可指定计算精度)

先前由于项目需要,自己实现了二阶矩阵特征值与特征向量的求取代码,其实很简单,主要部分就是求解一个二次方程的根,现在分享给大家作为参考(因为组长说求平方根可能比较费资源,为方便硬件实现,甚至连平方根求取的代码都是自己写的\笑哭):

function [V,lamda]=myEig(A,err);
% 求特征值与特征向量的程序
% err为指定的计算误差
a11=A(1,1);
a12=A(1,2);
a21=A(2,1);
a22=A(2,2);
delta=(a11-a22)^2+4*a12*a21;
if delta<0
    disp('the input matrix has no eigen values and featrue vector!');
end
sqrtDelta=sqrtByBisection(delta,err);
eig1=((a11+a22)-sqrtDelta)/2;
eig2=((a11+a22)+sqrtDelta)/2;
lamda=[eig1,eig2];
v1=[a12,eig1-a11];
v2=[a12,eig2-a11];
v1=v1/norm(v1);
v2=v2/norm(v2);
V=[v1;v2];

function mid=sqrtByBisection(x,err)
% 二分法开平方根程序
% x为输入值
% err为计算精度
if err^2>x
    mid=0;
    return;
end
up=max(1,x);
low=0;
mid=(up+low)/2;
while ~( (mid+err)^2>x && (max(0,mid-err))^2<x)
    if mid^2<x
        low=mid;
    else
        up=mid;
    end
    mid=(up+low)/2;
end

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值