user8700908
user8700908

Reputation: 111

MATLAB eigenvalue from scratch

I'm not so familiar with MATLAB, i've just recently started using it, and a need help fixing some problems i've encountred.

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

when I enter 1 as the value for a b c and d i get this

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

I want it to be written out as lambda^2 + 2lambda +- (c) = 0 (i don't know how to set the whole equation as = 0

Upvotes: 1

Views: 114

Answers (1)

ViG
ViG

Reputation: 1868

To rewrite (lambda - 1)^2 - 1 to lambda^2 + 2lambda +- (c) you can use expand. If you want to be able to work further with det in the form of the equation lambda^2 + 2lambda +- (c) = 0 then you need a double =:

det = expand(((A(1,1)-lambda)*(A(2,2)-lambda))-(A(1,2)*A(2,1))) == 0

When printed there will also be a double =. If you need det just for printing purpose then you can use:

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

Upvotes: 2

Related Questions