Максима: Как я могу получить переменную как сумму функции других переменных из системы уравнений? - PullRequest
0 голосов
/ 15 сентября 2018

Проблема заключается в следующем; У меня есть система уравнений, которая описывает работу системы. (В данном случае это электронная система.) Система имеет внутренние переменные, а также входные и выходные переменные. Я хотел бы получить выходные переменные в терминах входных переменных, чтобы выходная переменная описывалась как сумма функций входных переменных + константа. (Конечно, только если это вообще математически возможно, в конкретном случае.)

Желательно, чтобы я использовал систему компьютерной алгебры Maxima, но мне также интересны способы сделать это в Matlab.

Позвольте мне привести 2 примера; Я надеюсь, вы поняли идею. O обозначает выходную переменную, I обозначает входную переменную, x обозначает внутреннюю переменную, p обозначает параметр.

1

e1: O = x_1 * p_1 + x_2 * p_2;

e2: x_1 = x_2 + I_1 * p_3;

e3: x_2 = I_2 * p_4 + p_5;

решение № 1: O = p_1 * p_3 * I_1 + p_4 * (p_1 + p_2) * I_2 + p_5 * (p_1 + p_4)

2

e1: O = x_1 * p_1 + x_2 * p_2;

e2: x_1 = sqrt (I_1) * p_3;

e3: x_2 = tan (I_2 * p_4);

решение № 2: O = p_1 * p_3 * sqrt(I_1) + p_2 * tan(p_4 * I_2)

1 Ответ

0 голосов
/ 17 сентября 2018

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

(%i2) e1:O = x_1*p_1+x_2*p_2
(%o2)                        O = p_2 x_2 + p_1 x_1
(%i3) e2:x_1 = x_2+I_1*p_3
(%o3)                         x_1 = x_2 + I_1 p_3
(%i4) e3:x_2 = I_2*p_4+p_5
(%o4)                         x_2 = p_5 + I_2 p_4
(%i5) eliminate([e1,e2,e3],[x_1,x_2])
(%o5)      [(p_2 + p_1) p_5 + I_2 (p_2 + p_1) p_4 + I_1 p_1 p_3 - O]
(%i6) solve(%,O)
(%o6)    [O = (p_2 + p_1) p_5 + (I_2 p_2 + I_2 p_1) p_4 + I_1 p_1 p_3]
(%i7) e1:O = x_1*p_1+x_2*p_2
(%o7)                        O = p_2 x_2 + p_1 x_1
(%i8) e2:x_1 = sqrt(I_1)*p_3
(%o8)                         x_1 = sqrt(I_1) p_3
(%i9) e3:x_2 = tan(I_2*p_4)
(%o9)                         x_2 = tan(I_2 p_4)
(%i10) eliminate([e1,e2,e3],[x_1,x_2])
(%o10)            [p_2 tan(I_2 p_4) + sqrt(I_1) p_1 p_3 - O]
(%i11) solve(%,O)
(%o11)            [O = p_2 tan(I_2 p_4) + sqrt(I_1) p_1 p_3]

Обратите внимание, что я позвонил eliminate, чтобы исключить случайные переменные x_1 и x_2 из уравненийперед решением за O;после исключения случайных переменных O выражается только в виде входных данных и параметров.

Если вы попытаетесь работать с более сложными уравнениями, вы можете столкнуться с ограничениями Maxima.Можно добиться большего прогресса, используя другие функции, такие как to_poly_solve, которые могут решать некоторые уравнения с участием радикалов.Вы можете рассмотреть возможность размещения сообщения в списке рассылки Maxima, если у вас возникнут проблемы.Смотри: https://sourceforge.net/projects/maxima/lists/maxima-discuss

...