fbed99da

Задание математических отношений



Задание математических отношений

Символьные преобразования- при всей их кажущейся таинственности осуществляются по определенным, хотя и весьма многочисленным, а потому для нас запутанным, правилам. Основные из них давно известны из математики и описаны в многочисленных справочниках и монографиях. Они записаны в ядре системы и вызываются из него при создании условий, необходимых для выполнения того или иного преобразования. Если этих условий нет, исходное выражение просто повторяется. А если обнаружена явная ошибка в преобразованиях, то о ее сути выводится соответствующее сообщение. При ситуациях, лишь близких к ошибочным, выводится предупреждающее сообщение, и вычисления продолжаются.

Однако математика и использующие ее науки непрерывно развиваются. Появляются все новые и новые правила преобразований. Пользователь-математик может пожелать изменить встроенные правила преобразований — например, для создания новых разделов математики, базирующихся на каких-либо новых представлениях. Блестящий пример этого — теория относительности Эйнштейна.

Таким образом, возникает необходимость расширения математических символьных систем и обучения их новым правилам математических преобразований. Система Mathematica имеет и такие возможности. Поясним на простых примерах, как это делается.

В математике можно найти множество примеров математических отношений. Например, хорошо известно такое отношение для логарифма и экспоненциальной функции:

log(exp(x)) = х.

Не обременяя себя поиском действительно новых закономерностей (порой на это может не хватить жизни, да и везет не каждому ученому), зададим приведенную закономерность для введенных по-новому функций log и ехр. Центральным моментом тут является введение новых имен функций, которые начинаются с малых букв, а не с больших, как у встроенных функций Log и Ехр. Поэтому система воспринимает log и ехр как новые функции.

Итак, вводим «новую» закономерность следующим образом:

log[exp[x_]] :=x

General::spelll : Possible spelling error:

new symbol name "log" is similar to existing symbol "Log".

General::spelll : Possible spelling error:

new symbol name "exp" is similar to existing symbol "Exp".

Система на всякий случай сообщает о рискованности эксперимента — символы log и ехр похожи на зарезервированные имена функций Log и Ехр. Проигнорировав это предупреждение, проверим введенную закономерность в работе.

Ввод (In)

Вывод (Out)

log [exp [15]]

15

1оg[ехр[у^2+1]] 1+y 2
Итак, наша «новая» закономерность работает. Можно ввести, скажем, и такое известное отношение:

log[x_^n_] :=n*log[x]

Проверим, какие отношения заданы нами для функции log:

?log

Global' log

log[exp[x_] ] : = x

log[x_n-] := n log[x]

Проверим введенные правила, например, так:

5lоg[[1+х]^5]

5lоg[1+х]

Рассмотрим еще пару примеров задания «новых» математических правил. В первом примере задано правило — логарифм произведения равен сумме логарифмов сомножителей:

log[x_*y_] := log[x] +log[y]

Любопытно, что эта закономерность действует при любом числе сомножителей:

log[a*b*c*d*e]

log [a] + log[b] + log[c] + log[d] + log[e]

Второй пример иллюстрирует задание объекта, ассоциированного со списком:

а /: а[х_] +а[у_] :=а[х + у]

а[х] + а[у] +a[z]

а[х+ у+ z]

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


 


Содержание раздела