MATLAB特征值从头开始

MATLAB特征值从头开始,matlab,Matlab,我不太熟悉MATLAB,我最近才开始使用它,需要帮助解决我遇到的一些问题 a = input('Skriv inn en verdi for a: '); b = input('Skriv inn en verdi for b: '); c = input('skriv inn en verdi for c: '); d = input('Skriv inn en verdi for d: '); A = [a b; c d] %Tester om matrisen er rektangu

我不太熟悉MATLAB,我最近才开始使用它,需要帮助解决我遇到的一些问题

a = input('Skriv inn en verdi for a: ');
b = input('Skriv inn en verdi for b: ');
c = input('skriv inn en verdi for c: ');
d = input('Skriv inn en verdi for d: ');
 A = [a b; c d]

 %Tester om matrisen er rektangulær
 [na, ma] = size(A);
 if na ~= ma
    disp('ERROR'); 
    return
 end

syms lambda
det =((A(1,1)-lambda)*(A(2,2)-lambda))-(A(1,2)*A(2,1))

 %Currently under development
 e1 = (t + sqrt(t^2 - 4*n*d))/2;
 e2 = (t - sqrt(t^2 - 4*n*d))/2;
if A ~= 0
   x1 = [a-e1; b];

end
当我输入1作为b c和d的值时,我得到

Skriv inn en verdi for a: 1
Skriv inn en verdi for b: 1
skriv inn en verdi for c: 1
Skriv inn en verdi for d: 1

A =

 1     1
 1     1


det =

(lambda - 1)^2 - 1
我想把它写成lambda^2+2lambda+-(c)=0(我不知道如何将整个方程设置为=0来重写
(lambda-1)^2-1
lambda^2+2lambda+-(c)
您可以使用
展开
。如果您希望能够以方程式
lambda^2+2lambda+-(c)=0的形式进一步使用
det
,则需要一个双精度
=

det = expand(((A(1,1)-lambda)*(A(2,2)-lambda))-(A(1,2)*A(2,1))) == 0
打印时,还将有一个双
=
。如果仅出于打印目的需要
det
,则可以使用:

det = expand(((A(1,1)-lambda)*(A(2,2)-lambda))-(A(1,2)*A(2,1)));
disp([char(det), ' = 0'])

符号工具箱中不是有一个
solve
吗?我没有用过这个工具箱,但这是一个假设。不过,你最好还是手工写出数学。对于2x2矩阵来说并不难!所以问题是你想打印
lambda^2+2lambda+-(c)=0
,或者你想求解它?@CrisLuengo我知道手工求解2x2矩阵很容易,但这是我课本上的一个问题,我必须手动找到一种方法来求解特征值,而不必使用rref()eig()等matlab@ViG我希望它能够打印,而不是(Lambda-1)^2比如,如果我选择每个值为1,我会得到λ^2+2lambda=0,但我不知道为什么它会打印为(lambda-1)^2-1它不应该按我想要的形式打印出来吗?解决它是我认为我知道的事情。@user8700908我的意思是用手写出方程组,而不是依靠符号工具箱。计算非常简单。这就是你学习的方式!:)