Опубликован: 27.12.2010 | Доступ: свободный | Студентов: 1028 / 278 | Оценка: 5.00 / 5.00 | Длительность: 18:38:00
ISBN: 978-5-9556-0117-5
Специальности: Математик
Лекция 1:

Первое знакомство с пакетом Mathematica

Лекция 1: 123456789 || Лекция 2 >
Замена фрагментов выражения expr по правилам rules (ReplaceAll): expr /. Rules

Значок "\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[139]:= res=Solve[ax^2+bx+c= =0, x]}\\ \\
Out[139]=\{\{x \to \frac{-b-\sqrt{b^2-4ac}}{2a}\}, \{x \to \frac{-b+\sqrt{b^2-4ac}}{2a}\}\\ \\
In[140]:= x/.res[\![1]\!]}\\ \\
Out[140]=\frac{-b-\sqrt{b^2-4ac}}{2a}\\ \\
In[141]:= Solve[\{x^2-y-4= =0, y+3x= =2\}, \{x,y\}]}\\ \\
Out[141]=\{\{y \to \frac12 (13-3 \sqrt{33}), x \to \frac12 (-3+\sqrt{33})\},\\
\phantom{Out[141]=\{}\{y \to \frac12 (13+3 \sqrt{33}, x \to \frac12 (-3- \sqrt{33})\}\} \\ \\
In[142]:= Reduce[ax^2+bx+c==0,x]}\\ \\
Out[142]=\left( a \ne 0 \& \& \left( x==\frac{-b-\sqrt{b^2-4ac}}{2a}\|x==\frac{-b+\sqrt{b^2-4ac}}{2a} \right) \right)\|\\
\phantom{Out[142]=\left(}(a==0 \& \& b \ne 0 \& \& x==-\fraccb)\|(c==0 \& \& b==0 \& \& a==0) \\ \\
In[143]:= Reduce[-1 \le x+y \le 1 \& \& x^2+y^2==2, \{x,y\}]}\\ \\
Out[143]=(\frac12 (-1-\sqrt3) \le x \le \frac12 (1- \sqrt3) \& \& y==\sqrt{2-x^2})\|\\
\phantom{Out[143]=(}(\frac12 (-1+\sqrt3) \le x \le \frac12 (1+\sqrt3) \&\& y==-\sqrt{2-x^2}) \\ \\
In[144]:= Clear[res]}\\
Решение дифференциальных уравнений
\tt
In[145]:=res=DSolve[x''[t]-x'[t]==2, x[t],t] \\ \\
Out[145]=\{\{x[t] $\to$ -2t + $e^t$ C[1]+C[2]\}\} \\ \\
In[146]:=f[t\_]=x[t]/.res[[1]] /. \{C[1] $\to$ 1, C[2] $\to$ 0\} \\ \\
Out[146]=$e^t$ - 2t \\ \\
In[147]:=Plot[f[t], {t, -1,1}]

\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]
Преобразование выражений, упрощение
\tt
In[155]:=$(x+y)^5$ \\ \\
Out[155]=$(x+y)^5$ \\ \\
In[156]:=$(x+y)^5$ //Expand \\ \\
Out[156]=$x^5+5x^4y+10x^3y^2+10x^2y^3+5xy^4+y^5$ \\ \\
In[157]:=$\frac1x + \frac{x-2}{x^2+3}$ \\ \\
Out[157]=$\frac1x +\frac{-2+x}{3+x^2}$ \\ \\
In[158]:=$\frac1x + \frac{x-2}{x^2+3}$ //Together \\ \\
Out[158]=$\frac{3-2x+2x^2}{x(3+x^2)}$ \\ \\
In[159]:=$8x^2-6x^2+x^4-2x^2y+x^3y-8y^3+6xy^3-x^2y^3+2y^4-xy^4$ // Factor \\ \\
Out[159]=$(-2+x)(-4+x+y)(x^2-y^3)$ \\ \\
In[160]:=Sin$[x]^2$+Cos$[x]^2$ \\ \\
Out[160]=Cos$[x]^2$+Sin$[x]^2$ \\ \\
In[161]:=Sin$[x]^2$+Cos$[x]^2$ //Simplify \\ \\
Out[161]=1

Программирование

Булевы операции
  • \text{\tt And[]}, или \text{\tt \&\&}, или \wedge (набрать \text{\fbox{Esc} \&\& \fbox{Esc}}),
  • \text{\tt Or[]}, или \|, или \vee (набрать \text{\fbox{Esc}\|\fbox{Esc}}),
  • \text{\tt Not[]}, или !, или \neg (набрать \text{\fbox{Esc}!\fbox{Esc}}),
  • \text{\tt Equal[]} или ==,
  • Unequal[ ] или !=,
  • \ldots
  • \text{\tt True, False},
  • \text{\tt >, >=, <, <=.}
\tt
In[162]:= 2 > 1 \&\& $\pi$ > 3 \\ \\
Out[162]=True \\ \\
In[163]:= 1 > 2 \|\; $\pi$ > 3 \\ \\
Out[163]=True \\ \\
In[164]:= !x > 1 \\ \\
Out[164]=x $\le$ 1 \\ \\
In[164]:= 2+2==4 \\ \\
Out[165]=True \\ \\
In[166]:= 1 $\ne$ 2 \\ \\
Out[166]=True
Условные операторы
Оператор If[condition, t, f] или If[condition, t, f, u]

Если условие дает \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, значение  сравнимо с нулем}
Оператор Which[test1, value1, test2, value2, ...]

Последовательно выполняет тесты, возвращая значение \text{\tt value} для первого теста, дающего \text{\tt True}:

\tt
In[171]:= a=2; Which[a==1,x,a==2,b,a==2,c] \\ \\
Out[171]=b
Присвоение при условии lhs := rhs /; test

Присвоение происходит только в случае, если тест дает \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 Do[expr, \{i, imax\}]} выполняет \text{\tt expr} для всех \text{\tt i} между \text{\tt 1} и \text{\tt imax};
  • Оператор \text{\tt Do[expr, \{i, imin, imax, di\}]} выполняет \text{\tt expr} для всех \text{\tt i} между \text{\tt imin} и \text{\tt imax} с шагом \text{\tt di};
  • Оператор \text{\tt Do[expr, \{i, list\}]} выполняет \text{\tt expr} для всех \text{\tt i} из списка \text{\tt list};
  • Оператор \text{\tt Do[expr, \{i, \{n\}\}]} выполняет \text{\tt expr} в количестве \text{\tt n} раз

В приводимом ниже примере команда \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}}$
Вложенные циклы Do[expr, i1, ..., i2, ..., ...]
\tt
In[178]:=Do[Print[{i,j}],{i, 4},{j, i-1}] \\ \\
\phantom{In[178]:}{2,1} \\ \\
\phantom{In[178]:}{3,1} \\ \\
\phantom{In[178]:}{3,2} \\ \\
\phantom{In[178]:}{4,1} \\ \\
\phantom{In[178]:}{4,2} \\ \\
\phantom{In[178]:}{4,3}
Лекция 1: 123456789 || Лекция 2 >