2017-01-17 17 views
1

Скажем, у меня есть 2 символьных уравнения в 3-х переменных:Решения однородных Недоопределенных систем символических линейных уравнений

syms u v w 
eq1 = u+v+w == 0 
eq2 =  w == 0 

которые оба должны быть равен 0. Есть ли способ, чтобы кормить эти уравнения в Matlab и имеет Matlab вывод:

u=-v 
w=0 

Я попытался следующие:

%Attempt 1: 
x=solve([eq1 eq2],[u v w]); 
x.u, x.v, x.w 
%Outputs 0 for each of these 

% Attempt 2: 
[A,B]=equationsToMatrix([eq1 eq2],[u v w]); 
linsolve(A,B) 
%Outputs 0 for all variables and gives a warning "Warning: The system is rank-deficient. Solution is not unique." 

Кажется, это только возвращает тривиальное нулевое решение. Это, конечно, элементарный пример. Я хочу, чтобы он работал для 81 переплетенных переменных.

+0

Значит, вы хотите, чтобы 'eq1' и' eq2' имели значения нуля или были произвольными? Я не уверен, как вы могли бы заключить 'w = 0' в противном случае. – jackarms

+0

Ну да, в моей предыдущей редакции solve() содержал eq1 == 0 и eq2 == 0. Отредактировал вопрос для ясности. –

+0

Это было главным образом из-за ошибки, и я решил проблему по-другому. –

ответ

1

Поскольку у вас есть два уравнения, вы можете решить только две переменные, а не три. Вы хотите видеть u=-v и w=0, то есть решение в u и w, но не в v.

Для меня x = solve([eq1,eq],u,w) работ, он дает и x.w=0.

+0

Хм, что кажется правдоподобным, я, возможно, ошибся, пытаясь решить гораздо больший реальный пример ... –