Есть ли у Maxima функция для решения систем линейных неравенств, которая также была бы доступна на экзаменах Moodle Stack? - PullRequest
0 голосов
/ 13 июня 2018

Что в названии.Я пробовал следующее:

/*Constants*/
metalMaxTa : 37;/*rand_with_step(20,40,2);*/
elecMaxTa : 52;/*rand_with_step(40,60,2);*/
rateAa : 24;
rateBa : 44;

/*Conditions set by the problem*/
ineq1 : 1/2 * x1 + x2 <= metalMaxTa;
ineq2 : x1 + 1/2*x2 <= elecMaxTa;
ineq3 : x1 >= 0;
ineq4 : x2 >= 0;

/*Solution?*/
sol : solve_rat_ineq([ineq1,ineq2,ineq3,ineq4],[x1,x2]);

, но все, что возвращает это: System as shown within STACK

Другими словами, на самом деле ничего не сделано для системы вводаВыражение просто печатается.Команда загрузки недоступна, поэтому я не могу загрузить функцию, если она недоступна, что, похоже, является проблемой.

РЕДАКТИРОВАТЬ: to_poly_solve() также выдает тот же результат.solve() кажется доступным, но возвращает пустой список, так как он явно предназначен для систем уравнений, а не неравенств.

1 Ответ

0 голосов
/ 20 июня 2018

fourier_elim может с этим справиться.

load('fourier_elim)$

metalMaxTa : 37 $
elecMaxTa : 52  $
rateAa : 24     $
rateBa : 44     $

ineq1 : 1/2 * x1 + x2 <= metalMaxTa$
ineq2 : x1 + 1/2*x2 <= elecMaxTa $
ineq3 : x1 >= 0 $
ineq4 : x2 >= 0 $
sol : fourier_elim([ineq1,ineq2,ineq3,ineq4], [x1, x2]) $
map(disp, sol) $

возвращает

                           [x1 = 0, x2 = 0]

                           [x1 = 52, x2 = 0]

                       [x2 = 0, 0 < x1, x1 < 52]

                           [x1 = 0, x2 = 37]

                       [x1 = 0, 0 < x2, x2 < 37]

                                134       44
                          [x1 = ---, x2 = --]
                                 3        3

                          x2 - 104               44
                  [x1 = - --------, 0 < x2, x2 < --]
                             2                   3

                                   44
                  [x1 = 74 - 2 x2, -- < x2, x2 < 37]
                                   3

                               x2
        [0 < x1, x1 < min(52 - --, 74 - 2 x2), 0 < x2, x2 < 37]
                               2

Используются только строгие неравенства в выходных данных и в качестве особых случаев отображаются акции.Если вы используете строгие неравенства в уравнениях, результат выглядит более естественным.

                            0 < x1

                               x2
                 x1 < min(52 - --, 74 - 2 x2)
                               2

                            0 < x2

                            x2 < 37
...