Главная  Длительная эволюция 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [ 50 ] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]

К сожалению, определенную в такой форме функцию h{x) нельзя ни продифференцировать, ни проинтегрировать в конечных пределах:

D[h[x],x] h[x]

Integrate[h[x],{x,l,2}]

/т1);ега*е[Л[х],{1,1,2}]

поэтому дадим отдельные определения для этих операций с функцией h{x). Функция D является протектированной, следовательно, для определения производной доступен механизм верхних значений. Поскольку производная от h{x) равна функции 0{х), принимающей значение О при х < О и 1 при х > О, то определим сначала эту функцию:

theta[x ] := 0/;х < 0; theta[x ] := 1/;х >= О а затем и производную от Л(х):

h/:D[h[x ],x ]:=theta[x]

Произведем вычисления производной:

{D[h[x],x], D[h[x],x]/.x->-2, D[h[x],x]/.x->10} {theta[x], О, 1}

Аналогичное определение может быть дано и для интеграла от функции Л(х).

В качестве второго примера определим функцию log, вычисляющую логарифмы вещественных чисел по основанию 2 в предположении, что встроенная функция Log[2,x] нас по каким-то причинам не устраивает. Действительно, встроенная функция Log по умолчанию определена для всех, в том числе и



комплексных значений аргумента, поэтому она не удовлетворяет некоторым тождествам, справедливым только в вещественном случае. Например, Log[E] / z и т.д. Для того чтобы выполнить поставленную задачу, можно дать следующую последовательность правил преобразований:

log[2] = 1; log[l] = 0; log[y -x ] := х log[y]; log[x y ] := log[x] + log[y]

фиксирующих основные свойства логарифмической функции. Вычислим выражение

log[2-a b/Sqrt[c]]

а + ЮдЩ-Ш

Результат соответствует нашим ожиданиям. Чтобы иметь возможность находить численные значения функции log для вещественных значений аргумента, добавим правило

log[x.Real] := FixedPoint[((# - (2-# - х)/ (2-#Log[2.]))&,l.]

основанное на методе итераций Ньютона.

{log[3.], Log[2,3.]} {1.58496,1.58496}

Вполне удовлетворительная точность для чисел порядка 1. Определим правило вычисления производной для функции log способом, отличным от только что использованного. Для этого воспользуемся тем обстоятельством, что функция D в случае, когда не имеется правил для вычисления производной от данной функции f{x), имеет результатом выражение, полная форма которого есть Derivative[l][f][x]. Функция Derivative[l] не протектирована, ее аргументом являются заголовки функций, поэтому определим производную от log следующим образом:



xLog[2] f[x]Log[2]

Неопределенный интеграл от функции log может быть определен с помощью верхних значений:

log / : Integrate[log[x ],x ] := х log[x] - x/Log[2]

Хорошо известно, что функция /act[тг] = п! от целого неотрицательного аргумента п удовлетворяет следующему тождеству: fact[n] = nfact[n- 1], которое дает возможность последовательно определять значения этой функции, отправляясь от значения fact[i] = l. Рассматриваемое тождество является простейшим рекурсивным определением функции. Более сложным является рекурсивное определение функции fib[n], чьими значениями являются числа Фибоначчи: fib[n] = fib[n - 1] -Ь fib[n - 2], дополненное значениями fib[l] = 1, fib[2] = 1. Рассматриваемые тождества могут быть непосредственно положены в основу определения соответствующих функций:

fact[n Integer?Positive] := n fact[n - 1] fact[l] = 1

{fact[5], fact[-3], fact[3.1]} {120,/act[-3],/act[3.1]}

Функция fact[x] вычисляется в соответствии с данными правилами для целых положительных х, а для других значений аргумента не определена.

fib[n Integer?Positive] := flb[n - 1] -Ь fib[n - 2]

fib[l] = fib[2] = 1;

fib[6]

Derivative[l][log] := (l/(#Log[2])& D[log[xf[x]],x]

1 fb]



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [ 50 ] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]

0.0012