максимумы: как сделать отношение двух полиномов многочленом - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь разделить два полинома по максимумам:

f(x,y) = x*y;    
g(x,y) = x;

Как сохранить результат их деления как новый полином h (x, y)? я пробовал это:

h(x,y) := quotient(f(x,y),g(x,y));

Это не сработало, потому что запрос h (0,0) дает мне ошибку «деление на ноль».

Мне нужно решение только для случаев, когда f делится на g.

1 Ответ

0 голосов
/ 16 мая 2018

Здесь происходит несколько вещей. (1) Помните, что «:» является оператором присваивания; «=» означает уравнение или равенство, а «: =» - определение функции. Для f и g возможно получить работоспособное решение, используя «:» или «: =»; Я покажу оба ниже.

(2) Правая часть определения функции в «: =» не оценивается (или даже упрощается), поэтому, когда вы пишете h(x, y) := quotient(...), частное не оценивается, а определение h содержит вызов quotient. Когда вы звоните h(0, 0), у вас будет quotient, оцененное с x = 0 и y = 0, что дает число вместо символического выражения.

Полагаю, что вам нужно определить функцию h так, чтобы h(x, y) являлось частным f и g, оцененным в x и y. Если это так, вот решение, использующее «:» для f и g.

f : x*y;
g : x;
define (h(x, y), quotient(f, g));

define вычисляет тело функции (второй аргумент), поэтому частное выполняется до определения функции.

Максимум в основном предпочитает выражения, но можно также определить f и g как функции здесь.

f(x, y) := x*y;
g(x, y) := x;
define (h(x, y), quotient(f(x, y), g(x, y)));

Я знаю, что это немного сбивает с толку, поскольку есть несколько способов сделать это.

...