2009-12-20 5 views
0

Я следующее уравнение:Решая уравнение MATLAB

((a^3)-(4*a^2))+[1 0 2;-1 4 6;-1 1 1] = 0 

Как решить эту проблему в MATLAB?

+0

Это не принадлежит здесь ... – Graviton

+2

это не как к -программный вопрос, это вопрос, как использовать-matlab. мне кажется совершенно по-теме для SU. –

+1

'a' является скалярной, векторной или матричной переменной 3x3? Если один из первых двух вариантов верен, у него нет никакого решения ... – Crowley

ответ

6

Вот одна возможность: (. Ошибка на самом деле порядка 10^-14)

% A^3 - 4*A^2 + [1 0 2;-1 4 6;-1 1 1] = 0 

% 1) Change base to diagonalize the constant term 
M = [1 0 2;-1 4 6;-1 1 1]; 
[V, L] = eig(M); 

% 2) Solve three equations "on the diagonal", i.e. find a root of 
% x^4 - 4*x^3 + eigenvalue = 0 for each eigenvalue of M 
% (in this example, for each eigenvalue I choose the 3rd root, 
% which happens to be real) 
roots1 = roots([1 -4 0 L(1,1)]); r1 = roots1(3); 
roots2 = roots([1 -4 0 L(2,2)]); r2 = roots2(3); 
roots3 = roots([1 -4 0 L(3,3)]); r3 = roots3(3); 

% 3) Build matrix solution and transform with inverse change of base 
SD = diag([r1, r2, r3]); 
A = V*SD*inv(V) % This is your solution 

% The error should be practically zero 
error = A^3 - 4*A^2 + [1 0 2;-1 4 6;-1 1 1] 
norm(error) 

Смежные вопросы