LINUX.ORG.RU

Вопросы по MATLAB

 


0

2

1. Есть массив уравнений, допустим eq = [eq1, eq2]. Как решить эту систему через solve? (solve(eq) дает ошибку.)

2. Пусть syms x; a = x. Есть ли возможность записать в x значение через a? Знаю, жуткое извращение.

1. так это всё-таки массив уравнений или система? если массив - очевидное решение в цикле вызывать солв для каждого компонента вектора eq.

2. ой, зачем вам такое понадобилось?

ymn ★★★★★ ()
Ответ на: комментарий от ymn

1. так это всё-таки массив уравнений или система?

Массив.

если массив - очевидное решение в цикле вызывать солв для каждого компонента вектора eq.

Так n уравнений и n неизвестных. Получится так? Хотя наверно можно сделать параллельно массив переменных, на каждом уравнении цикл, ищущий, есть ли такая переменная в уравнении, находить ее, заменить во всех остальных уравнениях на найденное решение, убрать ее из массива переменных, перейти к следующему уравнению. Но это как-то муторно и не особенно красиво. Хотелось бы проще, вдруг можно.

2. ой, зачем вам такое понадобилось?

Скорее больное воображение.

damnemall ()
Ответ на: комментарий от damnemall

Так n уравнений и n неизвестных.

значит всё-таки система и надо эти уравнения решать совместно.

ymn ★★★★★ ()

надо всего лишь определить векторную функцию.

octave:16> function retval=eqs(x)
> retval=[x(1)^2+x(2)^2-4 x(2)-x(1)];
> end
octave:17> eqs([2 1])
ans =

   1  -1

octave:18> fsolve(@eqs, [0.5 0.5])
ans =

   1.4142   1.4142

octave:19> fsolve(@eqs, [0 0])
warning: matrix singular to machine precision, rcond = 0
warning: attempting to find minimum norm solution
warning: dgelsd: rank deficient 2x2 matrix, rank = 1
ans =

   0   0

octave:20> fsolve(@eqs, [-0.2 0])
ans =

  -1.4142  -1.4142

octave:21> 
dikiy ★★☆☆☆ ()
Ответ на: комментарий от buddhist

А имена переменных кто будет указывать?

Не обязательно, solve(eq1,...,eqn) канает.

damnemall ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.