2013-04-05 2 views
6

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

Учитывая это определение функции

f:= x -> A*exp(B/x) 

После дифференцирования, можно было бы получить

A*exp(B/x)*(-B/x^2) 

И было бы здорово, если бы я мог каким-то образом преобразовать его в

f(x)*(-B/x^2) 

Возможно ли это с помощью MuPad или любого другого пакета CAS?

+0

Если вы просто хотите, чтобы распознавать функции, которые написаны так же, как исходная функция ф был, вы можете сравнить строки (действительно тупой метод). Но, если вы хотите, чтобы алгоритм извлекал функцию из выражений, выполняющих операции, это будет чертовски сложно, потому что это проблема поиска с бесконечными возможностями ... Например, когда: «f: x -> x - 1» с функцией ввода of: (x^2 - 1). Функцию ввода можно выразить через f (x) разными способами: f (x) * (x + 1), f (x)^2 + 2 * x - 2 или даже: (x^2 - 1) + f (x) - (x - 1) и т. Д. – Guarita

+0

Я думаю, что сговорчивый способ может работать. @Guarita прав, у вас могут быть функции, которые равны математике, но не при преобразовании в строки, и это может быть проблемой, но я думаю, что вы можете упростить любую функцию в команде 'simplify' в mupad, и вы можете указать функцию в которой (как, например, полиномиальный и др.). Вероятно, просто commadn вернет тот же «тип» уравнения, поэтому результат может быть сопоставим по строкам. Не уверен, что это сработает, и если это произойдет, вероятно, не будет работать 100% раз, но было бы неплохо. –

+0

Я понимаю, что вы имеете в виду, но, как и на бумаге, есть смысл, какое выражение лучше в зависимости от количество факторов и т. д. Вот почему я думал, что программы CAS тоже будут знать. –

ответ

0

Это легко в MAPLE, использовать общие команды подстановки algsubs

> f:= x -> A*exp(B/x) 
> g := diff(f(x), x) 
> algsubs(A*exp(B/x) = F, g) 

Для более сложных выражений, попробуйте collect

+0

В MuPad функция называется 'subsex'. Я еще не пробовал, но я думаю, что это самое лучшее, что вы можете сделать, чтобы очистить выражение. Благодарю. –