Лекция 1

Переменные

Скалярные

Переменные рекомендуется называть строчными буквами, т.к. c прописных букв начинаются название встроенных функций

a=1

По-умолчанию Математика показывает (по возможности) точный результат выражений

{1/153,(Sqrt[2])}

Для вывода приближенного значения используется функция N

N[1/153,4]
N[1/153,7]

Если в выражении встречается вещественное число (с точкой), то и результат будет приближенный

1/153.

Подавление вывода результата

a=1;

{π,e,I,∞,Degree,°}

{%,%%,%%%}

ClearAll[a]
ClearAll["Global`*"]
a=.

Palettes -> Basic Math Assistant

Ввод чисел с другим основанием

В двоичной системе

2^^101

В шестнадцатеричной системе

16^^FF

Функция BaseForm преобразовывает число из одной системы в другую

5 в десятичной системе преобразуется в двоичную

BaseForm[5,2]

222, записанное в двоичной системе преобразуется в десятичную систему

BaseForm[2^^11011110,10]

IntegerDigits

IntegerDigits[531]

N[1/153,20]

RealDigits[1/153]

Отложенное присвоение

a=c;
a:=c;

Выражение, записанное справа от знака отложенного присвоения вычисляется только тогда, когда это необходимо

Отложенное присвоение

a=c

c=3;
a

a:=2c+10
c=1;
a

c = 2;
a

Отложенное присвоение

Правая часть вычисляется, только когда требуется

a:=Random[]

a

Обращение к a приводит к вычислению нового случайного числа

a

Двумерная запись

b:=2

c[Ctrl][-]3:=6

(Subscript[c, 3]):=6

(Subscript[a, 3])

a/6

a[Ctrl][/]6

(a/6)

[Ctrl][2]a

(Sqrt[a])

Интервалы

mass=Interval[{0.9,1.1}];
work=Interval[{9,10}];
velocity=(Sqrt[((2 work)/mass)])

velocity[[1]]

(Sqrt[2*(9/1.1)])

Списки

Одномерные

a={10,20,30,40,50}

a[[2]]

a[[{3,4}]]

Part[a,{3,4}]

a[[2;;4]]

Списки

a = {10, 20, 30, 40, 50}

First[a]

Last[a]

Rest[a]

Most[a]

Drop[a,2]

Select[a,10<=#≤30&]

Многомерные списки

a={{10,20,30},{40,50,60},{80,60,30},{41,56,67}}

MatrixForm[a]

a[[2,3]]

MatrixForm[a[[{2, 3}, {1,3}]]]

MatrixForm[a[[{2,3},1;;3]]]

Генерация списков

Range

Range[5]

Range[3,5]

Subdivide[0,1,5]

Генерация списков

Table

Table[(i^2),{i,2,10}]

Table[(i^2),{i,2,10,2}]

Table[{i,(i^2)},{i,2,10,2}]

Table[10 i+j,{i,1,3},{j,2,8,2}]

Генерация списков

IdentityMatrix[3]

Table[If[i==j,1,0],{i,1,3},{j,1,3}]

ConstantArray[3,5]

Table[3,{5}]

Преобразование списков

a=Table[(i^2),{i,2,10,2}]

Reverse[a]

Join[{1,2},{3,4}]

{Min[a],Max[a]}

{a+a,a*a,a/a}

a={3,4};
b={1,2};
(a^b)

Добавление и удаление элементов

a=Table[(i^2),{i,2,10,2}]

{Append[{1,2,3},30],Prepend[{1,2,3},30]}

{Insert[{1,2,3,4},17,2],Insert[{1,2,3,4},17,-2]}

RotateLeft[a]

RotateRight[a]

Сортировка

a=RandomInteger[{-10,10},4]
Sort[a]
f[a_,b_]:=a>b;
Sort[a,f]
Sort[a,#1>#2&]

data={{x, 2}, {y, 1}, {z, 5}};

Sort[data,#1[[2]]<#2[[2]]&]

a
Ordering[a]
Ordering[a,2]
Ordering[a,-2]

a=Table[0,{5},{5}];
a//MatrixForm

a[[All,2]]=1;
a[[;;,2]]=1;
a//MatrixForm

a[[All,2]]=Range[5];
a//MatrixForm

a[[1;;2,3;;4]]=(({{1, 2}, {3, 4}}));
a//MatrixForm

AppendTo[a,{7,8,9,10,11}]
a//MatrixForm

Do[AppendTo[a[[i]],9],{i,1,6}]
a//MatrixForm

Partition

Partition[{a,b,c,d,e,f},2]

Partition[{a,b,c,d,e,f},2,1]

Tuples & Subsets

Tuples[{1,2,3},2]

Subsets[{1,2,3},2]

Subsets[{1,2,3},{2}]

Subsets[{{(Subscript[x, 1]),(Subscript[y, 1])},{(Subscript[x, 2]),(Subscript[y, 2])},{(Subscript[x, 3]),(Subscript[y, 3])},{(Subscript[x, 4]),(Subscript[y, 4])},{(Subscript[x, 5]),(Subscript[y, 5])}}, {3}]

Pattern

a={1,2,3.0,4,5.0,6,7,{1,3}};

Count[a,_List]

Count[a,_Integer]

Count[a,a_/;a>5 || a<2]
Cases[a,a_/;a>5 || a<2]

a={"fd",1,2,3,"4"}
Position[a,_String]
Cases[a,_String]

Count[{(y^3),1,2,3,(x^(-1)),x,(x^2),(x^3)},((a_)^(b_))/;b==-1]
Position[{(y^3),1,2,3,(x^(-1)),x,(x^2),(x^3)},((a_)^(b_))/;b==2]
Cases[{(y^3),1,2,3,(x^(-1)),x,(x^2),(x^3)},((a_)^(b_))/;b==2]

Table[Random[Real,{0,100},3],{10}]
Count[%,a_/;a<30]

Векторы

a={1,2,3};
b={3,4,5};

a.b

Cross[a,b]

Norm[a]

Projection[a,b]

((a.b)/(Norm[b]))(b/(Norm[b]))

Функции

Объявление функций

Встроенные функции Математики начинаются с большой буквы

{Sin[2],N[Sin[2]],Sin[2.0]}

hyp=Function[{x,y},(Sqrt[(x^2)+(y^2)])]

hyp[1,3]

Clear[hyp]
hyp[x_,y_]=(Sqrt[(x^2)+(y^2)])

x_ -- некое значение, которое мы будем называть при определении функции “x”

hyp[x_,y_]:=(Sqrt[(x^2)+(y^2)])

Анонимная функция

Через анонимную функцию

hyp=(Sqrt[((#1)^2)+((#2)^2)])&;
hyp[1,2]

Пример (почему это может быть удобно)

(Sqrt[2])//N[#,10]&

Sort, Select

hyp = lambda x, y: math.sqrt(x**2+y**2)

Постфиксная, префиксная и инфиксная запись

Постфиксная запись

12//Sin

(Sqrt[2])//N[#,10]&

Постфиксная, префиксная и инфиксная запись

Инфиксная запись

2~Plus~1

Префиксная запись

Sin@d

Функциональная запись

Sin[1.2]

Функции с индексами

Функции с индексами

f[1][x_,y_]=x+y;
f[2][x_,y_]=x-y;

f[RandomInteger[{1,2}]][1,2]

(Subscript[f, 1])[x_,y_]=x+y;
(Subscript[f, 2])[x_,y_]=x-y;
(Subscript[f, RandomInteger[{1,2}]])[1,2]

Значения по умолчанию

f[x_,y_:10]:=10x+y;
f[10]
f[10,20]

Кусочные функции

f[x_]:=If[x>0,1,-1]

g[x_]:=1/;x>0
g[x_]:=-1/;x<=0
Plot[g[x],{x,-1,1}]

Замены

Замена

d+3+(Sqrt[h+1])

d+3+(Sqrt[h+1])/.{d->3,h->5}

Показать в приближенном виде:

N[d+3+(Sqrt[h+1])/.{d->3,h->5}]

{a1,b1,c1,d1}/.a1->10

{a1,b1,c1,d1}/.{a1->10,c1->20}

Отложенная замена

{a1,a1,a1}/.a1->RandomReal[]
{a1,a1,a1}/.a1:> RandomReal[]

Функции и списки

q={1,2,3,4,5}
Sin[q]

f[x_]:=(x^2)+3*Sin[x]
f[q]

f=.
f[x_]:=Total[x]
f[q]

Map[f,{1,2,3}]

f/@{1,2,3}

Apply

Apply[f,{1,2,3}]
f@@{1,2,3}

Apply для первого уровня

Apply[f,{{1,2},{2,3},{3,4}},{1}]
f@@@{{1,2},{2,3},{3,4}}

Apply[ss[#2,#1]&,{{1,2},{2,3},{3,4}},{1}]
ss[#2,#1]&@@@{{1,2},{2,3},{3,4}}

Total[{{1,2},{3,4},{5,6,7}}]

Total[{{1,2},{3,4},{5,6}}]

((#1)^2)+#2*10&@@@{{1,2},{3,4},{5,6}}

Map

Map[Apply[Plus,#]& ,{{1,2},{3,4},{5,6,7}}]

Apply[Plus,#]& /@{{1,2},{3,4},{5,6,7}}

Select

a={1,2,3,4,5};
Select[a,#>3&]