- •Пакет прикладных программ mathematica Инструкция пользователя
- •1. Общие сведения. Ядро и интерфейс пакета Математика
- •2. Точные и приближенные вычисления. Численные и аналитические операции
- •3. Рабочий документ и ячейки. Основные команды
- •4. Сеанс работы в системе Математика. Глобальный характер данных.
- •5. Правила написания. Основные встроенные функции.
- •Примеры выражений
- •Формы обращений к функциям
- •Нескольких аргументов
- •7. Циклические операции
- •Логические операторы
- •7.4. Функция If
- •7.5. Логические выражения
- •8. Функции пользователя. Составление программ
- •8.1. Функции пользователя. Описания типов аргументов
- •8.2. Немедленное и задержанное присваивание
- •8.3. Альтернативные определения функций
- •8.4. Составление программ. Глобальные и локальные переменные
- •8.5. Прерывание вычислений
- •9. Списки
- •9.1. Создание списков. Обращение к элементам списков
- •9.2. Преобразование списков
- •9.3. Матричные функции
- •10. Массивы
- •11. Основные типы графиков
- •11.1. Двумерные графики
- •Show[GraphicsArray[{g1, g2,…}], options]
- •11.3. Изображения трехмерных объектов
- •11.4. Анимация
- •12. Функция Manipulate
- •13. Аналитические операции. Интерполяция. Решение уравнений
- •13.1. Аналитические операции
- •13.2. Интерполяция
- •13.3. Решение алгебраических уравнений
- •13.4. Решение дифференциальных уравнений
- •14. Преобразование выражений
- •14.1. Стандартная форма выражений
- •Примеры выражений
- •14.2. Обращение к элементам выражений
- •14.3. Представление выражения в виде дерева
- •14.4. Операции преобразования выражений
- •14.5. Повторное выполнение операций
- •14.6. Анонимные функции
- •14.7. Функциональные операторы Outer и Inner
- •Вопросы
5. Правила написания. Основные встроенные функции.
-
В языке Математики малые и большие буквы различаются.
-
Названия всех встроенных функций и констант начинаются с большой буквы; поэтому, во избежание недоразумений, рекомендуется вводимые пользователем идентификаторы начинать с малой буквы.
-
Аргументы функций пишутся в квадратных скобках.
-
Знак умножения (*) можно опускать, заменяя его в случае необходимости пробелом. Несколько примеров представления оператора умножения:
2a эквивалентно 2*a,
a b эквивалентно a*b,
a(x+y) эквивалентно a*(x+y),
Sin[x]2 эквивалентно 2 Sin[x], эквивалентно 2*Sin[x].
Однако, выражения "a2", "ab" воспринимаются Математикой как единые идентификаторы. Выражение "aSin[x]" воспринимается как идентификатор новой функции.
-
Круглые скобки используются для объединения объектов или операндов, как это принято обычно в математических выражениях. При этом соблюдаются обычные соглашения о приоритетах математических операций, поэтому в ряде случаев скобки можно опускать. Например, Sin[x]^2/2 есть сокращенная запись более полного выражения ((Sin[x])^2)/2.
-
Значения строковых переменных записываются в кавычках.
-
Комментарии внутри активной ячейки выделяются знаками (* и *). Пример:
In[ ] := (* Определим константу: *) a=Log[10, 2.] Out[ ] =0.30103
-
Фигурные скобки используются при описании списков, в частности, массивов, и для задания пределов изменения переменной величины. Пример списка приведен во второй строке таблицы 5.1.
-
Как правило, допустимы пробелы в выражениях. Например, Sin [Pi / 2] воспринимается как Sin[/2]. Однако, пробелы в служебных словах – недопустимы. Пробелы в словах воспринимаются как знак умножения. Например, P i воспринимается уже не как число , а как результат перемножения символов P и i.
-
Т
Таблица 5.1.
Примеры выражений
Входное
выражение
Выходное
выражение
a="строка";
aa={a, b, 2}
{строка, b, 2}
44\
55
4455
a+
b
строка + b
-
Косая черта "\" в конце строки означает, что выражение продолжается в следующей строке. Этот знак можно опустить, если в строке помещено явно незаконченное выражение: отсутствует закрывающая скобка, отсутствует необходимый операнд и т.п. Отметим, что, если в конце строки стоит знак "\", то пустые позиции в начале следующей строки игнорируются.
Примеры выражений даны в таблице 5.1.
Основные константы:
E или <Esc>ee<Esc> – основание натуральных логарифмов; I – мнимая единица;
Infinity или <Esc>inf<Esc> – бесконечность; Pi или <Esc>p<Esc> – число "пи".
Символы указанных констант также могут быть взяты из палитры Basic Input.
Приведем некоторые наиболее часто используемые функции.
Floor[x], Ceiling[x] – целые числа, ближайшие к действительному числу x (меньшее и большее).
Round[x, eps] – округление числа x до ближайшего числа с точностью eps.
Пример 5.1 In[]:=Round[20/3, 4] Out[]=8,
In[]:=Round[20/3, 3] Out[]=6,
In[]:=Round[20/3, 0.02] Out[]=6.66,
In[]:=Round[20/3, 0.01] Out[]=6.67.
x^y – x в степени y.
Exp[x] или E^x – экспоненциальная функция аргумента x;
Sin[x], Cos[x], Tan[x], Cot[x], ArcSin[x], ArcCos[x] и т.д. - прямые и обратные тригонометрические функции.
Log[z] – натуральный логарифм числа z.
Log[b, z] – логарифм числа z по основанию b.
Sqrt[a] – квадратный корень числа a.
Вычисление пределов:
Limit[ expr, x –> x0] – предельное значение выражения expr при x стремящемся к x0. Более полный формат команды: Limit[ expr, x –> x0, Direction –> 1] – нахождение предела при x стремящемся к x0 слева. Соответственно, Direction –> -1 – нахождение предела справа.
Пример 5.2 In[]:=f[t_]=Sin[t]/t; Limit[f[t], t->0] Out[]=1,
In[]:=Limit[ Tan[fi], fi –> Pi / 2, Direction –> -1] Out[]= -Infinity.
Замечание. Функция вычисления пределов не вызывается автоматически. Если, например, в ходе вычислений встречается выражение вида 0/0, то вычисления прекращаются. Например, Математика отказывается вычислять f[0] в примере 5.2.
Правило преобразования Rule:
lhs –> rhs – левая часть выражения заменяется на правую.
Функция замещения ReplaceAll[expr, rule] – применяет правило преобразования rule (lhs –> rhs) к выражению expr – каждое вхождение lhs заменяется на rhs. Та же функция может быть записана более коротко с помощью оператора замещения “/.” (произносится “slash-dot”):
expr /. lhs –> rhs
Может быть задана последовательность правил преобразования:
expr /. {lhs1 –> rhs1, lhs2 –> rhs2,…}
Может также быть задан список списков правил: expr /. {{lhs –> rhs1}, {lhs –> rhs2},…}, –
в этом случае на выходе мы получим список результатов.
Пример 5.3
Простая замена: In[]:= 1 + x + x^2 /. x –> Sin[x] Out[]=1 + Sin[x] + Sin[x]2.
Применение списка правил замены:
In[]:={a, b, c} /. {a –> b, b –> d} Out[]={b, d, c}.
Последовательное применение тех же правил замены дает другой результат:
In[]:={a, b, c} /. a –> b /. b –> d Out[]={d, d, c}.
Применение списка списков правил замены
In[]:=x + y /. {{x –> 2}, {y –> 5}}
дает список результатов: Out[]={2 + y, 5 + x}.
Дифференцирование:
D[f, x] – производная функции f по аргументу x.
D[f, {x, n}] – производная порядка n.
D[f, x1, x2, …] – смешанная производная функции f по аргументам x1, x2, и т.д.
Другое обращение к производной:
f’[x], f’’[x], f’’’[x] – соответственно, первая, вторая и третья производная функции f[x].
Для обращения к производной можно воспользоваться также “заготовкой”, имеющейся в палитре Basic Math Input.
Пример 5.4 In[]:= D[Sin[x], x] Out[]=Cos[x],
In[]:= D[Sin[x], x] /. x –> 0 Out[]=1,
In[]:=Sin'[x] Out[]=Cos[x],
In[]:=Sin'[0] Out[]=1.
Дифференцирование сложных функций:
In[]:=D[f[g[x]], x] Out[]= ,
In[]:=D[f[x, y[x]], x] Out[]=,
In[]:=D[Sin[x^2], x] Out[]=2 x Cos[x2],
In[]:=D[x Log[x], x] Out[]=1 + Log[x].
Вычисление смешанной производной:
I n[]:=D[x^3 / y, {x, 2}, y] Out[]= - 6x / y2.
Интегрирование:
Integrate[f, x] – неопределенный интеграл.
Integrate[f, {x, xmin, xmax}] – определенный интеграл на отрезке от xmin до xmax.
Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}] – кратный интеграл.
NIntegrate – численное интегрирование.
“Заготовка” для интеграла имеется в палитре Basic Math Input.
Пример 5.5
In[ ] := Integrate[ Exp[-x], {x, 0, Infinity}] Out[ ] = 1,
In[ ] := NIntegrate[ 2 / Sqrt[2 Pi] Exp[-x^2 / 2], {x, 0, 3}] Out[ ] = 0.9973,
In[ ] := Integrate[ 3 u Sin[v]^2 Cos[v]^2, {u, 0, a}, {v, 0, 2Pi}] Out[ ] = 3 a2 Pi / 8.
Нахождение экстремумов:
Функции FindMinimum[f, {x, x0}], FindMaximum[f, {x, x0}] позволяют найти локальный минимум или максимум функции f, ближайший к точке x0.
Функции возвращают список: {fmin, {x –> xmin}] – где xmin – точка экстремума, fmin – значение функции f в точке экстремума.
Пример 5.6
Нахождение экстремумов функции P[x_]=8x^4-8x^2+x+1 (рис. 5.1).
In[ ] := FindMinimum[ P[x], {x, 2}] Out[ ] = {-0.309, {x –> 0.673}},
In[ ] := FindMinimum[ P[x], {x, -2}] Out[ ] = {-1.722, {x –> -0.736}}.
In[ ] := FindMaximum[ P[x], {x, 0}] Out[ ] = { 1.031, {x –> 0.063}}.
Функции FindMinimum[f, {x, x0}, {y, y0},…], FindMaximum[f, {x, x0}, {y, y0},…] позволяют найти локальные экстремумы функции нескольких аргументов.
Пример 5.7
Нахождение локальных экстремумов функции двух переменных:
P2[x_,y_]=Sin[2Pi(x+y)]+Sin[2Pi(x-y)], (Рис. 5.2).
In[ ] := FindMaximum[P2[x, y], {x, 0.5}, {y, 0.5}] Out[ ] = {2., {x0.75,y0.5}}
In[ ] := FindMinimum[P2[x, y], {x, 0.5}, {y, 0.5}] Out[ ] = {-2., {x0.25,y0.5}}
Г енераторы случайных чисел:
RandomReal[range] – дает псевдослучайное число типа Real с равномерным распределением в диапазоне range.
RandomInteger[range] – дает псевдослучайное число типа Integer со значениями в диапазоне range.
RandomComplex[range] – дает псевдослучайное число типа Complex со значениями в диапазоне range.
Для всех типов псевдослучайных чисел диапазон range задается списком, включающим минимальную и максимальную границы: {imin, imax}. Если диапазон не указан, то по умолчанию он равен {0, 1}.
Для комплексных псевдослучайных чисел диапазон range задается минимальным и максимальным комплексным числом. По умолчанию он равен {0+0 I, 1+1 I}.
Простейшие циклические операции:
Sum[f, {i, imin, imax, di}] – суммирование значений функции f по индексу i в пределах от imin до imax с шагом di;
Sum[f, {i, imin, imax}, {j, jmin, jmax}] – вычисление двойной суммы;
Product[f, {i, imin, imax}] – вычисление произведения.
В циклических операциях значения di и imin можно опускать, если эти значения равны единице; в тех случаях, когда значения функции f не зависят от индекса, индекс можно не указывать.
Пример 5.8
In[ ] := Sum[x^i/i!, {i, 0, 3}] Out[ ] = 1 + x + x2/2+x3/6
In[ ] := Product[x-i, {i, 0, 3}] Out[ ] = (-3+x) (-2+x) (-1+x) x
In[ ] := Product[ x - Random[Integer, {-9, 9}], {3}] Out[ ] = (-7+x) (-2+x) (8+x) – один из возможных ответов.
Обратим внимание, что Математика соблюдает определенный порядок при выводе результатов; в частности, сомножители сортируются в порядке возрастания их значений.
Циклические операции могут быть описаны также с помощью математических символов, имеющихся в палитре Basic Math Input.
Функция Fit[data, funs, vars]. Эта функция находит такую линейную комбинацию функций, заданных в списке funs, которая аппроксимирует данные data с наименьшей среднеквадратичной ошибкой. Vars – список аргументов функций funs. Данные data могут быть заданы в виде списка {{x1, y1,…,f1}, {x2, y2,…,f2},…}, где количество координат x,y,… должно быть равно количеству аргументов функций funs.
Пример 5.9 Требуется аппроксимировать последовательность точек: data=
{{0, 2.3}, {1, 2.0}, {2, 2.4}, {3, 2.3}, {4, 2.8}, {5, 2.7}, {6, 3.2}, {7, 3.8}, {8, 3.9}, {9, 4.2}, {10, 4}}, –
л инейной зависимостью. Решение:
In[] := Fit[ data, {1., x}, x]
Out[] = 1.90909 +0.229091 x
Аппроксимируемая последовательность точек (для наглядности соединенных ломаной синей линией) и аппроксимирующая прямая линия (красного цвета) показаны на рис. 5.3.
Функция Print[expr1, expr2,…] – печатает выражения expri, соединяя их.
Пример 5.10
In[ ] := Print["Объем куба со стороной ",
v=4 ," равен ", v^3]
Out[] = Объем куба со стороной 4 равен 64
Обращение к функциям в системе Математика может быть записано в разных формах:
f[x] - стандартная форма (standard form),