Главная страница

01 Пр Основные операторы R. Занятие 01. Введение в r содержание установка пакета 1


Скачать 1.34 Mb.
НазваниеЗанятие 01. Введение в r содержание установка пакета 1
Дата28.02.2022
Размер1.34 Mb.
Формат файлаdocx
Имя файла01 Пр Основные операторы R.docx
ТипЗанятие
#377197
страница7 из 10
1   2   3   4   5   6   7   8   9   10



Операторы присваивания


Эти операторы используются для присвоения значений векторам.

оператор

Описание

пример

<-

или же

знак равно

или же

<< –

Вызывается Левое назначение

v1 <- c(3,1,TRUE,2+3i)

v2 <<- c(3,1,TRUE,2+3i)

v3 = c(3,1,TRUE,2+3i)

print(v1)

print(v2)

print(v3)

это дает следующий результат –

[1] 3+0i 1+0i 1+0i 2+3i

[1] 3+0i 1+0i 1+0i 2+3i

[1] 3+0i 1+0i 1+0i 2+3i

->

или же

– >>

Называется право назначения

c(3,1,TRUE,2+3i) -> v1

c(3,1,TRUE,2+3i) ->> v2

print(v1)

print(v2)

это дает следующий результат –

[1] 3+0i 1+0i 1+0i 2+3i

[1] 3+0i 1+0i 1+0i 2+3i


  1. Векторная алгебра


Рассмотрим операции векторной алгебры на примере трех векторов:
a <- c(2, -3, 4, 1) # Сформировать вектор a из набора чисел 2, -3, 4, 1

b <- c(-6, 9, -12, -3) # Сформировать вектор b из набора чисел -6, 9, -12, -3

p <- c(3, 2, -1, 4) # Сформировать вектор a из набора чисел 3, 2, -1, 4

a; b; p # Смотрим результат

[1] 2 -3 4 1

[1] -6 9 -12 -3

[1] 3 2 -1 4

Основные операции векторной алгебры:



a) вычислить 2𝑎⃗ − 3𝑏⃗ + 𝑝⃗

Для вычисления подобных выражений, называемых линейными комбинациями из-за того, что векторы складываются друг с другом и/или умножаются на числа, достаточно просто записать аналогичную строчку в R:

2*a-3*b+p # Вычисление вектора, равного указанной линейной комбинации
> 2*a-3*b+p # Вычисление вектора, равного указанной линейной комбинации векторов

[1] 25 -31 43 15

b) вычислить 𝑎⃗ ∙𝑏⃗ (скалярное произведение векторов)

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

Скалярное произведение векторов:



В результате получается не вектор, а число (скаляр) – отсюда и название скалярное произведение. Желая подчеркнуть эту разницу в линейной алгебре часто используют круглые скобки для обозначения скалярного произведения: 𝑎⃗ ∙𝑏⃗⃗ = (𝑎⃗;𝑏⃗⃗).

В языке R эти два приёма программируется следующим образом:
a*b # Покоординатное произведение векторов (не скалярное произведение!)

l # Скалярное произведение векторов

с результатом:

> a*b # Покоординатное произведение векторов

[1] -12 -27 -48 -3

> a%*%b # Скалярное произведение векторов

[,1]

[1,] -90
Обратите внимание, что результат скалярного произведения представлен в виде матрицы 1 × 1, т.к. в языке R эта операция интерпретируется как частный случай произведения специальных матриц.

Если мы не хотим видеть результат в виде матрицы, мы можем вывести его как обычное число: as.numeric(a%*%b)

> as.numeric(a%*%b) # Скалярное произведение векторов

[1] -90

Аналогично получим скалярное произведение 𝑎⃗ ∙ 𝑝⃗:

> as.numeric(a%*%p) # Скалярное произведение векторов

[1] 0

Кстати, в последнем случае результат оказался равным нулю, что говорит об ортогональности (перпендикулярности) векторов 𝑎⃗ и 𝑝⃗.




d) вычислить |𝑎⃗|, |𝑏⃗⃗| и |𝑝⃗| (длина вектора)

Длиной вектора называют число, равное квадратному корню из (𝑎⃗)2 и по смыслу это число является длиной отрезка, соединяющего начало и конец вектора, если его интерпретировать как направленный отрезок в евклидовой геометрии:



В языке R получить данное выражение можно несколькими способами. Первый из них – вызвать специальную функцию вычисления нормы элемента для вектора:

norm(a, type="2")

с результатом:

> norm(a, type="2") # Длина вектора a (обычная евклидова

[1] 5.477226

Второй способ – образовать, согласно формуле, корень из суммы квадратов элементов:

sqrt(sum(a^2))

с тем же результатом:

> sqrt(sum(a^2)) # Альтернатива: длина вектора a

[1] 5.477226

Аналогично получаем для оставшихся векторов:

norm(b, type="2") # Длина вектора b (обычная евклидова)

sqrt(sum(p^2)) # Альтернатива: длина вектора p

e) Вычислить cos (a,b) (Косинус угла между векторами)

Воспользуемся формулой для косинуса угла между арифметическими векторами:


(a%*%b)/(norm(a, type="2")*norm(b, type="2")) # Косинусугламежду a и b

с результатом

> (a%*%b)/(norm(a,type="2")*norm(b,type="2"))

[,1]

[1,] -1

Обратим внимание, что косинус оказался равным –1, что говорит об угле между векторами, равном 𝜋. Это означает, что векторы коллинеарны (параллельны) и противоположно направлены. Кстати, это можно было заметить изначально, т.к. координаты векторов пропорциональны с отрицательным коэффициентом: 𝑏⃗= −3𝑎⃗.
  1. 1   2   3   4   5   6   7   8   9   10


написать администратору сайта