В пакет $$Mathematica$$ встроено подробное описание ($$Help$$). Чтобы в него попасть, нажмите $$\fbox{\text{F1}}$$ или войдите через меню $$\tt \text{Help/Documentation Center}$$.
После запуска программы на экране появляется несколько независимых окон. Вдоль верхней части экрана расположено меню. Слева - рабочее окно. Можно открыть много рабочих окон, выполнив в меню команду $$\text{File/New/Notebook(.nb)}$$. Как видно из названия команды, рабочее окно называется $$\text{Notebook}$$.
Если в рабочее окно ввести произвольный символ, то этот символ отобразится в окне, а справа появится вертикальная скобка, ограничивающая текущее рабочее поле. При дальнейшем вводе новые символы будут также отображаться в рабочем поле. Если произойдет переход на следующую строку, правая скобка расширится. Эта скобка указывает на независимую область, в которой можно расположить команды языка $$Mathematica$$ и одновременно их выполнить. Область, ограниченная скобкой, называется клеткой ($$\text{Cell}$$). Если стать на последней строке клетки и нажать на стрелочку вниз, или же стать на первой строке клетки и нажать на стрелочку вверх, то курсор превратится в горизонтальную линию, расположенную рядом с клеткой. Если опять ввести символ, то появится новая клетка, в которую также можно вводить текст. Кроме того, переходить от клетки к клетки, а также позиционировать курсор между клетками можно с помощью мышки.
В клетки можно вводить произвольные выражения ($$\text{Expression}$$) и вычислять ($$\text{Evaluate}$$) их. Для вычисления нужно, находясь внутри клетки, выполнить команду $$\fbox{\text{Shift}} + \fbox{\text{Enter}}$$ (здесь и всюду ниже знак + обозначает одновременное нажатие клавиш). Поместите курсор внутрь следующей клетки, в которой написано $$\tt 2+2$$, и выполните $$\fbox{\text{Shift}} + \fbox{\text{Enter}}.$$
$$ In[1]:=2 + 2 \\ Out[1] = 4$$После выполнения команды $$\fbox{\text{Shift}} + \fbox{\text{Enter}}$$ слева от выражения появится $$\text{In[1]}$$, нумерующее последовательно выполняющиеся команды. Кроме того, возникнет еще одна клетка с результатом, который будет помечен $$\text{Out[1]}$$. Заметим, что клетка ввода и вывода объединены в одну большую клетку. Вы можете манипулировать результатом многими способами. Один из них - использование символа $$\text{\tt \%}$$, которому присвоен результат последней выполненной команды; последовательности $$\text{\tt \%\%}$$ - результат выполнения предпоследней команды; $$\text{\tt \%\%\%}$$ - предпредпоследней и т.д., а также $$\text{\tt \%n}$$ - результат выполнения команды с номером $$n$$.
Объекты, которыми оперирует $$Mathematica$$:
Замечание
Имеется несколько способов визуализации одного и того же выражения, например,
$$ \tt (1+2.-5.77*3.8)/((3.2-0.1)\^\,\!(1/2)+6\^\,\!2) \\ \\ \tt (1+2.-5.77 3.8)/(Sqrt[3.2-0.1]+6\^\,\!2) \\ \\ Times[ \\ \phantom{Tim}Plus[1, 2., Times[-1, Times[5.77, 3.8]]], \\ \phantom{Tim}Power[Plus[Power[Plus[3.2, -0.1], Times[1, Power[2, -1]]], \\ \phantom{Tim}\phantom{Power[Plus[}Power[6, 2]], -1]]$$В последнем случае $$\text{\tt Times[x,y]}$$ обозначает произведение $$x$$ и $$y$$, $$\text{\tt Plus[x,y]}$$ - их сумму, а $$\text{\tt Power[x,y] - x}$$ в степени $$y$$.
Три типа визуализации выражений
Cтаньте в клетку, вид которой хотите изменить, и выполните соответствующую команду:
$$\text{\tt InputForm (\fbox{Ctrl}+\fbox{Shift}+\fbox{i})}$$:
$$\tt In[2]:= (1 + 2. - 5.77*3.8) / (Sqrt[3.2 - 0.1] + 6 \^\,\! 2) \\ \\ \tt Out[2] =-0.501209$$$$\text{StandardForm (\fbox{Ctrl}+\fbox{Shift}+\fbox{n})}$$:
$$\tt In[3]:=$\frac{1+2.-5.77 \times 3.8}{\sqrt{3.2-0.1}+6^2}$\\ \\ \tt Out[3]=-0.501209$$$$\text{TraditionalForm (\fbox{Ctrl}+\fbox{Shift}+\fbox{t})}$$:
$$\tt In[4]:=$\frac{1+2.-5.77 \times 3.8}{\sqrt{3.2-0.1}+6^2}$\\ \\ \tt Out[4]=-0.501209$$Ввод с клавиатуры в StandardForm
Выражения в $$\text{StandardForm}$$ можно получать сразу. Для этого следует использовать или $$\text{\fbox{Ctrl}}$$ + клавиша, $$\text{\fbox{Esc}}$$ -команда- $$\text{\fbox{Esc}}$$, или вспомогательные панели $$\text{Palettes}$$. Например, $$\text{\fbox{Ctrl}+\fbox{/}}$$ - дробь $$\frac ab$$, $$\text{\fbox{Ctrl}+\fbox{2}}$$ - радикал $$\sqrt x$$, $$\text{\fbox{Ctrl}+\fbox{\^\,\!}}$$ - верхний индекс, как у $$x^2$$, $$\text{\fbox{Ctrl}+\fbox{\phantom{C}\!\!\!\!\!\_\,\!\!}}$$ - нижний индекс, как у $$x_2$$.
Далее, $$\text{\fbox{Esc} pi \fbox{Esc}}$$ - число $$\pi$$, $$\text{\fbox{Esc} ee \fbox{Esc}}$$ - число $$е$$, $$\text{\fbox{Esc} ii \fbox{Esc}}$$ -
Выражение
$$ \tt In[5]:=(1 + 2. - 5.77*3.8)/((3.2 - 0.1)\^\,\!(1/2) + 6\^\,\!2) \\ \\ \tt Out[5]=-0.501209$$в действительности имеет вид
$$ \tt In[6]:=Times[Plus[1,2.', Times[-1, Times[5.77', 3.8']]], \\ \phantom{In[6]:=T}Power[ \\ \phantom{In[6]:=T}\phantom{P}Plus[Power[Plus[3.2',-0.1'], Times[1, Power[2,-1]]], \\ \phantom{In[6]:=T}\phantom{PP}Power[6, 2]], -1]] \\ \\ \tt Out[6]=-0.501209$$Чтобы вычислить выражение, поместите курсор внутрь содержащей его клетки и выполните команду $$\text{\fbox{Shift} + \fbox{Enter}}$$:
$$\tt In[7]:=(1 + 2. - 5.77*3.8)/((3.2 - 0.1)\^\,\!(1/2) + 6\^\,\!2) \\ \\ Out[7]=-0.501209$$Арифметические операции $$\text{\tt (+, -, *, /, \^\,\!)}$$; знак $$\text{\tt *}$$ можно не писать (вместо него - пробел, который $$Mathematica$$ в некоторых случаях автоматически заменяет соответствующим значком):
$$\tt In[8]:=ab2 \times 3cd+xy-2z \\ \\ Out[8]=6abcd+xy-2 z$$Встроенные функции и символы всегда начинаются с прописной буквы, поэтому пользовательские символы и выражения рекомендуется начинать со строчных букв.
Примеры встроенных символов:
$$\tt In[9]:= Pi \\ \phantom{In[9]:= }E \\ \phantom{In[9]:= }I \\ \\ Out[9]= $\pi$ \\ \\ \tt Out[10]= $e$ \\ \\ Out[11]= $i$$$Чтобы вывести соответствующее десятичное представление для выражения $$\text{\tt expr}$$, нужно выполнить команду $$\text{\tt N[expr]}$$ или $$\text{\tt N[expr,n]}$$, где $$n$$ - число цифр в десятичном представлении, например:
$$\tt In[12]:=N[Pi] \\ \phantom{In[12]:=}N[Pi,10] \\ \phantom{In[12]:=}N[100Pi, 10] \\ \phantom{In[12]:=}N[E] \\ \phantom{In[12]:=}N[I] \\ \\ Out[12]=3.14159 \\ \\ Out[13]=3.141592654 \\ \\ Out[14]=314.1592654 \\ \\ Out[15]=2.71828 \\ \\ Out[16]=0.+1.i$$Встроенным символам значения переприсвоить нельзя:
$$\tt In[21]:=Pi=10 \\ \\ \phantom{In[21]:}Set::wrsym: Symbol $\pi$ is Protected.>> \\ \\ Out[21]=10 \\ \\ In[22]:=Pi \\ \phantom{In[22]:=}N[Pi] \\ \\ Out[22]=$\pi$ \\ \\ Out[23]=3.14159 \\ \\ In[24]:=Pi=. \\ \\ \phantom{In[21]:}Unset::wrsym:Symbol $\pi$ is Protected.>> \\ \\ Out[24]=\$Failed \\ \\ In[25]:=Pi \\ \phantom{In[25]:=}N[Pi] \\ \\ Out[25]=$\pi$ \\ \\ Out[26]=3.14159$$Встроенные:
$$\tt In[27]:=Sin[$\pi$/2] \\ \\ Out[27]=1$$Создание выражений:
$$\tt In[28]:=f[x\_]:=x^2 \\ \\ In[29]:=\!f[2] \\ \phantom{In[29]:=}f[a] \\ \phantom{In[29]:=}f[Sin [x]]+f[Cos[x]] \\ \\ Out[29]=4 \\ \\ Out[30]=a^2 \\ \\ Out[31]=Cos[x]^2+Sin[x]^2$$Значок $$\text{:=}$$ называется $$\text{SetDelayed}$$. Он отличается от значка $$\text{=}$$, который называется $$\text{Set}$$, тем, как осуществляется вычисление присвоенного выражения. $$\text{Set}$$ вычисляет правую часть $$\text{rhs}$$ формулы $$\text{lhs = rhs}$$ еще до присвоения и результат присваивает левой части $$\text{lhs}$$; $$\text{SetDelayed}$$ присваивает левой части $$\text{lhs}$$ невычисленную правую часть $$\text{rhs}$$, и при каждом вычислении левой части присвоенная правая часть вычисляется заново с использованием текущих значений связанных с $$\text{rhs}$$ объектов.
Для примера используем функцию $$\text{Random[ ]}$$, которая выдает случайное вещественное число в пределах между 0 и 1. В первом примере перед присвоением вычисляется некоторое случайное число и результат присваивается переменной $$z$$, поэтому при каждом появлении $$z$$ заменяется на одно и то же присвоенное число. Во втором примере $$z$$ присваивается неотработанная функция $$\text{Random[ ]}$$, и при каждом появлении $$z$$ эта функция вычисляется каждый раз заново, чем и объясняются разные результаты вычисления $$z$$.
$$\tt In[32]:=z=Random[] \\ \phantom{In[32]:=}\,z \\ \phantom{In[32]:=}\,z \\ \\ Out[32]=0.871538 \\ \\ Out[33]=0.871538 \\ \\ Out[34]=0.871538 \\ \\ In[35]:=z:=Random[] \\ \phantom{In[35]:=}\,z \\ \phantom{In[35]:=}\,z \\ \\ Out[36]=0.877299 \\ \\ Out[37]=0.620971 \\ \\ In[38]:=z=.$$Еще один пример:
$$\tt In[39]:=y=2 \\ \\ Out[39]=2 \\ \\ In[40]:=f[y_]=y^3 \\ \\ Out[40]=8 \\ \\ In[41]:=g[y_]:=y^3 \\ \\ In[42]:=f[w] \\ \phantom{In[42]:=}\,g[w] \\ \\ Out[42]=8 \\ \\ Out[43]=w^3 \\ \\ In[44]:=y=.$$Для одновременной очистки нескольких присвоений, сделанных для $$f, g, \dots$$, можно использовать $$\text{\tt Clear[f, g, \ldots]}$$:
$$\tt In[49]:=f[x\_]:=x^2 \\ \phantom{In[49]:=}\,g[x\_]:x^3 \\ \phantom{In[49]:=}\,f[x] \\ \phantom{In[49]:=}\,g[x] \\ \\ Out[51]=x^2 \\ \\ Out[52]=x^3 \\ \\ In[53]:=Clear[f,g] \\ \phantom{In[53]:=}\,f[x] \\ \phantom{In[53]:=}\,g[x] \\ \\ Out[54]=f[x] \\ \\ Out[55]=g[x]$$В приведенных ниже первых трех примерах вычисляется значение функции $$f$$ на переменной $$x = 2$$ ; в четвертом примере вычисляется значение функции $$g$$ на переменных $$x = 2$$ и $$y = 3$$.
$$\tt In[56]:=f[2] (*Standard форма*) \\ \phantom{In[56]:=}\,f@2 (*Prefix форма*) \\ \phantom{In[56]:=}\,2//f (* Postfix форма*) \\ \phantom{In[56]:=}\,2 \sim g \sim 3 (* Infix форма*) \\ \\ Out[58]=4 \\ \\ Out[59]=4 \\ \\ Out[60]=4 \\ \\ Out[61]=18 \\ \\ In[62]:= Clear[f,g]$$В приводимых ниже примерах значок $$\text{\#}$$ используется для обозначения единственной переменной задаваемой функции, значки $$\text{\#1, \#2, \ldots}$$.- соответственно первая, вторая и т. д. переменные для функции многих переменных; значок $$\text{\tt \}$$ ставится после описания функции и обозначает, что стоящее слева от него выражение надо рассматривать как определение функции, а все вместе с ним - как саму функцию.
$$\tt In[63]:= (\#^2+2) \ [x] \\ \\ Out[63]=2+x^2 \\ \\ In[64]:= (\#1^2 +\#2^4) \ [x,y] \\ \\ Out[64]=x^2+y^4 \\ \\ In[65]:= f=(\#^2+2) \ \\ \\ Out[65]=\#1^2+2 \ \\ \\ In[66]:= f[x] \\ \\ Out[66]=2+x^2 \\ \\ In[67]:= Clear[f] $$Если после команды ставится точка с запятой $$\text{;}$$, то вывод результата не происходит:
$$\tt In[68] = 2 + 2 \\ \\ Out[68]=4 \\ \\ In[69]:= 2+2;$$На одной строке можно писать сразу несколько команд, разделяя их $$\text{;}$$ (выводы результатов этих команд производиться не будут); можно писать одну команду сразу на нескольких строках:
$$\tt In[70]:=f[x\_]:=x^2; g[x\_, y\_]:=x^2+y^3; h[x\_, y\_]:= \\ \phantom{In[70]:=f}3xy; \\ \\ In[71]:=f[a] \\ \phantom{In[71]:=}\;g[b,c] \\ \phantom{In[71]:=}\;h[d,e] \\ \\ Out[71]=a^2 \\ \\ Out[72]= b^2+c^3 \\ \\ Out[73]=3de \\ \\ In[74]:= Clear[f,g,h]$$Они получаются набором $$\text{\fbox{Esc} [[ \fbox{Esc}}$$ и $$\text{\fbox{Esc} ]] \fbox{Esc}}$$ соответственно:
$$\tt In[82]:= \{x,\{a,b\},z\}[\![3]\!] \\ \\ Out[82]=z$$Список $$\text{\{\{a, b\}, \{c, d\}\}}$$ представляет собой матрицу и может быть визуализирован в привычной форме $$\begin{pmatrix} ab\\ cd \end{pmatrix}$$ с использованием палетки ($$\text{Palette}$$):
$$\tt In[89]:= \begin{pmatrix} ab\\ cd \end{pmatrix} \cdot \{x,y\}}\\ \\ Out[89]=\{ax+by, cx+dy\}\\ \\ In[90]:= \begin{pmatrix} ab\\ cd \end{pmatrix} \cdot \begin{pmatrix} xy\\ zt \end{pmatrix}}\\ \\ Out[90]=\{\{ax+bz, bt+ay\}, \{cx+dz, dt + cy\}\} $$Чтобы вывести список в матричной форме, можно использовать команду $$MatrixForm$$
$$\tt In[91]:= \begin{pmatrix} ab\\ cd \end{pmatrix}. \begin{pmatrix} xy\\ zt \end{pmatrix}// MatrixForm\\ \\ Out[91]=\begin{pmatrix} ax+bzbt+ay\\ cx+dzdt+cy \end{pmatrix} $$Функция $$\text{Sin}$$, примененная к списку, вычисляется на каждом элементе списка (функции, обладающие таким свойством, называются $$\text{Listable}$$):
$$\tt In[92] := Sin[\{l, 2, 3, 4, 5\}] \\ \\ Out[92] = \{Sin [1] , Sin[2], Sin[3], Sin[4], Sin[5]\}$$Не всякая функция является $$Listable$$:
$$\tt In[93]:= f [\{1, 2, 3, 4, 5\}] \\ \\ Out[93] = f [\{1, 2, 3, 4, 5\}]$$Чтобы применить функцию $$f$$, не являющуюся $$\text{Listable}$$, к списку $$\text{list}$$, можно воспользоваться командой $$\text{Map[f, list]}$$:
$$\tt In[94]: = Map[f,\{1, 2, 3, 4, 5\}] Out[94]=\{f [1], f[2], f[3], f[4], f[5]\}$$Функцию $$f$$ удобно задавать непосредственно внутри команды $$\text{Map}$$, не присваивая ей имени:
$$\tt In[95]:= Map[\#^2 \, \{1, 2, 3, 4, 5\}] \\ \\ Out[95] = \{1, 4, 9, 16, 25\}$$Чтобы применить функцию $$f$$ нескольких переменных к набору списков, нужна команда $$\text{\tt MapThread[f, \{list1, list2, \ldots \}]}$$:
$$\tt In[96]:= MapThread[\#1^2 - \#2^3 , \{\{1, 2, 3\}, \{x, у, z\}\} \\ \\ Out[96] = \{1 - x^3, 4-y^3, 9-z^3\}$$Следующая команда задает список от 1 до 17 с шагом 2:
$$\tt In[97]:= Table[k, \{k, 1, 17, 2\}] \\ \\ Out[97]=\{1, 3, 5, 7, 9, 11, 13, 15, 17\}$$Следующая команда задает матрицу из трех строк ($$i$$ - номер строки) длины 5 (элементы строки нумеруются $$j$$), в которой $$(i, j)$$-й элемент имеет вид $$i + j$$:
$$\tt In[98]:= Table [i + j, \{i, 1, 3\}, \{j, 1, 5\}] \\ \\ Out[98] =\{\{2, 3, 4, 5, 6\}, \{3, 4, 5, 6, 7\}, \{4, 5, 6, 7, 8\}\}$$Следующая команда создает список натуральных чисел от 1 до 5:
$$\tt In[99]: = Range [5] \\ \\ Out[99] = {1, 2, 3, 4, 5}$$Следующая команда объединяет списки:
$$\tt In[100]:=Join[ \{ 1, 2, 3\} , \{ 3, 4, 5\} ] \\ \phantom{In[100]:=}\,\{1, 2, 3\} \sim Join \sim \{ 3, 4, 5\} \\ \\ Out[100]=\{ 1, 2, 3, 3, 4, 5\} \\ \\ Out[101]= \{ 1, 2, 3, 3, 4, 5\} $$Следующая команда объединяет подсписки в единый список (убирает внутренние фигурные скобки):
$$\tt In[102]:= \begin{pmatrix} 12\\ 34 \end{pmatrix}}\\ \phantom{In[102]:=}\,Flatten \begin{matrix} \left [ \begin{pmatrix} 12\\ 34 \end{pmatrix} \right ]} \end{matrix} \\ \\ Out[102]=\{\{1,2\}, \{3,4\}\} \\ \\ Out[103]=\{1,2,3,4\}$$Следующая функция создает список из последовательных непересекающихся подсписков длины 3:
$$\tt In[104]:= Partition[\{a,b,c,d,e,f,g\},3] \\ \\ Out[104]=\{\{a,b,c\}, \{d,e,f\}\} \\ \\ In[105]:=m=\{\{1,2,3\}, \{4,5,6\}, \{7,8,9\}\}; \\ \phantom{In[105]:=}\;m// MatrixForm \\ \phantom{In[105]:=}\;Transpose[m] // MatrixForm \\ \\ Out[106]=\begin{pmatrix} 123\\ 456\\ 789 \end{pmatrix}\\ \\ Out[107]=\begin{pmatrix} 147\\ 258\\ 369 \end{pmatrix}$$
$$\tt
In[109]:= Plot3D[x\^\,\!2 - у\^\,\!2, \{х,-1,1\},\{у, -1, 1\}] \\ \\$$
$$\tt
In[110]:= ParametricPlot[\{Cos[t], Sin[t] Cos [t] \}, \{t, 0, 2\pi \}]$$
$$\tt
In[111]:= ParametricPlot3D[\{ 8 Cos[t] , 8 Sin[t], t\} , \{ t, 0, 6\pi \}]$$
$$\tt
In[112]:=ParametricPlot3D [\{ Cos [u] , Sin[u] Cos [v] , Cos [v] \}, \\
\phantom{In[112]:=P}\!\{u,0,2\pi\}, \{v,0,2\pi\}]$$
Катеноид (минимальная поверхность вращения):
$$\tt In[113]:=ParametricPlot3D[\{Cosh[u] Cos[v], Cosh[u] Sin[v], u\}, \\ \phantom{In[113]:=P}\{u,-1,1\}, \{v,0,2\pi\}]$$
Геликоид (минимальная линейчатая поверхность):
$$\tt In[114]:=ParametricPlot3D[\{Sinh[u] Sin[v], -Sinh[u] Cos[v], v\}, \\ \phantom{In[114]:=P}\!\{u,-1,1\}, \{v, 0, 2\pi\}]$$
Изгибание катеноида в геликоид (здесь $$\text{PlotRange}$$ описывает отрезки изменения координат $$(x, у, z)$$ точек поверхности; $$\text{Mesh}$$ - координатная сетка на поверхности, в данном случае $$\text{Mesh} $\to$ \text{None}$$ означает, что сетка отсутствует; $$\text{PlotPoints}$$ - количество точек на каждой координатной кривой: чем больше точек, тем более гладко выглядит поверхность, хотя прорисовка замедляется; $$\alpha$$ - параметр изгибания).
$$\tt In[115]:= \\ \\ \phantom{In}Manipulate[ \\ \phantom{\phantom{In}M}ParametricPlot3D[Cos[$\alpha$] \{Cosh[u] Cos[v], Cosh[u] Sin[v], u\}+ \\ \phantom{\phantom{\phantom{In}M}Pa}Sin[$\alpha$] \{Sinh[u] Sin[v], - Sinh[u] Cos[v], v\}, \{u, -1, 1\}, \\ \phantom{\phantom{\phantom{In}M}P}\{v, 0, 2$\pi$\}, \\ \phantom{\phantom{\phantom{In}M}P}PlotRange $\to$ \{\{-1.6, 1.6\}, \{-1.6, 1.6\}, \{-1, 6.5\}\}, Mesh $\to$ None, \\ \phantom{\phantom{\phantom{In}M}P}PlotPoints $\to$ 30, ImageSize $\to$ 200], \\ \phantom{\phantom{In}M}\{$\alpha$, 0, $\frac{\pi}{2}$\}]$$
Значок $$"\to"$$ получается последовательным набором - и > или с использованием палетки $$\text{BasicMathInput}$$.
$$\tt In[126]:= \{Cos[x], x\^\,\!2 + z\^\,\!3, у, z} /. x $\to$ b\} \\ \\ \tt Out[126]= \{Cos[b], $b^2 + z^3, y, z$\} \\ \\ In[127]:= \{Cos[x], x\^\,\!2 + x\^\,\!3, у, z\} /. Cos $\to$ Sin \\ \\ \tt Out[127]= \{Sin[x], $x^2 + z^3, y, z$\} \\ \\ In[128]:= \{Cos[x], x\^\,\!2 + z\^\,\!3, y, z\} /. z $\to$ \{a, b\} \\ \\ \tt Out[l28]= \{Cos[x], $\{a^3+x^2, b^3+x^2\}, y, \{a, b\}$\} \\ \\ ln[129]:= \{Cos[x], х\^\,\!2 + z\^\,\!3, у, z\} /. \{x $\to$ a, у $\to$ b\} \\ \\ \tt Out[129]= \{Cos[a], $a^2 + z^3, b, z$\} \\ \\ In[130]:= \{Cos[x], х\^\,\!2 + z\^\,\!3, у, z\} /. \{\{x $\to$ a\} , \{y $\to$ b\}\} \\ \\ \tt Out[130]= \{\{Cos[a], $a^2 + z^3, y, z$\}, \{cos[x], $x^2 + z^3, b, z$\}\} \\ \\ In[131]:= \{Cos[x], x\^\,\!2 + z\^\,\!3, y, z\} /. \{x $\to$ a, a $\to$ b\} \\ \\ \tt 0ut[131]= \{Cos[a], $a^2 + z^3, y, z$\} \\ \\ In[132]:= \{Cos[x], x\^\,\!2 + z\^\,\!3, y, z\} /. x $\to$ a /. a $\to$ b \\ \\ \tt Out[132]= \{Cos[b], $b^2 + z^3, y, z$\}$$Значок $$": \to"$$ получается последовательным набором $$\text{:}$$ и $$\text{>}$$ или с использованием палетки $$\text{BasicMathInput}$$. В отличие от $$\text{lhs} $\to$ \text{rhs}$$, которое сначала вычисляет $$\text{rhs}$$, а потом заменяет на результат вычислений все вхождения $$\text{lhs}$$, правило $$\text{lhs} $\to$ \text{rhs}$$ вычисляет $$\text{rhs}$$ отдельно для каждого вхождения $$\text{lhs}$$:
$$\tt In[133]:={x, х, х} /. x $\to$ Random[] \\ \phantom{In[133]:=}{х, х, х} /. х :$\to$ Random[] \\ \\ Out[133]={0.209741, 0.209741, 0.209741} \\ \\ Out[134]={0.0161126, 0.191289, 0.729859}$$Значки $$==$$, $$\geq$$ и $$\leq$$ получаются последовательным набором $$==,>=$$ и $$<=$$ соответственно или с использованием палетки $$\text{BasicMathInput}$$.
$$\tt In[135]:=x == 2 \\ \phantom{In[135]:=}x > 3 \\ \phantom{In[135]:=}x $\geq$ 3 \\ \phantom{In[135]:=}(x $\geq$ 3 \\ x $\leq$ 6)||(x == 8) \\ \\ Out[135]=x == 2 \\ \\ Out[136]=x > 3 \\ \\ Out[137]=x $\geq$ 3 \\ \\ Out[138]=[x $\geq$ 3 \\ x $\leq$ 6) || x == 8$$
$$\tt In[148]:= Clear[f, res]$$
Кроме самого уравнения, нужно задать начальные условия и область изменения переменной:
$$\tt In[149]:=\\ \phantom{In}res=NDSolve[{x''[t]-Sin[x'[t]]==2, x[0]==1, x'[0]==2}, \\ \phantom{\phantom{In}re}x,\{t,0,1\}] \\ \\ Out[149]=\{\{x $\to$ InterpolatingFunction[\{\{0.,1.\}\}, <>]\}\} \\ \\ In[150]:=f=x /. res[\![1]\!] \\ \\ Out[150]=InterpolatingFunction[\{\{0.,1.\}\}, <>] \\ \\ In[151]:=f[0] \\ \phantom{In[151]:=}f'[0] \\ \\ Out[151]=1. \\ \\ Out[152]=2. \\ \\ In[153]:= Plot[f[s],{s,0,1}]$$
$$\tt
n[154]:= Clear[res,f]$$
Если условие дает $$\text{\tt True}$$, то выполняется часть $$\text{\tt t}$$, если условие дает $$\text{\tt False}$$, то выполняется часть $$\text{\tt f}$$, если условие не дает ни $$\text{\tt True}$$, ни $$\text{\tt False}$$, то выполняется часть $$\text{u}$$:
$$\tt In[167]:=abs[x\_ ]:=If[x < 0, -x,x] \\ \phantom{In[167]:=}Map[abs,\{1,0,-1,y\}] \\ \\ Out[168]=\{1,0,1,If[y < 0, -y,y]\} \\ \\ In[169]:= \\ \phantom{In}abs1[x\_]:=If[x >0,-x,x,"значение не сравнимо с нулем"] \\ \phantom{In}Map[abs1,{1,0,-1,y}] \\ \\ Out[170]={1,0,1, значение сравнимо с нулем}$$Последовательно выполняет тесты, возвращая значение $$\text{\tt value}$$ для первого теста, дающего $$\text{\tt True}$$:
$$\tt In[171]:= a=2; Which[a==1,x,a==2,b,a==2,c] \\ \\ Out[171]=b $$Присвоение происходит только в случае, если тест дает $$\text{\tt True (Condition[])}$$:
$$\tt In[172]:=f[x\_{-}]:=$\sqrt{x}$ /;x $\ge$ 0 \\ \\ In[173]:=Map[f,{4,-4}] \\ \\ Out[173]={2,f[-4]}$$В приводимом ниже примере команда $$\text{\tt Print}$$ выводит результат на экран:
$$\tt In[174]:=Do[res=$i^2$; Print[res],\{I,3\}} \\ \\ \tt \phantom{In[174]:}1 \\ \\ \phantom{In[174]:}4 \\ \\ \phantom{In[174]:}9 \\ \\ \tt In[175]:=t=x;Do[t=1/(1+kt), \{k,2,6,2\}];t \\ \\ Out[175]=$\cfrac{1}{1+\cfrac{6}{1+\cfrac{4}{1+2x}}}$ \\ \\ In[176]:=Do[Print[$i^2$],\{i, \{3, 6, 8\}\}] \\ \\ \phantom{In[176]:}9 \\ \\ \phantom{In[176]:}36 \\ \\ \phantom{In[176]:}64 \\ \\ In[177]:=t-x;Do[t=1/(1+t),\{3\}];t \\ \\ Out[177]=$\cfrac{1}{1+\cfrac{1}{1+\cfrac{1}{1+x}}$$$Здесь $$\text{\tt n++}$$ означает увеличение $$\text{\tt n}$$ на единичку; равносильно $$\text{\tt n = n + 1}$$:
$$\tt In[179]:=n=1; m=1; While[n $\le$ 5, m=mn; n++; Print[m]] \\ \\ \phantom{In[179]}1 \\ \\ \phantom{In[179]}2 \\ \\ \phantom{In[179]}6 \\ \\ \phantom{In[179]}24 \\ \\ \phantom{In[179]}120 $$В следующем примере $$\text{\tt PrimeQ[n]}$$ дает $$\text{\tt True}$$, если $$\text{\tt n}$$ - простое число:
$$\tt In[182]:=Do[If[!PrimeQ[k], Continue[], Print[k]],{k, 15}] \\ \\ \phantom{In[182]:}2 \\ \\ \phantom{In[182]:}3 \\ \\ \phantom{In[182]:}5 \\ \\ \phantom{In[182]:}7 \\ \\ \phantom{In[182]:}11 \\ \\ \phantom{In[182]:}13 \\ \\ In[183]:=f[x\_]:=(If[x < 0, Return[-$x^2$]]; $x^2$) \\ \phantom{In[183]:=}Plot[f[x], {x, -1,1}]$$
$$\tt
In[185]:=x=2; Label[start]; Print[x];x+=2;\\
\phantom{In[185]:=}If[x < 8, Goto[start]] \\ \\
\phantom{In[185]:}2
\phantom{In[185]:}4
\phantom{In[185]:}6
In[186]:= Clear[abs, abs1,a,res,I,m,n,t,f,x]$$
Как при определении выражений, так и в полях, отведенных для аргументов, можно писать не одно выражение, а последовательности выражений. Ниже приведены правила написания таких последовательностей
В выражении $$\text{\tt Module[x,y, ..., expr]}$$ переменные $$\text{\tt x, y, ..}$$. локальны, т. е. определены лишь внутри этой конструкции. При этом значения одноименных переменных, определенных снаружи, не используются при вычислении модуля, в то время как значения неодноименных наружных переменных используются.
Из приведенного примера видно, что внутренняя переменная $$\text{\tt x}$$ на самом деле имеет другое имя:
$$\tt In[195]:=x=1; \\ \phantom{In[195]:=}y=2; \\ \phantom{In[195]:=}z=3; \\ \phantom{In[195]:=}Module[{x},x] \\ \phantom{In[195]:=}Module[{x}, x=5;z=6;xy] \\ \phantom{In[195]:=}x \\ \phantom{In[195]:=}z \\ \\ Out[198]=x\$1424 \\ \\ Out[199]=10 \\ \\ Out[200]=1 \\ \\ Out[201]=6$$Локальным переменным можно присваивать начальные значения прямо в месте их декларации, т. е. $$\text{\tt Module[\{x = x0, y = y0, z, \ldots\}, expr]}$$ ($$\text{\tt AxesOrigin}$$ в команде $$\text{\tt Plot}$$ задает координаты точки, через которую проводятся координатные оси):
$$\tt In[202]:=\!f[x0\_]:= \\ \phantom{In[202]:=f[}Module[\{x=x0, y=5, z\}, z=y-x; If[z \ge 0,5,x] \\ \phantom{In[202]:=f[}]; \\ \phantom{In[202]:=}Plot[f[x],\{x,0,10\}, AxesOrigin \to \{0,0\}]$$
Выражение $$\text{\tt Block[x, y, ..., expr]}$$ вычисляется со значениями переменных $$\text{\tt x, y, ...}$$, заданных внутри блока. При этом значения одноименных переменных, определенных снаружи, используются при вычислении модуля, если они не были переопределены в блоке. Переопределенные в блоке переменные $$\text{\tt x, y, ...}$$ при выходе из блока восстанавливают свое предыдущее значение:
$$\tt In[204]:=x=2; \\ \phantom{In[204]:=}Block[{x},x] \\ \phantom{In[204]:=}Block[{x=5},x] \\ \phantom{In[204]:=}x \\ \\ Out[205]=2 \\ \\ Out[206]=5 \\ \\ Out[207]=2 \\ \\ In[208]:= Clear[x,y,z,f]$$Задачи взяты из книги А. С. Мищенко, Ю. П. Соловьева, А. Т. Фоменко, "Сборник задач по дифференциальной геометрии и топологии" [5].
(2.1) Точка $$M$$ равномерно движется по прямой $$ON$$, равномерно вращающейся вокруг точки $$O$$. Составить уравнение траектории точки $$M$$ (спираль Архимеда).
Решение. Пусть $$O$$ - начало координат. Если $$\varphi_0$$ - начальный угол между прямой $$ON$$ и положительным направлением оси абсцисс, а $$\omega$$ - угловая скорость вращения прямой $$ON$$ вокруг $$O$$, то в момент времени $$t$$ угол $$\varphi_t$$ между $$ON$$ и осью абсцисс изменяется линейно и записывается в виде
$$\tt In[209]:= $\varphi$ [t\_]:=$\varphi$ 0+ $\omega$ t$$Если начальное расстояние от $$M$$ до $$O$$ равно $$r_0$$, а точка $$O$$ движется по $$ON$$ со скоростью $$v$$, то в момент времени $$t$$ расстояние $$r[t]$$ между $$M$$ и $$O$$ равно
$$\tt In[210]:= r[t\_]:=r0+vt;$$Таким образом, координаты точки $$M$$ в момент времени $$t$$ равны
$$\tt In[211]:= $\gamma$[t\_]:=r[t] \{Cos[$\varphi$[t]], Sin[$\varphi$[t]]\} \\ \\ In[212]:= $\gamma$[t] \\ \\ Out[212]=\{(r0+tv)Cos[$\varphi$0+t$\omega$], (r0+tv)Sin[$\varphi$0+t$\omega$]\}$$Изобразим траекторию, фиксировав некоторые значения параметров:
$$\tt In[213]:=ParametricPlot[$\gamma$[t] /. \{$\varphi$0 $\to$ 0, r0 $\to$ 1, $\omega$ $\to$ 5, v $\to$ 1\}, \\ \phantom{In[213]:=P}\{t, 0, 10\}]$$
$$\tt
In[214]: Clear[$\varphi$, $\gamma$, r]$$
(2.19) Под каким углом пересекаются кривые $$x^2=4y$$ и $$y=\frac{8}{x^2+4}$$?
Решение. Найдем точки пересечения кривых:
$$\tt In[215]:=res=Solve$\left[\left\{x^{2}==4y, y== \frac{8}{x^2+4)\right\},\{x,y\}\right]$ \\ \\ Out[215]=$\left\{\left\{y \to -2, x \to -2i \sqrt{2}\right\}\right.$, \\ \\ \phantom{Out[215]= }$\left.\left\{y \to -2, x \to 2i \sqrt{2}\right\}, \{y \to 1, x \to -2\}, \{y\to 1, x\to 2\} \right\}$$$Так как кривые вещественные, подходят лишь третье и четвертое решения. Так как кривые инвариантны при замене $$x$$ на $$-x$$, углы пересечения в обеих точках одинаковы, поэтому достаточно вычислить угол лишь, скажем, для четвертого решения. Заметим, что обе кривые являются графиками функций параметра $$x$$, поэтому они могут быть параметризованы $$x$$. Имеем (функция $$\text{\tt Norm[v]}$$, которую мы используем ниже, равна евклидовой длине вектора $$v$$ )
$$ \text{In[216]:=}\gamma 1[x\_]:=\left\{x, \frac{x^2}{4}\right\}; \gamma 2[x\_]:=\left\{x, \frac{8}{x^2+4}\right\};\\ \phantom{\text{In[216]:=}}v1:=\gamma 1'[x]\text{ /. res}[\![4]\!]; v2:=\gamma 2'[x]\text{ /. res}[\![4]\!];\\ \phantom{\text{In[216]:=}}\varphi=\text{ArcCos} \left[\frac{v1.v2}{\text{Norm}[v1]\text{Norm}[v2]}\right] \\ \\ \text{Out[218]=ArcCos}\left[\frac{1}{\sqrt{10}}\right] $$Изобразим эти кривые:
$$ \text{In[219]:=Plot}\left[\left\{\frac{x^2}{4}, \frac{8}{x^2+4}\right\}, \{x,0,3\}\right] $$
$$\tt
In[220]:=Clear[$\gamma$1, $\gamma$2, v1, v2, res, $\varphi$]$$
(2.22) Вокруг оси $$Oz$$ вращается окружность $$x = a + b cos[v], z =b sin[v] (0 < b < a)$$. Составить уравнение поверхности вращения.
Решение. Если точку с координатами $${a+b cos[v], 0, b sin[v]}$$ повернуть на угол $$\varphi$$ вокруг оси $$Oz$$, то у полученной точки будут координаты
$$\tt In[221]:=r[$\varphi$\_, v\_] := \{(a+b Cos[v])Cos[$\varphi$], (a+bCos[v])Sin[$\varphi$], \\ \phantom{In[221]:=r[$\varphi$}b Sin[v]\};$$Нарисуем эту поверхность (являющуюся, очевидно, тором) при следующих значениях параметров: $$a = 4, b = 2$$ при изменении $$\varphi$$ и $$v$$ в пределах от 0 до $$2 \pi$$.
$$\tt In[222]:=ParametricPlot3D[r[$\varphi$, v]/. \{a $\to$ 4, b $\to$ 2\}, \{$\varphi$, 0, 2$\pi$ \}, \\ \phantom{In[222]:=P}\{v, 0, 2 $\pi$\}]$$
Изобразим зависимость тора от параметров (здесь $$\text{\pp \{\{aa, 4\}, 1, 6\}}$$ означает, что параметр $$aa$$ может меняться в пределах между 1 и 6, причем начальное его значение равно 4; аналогично для параметра $$bb$$ ):
$$\tt In[223]:= \\ \\ \phantom{In}Module[\{r,a,b\}, \\ \phantom{InM}r[$\varphi$\_, v\_] := \{(a+bCos[v])Cos[$\varphi$], (a+bCos[v])Sin[$\varphi$], \\ \phantom{InMod}bSin[v]\}; \\ \phantom{InM}Manipulate[ParametricPlot3D[r[$\varphi$, v] /. \{a$\to$aa, b$\to$bb\}, \\ \phantom{InMod}\{$\varphi$, 0, 2$\pi$\}, \{v, 0, 2$\pi$\}, Mesh$\to$None, PlotPoints$\to$30, \\ \phantom{InMod}PlotRange$\to$\{\{-12,12\}, \{-12, 12\}, \{-6,6\}\}, ImageSize$\to$300], \\ \phantom{InMo}\{\{aa, 4\}1,6\}, \{\{bb,2\},1,6\}] \\ \phantom{In}]$$
$$\tt In[224]:=Clear[r]$$
(4.1) Вычислить кривизну следующих кривых: б) $$y = a ch(x/a)$$.
Решение 1. В качестве параметра выберем $$x$$, тогда
$$\tt In[225]:=$\gamma$[x\_] := \{x, a Cosh$\left[\frac{x}{a}\right]$\}; $$Найдем натуральный параметр:
$$ \text{In[226]:=}f[x\_]=\int \sqrt{\gamma '[x]. \gamma '[x]} dx}\\ \\ \text{Out[226]=}a \sqrt{Cosh\left[\frac xa\right]^2} Tanh\left[\frac xa\right]\\ \\ \text{In[227]:=}f[x\_]=\text{Simplify}\left[\int \sqrt{\gamma '[x].\gamma '[x]} dx\right]\\ \\ \text{Out[227]=}a\sqrt{Cosh\left[\frac xa\right]^2} Tanh\left[\frac xa\right]$$В качестве второго параметра команды $$\tt Simplify$$ можно указать предположения, которые помогут упростить выражение:
$$ \text{In[228]:=}f[x\_]=\text{Simplify}\left[\int\sqrt{\gamma '[x]. \gamma '[x]} dx, \text{ Cosh}\left[\frac xa\right] \ge 0\right] \\ \\ \text{Out[228]=}a Sinh\left[\frac xa\right]$$Выразим $$x$$ через натуральный параметр $$s$$:
$$\tt In[229]:=g[s\_]=InverseFunction[f][s] \\ \\ Out[229]=$f^{(-1)} [s]$$$Заменим параметр на натуральный:
$$ \text{In[230]:=}\gamma 1[s\_]=\gamma [x] /. x \to g[s] \\ \\ \text{Out[230]=}\left\{f^{(-1)}[s], a Cosh\left[\frac{f^{(-1)}[s]}{a}\right]\right\} \\ \\ \text{In[231]:=}k[s\_]=\sqrt{\gamma 1''[s].\gamma 1''[s]} \text{// Simplify} \\ \\ \text{Out[231]=}\sqrt{\frac{Sech\left[\frac{f^{-1}[s]}{a}\right]^4}{a^2}}$$Выразим $$x$$ через натуральный параметр $$s$$ (другой способ):
$$\tt In[232]:=res=Solve[s == f[x], x] \\ \\ \\ \phantom{In[232]}Solve::ifun: \\ \phantom{In[232]:=}Inverse functions are being used by Solve, so some solutions may not be found; \\ \phantom{In[232]:=res=S}Use Reduce for complete solution information.>> \\ \\ Out[232]=$\left\{\left\{x \to a ArcSinh\left[\frac sa\right]\right\}\right\}$ \\ \\ In[233]:= $\gamma$1[s\_]=$\gamma$[x] /. res[\![1]\!] \\ \\ Out[233]=$\{a ArcSinh[\frac sa], a \sqrt{1+\frac {s^2}{a^2}}\}$ \\ \\ In[234]:=k[s\_]=$\sqrt{\gamma 1''[s].\gamma 1''[s]$ \\ \\ Out[234]=$\sqrt{\frac{s^2}{a^4+\left(1+\frac{s^2}{a^2}\right)^3}+\left(-\frac{s^2}{a^3\left(1+\frac{s^2}{a^2}\right)^{\frac 32}}+\frac{1}{a \sqrt{1+\frac{s^2}{a^2}}}\right)^2}$ \\ \\ In[235]:= k[s\_]=Simplify$\left[\sqrt{\gamma 1''[s]. \gamma 1''[s]}\right]$ \\ \\ Out[235]=$\sqrt{\frac{a^2}{(a^2+s^2)^2}}$ \\ \\ In[236]:=k[s\_]=Simplify$\left[\sqrt{\gamma 1''[s]. \gamma1''[s]}, \left\{a>0, a^2+s^2>0\right\}\right]$ \\ \\ Out[236]=$\frac{a}{a^2+s^2}$$$Решение 2. Вновь в качестве параметра выберем $$x$$ и воспользуемся формулой кривизны произвольно параметризованной кривой. Имеем
$$ \text{In[237]:=}\gamma[x\_]=\left\{x, a Cosh\left[\frac xa\right]\right\}; \\ \phantom{\text{In[237]:=}}k[x\_]=\frac{Abs[Det[\{\gamma '[x], \gamma ''[x]\}]]}{Norm[\gamma '[x]]^3} \\ \\ \text{Out[238]=}\frac{Abs\left[\frac{Cosh\left[\frac xa\right]}{a}\right]}{(1+Abs\left[Sinh\left[\frac xa\right]\right]^2\right)^{\frac 32}} \\ \\ \text{In[239]:=} \\ \phantom{In}k[x\_]=Simplify\left[Abs[Det[\{\gamma'[x], \gamma''[x]\}]]/Norm[\gamma'[x]]^3,\right.\\ \phantom{In[23}\left.\left\{Sinh\left[\frac xa\right] \ge 0, Cosh\left[\frac xa\right] \ge 0, a \ge 0\right\}\right]} \\ \\ \text{Out[239]=}\frac{Sech\left[\frac xa\right]^2}{a}$$Проверим, что получился тот же результат:
$$\tt In[240]:=k[x] /. res[\![1]\!] //Simplify} \\ \\ Out[240]=$\frac{a}{a^2+s^2}$ \\ \\ In[241]:=$\gamma[x]$ \\ \\ Out[241]=$\left\{x, a Cosh\left[\frac xa\right]\right\}$$ $$\tt In[242]:= \\ \\ \phantom{In}Module[\{$\gamma$, k, a\}, \\ \\ \phantom{InM}$\gamma$[x\_] := $\left\{$x, a Cosh$\left.\left[\frac xa\right]\right\}$; k[x\_] := $\frac{\text{Sech}\left[\frac xa\right]^2}{a}$; \\ \phantom{InM}Manipulate[\{ \\ \phantom{InMMa}ParametricPlot[$\gamma$[x] /. a$\to$aa, \{ x, -1, 1\}, \\ \phantom{InMMaP}AspectRatio$\to$Automatic, Plotrange$\to$\{\{-1,1\}, \{-0.1,3.5\}\}, \\ \phantom{InMMap}ImageSize$\to$100], \\ \phantom{InMMa}Plot[k[x] /. a$\to$aa, \{x, -1, 1\}, AspectRatio$\to$Automatic, \\ \phantom{InMMap}PlotRange$\to$\{\{-1, 1\}, \{-0.1, 3.5\}\}, ImageSize$\to$100] \\ \phantom{InMM}\}, \\ \phantom{InMM}\{\{aa, 0.36\}, 0.3, 3\}] \\ \phantom{In}]$$
$$\tt
In[243]:= Clear[$\gamma$, a, $\gamma$1, f, g, res, k]$$
(4.22) Найти параметрические уравнения кривых, зная их натуральные уравнения (здесь $$R = 1/k$$ ): a) $$R = as$$.
Решение 1. Имеем
$$ \text{In[244]:=} k[s\_]\; :=\; \frac{1}{as}; \\ \\ \text{In[245]:=} \alpha [s\_]=\int k[s]ds}\\ \\ \text{Out[245]=} \frac{\text{Log}[s]}{a}\\ \\ \text{In[246]:=} x[s\_]=\int\text{Cos}[\alpha [s]] ds\\ \phantom{\text{In[246]:=}} y[s\_]=\int\text{Sin}[\alpha [s]] ds}\\ \\ \text{Out[246]=} \frac{as\left(a\text{Cos}\left[\frac{\text{Log} [s]}{a}\right] + \text{Sin} \left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}\\ \\ \text{Out[247]=} \frac{as\left(-\text{Cos}\left[\frac{\text{Log}[s]}{a}\right]+a \text{Sin} \left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}\\ \\ \text{In[248]:=} \{x[s],\; y[s]\} \\ \\ \text{Out[248]=} \left\{\frac{as\left(a\text{Cos}\left[\frac{\text{Log}[s]}{a}\right]+\text{Sin}\left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}, \; \frac{as\left(-\text{Cos}\left[\frac{\text{Log}[s]}{a}\right]+a\text{Sin}\left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}\right\}$$Изобразим полученные кривые для параметра $$s$$ в пределах от 0.1 до 20 и изучим их зависимость от параметра $$a$$, изменяющегося в пределах от 0.05 до 1 с начальным значением 0.5:
$$ \text{In[249]:=} \\ \phantom{\text{In}}\text{Module}[\{x,y,a\}, \\ \phantom{\text{InM}}x[s\_]:=\frac{as\left(a \text{Cos} \left[ frac{\text{Log}[s]}{a}\right] + \text{Sin}\left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2};\\ \phantom{\text{InM}}y[s\_]:=\frac{as\left(-\text{Cos}\left[\frac{\text{Log}[s]}{a}\right]+a \text{Sin}\left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}; \\ \phantom{\text{InM}}\text{Manipulate}[\text{ParametricPlot}[\{x[s], y[s]\}\text{ /. } a\to aa, \\ \phantom{\text{InMMa}}\{s,0.1,20\},\text{PlotRange} \to \{\{-3, 3\}, \{-3,3\}\}, \text{ImageSize}\to 250], \\ \phantom{\text{InMM}}\{\{aa, 0.5\}, 0.05,1\}] \\ \phantom{\text{In}}]$$
$$
\text{In[250]:=Clear}[k, \alpha, x,y]\}$$
Решение 2. Вместо явного интегрирования решим систему дифференциальных уравнений:
$$ \text{In[251]:=} \\ \phantom{\text{In}}\text{res}=\text{DSolve}\left[\left\{\alpha'[s]==\frac{1}{as}, x'[s]==\text{Cos}[\alpha [s]], y'[s]==\text{Sin}[\alpha [s]]\right\}\right., \\ \phantom{\text{In[251]}}\left.\{\alpha [s], x[s], y[s]\}, s\right] \\ \\ \text{Out[251]=}\{\{\alpha [s] \to C[1]+\frac{\text{Log}[s]}{a},\\ \phantom{\text{Out[251]=}\{\{}x[s] \to C[2]+\frac{as\left(a \text{Cos}\left[C[1] + \frac{Log[s]}{a}\right]+\text{Sin}[C[1]+\frac{\text{Log}[s]}{a}]\right)}{1+a^2},\\ \phantom{\text{Out[251]=}\{\{}y[s] \to C[3]+\frac{as\left(-\text{Cos}\left[C[1]+\frac{\text{Log}[s]}{a}\right]+a \text{Sin}\left[C[1]+\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}\}\} $$Задав начальные значения констант равными нулю, получим (сравните с предыдущим результатом)
$$ \text{In[252]:=\{x[s], y[s]\} /. res[\![1]\!] /. \{C[1]}\to\text{0, C[2]} \to \text{0, C[3]} \to \text{0\} // Simplify} \\ \\ \text{Out[252]=}\left\{\frac{as\left(a \text{Cos}\left[\frac{\text{Log}[s]}{a}\right] + \text{Sin}\left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}, \frac{as\left(-\text{Cos}\left[\frac{\text{Log}[s]}{a}\right]+a \text{Sin} \left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}\right\}\\ \\ \text{In[253]:=Clear[k, } \alpha\text{, x, y, res]}$$Важное замечание. Численная реализация Решения 2 работает даже тогда, когда $$Mathematica$$ не может посчитать интегралы. Проиллюстрируем это на примере:
$$\tt In[254]:=k[s\_]=se^s;$$Первый способ:
$$\tt In[255]:=$\alpha$[s\_]=$\int$k[s] ds \\ \\ Out[255]=$e^s$ (-1+s) \\ \\ In[256]:=x[s\_]=$\int$Cos[$\alpha$[s]] ds \\ \phantom{In[256]:=}y[s\_]=$\int$Sin[$\alpha$[s]] ds \\ \\ Out[256]=$\int$Cos[$e^s$(-1+s)] ds \\ \\ Out[257]=$\int$Sin[$e^s$(-1+s)] ds \\ \\ In[258]:=ParametricPlot[\{x[s], y[s]\}, \{s, 0.1, 1\}] \\ \\ Integrate::ilim : Invalid integration variable or limit(s) in 0.1'.>> \\ \\ Integrate::ilim : Invalid integration variable or limit(s) in 0.10001836734693878'.>> \\ \\ Integrate::ilim : Invalid integration variable or limit(s) in 0.10001836734693878'.>> \\ \\ \\ \phantom{In}General::stop : Further output of Integrate::ilib will be suppressed during this calculation.>>$$
$$\tt
In[259]:=Clear[k, $\alpha$, x, y]$$
Второй способ:
$$\tt In[260]:= \\ \\ \phantom{In}k[s\_]:=s$e^s$; \\ \phantom{In}res= \\ \phantom{Inr}NDSolve[\{$\alpha$'[s]==k[s], x'[s]==Cos[$\alpha$[s]], y'[s]==Sin[$\alpha$[s]], \\ \phantom{InrND}$\alpha$[0]==0, x[0]==0, y[0]==0\}, \{$\alpha$[s], x[s], y[s]\}, \{s,0,1\}]\} \\ \\ Out[261]=\{\{$\alpha$[s]$\to$InterpolatingFunction[\{\{0., 1.\}\}, <>][s], \\ \phantom{Out[261]=\{\{}x[s]$\to$InterpolatingFunction[\{\{0., 1.\}\}, <>][s], \\ \phantom{Out[261]=\{\{}y[s]$\to$InterpolatingFunction[\{\{0., 1.\}\}, <>][s]\}\} \\ \\ In[262]:=$\gamma$[s\_]=\{x[s], y[s]\} /. res[\![1]\!] // Simplify \\ \\ Out[262]=\{InterpolatingFunction[\{\{0., 1.\}\}<>][s], \\ \phantom{Out[262]=\{}InterpolatingFunction[\{\{0., 1.\}\},<>][s]\} \\ \\ In[263]:=ParametricPlot[$\gamma$[s], \{s, 0, 1\}]$$
$$\tt
In[264]:=Clear[k, $\gamma$]$$
Построить пространственную кривую с кривизной $$k[t] = 1 + sin[t]^2$$ и кручением $$и[t] = cos[t]$$.
$$\tt In[265]:=\\ \\ \phantom{In}k[t\_]=1+Sin$[t]^2$; k[t\_] = Cos[t]; $\gamma$[t\_] := \{x[t], y[t], z[t]\}; \\ \phantom{In}eq[$\xi$\_, $\eta$\_]:=Table[$\xi$[\![i]\!]==$\eta$[\![i]\!], \{i,3\}]; \\ \phantom{In}v[t\_]=\{v1[t], v2[t], v3[t]\}; \\ \phantom{In}n[t\_]=\{n1[t], n2[t], n3[t]\}; \\ \phantom{In}b[t\_]=\{b1[t], b2[t], b3[t]\};\\ \\ In[269]:= \phantom{In}frenet=eq[$\gamma$'[t], v[t]]$\sim$Join$\sim$eq[v'[t], k[t]n[t]]$\sim$Join$\sim$ \\ \phantom{Infr}eq[n'[t], -k[t]v[t] + $\kappa$[t]b[t]]$\sim$Join$\sim$ eq[b'[t], -$\kappa$[t]n[t]] \\ \\$$ $$\tt Out[269]=\{x'[t] == v1[t], y'[t] == v2[t], \\ \phantom{Out[269]=\{}z'[t] == v3[t], v1'[t] == n1[t] (1+Sin[t]^{2}), \\ \tt \phantom{Out[269]=}v2'[t] == n2[t] (1+Sin[t]^{2}), v3'[t] == n3[t] (1+Sin[t]^{2}), \\ \phantom{Out[269]=}n1'[t] == b1[t] Cos[t] + (-1-Sin[t]^{2}) v1[t], \\ \phantom{Out[269]=}n2'[t] == b2[t] Cos[t] + (-1-Sin[t]^{2}) v2[t], \\ \phantom{Out[269]=}n3'[t] == b3[t] Cos[t] + (-1-Sin[t]^{2}) v3[t], \\ \phantom{Out[269]=}b1'[t] == -Cos[t] n1[t], \\ \phantom{Out[269]=}b2'[t] == -Cos[t] n2[t], b3'[t] == -Cos[t] n3[t]\} $$ $$\tt In[270]:= \\ \\ \phantom{In}res=NDSolve[frenet$\sim$Join$\sim$eq[$\gamma$[0], \{0,0,0\}]$\sim$Join$\sim$ \\ \phantom{Inres}eq[v[0], \{1,0,0\}] $\sim$Join$\sim$eq[n[0], \{0,1,0\}$\sim$Join$\sim$ \phantom{Inres}eq[b[0], \{0,0,1\}], $\gamma$[t]$\sim$Join$\sim$v[t]$\sim$Join$\sim$n[t]$\sim$Join$\sim$b[t], \\ \phantom{Inre}\{t,0,100\}] $$ $$\tt Out[270]=\{\{x[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}y[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}z[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}v1[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}v2[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}v3[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}n1[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}n2[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}n3[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}b1[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}b2[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}b3[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t]\}\} $$ $$\tt In[271]:= \\ \phantom{In[271]:=}Manipulate[ParametricPlot3D[$\gamma$[t] /. Res[\![1]\!], \{t,0,aa\}, \\ \phantom{In[271]:=Ma}PlotRange$\to$\{\{-1,1\}, \{0,2\}, \{-1,1\}\}, \\ \phantom{In[271]:=Ma}PlotPoints$\to$Round[$\frac{10}{11}$aa+$\frac{100}{11}$], ImageSize$\to$250], \\ \phantom{In[271]:=M}\{\{aa, 44\}, 1, 100\}]$$
В пакет $$Mathematica$$ встроено подробное описание ($$Help$$). Чтобы в него попасть, нажмите $$\fbox{\text{F1}}$$ или войдите через меню $$\tt \text{Help/Documentation Center}$$.
После запуска программы на экране появляется несколько независимых окон. Вдоль верхней части экрана расположено меню. Слева - рабочее окно. Можно открыть много рабочих окон, выполнив в меню команду $$\text{File/New/Notebook(.nb)}$$. Как видно из названия команды, рабочее окно называется $$\text{Notebook}$$.
Если в рабочее окно ввести произвольный символ, то этот символ отобразится в окне, а справа появится вертикальная скобка, ограничивающая текущее рабочее поле. При дальнейшем вводе новые символы будут также отображаться в рабочем поле. Если произойдет переход на следующую строку, правая скобка расширится. Эта скобка указывает на независимую область, в которой можно расположить команды языка $$Mathematica$$ и одновременно их выполнить. Область, ограниченная скобкой, называется клеткой ($$\text{Cell}$$). Если стать на последней строке клетки и нажать на стрелочку вниз, или же стать на первой строке клетки и нажать на стрелочку вверх, то курсор превратится в горизонтальную линию, расположенную рядом с клеткой. Если опять ввести символ, то появится новая клетка, в которую также можно вводить текст. Кроме того, переходить от клетки к клетки, а также позиционировать курсор между клетками можно с помощью мышки.
В клетки можно вводить произвольные выражения ($$\text{Expression}$$) и вычислять ($$\text{Evaluate}$$) их. Для вычисления нужно, находясь внутри клетки, выполнить команду $$\fbox{\text{Shift}} + \fbox{\text{Enter}}$$ (здесь и всюду ниже знак + обозначает одновременное нажатие клавиш). Поместите курсор внутрь следующей клетки, в которой написано $$\tt 2+2$$, и выполните $$\fbox{\text{Shift}} + \fbox{\text{Enter}}.$$
$$ In[1]:=2 + 2 \\ Out[1] = 4$$После выполнения команды $$\fbox{\text{Shift}} + \fbox{\text{Enter}}$$ слева от выражения появится $$\text{In[1]}$$, нумерующее последовательно выполняющиеся команды. Кроме того, возникнет еще одна клетка с результатом, который будет помечен $$\text{Out[1]}$$. Заметим, что клетка ввода и вывода объединены в одну большую клетку. Вы можете манипулировать результатом многими способами. Один из них - использование символа $$\text{\tt \%}$$, которому присвоен результат последней выполненной команды; последовательности $$\text{\tt \%\%}$$ - результат выполнения предпоследней команды; $$\text{\tt \%\%\%}$$ - предпредпоследней и т.д., а также $$\text{\tt \%n}$$ - результат выполнения команды с номером $$n$$.
Объекты, которыми оперирует $$Mathematica$$:
Замечание
Имеется несколько способов визуализации одного и того же выражения, например,
$$ \tt (1+2.-5.77*3.8)/((3.2-0.1)\^\,\!(1/2)+6\^\,\!2) \\ \\ \tt (1+2.-5.77 3.8)/(Sqrt[3.2-0.1]+6\^\,\!2) \\ \\ Times[ \\ \phantom{Tim}Plus[1, 2., Times[-1, Times[5.77, 3.8]]], \\ \phantom{Tim}Power[Plus[Power[Plus[3.2, -0.1], Times[1, Power[2, -1]]], \\ \phantom{Tim}\phantom{Power[Plus[}Power[6, 2]], -1]]$$В последнем случае $$\text{\tt Times[x,y]}$$ обозначает произведение $$x$$ и $$y$$, $$\text{\tt Plus[x,y]}$$ - их сумму, а $$\text{\tt Power[x,y] - x}$$ в степени $$y$$.
Три типа визуализации выражений
Cтаньте в клетку, вид которой хотите изменить, и выполните соответствующую команду:
$$\text{\tt InputForm (\fbox{Ctrl}+\fbox{Shift}+\fbox{i})}$$:
$$\tt In[2]:= (1 + 2. - 5.77*3.8) / (Sqrt[3.2 - 0.1] + 6 \^\,\! 2) \\ \\ \tt Out[2] =-0.501209$$$$\text{StandardForm (\fbox{Ctrl}+\fbox{Shift}+\fbox{n})}$$:
$$\tt In[3]:=$\frac{1+2.-5.77 \times 3.8}{\sqrt{3.2-0.1}+6^2}$\\ \\ \tt Out[3]=-0.501209$$$$\text{TraditionalForm (\fbox{Ctrl}+\fbox{Shift}+\fbox{t})}$$:
$$\tt In[4]:=$\frac{1+2.-5.77 \times 3.8}{\sqrt{3.2-0.1}+6^2}$\\ \\ \tt Out[4]=-0.501209$$Ввод с клавиатуры в StandardForm
Выражения в $$\text{StandardForm}$$ можно получать сразу. Для этого следует использовать или $$\text{\fbox{Ctrl}}$$ + клавиша, $$\text{\fbox{Esc}}$$ -команда- $$\text{\fbox{Esc}}$$, или вспомогательные панели $$\text{Palettes}$$. Например, $$\text{\fbox{Ctrl}+\fbox{/}}$$ - дробь $$\frac ab$$, $$\text{\fbox{Ctrl}+\fbox{2}}$$ - радикал $$\sqrt x$$, $$\text{\fbox{Ctrl}+\fbox{\^\,\!}}$$ - верхний индекс, как у $$x^2$$, $$\text{\fbox{Ctrl}+\fbox{\phantom{C}\!\!\!\!\!\_\,\!\!}}$$ - нижний индекс, как у $$x_2$$.
Далее, $$\text{\fbox{Esc} pi \fbox{Esc}}$$ - число $$\pi$$, $$\text{\fbox{Esc} ee \fbox{Esc}}$$ - число $$е$$, $$\text{\fbox{Esc} ii \fbox{Esc}}$$ -
Выражение
$$ \tt In[5]:=(1 + 2. - 5.77*3.8)/((3.2 - 0.1)\^\,\!(1/2) + 6\^\,\!2) \\ \\ \tt Out[5]=-0.501209$$в действительности имеет вид
$$ \tt In[6]:=Times[Plus[1,2.', Times[-1, Times[5.77', 3.8']]], \\ \phantom{In[6]:=T}Power[ \\ \phantom{In[6]:=T}\phantom{P}Plus[Power[Plus[3.2',-0.1'], Times[1, Power[2,-1]]], \\ \phantom{In[6]:=T}\phantom{PP}Power[6, 2]], -1]] \\ \\ \tt Out[6]=-0.501209$$Чтобы вычислить выражение, поместите курсор внутрь содержащей его клетки и выполните команду $$\text{\fbox{Shift} + \fbox{Enter}}$$:
$$\tt In[7]:=(1 + 2. - 5.77*3.8)/((3.2 - 0.1)\^\,\!(1/2) + 6\^\,\!2) \\ \\ Out[7]=-0.501209$$Арифметические операции $$\text{\tt (+, -, *, /, \^\,\!)}$$; знак $$\text{\tt *}$$ можно не писать (вместо него - пробел, который $$Mathematica$$ в некоторых случаях автоматически заменяет соответствующим значком):
$$\tt In[8]:=ab2 \times 3cd+xy-2z \\ \\ Out[8]=6abcd+xy-2 z$$Встроенные функции и символы всегда начинаются с прописной буквы, поэтому пользовательские символы и выражения рекомендуется начинать со строчных букв.
Примеры встроенных символов:
$$\tt In[9]:= Pi \\ \phantom{In[9]:= }E \\ \phantom{In[9]:= }I \\ \\ Out[9]= $\pi$ \\ \\ \tt Out[10]= $e$ \\ \\ Out[11]= $i$$$Чтобы вывести соответствующее десятичное представление для выражения $$\text{\tt expr}$$, нужно выполнить команду $$\text{\tt N[expr]}$$ или $$\text{\tt N[expr,n]}$$, где $$n$$ - число цифр в десятичном представлении, например:
$$\tt In[12]:=N[Pi] \\ \phantom{In[12]:=}N[Pi,10] \\ \phantom{In[12]:=}N[100Pi, 10] \\ \phantom{In[12]:=}N[E] \\ \phantom{In[12]:=}N[I] \\ \\ Out[12]=3.14159 \\ \\ Out[13]=3.141592654 \\ \\ Out[14]=314.1592654 \\ \\ Out[15]=2.71828 \\ \\ Out[16]=0.+1.i$$Встроенным символам значения переприсвоить нельзя:
$$\tt In[21]:=Pi=10 \\ \\ \phantom{In[21]:}Set::wrsym: Symbol $\pi$ is Protected.>> \\ \\ Out[21]=10 \\ \\ In[22]:=Pi \\ \phantom{In[22]:=}N[Pi] \\ \\ Out[22]=$\pi$ \\ \\ Out[23]=3.14159 \\ \\ In[24]:=Pi=. \\ \\ \phantom{In[21]:}Unset::wrsym:Symbol $\pi$ is Protected.>> \\ \\ Out[24]=\$Failed \\ \\ In[25]:=Pi \\ \phantom{In[25]:=}N[Pi] \\ \\ Out[25]=$\pi$ \\ \\ Out[26]=3.14159$$Встроенные:
$$\tt In[27]:=Sin[$\pi$/2] \\ \\ Out[27]=1$$Создание выражений:
$$\tt In[28]:=f[x\_]:=x^2 \\ \\ In[29]:=\!f[2] \\ \phantom{In[29]:=}f[a] \\ \phantom{In[29]:=}f[Sin [x]]+f[Cos[x]] \\ \\ Out[29]=4 \\ \\ Out[30]=a^2 \\ \\ Out[31]=Cos[x]^2+Sin[x]^2$$Значок $$\text{:=}$$ называется $$\text{SetDelayed}$$. Он отличается от значка $$\text{=}$$, который называется $$\text{Set}$$, тем, как осуществляется вычисление присвоенного выражения. $$\text{Set}$$ вычисляет правую часть $$\text{rhs}$$ формулы $$\text{lhs = rhs}$$ еще до присвоения и результат присваивает левой части $$\text{lhs}$$; $$\text{SetDelayed}$$ присваивает левой части $$\text{lhs}$$ невычисленную правую часть $$\text{rhs}$$, и при каждом вычислении левой части присвоенная правая часть вычисляется заново с использованием текущих значений связанных с $$\text{rhs}$$ объектов.
Для примера используем функцию $$\text{Random[ ]}$$, которая выдает случайное вещественное число в пределах между 0 и 1. В первом примере перед присвоением вычисляется некоторое случайное число и результат присваивается переменной $$z$$, поэтому при каждом появлении $$z$$ заменяется на одно и то же присвоенное число. Во втором примере $$z$$ присваивается неотработанная функция $$\text{Random[ ]}$$, и при каждом появлении $$z$$ эта функция вычисляется каждый раз заново, чем и объясняются разные результаты вычисления $$z$$.
$$\tt In[32]:=z=Random[] \\ \phantom{In[32]:=}\,z \\ \phantom{In[32]:=}\,z \\ \\ Out[32]=0.871538 \\ \\ Out[33]=0.871538 \\ \\ Out[34]=0.871538 \\ \\ In[35]:=z:=Random[] \\ \phantom{In[35]:=}\,z \\ \phantom{In[35]:=}\,z \\ \\ Out[36]=0.877299 \\ \\ Out[37]=0.620971 \\ \\ In[38]:=z=.$$Еще один пример:
$$\tt In[39]:=y=2 \\ \\ Out[39]=2 \\ \\ In[40]:=f[y_]=y^3 \\ \\ Out[40]=8 \\ \\ In[41]:=g[y_]:=y^3 \\ \\ In[42]:=f[w] \\ \phantom{In[42]:=}\,g[w] \\ \\ Out[42]=8 \\ \\ Out[43]=w^3 \\ \\ In[44]:=y=.$$Для одновременной очистки нескольких присвоений, сделанных для $$f, g, \dots$$, можно использовать $$\text{\tt Clear[f, g, \ldots]}$$:
$$\tt In[49]:=f[x\_]:=x^2 \\ \phantom{In[49]:=}\,g[x\_]:x^3 \\ \phantom{In[49]:=}\,f[x] \\ \phantom{In[49]:=}\,g[x] \\ \\ Out[51]=x^2 \\ \\ Out[52]=x^3 \\ \\ In[53]:=Clear[f,g] \\ \phantom{In[53]:=}\,f[x] \\ \phantom{In[53]:=}\,g[x] \\ \\ Out[54]=f[x] \\ \\ Out[55]=g[x]$$В приведенных ниже первых трех примерах вычисляется значение функции $$f$$ на переменной $$x = 2$$ ; в четвертом примере вычисляется значение функции $$g$$ на переменных $$x = 2$$ и $$y = 3$$.
$$\tt In[56]:=f[2] (*Standard форма*) \\ \phantom{In[56]:=}\,f@2 (*Prefix форма*) \\ \phantom{In[56]:=}\,2//f (* Postfix форма*) \\ \phantom{In[56]:=}\,2 \sim g \sim 3 (* Infix форма*) \\ \\ Out[58]=4 \\ \\ Out[59]=4 \\ \\ Out[60]=4 \\ \\ Out[61]=18 \\ \\ In[62]:= Clear[f,g]$$В приводимых ниже примерах значок $$\text{\#}$$ используется для обозначения единственной переменной задаваемой функции, значки $$\text{\#1, \#2, \ldots}$$.- соответственно первая, вторая и т. д. переменные для функции многих переменных; значок $$\text{\tt \}$$ ставится после описания функции и обозначает, что стоящее слева от него выражение надо рассматривать как определение функции, а все вместе с ним - как саму функцию.
$$\tt In[63]:= (\#^2+2) \ [x] \\ \\ Out[63]=2+x^2 \\ \\ In[64]:= (\#1^2 +\#2^4) \ [x,y] \\ \\ Out[64]=x^2+y^4 \\ \\ In[65]:= f=(\#^2+2) \ \\ \\ Out[65]=\#1^2+2 \ \\ \\ In[66]:= f[x] \\ \\ Out[66]=2+x^2 \\ \\ In[67]:= Clear[f] $$Если после команды ставится точка с запятой $$\text{;}$$, то вывод результата не происходит:
$$\tt In[68] = 2 + 2 \\ \\ Out[68]=4 \\ \\ In[69]:= 2+2;$$На одной строке можно писать сразу несколько команд, разделяя их $$\text{;}$$ (выводы результатов этих команд производиться не будут); можно писать одну команду сразу на нескольких строках:
$$\tt In[70]:=f[x\_]:=x^2; g[x\_, y\_]:=x^2+y^3; h[x\_, y\_]:= \\ \phantom{In[70]:=f}3xy; \\ \\ In[71]:=f[a] \\ \phantom{In[71]:=}\;g[b,c] \\ \phantom{In[71]:=}\;h[d,e] \\ \\ Out[71]=a^2 \\ \\ Out[72]= b^2+c^3 \\ \\ Out[73]=3de \\ \\ In[74]:= Clear[f,g,h]$$Они получаются набором $$\text{\fbox{Esc} [[ \fbox{Esc}}$$ и $$\text{\fbox{Esc} ]] \fbox{Esc}}$$ соответственно:
$$\tt In[82]:= \{x,\{a,b\},z\}[\![3]\!] \\ \\ Out[82]=z$$Список $$\text{\{\{a, b\}, \{c, d\}\}}$$ представляет собой матрицу и может быть визуализирован в привычной форме $$\begin{pmatrix} ab\\ cd \end{pmatrix}$$ с использованием палетки ($$\text{Palette}$$):
$$\tt In[89]:= \begin{pmatrix} ab\\ cd \end{pmatrix} \cdot \{x,y\}}\\ \\ Out[89]=\{ax+by, cx+dy\}\\ \\ In[90]:= \begin{pmatrix} ab\\ cd \end{pmatrix} \cdot \begin{pmatrix} xy\\ zt \end{pmatrix}}\\ \\ Out[90]=\{\{ax+bz, bt+ay\}, \{cx+dz, dt + cy\}\} $$Чтобы вывести список в матричной форме, можно использовать команду $$MatrixForm$$
$$\tt In[91]:= \begin{pmatrix} ab\\ cd \end{pmatrix}. \begin{pmatrix} xy\\ zt \end{pmatrix}// MatrixForm\\ \\ Out[91]=\begin{pmatrix} ax+bzbt+ay\\ cx+dzdt+cy \end{pmatrix} $$Функция $$\text{Sin}$$, примененная к списку, вычисляется на каждом элементе списка (функции, обладающие таким свойством, называются $$\text{Listable}$$):
$$\tt In[92] := Sin[\{l, 2, 3, 4, 5\}] \\ \\ Out[92] = \{Sin [1] , Sin[2], Sin[3], Sin[4], Sin[5]\}$$Не всякая функция является $$Listable$$:
$$\tt In[93]:= f [\{1, 2, 3, 4, 5\}] \\ \\ Out[93] = f [\{1, 2, 3, 4, 5\}]$$Чтобы применить функцию $$f$$, не являющуюся $$\text{Listable}$$, к списку $$\text{list}$$, можно воспользоваться командой $$\text{Map[f, list]}$$:
$$\tt In[94]: = Map[f,\{1, 2, 3, 4, 5\}] Out[94]=\{f [1], f[2], f[3], f[4], f[5]\}$$Функцию $$f$$ удобно задавать непосредственно внутри команды $$\text{Map}$$, не присваивая ей имени:
$$\tt In[95]:= Map[\#^2 \, \{1, 2, 3, 4, 5\}] \\ \\ Out[95] = \{1, 4, 9, 16, 25\}$$Чтобы применить функцию $$f$$ нескольких переменных к набору списков, нужна команда $$\text{\tt MapThread[f, \{list1, list2, \ldots \}]}$$:
$$\tt In[96]:= MapThread[\#1^2 - \#2^3 , \{\{1, 2, 3\}, \{x, у, z\}\} \\ \\ Out[96] = \{1 - x^3, 4-y^3, 9-z^3\}$$Следующая команда задает список от 1 до 17 с шагом 2:
$$\tt In[97]:= Table[k, \{k, 1, 17, 2\}] \\ \\ Out[97]=\{1, 3, 5, 7, 9, 11, 13, 15, 17\}$$Следующая команда задает матрицу из трех строк ($$i$$ - номер строки) длины 5 (элементы строки нумеруются $$j$$), в которой $$(i, j)$$-й элемент имеет вид $$i + j$$:
$$\tt In[98]:= Table [i + j, \{i, 1, 3\}, \{j, 1, 5\}] \\ \\ Out[98] =\{\{2, 3, 4, 5, 6\}, \{3, 4, 5, 6, 7\}, \{4, 5, 6, 7, 8\}\}$$Следующая команда создает список натуральных чисел от 1 до 5:
$$\tt In[99]: = Range [5] \\ \\ Out[99] = {1, 2, 3, 4, 5}$$Следующая команда объединяет списки:
$$\tt In[100]:=Join[ \{ 1, 2, 3\} , \{ 3, 4, 5\} ] \\ \phantom{In[100]:=}\,\{1, 2, 3\} \sim Join \sim \{ 3, 4, 5\} \\ \\ Out[100]=\{ 1, 2, 3, 3, 4, 5\} \\ \\ Out[101]= \{ 1, 2, 3, 3, 4, 5\} $$Следующая команда объединяет подсписки в единый список (убирает внутренние фигурные скобки):
$$\tt In[102]:= \begin{pmatrix} 12\\ 34 \end{pmatrix}}\\ \phantom{In[102]:=}\,Flatten \begin{matrix} \left [ \begin{pmatrix} 12\\ 34 \end{pmatrix} \right ]} \end{matrix} \\ \\ Out[102]=\{\{1,2\}, \{3,4\}\} \\ \\ Out[103]=\{1,2,3,4\}$$Следующая функция создает список из последовательных непересекающихся подсписков длины 3:
$$\tt In[104]:= Partition[\{a,b,c,d,e,f,g\},3] \\ \\ Out[104]=\{\{a,b,c\}, \{d,e,f\}\} \\ \\ In[105]:=m=\{\{1,2,3\}, \{4,5,6\}, \{7,8,9\}\}; \\ \phantom{In[105]:=}\;m// MatrixForm \\ \phantom{In[105]:=}\;Transpose[m] // MatrixForm \\ \\ Out[106]=\begin{pmatrix} 123\\ 456\\ 789 \end{pmatrix}\\ \\ Out[107]=\begin{pmatrix} 147\\ 258\\ 369 \end{pmatrix}$$
$$\tt
In[109]:= Plot3D[x\^\,\!2 - у\^\,\!2, \{х,-1,1\},\{у, -1, 1\}] \\ \\$$
$$\tt
In[110]:= ParametricPlot[\{Cos[t], Sin[t] Cos [t] \}, \{t, 0, 2\pi \}]$$
$$\tt
In[111]:= ParametricPlot3D[\{ 8 Cos[t] , 8 Sin[t], t\} , \{ t, 0, 6\pi \}]$$
$$\tt
In[112]:=ParametricPlot3D [\{ Cos [u] , Sin[u] Cos [v] , Cos [v] \}, \\
\phantom{In[112]:=P}\!\{u,0,2\pi\}, \{v,0,2\pi\}]$$
Катеноид (минимальная поверхность вращения):
$$\tt In[113]:=ParametricPlot3D[\{Cosh[u] Cos[v], Cosh[u] Sin[v], u\}, \\ \phantom{In[113]:=P}\{u,-1,1\}, \{v,0,2\pi\}]$$
Геликоид (минимальная линейчатая поверхность):
$$\tt In[114]:=ParametricPlot3D[\{Sinh[u] Sin[v], -Sinh[u] Cos[v], v\}, \\ \phantom{In[114]:=P}\!\{u,-1,1\}, \{v, 0, 2\pi\}]$$
Изгибание катеноида в геликоид (здесь $$\text{PlotRange}$$ описывает отрезки изменения координат $$(x, у, z)$$ точек поверхности; $$\text{Mesh}$$ - координатная сетка на поверхности, в данном случае $$\text{Mesh} $\to$ \text{None}$$ означает, что сетка отсутствует; $$\text{PlotPoints}$$ - количество точек на каждой координатной кривой: чем больше точек, тем более гладко выглядит поверхность, хотя прорисовка замедляется; $$\alpha$$ - параметр изгибания).
$$\tt In[115]:= \\ \\ \phantom{In}Manipulate[ \\ \phantom{\phantom{In}M}ParametricPlot3D[Cos[$\alpha$] \{Cosh[u] Cos[v], Cosh[u] Sin[v], u\}+ \\ \phantom{\phantom{\phantom{In}M}Pa}Sin[$\alpha$] \{Sinh[u] Sin[v], - Sinh[u] Cos[v], v\}, \{u, -1, 1\}, \\ \phantom{\phantom{\phantom{In}M}P}\{v, 0, 2$\pi$\}, \\ \phantom{\phantom{\phantom{In}M}P}PlotRange $\to$ \{\{-1.6, 1.6\}, \{-1.6, 1.6\}, \{-1, 6.5\}\}, Mesh $\to$ None, \\ \phantom{\phantom{\phantom{In}M}P}PlotPoints $\to$ 30, ImageSize $\to$ 200], \\ \phantom{\phantom{In}M}\{$\alpha$, 0, $\frac{\pi}{2}$\}]$$
Значок $$"\to"$$ получается последовательным набором - и > или с использованием палетки $$\text{BasicMathInput}$$.
$$\tt In[126]:= \{Cos[x], x\^\,\!2 + z\^\,\!3, у, z} /. x $\to$ b\} \\ \\ \tt Out[126]= \{Cos[b], $b^2 + z^3, y, z$\} \\ \\ In[127]:= \{Cos[x], x\^\,\!2 + x\^\,\!3, у, z\} /. Cos $\to$ Sin \\ \\ \tt Out[127]= \{Sin[x], $x^2 + z^3, y, z$\} \\ \\ In[128]:= \{Cos[x], x\^\,\!2 + z\^\,\!3, y, z\} /. z $\to$ \{a, b\} \\ \\ \tt Out[l28]= \{Cos[x], $\{a^3+x^2, b^3+x^2\}, y, \{a, b\}$\} \\ \\ ln[129]:= \{Cos[x], х\^\,\!2 + z\^\,\!3, у, z\} /. \{x $\to$ a, у $\to$ b\} \\ \\ \tt Out[129]= \{Cos[a], $a^2 + z^3, b, z$\} \\ \\ In[130]:= \{Cos[x], х\^\,\!2 + z\^\,\!3, у, z\} /. \{\{x $\to$ a\} , \{y $\to$ b\}\} \\ \\ \tt Out[130]= \{\{Cos[a], $a^2 + z^3, y, z$\}, \{cos[x], $x^2 + z^3, b, z$\}\} \\ \\ In[131]:= \{Cos[x], x\^\,\!2 + z\^\,\!3, y, z\} /. \{x $\to$ a, a $\to$ b\} \\ \\ \tt 0ut[131]= \{Cos[a], $a^2 + z^3, y, z$\} \\ \\ In[132]:= \{Cos[x], x\^\,\!2 + z\^\,\!3, y, z\} /. x $\to$ a /. a $\to$ b \\ \\ \tt Out[132]= \{Cos[b], $b^2 + z^3, y, z$\}$$Значок $$": \to"$$ получается последовательным набором $$\text{:}$$ и $$\text{>}$$ или с использованием палетки $$\text{BasicMathInput}$$. В отличие от $$\text{lhs} $\to$ \text{rhs}$$, которое сначала вычисляет $$\text{rhs}$$, а потом заменяет на результат вычислений все вхождения $$\text{lhs}$$, правило $$\text{lhs} $\to$ \text{rhs}$$ вычисляет $$\text{rhs}$$ отдельно для каждого вхождения $$\text{lhs}$$:
$$\tt In[133]:={x, х, х} /. x $\to$ Random[] \\ \phantom{In[133]:=}{х, х, х} /. х :$\to$ Random[] \\ \\ Out[133]={0.209741, 0.209741, 0.209741} \\ \\ Out[134]={0.0161126, 0.191289, 0.729859}$$Значки $$==$$, $$\geq$$ и $$\leq$$ получаются последовательным набором $$==,>=$$ и $$<=$$ соответственно или с использованием палетки $$\text{BasicMathInput}$$.
$$\tt In[135]:=x == 2 \\ \phantom{In[135]:=}x > 3 \\ \phantom{In[135]:=}x $\geq$ 3 \\ \phantom{In[135]:=}(x $\geq$ 3 \\ x $\leq$ 6)||(x == 8) \\ \\ Out[135]=x == 2 \\ \\ Out[136]=x > 3 \\ \\ Out[137]=x $\geq$ 3 \\ \\ Out[138]=[x $\geq$ 3 \\ x $\leq$ 6) || x == 8$$
$$\tt In[148]:= Clear[f, res]$$
Кроме самого уравнения, нужно задать начальные условия и область изменения переменной:
$$\tt In[149]:=\\ \phantom{In}res=NDSolve[{x''[t]-Sin[x'[t]]==2, x[0]==1, x'[0]==2}, \\ \phantom{\phantom{In}re}x,\{t,0,1\}] \\ \\ Out[149]=\{\{x $\to$ InterpolatingFunction[\{\{0.,1.\}\}, <>]\}\} \\ \\ In[150]:=f=x /. res[\![1]\!] \\ \\ Out[150]=InterpolatingFunction[\{\{0.,1.\}\}, <>] \\ \\ In[151]:=f[0] \\ \phantom{In[151]:=}f'[0] \\ \\ Out[151]=1. \\ \\ Out[152]=2. \\ \\ In[153]:= Plot[f[s],{s,0,1}]$$
$$\tt
n[154]:= Clear[res,f]$$
Если условие дает $$\text{\tt True}$$, то выполняется часть $$\text{\tt t}$$, если условие дает $$\text{\tt False}$$, то выполняется часть $$\text{\tt f}$$, если условие не дает ни $$\text{\tt True}$$, ни $$\text{\tt False}$$, то выполняется часть $$\text{u}$$:
$$\tt In[167]:=abs[x\_ ]:=If[x < 0, -x,x] \\ \phantom{In[167]:=}Map[abs,\{1,0,-1,y\}] \\ \\ Out[168]=\{1,0,1,If[y < 0, -y,y]\} \\ \\ In[169]:= \\ \phantom{In}abs1[x\_]:=If[x >0,-x,x,"значение не сравнимо с нулем"] \\ \phantom{In}Map[abs1,{1,0,-1,y}] \\ \\ Out[170]={1,0,1, значение сравнимо с нулем}$$Последовательно выполняет тесты, возвращая значение $$\text{\tt value}$$ для первого теста, дающего $$\text{\tt True}$$:
$$\tt In[171]:= a=2; Which[a==1,x,a==2,b,a==2,c] \\ \\ Out[171]=b $$Присвоение происходит только в случае, если тест дает $$\text{\tt True (Condition[])}$$:
$$\tt In[172]:=f[x\_{-}]:=$\sqrt{x}$ /;x $\ge$ 0 \\ \\ In[173]:=Map[f,{4,-4}] \\ \\ Out[173]={2,f[-4]}$$В приводимом ниже примере команда $$\text{\tt Print}$$ выводит результат на экран:
$$\tt In[174]:=Do[res=$i^2$; Print[res],\{I,3\}} \\ \\ \tt \phantom{In[174]:}1 \\ \\ \phantom{In[174]:}4 \\ \\ \phantom{In[174]:}9 \\ \\ \tt In[175]:=t=x;Do[t=1/(1+kt), \{k,2,6,2\}];t \\ \\ Out[175]=$\cfrac{1}{1+\cfrac{6}{1+\cfrac{4}{1+2x}}}$ \\ \\ In[176]:=Do[Print[$i^2$],\{i, \{3, 6, 8\}\}] \\ \\ \phantom{In[176]:}9 \\ \\ \phantom{In[176]:}36 \\ \\ \phantom{In[176]:}64 \\ \\ In[177]:=t-x;Do[t=1/(1+t),\{3\}];t \\ \\ Out[177]=$\cfrac{1}{1+\cfrac{1}{1+\cfrac{1}{1+x}}$$$Здесь $$\text{\tt n++}$$ означает увеличение $$\text{\tt n}$$ на единичку; равносильно $$\text{\tt n = n + 1}$$:
$$\tt In[179]:=n=1; m=1; While[n $\le$ 5, m=mn; n++; Print[m]] \\ \\ \phantom{In[179]}1 \\ \\ \phantom{In[179]}2 \\ \\ \phantom{In[179]}6 \\ \\ \phantom{In[179]}24 \\ \\ \phantom{In[179]}120 $$В следующем примере $$\text{\tt PrimeQ[n]}$$ дает $$\text{\tt True}$$, если $$\text{\tt n}$$ - простое число:
$$\tt In[182]:=Do[If[!PrimeQ[k], Continue[], Print[k]],{k, 15}] \\ \\ \phantom{In[182]:}2 \\ \\ \phantom{In[182]:}3 \\ \\ \phantom{In[182]:}5 \\ \\ \phantom{In[182]:}7 \\ \\ \phantom{In[182]:}11 \\ \\ \phantom{In[182]:}13 \\ \\ In[183]:=f[x\_]:=(If[x < 0, Return[-$x^2$]]; $x^2$) \\ \phantom{In[183]:=}Plot[f[x], {x, -1,1}]$$
$$\tt
In[185]:=x=2; Label[start]; Print[x];x+=2;\\
\phantom{In[185]:=}If[x < 8, Goto[start]] \\ \\
\phantom{In[185]:}2
\phantom{In[185]:}4
\phantom{In[185]:}6
In[186]:= Clear[abs, abs1,a,res,I,m,n,t,f,x]$$
Как при определении выражений, так и в полях, отведенных для аргументов, можно писать не одно выражение, а последовательности выражений. Ниже приведены правила написания таких последовательностей
В выражении $$\text{\tt Module[x,y, ..., expr]}$$ переменные $$\text{\tt x, y, ..}$$. локальны, т. е. определены лишь внутри этой конструкции. При этом значения одноименных переменных, определенных снаружи, не используются при вычислении модуля, в то время как значения неодноименных наружных переменных используются.
Из приведенного примера видно, что внутренняя переменная $$\text{\tt x}$$ на самом деле имеет другое имя:
$$\tt In[195]:=x=1; \\ \phantom{In[195]:=}y=2; \\ \phantom{In[195]:=}z=3; \\ \phantom{In[195]:=}Module[{x},x] \\ \phantom{In[195]:=}Module[{x}, x=5;z=6;xy] \\ \phantom{In[195]:=}x \\ \phantom{In[195]:=}z \\ \\ Out[198]=x\$1424 \\ \\ Out[199]=10 \\ \\ Out[200]=1 \\ \\ Out[201]=6$$Локальным переменным можно присваивать начальные значения прямо в месте их декларации, т. е. $$\text{\tt Module[\{x = x0, y = y0, z, \ldots\}, expr]}$$ ($$\text{\tt AxesOrigin}$$ в команде $$\text{\tt Plot}$$ задает координаты точки, через которую проводятся координатные оси):
$$\tt In[202]:=\!f[x0\_]:= \\ \phantom{In[202]:=f[}Module[\{x=x0, y=5, z\}, z=y-x; If[z \ge 0,5,x] \\ \phantom{In[202]:=f[}]; \\ \phantom{In[202]:=}Plot[f[x],\{x,0,10\}, AxesOrigin \to \{0,0\}]$$
Выражение $$\text{\tt Block[x, y, ..., expr]}$$ вычисляется со значениями переменных $$\text{\tt x, y, ...}$$, заданных внутри блока. При этом значения одноименных переменных, определенных снаружи, используются при вычислении модуля, если они не были переопределены в блоке. Переопределенные в блоке переменные $$\text{\tt x, y, ...}$$ при выходе из блока восстанавливают свое предыдущее значение:
$$\tt In[204]:=x=2; \\ \phantom{In[204]:=}Block[{x},x] \\ \phantom{In[204]:=}Block[{x=5},x] \\ \phantom{In[204]:=}x \\ \\ Out[205]=2 \\ \\ Out[206]=5 \\ \\ Out[207]=2 \\ \\ In[208]:= Clear[x,y,z,f]$$Задачи взяты из книги А. С. Мищенко, Ю. П. Соловьева, А. Т. Фоменко, "Сборник задач по дифференциальной геометрии и топологии" [5].
(2.1) Точка $$M$$ равномерно движется по прямой $$ON$$, равномерно вращающейся вокруг точки $$O$$. Составить уравнение траектории точки $$M$$ (спираль Архимеда).
Решение. Пусть $$O$$ - начало координат. Если $$\varphi_0$$ - начальный угол между прямой $$ON$$ и положительным направлением оси абсцисс, а $$\omega$$ - угловая скорость вращения прямой $$ON$$ вокруг $$O$$, то в момент времени $$t$$ угол $$\varphi_t$$ между $$ON$$ и осью абсцисс изменяется линейно и записывается в виде
$$\tt In[209]:= $\varphi$ [t\_]:=$\varphi$ 0+ $\omega$ t$$Если начальное расстояние от $$M$$ до $$O$$ равно $$r_0$$, а точка $$O$$ движется по $$ON$$ со скоростью $$v$$, то в момент времени $$t$$ расстояние $$r[t]$$ между $$M$$ и $$O$$ равно
$$\tt In[210]:= r[t\_]:=r0+vt;$$Таким образом, координаты точки $$M$$ в момент времени $$t$$ равны
$$\tt In[211]:= $\gamma$[t\_]:=r[t] \{Cos[$\varphi$[t]], Sin[$\varphi$[t]]\} \\ \\ In[212]:= $\gamma$[t] \\ \\ Out[212]=\{(r0+tv)Cos[$\varphi$0+t$\omega$], (r0+tv)Sin[$\varphi$0+t$\omega$]\}$$Изобразим траекторию, фиксировав некоторые значения параметров:
$$\tt In[213]:=ParametricPlot[$\gamma$[t] /. \{$\varphi$0 $\to$ 0, r0 $\to$ 1, $\omega$ $\to$ 5, v $\to$ 1\}, \\ \phantom{In[213]:=P}\{t, 0, 10\}]$$
$$\tt
In[214]: Clear[$\varphi$, $\gamma$, r]$$
(2.19) Под каким углом пересекаются кривые $$x^2=4y$$ и $$y=\frac{8}{x^2+4}$$?
Решение. Найдем точки пересечения кривых:
$$\tt In[215]:=res=Solve$\left[\left\{x^{2}==4y, y== \frac{8}{x^2+4)\right\},\{x,y\}\right]$ \\ \\ Out[215]=$\left\{\left\{y \to -2, x \to -2i \sqrt{2}\right\}\right.$, \\ \\ \phantom{Out[215]= }$\left.\left\{y \to -2, x \to 2i \sqrt{2}\right\}, \{y \to 1, x \to -2\}, \{y\to 1, x\to 2\} \right\}$$$Так как кривые вещественные, подходят лишь третье и четвертое решения. Так как кривые инвариантны при замене $$x$$ на $$-x$$, углы пересечения в обеих точках одинаковы, поэтому достаточно вычислить угол лишь, скажем, для четвертого решения. Заметим, что обе кривые являются графиками функций параметра $$x$$, поэтому они могут быть параметризованы $$x$$. Имеем (функция $$\text{\tt Norm[v]}$$, которую мы используем ниже, равна евклидовой длине вектора $$v$$ )
$$ \text{In[216]:=}\gamma 1[x\_]:=\left\{x, \frac{x^2}{4}\right\}; \gamma 2[x\_]:=\left\{x, \frac{8}{x^2+4}\right\};\\ \phantom{\text{In[216]:=}}v1:=\gamma 1'[x]\text{ /. res}[\![4]\!]; v2:=\gamma 2'[x]\text{ /. res}[\![4]\!];\\ \phantom{\text{In[216]:=}}\varphi=\text{ArcCos} \left[\frac{v1.v2}{\text{Norm}[v1]\text{Norm}[v2]}\right] \\ \\ \text{Out[218]=ArcCos}\left[\frac{1}{\sqrt{10}}\right] $$Изобразим эти кривые:
$$ \text{In[219]:=Plot}\left[\left\{\frac{x^2}{4}, \frac{8}{x^2+4}\right\}, \{x,0,3\}\right] $$
$$\tt
In[220]:=Clear[$\gamma$1, $\gamma$2, v1, v2, res, $\varphi$]$$
(2.22) Вокруг оси $$Oz$$ вращается окружность $$x = a + b cos[v], z =b sin[v] (0 < b < a)$$. Составить уравнение поверхности вращения.
Решение. Если точку с координатами $${a+b cos[v], 0, b sin[v]}$$ повернуть на угол $$\varphi$$ вокруг оси $$Oz$$, то у полученной точки будут координаты
$$\tt In[221]:=r[$\varphi$\_, v\_] := \{(a+b Cos[v])Cos[$\varphi$], (a+bCos[v])Sin[$\varphi$], \\ \phantom{In[221]:=r[$\varphi$}b Sin[v]\};$$Нарисуем эту поверхность (являющуюся, очевидно, тором) при следующих значениях параметров: $$a = 4, b = 2$$ при изменении $$\varphi$$ и $$v$$ в пределах от 0 до $$2 \pi$$.
$$\tt In[222]:=ParametricPlot3D[r[$\varphi$, v]/. \{a $\to$ 4, b $\to$ 2\}, \{$\varphi$, 0, 2$\pi$ \}, \\ \phantom{In[222]:=P}\{v, 0, 2 $\pi$\}]$$
Изобразим зависимость тора от параметров (здесь $$\text{\pp \{\{aa, 4\}, 1, 6\}}$$ означает, что параметр $$aa$$ может меняться в пределах между 1 и 6, причем начальное его значение равно 4; аналогично для параметра $$bb$$ ):
$$\tt In[223]:= \\ \\ \phantom{In}Module[\{r,a,b\}, \\ \phantom{InM}r[$\varphi$\_, v\_] := \{(a+bCos[v])Cos[$\varphi$], (a+bCos[v])Sin[$\varphi$], \\ \phantom{InMod}bSin[v]\}; \\ \phantom{InM}Manipulate[ParametricPlot3D[r[$\varphi$, v] /. \{a$\to$aa, b$\to$bb\}, \\ \phantom{InMod}\{$\varphi$, 0, 2$\pi$\}, \{v, 0, 2$\pi$\}, Mesh$\to$None, PlotPoints$\to$30, \\ \phantom{InMod}PlotRange$\to$\{\{-12,12\}, \{-12, 12\}, \{-6,6\}\}, ImageSize$\to$300], \\ \phantom{InMo}\{\{aa, 4\}1,6\}, \{\{bb,2\},1,6\}] \\ \phantom{In}]$$
$$\tt In[224]:=Clear[r]$$
(4.1) Вычислить кривизну следующих кривых: б) $$y = a ch(x/a)$$.
Решение 1. В качестве параметра выберем $$x$$, тогда
$$\tt In[225]:=$\gamma$[x\_] := \{x, a Cosh$\left[\frac{x}{a}\right]$\}; $$Найдем натуральный параметр:
$$ \text{In[226]:=}f[x\_]=\int \sqrt{\gamma '[x]. \gamma '[x]} dx}\\ \\ \text{Out[226]=}a \sqrt{Cosh\left[\frac xa\right]^2} Tanh\left[\frac xa\right]\\ \\ \text{In[227]:=}f[x\_]=\text{Simplify}\left[\int \sqrt{\gamma '[x].\gamma '[x]} dx\right]\\ \\ \text{Out[227]=}a\sqrt{Cosh\left[\frac xa\right]^2} Tanh\left[\frac xa\right]$$В качестве второго параметра команды $$\tt Simplify$$ можно указать предположения, которые помогут упростить выражение:
$$ \text{In[228]:=}f[x\_]=\text{Simplify}\left[\int\sqrt{\gamma '[x]. \gamma '[x]} dx, \text{ Cosh}\left[\frac xa\right] \ge 0\right] \\ \\ \text{Out[228]=}a Sinh\left[\frac xa\right]$$Выразим $$x$$ через натуральный параметр $$s$$:
$$\tt In[229]:=g[s\_]=InverseFunction[f][s] \\ \\ Out[229]=$f^{(-1)} [s]$$$Заменим параметр на натуральный:
$$ \text{In[230]:=}\gamma 1[s\_]=\gamma [x] /. x \to g[s] \\ \\ \text{Out[230]=}\left\{f^{(-1)}[s], a Cosh\left[\frac{f^{(-1)}[s]}{a}\right]\right\} \\ \\ \text{In[231]:=}k[s\_]=\sqrt{\gamma 1''[s].\gamma 1''[s]} \text{// Simplify} \\ \\ \text{Out[231]=}\sqrt{\frac{Sech\left[\frac{f^{-1}[s]}{a}\right]^4}{a^2}}$$Выразим $$x$$ через натуральный параметр $$s$$ (другой способ):
$$\tt In[232]:=res=Solve[s == f[x], x] \\ \\ \\ \phantom{In[232]}Solve::ifun: \\ \phantom{In[232]:=}Inverse functions are being used by Solve, so some solutions may not be found; \\ \phantom{In[232]:=res=S}Use Reduce for complete solution information.>> \\ \\ Out[232]=$\left\{\left\{x \to a ArcSinh\left[\frac sa\right]\right\}\right\}$ \\ \\ In[233]:= $\gamma$1[s\_]=$\gamma$[x] /. res[\![1]\!] \\ \\ Out[233]=$\{a ArcSinh[\frac sa], a \sqrt{1+\frac {s^2}{a^2}}\}$ \\ \\ In[234]:=k[s\_]=$\sqrt{\gamma 1''[s].\gamma 1''[s]$ \\ \\ Out[234]=$\sqrt{\frac{s^2}{a^4+\left(1+\frac{s^2}{a^2}\right)^3}+\left(-\frac{s^2}{a^3\left(1+\frac{s^2}{a^2}\right)^{\frac 32}}+\frac{1}{a \sqrt{1+\frac{s^2}{a^2}}}\right)^2}$ \\ \\ In[235]:= k[s\_]=Simplify$\left[\sqrt{\gamma 1''[s]. \gamma 1''[s]}\right]$ \\ \\ Out[235]=$\sqrt{\frac{a^2}{(a^2+s^2)^2}}$ \\ \\ In[236]:=k[s\_]=Simplify$\left[\sqrt{\gamma 1''[s]. \gamma1''[s]}, \left\{a>0, a^2+s^2>0\right\}\right]$ \\ \\ Out[236]=$\frac{a}{a^2+s^2}$$$Решение 2. Вновь в качестве параметра выберем $$x$$ и воспользуемся формулой кривизны произвольно параметризованной кривой. Имеем
$$ \text{In[237]:=}\gamma[x\_]=\left\{x, a Cosh\left[\frac xa\right]\right\}; \\ \phantom{\text{In[237]:=}}k[x\_]=\frac{Abs[Det[\{\gamma '[x], \gamma ''[x]\}]]}{Norm[\gamma '[x]]^3} \\ \\ \text{Out[238]=}\frac{Abs\left[\frac{Cosh\left[\frac xa\right]}{a}\right]}{(1+Abs\left[Sinh\left[\frac xa\right]\right]^2\right)^{\frac 32}} \\ \\ \text{In[239]:=} \\ \phantom{In}k[x\_]=Simplify\left[Abs[Det[\{\gamma'[x], \gamma''[x]\}]]/Norm[\gamma'[x]]^3,\right.\\ \phantom{In[23}\left.\left\{Sinh\left[\frac xa\right] \ge 0, Cosh\left[\frac xa\right] \ge 0, a \ge 0\right\}\right]} \\ \\ \text{Out[239]=}\frac{Sech\left[\frac xa\right]^2}{a}$$Проверим, что получился тот же результат:
$$\tt In[240]:=k[x] /. res[\![1]\!] //Simplify} \\ \\ Out[240]=$\frac{a}{a^2+s^2}$ \\ \\ In[241]:=$\gamma[x]$ \\ \\ Out[241]=$\left\{x, a Cosh\left[\frac xa\right]\right\}$$ $$\tt In[242]:= \\ \\ \phantom{In}Module[\{$\gamma$, k, a\}, \\ \\ \phantom{InM}$\gamma$[x\_] := $\left\{$x, a Cosh$\left.\left[\frac xa\right]\right\}$; k[x\_] := $\frac{\text{Sech}\left[\frac xa\right]^2}{a}$; \\ \phantom{InM}Manipulate[\{ \\ \phantom{InMMa}ParametricPlot[$\gamma$[x] /. a$\to$aa, \{ x, -1, 1\}, \\ \phantom{InMMaP}AspectRatio$\to$Automatic, Plotrange$\to$\{\{-1,1\}, \{-0.1,3.5\}\}, \\ \phantom{InMMap}ImageSize$\to$100], \\ \phantom{InMMa}Plot[k[x] /. a$\to$aa, \{x, -1, 1\}, AspectRatio$\to$Automatic, \\ \phantom{InMMap}PlotRange$\to$\{\{-1, 1\}, \{-0.1, 3.5\}\}, ImageSize$\to$100] \\ \phantom{InMM}\}, \\ \phantom{InMM}\{\{aa, 0.36\}, 0.3, 3\}] \\ \phantom{In}]$$
$$\tt
In[243]:= Clear[$\gamma$, a, $\gamma$1, f, g, res, k]$$
(4.22) Найти параметрические уравнения кривых, зная их натуральные уравнения (здесь $$R = 1/k$$ ): a) $$R = as$$.
Решение 1. Имеем
$$ \text{In[244]:=} k[s\_]\; :=\; \frac{1}{as}; \\ \\ \text{In[245]:=} \alpha [s\_]=\int k[s]ds}\\ \\ \text{Out[245]=} \frac{\text{Log}[s]}{a}\\ \\ \text{In[246]:=} x[s\_]=\int\text{Cos}[\alpha [s]] ds\\ \phantom{\text{In[246]:=}} y[s\_]=\int\text{Sin}[\alpha [s]] ds}\\ \\ \text{Out[246]=} \frac{as\left(a\text{Cos}\left[\frac{\text{Log} [s]}{a}\right] + \text{Sin} \left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}\\ \\ \text{Out[247]=} \frac{as\left(-\text{Cos}\left[\frac{\text{Log}[s]}{a}\right]+a \text{Sin} \left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}\\ \\ \text{In[248]:=} \{x[s],\; y[s]\} \\ \\ \text{Out[248]=} \left\{\frac{as\left(a\text{Cos}\left[\frac{\text{Log}[s]}{a}\right]+\text{Sin}\left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}, \; \frac{as\left(-\text{Cos}\left[\frac{\text{Log}[s]}{a}\right]+a\text{Sin}\left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}\right\}$$Изобразим полученные кривые для параметра $$s$$ в пределах от 0.1 до 20 и изучим их зависимость от параметра $$a$$, изменяющегося в пределах от 0.05 до 1 с начальным значением 0.5:
$$ \text{In[249]:=} \\ \phantom{\text{In}}\text{Module}[\{x,y,a\}, \\ \phantom{\text{InM}}x[s\_]:=\frac{as\left(a \text{Cos} \left[ frac{\text{Log}[s]}{a}\right] + \text{Sin}\left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2};\\ \phantom{\text{InM}}y[s\_]:=\frac{as\left(-\text{Cos}\left[\frac{\text{Log}[s]}{a}\right]+a \text{Sin}\left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}; \\ \phantom{\text{InM}}\text{Manipulate}[\text{ParametricPlot}[\{x[s], y[s]\}\text{ /. } a\to aa, \\ \phantom{\text{InMMa}}\{s,0.1,20\},\text{PlotRange} \to \{\{-3, 3\}, \{-3,3\}\}, \text{ImageSize}\to 250], \\ \phantom{\text{InMM}}\{\{aa, 0.5\}, 0.05,1\}] \\ \phantom{\text{In}}]$$
$$
\text{In[250]:=Clear}[k, \alpha, x,y]\}$$
Решение 2. Вместо явного интегрирования решим систему дифференциальных уравнений:
$$ \text{In[251]:=} \\ \phantom{\text{In}}\text{res}=\text{DSolve}\left[\left\{\alpha'[s]==\frac{1}{as}, x'[s]==\text{Cos}[\alpha [s]], y'[s]==\text{Sin}[\alpha [s]]\right\}\right., \\ \phantom{\text{In[251]}}\left.\{\alpha [s], x[s], y[s]\}, s\right] \\ \\ \text{Out[251]=}\{\{\alpha [s] \to C[1]+\frac{\text{Log}[s]}{a},\\ \phantom{\text{Out[251]=}\{\{}x[s] \to C[2]+\frac{as\left(a \text{Cos}\left[C[1] + \frac{Log[s]}{a}\right]+\text{Sin}[C[1]+\frac{\text{Log}[s]}{a}]\right)}{1+a^2},\\ \phantom{\text{Out[251]=}\{\{}y[s] \to C[3]+\frac{as\left(-\text{Cos}\left[C[1]+\frac{\text{Log}[s]}{a}\right]+a \text{Sin}\left[C[1]+\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}\}\} $$Задав начальные значения констант равными нулю, получим (сравните с предыдущим результатом)
$$ \text{In[252]:=\{x[s], y[s]\} /. res[\![1]\!] /. \{C[1]}\to\text{0, C[2]} \to \text{0, C[3]} \to \text{0\} // Simplify} \\ \\ \text{Out[252]=}\left\{\frac{as\left(a \text{Cos}\left[\frac{\text{Log}[s]}{a}\right] + \text{Sin}\left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}, \frac{as\left(-\text{Cos}\left[\frac{\text{Log}[s]}{a}\right]+a \text{Sin} \left[\frac{\text{Log}[s]}{a}\right]\right)}{1+a^2}\right\}\\ \\ \text{In[253]:=Clear[k, } \alpha\text{, x, y, res]}$$Важное замечание. Численная реализация Решения 2 работает даже тогда, когда $$Mathematica$$ не может посчитать интегралы. Проиллюстрируем это на примере:
$$\tt In[254]:=k[s\_]=se^s;$$Первый способ:
$$\tt In[255]:=$\alpha$[s\_]=$\int$k[s] ds \\ \\ Out[255]=$e^s$ (-1+s) \\ \\ In[256]:=x[s\_]=$\int$Cos[$\alpha$[s]] ds \\ \phantom{In[256]:=}y[s\_]=$\int$Sin[$\alpha$[s]] ds \\ \\ Out[256]=$\int$Cos[$e^s$(-1+s)] ds \\ \\ Out[257]=$\int$Sin[$e^s$(-1+s)] ds \\ \\ In[258]:=ParametricPlot[\{x[s], y[s]\}, \{s, 0.1, 1\}] \\ \\ Integrate::ilim : Invalid integration variable or limit(s) in 0.1'.>> \\ \\ Integrate::ilim : Invalid integration variable or limit(s) in 0.10001836734693878'.>> \\ \\ Integrate::ilim : Invalid integration variable or limit(s) in 0.10001836734693878'.>> \\ \\ \\ \phantom{In}General::stop : Further output of Integrate::ilib will be suppressed during this calculation.>>$$
$$\tt
In[259]:=Clear[k, $\alpha$, x, y]$$
Второй способ:
$$\tt In[260]:= \\ \\ \phantom{In}k[s\_]:=s$e^s$; \\ \phantom{In}res= \\ \phantom{Inr}NDSolve[\{$\alpha$'[s]==k[s], x'[s]==Cos[$\alpha$[s]], y'[s]==Sin[$\alpha$[s]], \\ \phantom{InrND}$\alpha$[0]==0, x[0]==0, y[0]==0\}, \{$\alpha$[s], x[s], y[s]\}, \{s,0,1\}]\} \\ \\ Out[261]=\{\{$\alpha$[s]$\to$InterpolatingFunction[\{\{0., 1.\}\}, <>][s], \\ \phantom{Out[261]=\{\{}x[s]$\to$InterpolatingFunction[\{\{0., 1.\}\}, <>][s], \\ \phantom{Out[261]=\{\{}y[s]$\to$InterpolatingFunction[\{\{0., 1.\}\}, <>][s]\}\} \\ \\ In[262]:=$\gamma$[s\_]=\{x[s], y[s]\} /. res[\![1]\!] // Simplify \\ \\ Out[262]=\{InterpolatingFunction[\{\{0., 1.\}\}<>][s], \\ \phantom{Out[262]=\{}InterpolatingFunction[\{\{0., 1.\}\},<>][s]\} \\ \\ In[263]:=ParametricPlot[$\gamma$[s], \{s, 0, 1\}]$$
$$\tt
In[264]:=Clear[k, $\gamma$]$$
Построить пространственную кривую с кривизной $$k[t] = 1 + sin[t]^2$$ и кручением $$и[t] = cos[t]$$.
$$\tt In[265]:=\\ \\ \phantom{In}k[t\_]=1+Sin$[t]^2$; k[t\_] = Cos[t]; $\gamma$[t\_] := \{x[t], y[t], z[t]\}; \\ \phantom{In}eq[$\xi$\_, $\eta$\_]:=Table[$\xi$[\![i]\!]==$\eta$[\![i]\!], \{i,3\}]; \\ \phantom{In}v[t\_]=\{v1[t], v2[t], v3[t]\}; \\ \phantom{In}n[t\_]=\{n1[t], n2[t], n3[t]\}; \\ \phantom{In}b[t\_]=\{b1[t], b2[t], b3[t]\};\\ \\ In[269]:= \phantom{In}frenet=eq[$\gamma$'[t], v[t]]$\sim$Join$\sim$eq[v'[t], k[t]n[t]]$\sim$Join$\sim$ \\ \phantom{Infr}eq[n'[t], -k[t]v[t] + $\kappa$[t]b[t]]$\sim$Join$\sim$ eq[b'[t], -$\kappa$[t]n[t]] \\ \\$$ $$\tt Out[269]=\{x'[t] == v1[t], y'[t] == v2[t], \\ \phantom{Out[269]=\{}z'[t] == v3[t], v1'[t] == n1[t] (1+Sin[t]^{2}), \\ \tt \phantom{Out[269]=}v2'[t] == n2[t] (1+Sin[t]^{2}), v3'[t] == n3[t] (1+Sin[t]^{2}), \\ \phantom{Out[269]=}n1'[t] == b1[t] Cos[t] + (-1-Sin[t]^{2}) v1[t], \\ \phantom{Out[269]=}n2'[t] == b2[t] Cos[t] + (-1-Sin[t]^{2}) v2[t], \\ \phantom{Out[269]=}n3'[t] == b3[t] Cos[t] + (-1-Sin[t]^{2}) v3[t], \\ \phantom{Out[269]=}b1'[t] == -Cos[t] n1[t], \\ \phantom{Out[269]=}b2'[t] == -Cos[t] n2[t], b3'[t] == -Cos[t] n3[t]\} $$ $$\tt In[270]:= \\ \\ \phantom{In}res=NDSolve[frenet$\sim$Join$\sim$eq[$\gamma$[0], \{0,0,0\}]$\sim$Join$\sim$ \\ \phantom{Inres}eq[v[0], \{1,0,0\}] $\sim$Join$\sim$eq[n[0], \{0,1,0\}$\sim$Join$\sim$ \phantom{Inres}eq[b[0], \{0,0,1\}], $\gamma$[t]$\sim$Join$\sim$v[t]$\sim$Join$\sim$n[t]$\sim$Join$\sim$b[t], \\ \phantom{Inre}\{t,0,100\}] $$ $$\tt Out[270]=\{\{x[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}y[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}z[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}v1[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}v2[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}v3[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}n1[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}n2[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}n3[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}b1[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}b2[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t], \\ \phantom{Out[270]=\{\{}b3[t]$\to$InterpolatingFunction[\{\{0., 100.\}\}, <>][t]\}\} $$ $$\tt In[271]:= \\ \phantom{In[271]:=}Manipulate[ParametricPlot3D[$\gamma$[t] /. Res[\![1]\!], \{t,0,aa\}, \\ \phantom{In[271]:=Ma}PlotRange$\to$\{\{-1,1\}, \{0,2\}, \{-1,1\}\}, \\ \phantom{In[271]:=Ma}PlotPoints$\to$Round[$\frac{10}{11}$aa+$\frac{100}{11}$], ImageSize$\to$250], \\ \phantom{In[271]:=M}\{\{aa, 44\}, 1, 100\}]$$
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.