В Mathematica біля 1000 вбудованих функцій. Але після визначеного числа сеансів роботи з нею користувач помічає, що при проведенні обчислення в конкретній сфері деякі комбінації вбудованих функцій повторюються і непогано було б дану комбінацією замінити однією функцією.
Одними из широко распространенных специальных функций являются ортогональные многочлены (полиномы). Mathematica имеет следующие функции, возвращающие значения ортогональных многочленов:
- ChebyshevT [n, х] — полином Чебышева п-й степени первого рода;
- CyebyshevU [n, x] — полином Чебышева п-йстепени второго рода;
- HermiteH[n, х] — полином Эрмита п-йстепени;
- JacobiP[n, a, b, х] — полином Якоби п-й степени;
- 'GegenbauerC [n, m, х] — полином Гегенбауэра;
- LaguerreL[n, х] — полином Лагерра n-й степени;
- LaguerreL[n, а, х] — обобщенный полином Лагерра п-й степени;
- LegendreP [n, х] — полином Лежандра n-й степени;
- LegendreP [n, m, x] — присоединенный полином Лежандра;
- LegendreQ [n, z] — функция Лежандра второго рода n-го порядка;
- LegendreQ [n, m, z] — присоединенная функция Лежандра второго рода.
К другой известной группе специальных функций относятся интегральные показательные и родственные им функции:
- Coshlntegralfx] — гиперболический интегральный косинус;
- Coslntegral [х] — интегральный косинус С1(х);
- Erf [z] — функция ошибок (интеграл вероятности);
- Erf[z0, zl] — обобщенная функция ошибок erf (zl)-erf (z0);
- Erf с [z] — дополняющая функция ошибок 1-erf (z);
- Erfi [z] — мнимое значение функции ошибок erf (iz) /i;
- ExplntegralE [n, z] — интегральная показательная функция Е(п,z);
- ExplntegralEi[z] — интегральная показательная функция Ei(z);
- Loglntegral [z] — интегральный логарифм li(z);
- Sinhlntegral [x] — интегральный гиперболический синус;
- Sinlntegral [х] — интегральный синус 81(лг).
Власні функції користувача - це тип функцій, які задає користувач і яких ще нема в састемі. Користувачі створюють функції для спрощення запису та заддання даних. Функція користувача задається наступним чином:
Назва_функції[змінні_]:=дії.
Чисті функції – використовуються в момент їх створення. Для оголошення чистих функцій слугує вбудована функція Function: Function[{x,y,…},expr]. Чисту функцію легко перетворити в іменовану, для цього достатньо зробити присвоєння символу, який в подальшому слугувати її іменем.
Існують більш компактна і зручна форма представлення чистої функції, яку іноді називають анонімною функцією. В анонімних функціях замість зв’язаних змінних використовують спеціальні вирази із заголовком Slot,і має вигляд # #1 #2, причому для функції однієї змінної #, а в функціях декількох змінних перший аргумент #1 другий #2… В кінці анонімної функції ставиться &. Приклад Outer[D[#1,#2]&,f,x].
Існує також суперпозиція функції.
Nest, Fold – (Нехай потрібно послідовно n раз застосувати функцію до деякого аргумента, а потім до результату застосованої функції до аргументу).
Nest[cube,a,3] a^27.
Метод Ньютена newtoniter[f_,x0_,n_]:=Nest[(#-f[#]/f'[#])&,N[x0],n] x0 – для чисельного обраховування N[x0].
Основи програмування в системі Mathematica: функція Module, поняття про локальні і глобальні змінні, оператори циклу, умовний оператор.
Програмування в Mathematica можна розглядати як функціональне так і на правилах перетворень.
Функція Module[]
Аргументи:
Список з локальними змінними модуля
Блок операторів модуля
3. Для повернення значення використовують функцію Return[]
Використання модуля In[1] SQSum[n_]:=Module[{s,i},s=0;For[i=0;++i<=n,s+=i^2];Return[s]] Перевірка коректності роботи In[2] SQSum[5] Out[2] 55 |
Вираз x=a – це присвоєння символу x значення a. Дане присвоєння є глобальним. В локальному випадку x->a яка задається в окремих формулах після застосування до них ReplaceAll, які мають вид /. У вхідному форматі a[x^2]=E^x тоді повсюди замість a[x^2] буде E^x
Для створення процедур із списком локальних змінних {a,b,c,…} і тілом proc використовують функції
Module[{a,b,c,…},proc]
Block[{a,b,…},proc]
Створення процедури зі списком локальних хмінних, для яких задано початкові значення
Module[{a=a0,b=b0,c=c0,…},proc]
Block[{a=a0,b=b0,…},proc]
Тіло процедури може складатись із довільної кількості операцій, відділених знаком; Процедура повертає значення останньої операції, якщо після неї нестоїть;
Функції Module та Block відрізняються методом визначення локальних змінних. Module – використовує лексичний контекст, а Block – динамічний тобто:
m=i;
Block[{i=a},m+i]
2a
m=i;
Module[{i=a},m+i]
a+i
Цикли бувають в основному трьох типів: Do, for, while.
Do[expr,{imax}] виконує imax разів вираз expr
Do[expr,{i,imin,imax}] виконує вираз expr для i від imin до imax з кроком 1
Do[expr,{i,imin,imax,di}] виконує вираз expr для i від imin до imax з кроком di
For[start,test,iner,body]- спочатку обчислюється вираз start, потім перевіряється умова test, якщо її значення істине, то виконується body i iner доки test матиме значення false.
While[test,body] – виконується body поки значення test не стане хибним
Abort[] –зупиняє розрахунок
Break[] – виконує вихід із тіла циклу
Contineu[] - задає перехід на наступний крок виконання циклу.
Interrupt[] – перериває розрахунок із можливість відновлення
Return[] – перериває виконання функції і повертає значення NUll
Return[exrp] перериває виконання функції і повертає значення expr
Функції умови
If[condition,exprt,exprf] – повертає результат розрахунку виразу exprt, якщо результат обчислення condition є true, інакше exprf.
Which[test1, value1, test2, value2,…] розраховує в заданому порядку кожну умову, повертаючи ту величину яка задана value.
Swith[expr,form1,value1, form2,value2,…] – розраховує вираз expr послідовно порівнює його результат із кожним значенням form,повертаючи ту величину value2 яка відповідає першому збігу.
Також функції Input[]- ояікує введення з клави print[expr]- виводить на екран