Как решить систему уравнений в р студио

от admin

Решение системы нелинейных уравнений в R

Предположим, у меня есть следующая система уравнений:

Как я могу решить эти уравнения для a и b в R?

Я предполагаю, что эту проблему можно сформулировать как проблему оптимизации со следующей функцией .

2 ответа

В комментарии автор специально спрашивает об использовании solve и optim , поэтому мы покажем, как решить это (1) вручную, (2) с помощью solve , (3) с помощью <> и (4) итерация с фиксированной точкой.

1) вручную . Сначала обратите внимание, что если мы напишем a = 5/b на основе первого уравнения и подставим его во второе уравнение, мы получим sqrt(5/b * b^2) = sqrt(5 * b) = 10 , поэтому b = 20 и a = 0,25.

2) решить . Что касается использования solve , эти уравнения можно преобразовать в линейную форму, взяв логарифм обеих сторон и получив:

Что может быть выражено как:

3) optim Используя optim , мы можем записать это, где fn происходит от вопроса. fn2 формируется путем вычитания правой части уравнений и использования crossprod для образования суммы квадратов.

4) с фиксированной точкой . Для этого перепишите уравнения в форме с фиксированной точкой, то есть в форме c (a, b) = f (c (a, b)), а затем повторите. В общем, будет несколько способов сделать это, и не все из них будут совпадать, но в данном случае это работает. Мы используем начальные значения 1 как для a , так и для b и делим обе стороны первого уравнения на b , чтобы получить первое уравнение в форме с фиксированной точкой, и делим обе стороны второго. уравнение sqrt(a) , чтобы получить второе уравнение в форме с фиксированной точкой:

Используйте эту библиотеку.

Вам необходимо определить многомерную функцию, которую вы хотите найти.

Тогда ты в порядке.

Всегда смотрите на подробные результаты. Численные расчеты могут быть непростыми. В этом случае я получил вот что:

Это просто означает, что процедура проверила область, которая включала x[1] < 0 , а затем предположительно вернула черту обратно в правую часть самолета.

Введение в R: линейная алгебра

R — очень мощный язык, разработанный специально для анализа и визуализации данных и машинного обучения, что делает его обязательным к изучению для любого начинающего специалиста по данным.

R особенно удобен для линейной алгебры. Встроенные типы данных, такие как векторы и матрицы, хорошо сочетаются со встроенными функциями, такими как алгоритмы решения собственных значений и определителей, а также с возможностями динамического индексирования.

В этой вводной в статье про R рассмотрим следующие реализации линейной алгебры:

Векторы

  • присваивание векторов;
  • векторные операции;
  • генерирование последовательностей;
  • логические векторы;
  • пропущенные значения;
  • индексирование векторов.

Массивы и матрицы

  • массивы;
  • индексация массивов;
  • индексация матриц;
  • внешнее произведение двух матриц;
  • демонстрация всех возможных определителей одноразрядных матриц 2×2;
  • обобщённое транспонирование массива;
  • умножение матриц;
  • линейные уравнения и инверсия;
  • собственные значения и собственные векторы;
  • сингулярное разложение и определители;
  • выравнивание методом наименьших квадратов и QR-разложение;
  • формирование блочных матриц.

Векторы

Присваивание векторов

R оперирует структурами данных, самой простой из которых является числовой вектор — упорядоченный набор чисел. Чтобы создать вектор x с четырьмя элементами 1 , 2 , 3 и 4 , можно использовать объединяющую функцию c() .

Здесь используется оператор присваивания <- , указывающий на назначаемый объект. В большинстве случаев <- можно заменить на = .

Также можно использовать функцию assign() :

Оператор <- считается сокращённым вариантом этой функции.

Присваивание векторов работает и в обратном направлении:

Векторные операции

Векторы используются различными способами.

Операция y <- c(x, 0, x) присвоит вектор 1, 2, 3, 4, 0, 1, 2, 3, 4 переменной y .

Векторы можно свободно перемножать и дополнять константами:

Заметьте, что эта операция верна, даже когда x и y имеют разную длину. В данном случае R просто будет повторять x (иногда дробно), пока не достигнет длины y. Поскольку y равен 9 числам в длину, а x — 4, x повторится 2.25 раз пока не совпадёт с длиной y.

Можно использовать все арифметические операторы: + , — , * , / и ^ , а также log , exp , sin , cos , tan , sqrt и многие другие. max(x) и min(x) отображают наибольший и наименьший элементы вектора x , а length(x) — количество элементов x ; sum(x) выдаёт сумму всех элементов x , а prod(x) — их произведение.

mean(x) вычисляет выборочное среднее, var(x) возвращает выборочную дисперсию, sort(x) возвращает вектор того же размера, что и x, элементы в котором расположены в порядке возрастания.

Генерация последовательностей

В R существует множество методов для генерации последовательностей чисел. 1:30 аналогичен c(1, 2, …, 29, 30) . Двоеточие имеет более высокий приоритет в выражении, поэтому 2*1:15 вернёт c(2, 4, …, 28, 30) , а не c(2, 3, …, 14, 15) .

30:1 используется для генерации последовательности в обратном направлении.

Для генерации последовательностей можно использовать и функцию seq() . seq(2,10) возвращает такой же вектор, что и 2:10 . В seq() , можно также указать длину шага: seq(1,2,by=0.5) возвращает c(1, 1.5, 2) .

Аналогичная функция rep() копирует объект различными способами. Например, rep(x, times=5) вернёт пять копий x впритык.

Логические векторы

Логические значения в R — TRUE, FALSE и NA. Логические векторы задаются условиями. val <- x > 13 задаёт val в качестве вектора той же длины, что x , со значением TRUE , если условие выполняется, и FALSE , если нет.

Логические операторы в R: < , <= , > , >= , == и != , означающие, соответственно, меньше чем, меньше чем или равно, больше чем, больше чем или равно, равно или не равно.

Пропущенные значения

Функция is.na(x) возвращает логический вектор того же размера, что и x , со значение TRUE , если соответствующий элемент для x равен NA .

x == NA отличается от is.na(x) , поскольку NA является не значением, а маркером для недоступной величины.

Второй тип “пропущенного значения” создаётся численными вычислениями, например 0/0 . В этом случае значения NaN (не числа) рассматриваются как значения NA , то есть is.na(x) вернёт TRUE и для NA , и для NaN значений. is.nan(x) используется только для определения значений NaN .

Индексирование векторов

Первый вид индексации — через логический вектор. y <- x[!is.na(x)] устанавливает y значениям x , не равным NA или NaN .

(x+1)[(!is.na(x)) & x>0] -> z устанавливает z значениям x+1 , больше 0 и не являющимся Na или NaN .

Второй метод осуществляется с вектором положительных целых значений. В этом случае значения должны быть в наборе <1, 2, …, length(x)>. Для формирования результата соответствующие элементы вектора выбираются и объединяются в этом порядке. Важно помнить, что, в отличие от других языков, в R первый индекс равен 1, а не 0.

x[1:10] возвращает первые 10 элементов x , предполагая, что length(x) не менее 10. c(‘x’, ‘y’)[rep(c(1,2,2,1), times=4)] создаёт символьный вектор длиной 16, где ‘x’, ‘y’, ‘y’, ‘x’ повторяются четыре раза.

Вектор отрицательных целых чисел определяет значения, которые должны быть исключены. y <- x[-(1:5)] устанавливает y всем значениям x , кроме первых пяти.

Наконец, вектор символьных строк может использоваться, когда у объекта есть атрибут name для идентификации его компонентов. Для <- c(1, 2, 3, 4) можно задать имя каждому индексу вектора names(fruit) <- c(‘mango’, ‘apple’, ‘banana’, ‘orange’) . Затем элементы можно вызывать по имени lunch <- fruit[c(‘apple’, ‘orange’)] .

Преимущество этого подхода в том, что иногда буквенно-цифровые имена запомнить легче, чем индексы.

Обратите внимание, что индексированное выражение может встречаться на принимающей стороне присвоения, где оно только для этих элементов вектора. Например, x[is.na(x)] <- 0 заменяет все значения NA и NaN в векторе x на 0 .

Другой пример: y[y<0] <- -y[y<0] аналогичен y <- abs(y) — код просто заменяет все значения меньше 0 на отрицательные значения.

Массивы и матрицы

Массивы

Массив — это проиндексированный набор записей данных, не обязательно численный.

Вектор размерности — это вектор неотрицательных чисел. Если длина равна k, тогда массив k-размерный. Размерности индексируются от единицы вверх до значения, указанного вектором размерности.

Вектор может использоваться R в качестве массива, как атрибут dim . Если z — вектор из 1500 элементов, присвоение dim(z) <- c(100, 5, 3) означает, что z теперь представлен как массив 100 на 5 на 3.

Индексирование массивов

На индивидуальные элементы массива можно ссылаться, указав имя массива и в квадратных скобках индексы, разделённые запятыми.

Первое значение вектора a — 3 на 4 на 6 — может быть вызвано как a[1, 1, 1] , а последнее как a[3, 4, 6] .

a[,,] отображает массив полностью, следовательно, a[1,1,] берёт первую строку первого 2-размерного сечения a .

Индексирование матриц

Следующий код генерирует массив 4 на 5: x <- array(1:20, dim = c(4,5)) .

Массивы определяются вектором значений и размерностью матрицы. Значения вычисляются сначала сверху вниз, затем слева направо.

array(1:4, dim = c(2,2)) вернёт

В матрицах индексов запрещены отрицательные индексы, а значения NA и ноль разрешены.

Внешнее произведение двух матриц

Важной операцией с векторами является внешнее произведение. Если a и b — это два численных массива, их внешним произведением является массив, вектор размерности которого получается объединением двух векторов размерности, а вектор данных достигается формированием всех возможных произведений элементов вектора данных a и элементов вектора b . Внешнее произведение вычисляется с помощью оператора %o% :

Фактически любую функцию можно применить к двум массивам, используя внешнюю () функцию. Предположим, мы определили функцию f <- function(x, y) cos(y)/(1+x²) . Функцию можно применить к двум векторам x и y с помощью z <- outer(x, y, f) .

Демонстрация всех возможных определителей одноразрядных матриц 2×2

Рассмотрим определители матриц 2 на 2 [a, b; c, d], где каждая запись представляет собой неотрицательное число от 0 до 9. Задача: найти определители всех возможных матриц этой формы и отобразить на графике высокой плотности частоту, с которой встречается значение.

Или, перефразируя, нужно найти распределение вероятности определителя, если каждая цифра выбирается независимо и равномерно случайным образом.

Один из умных способов сделать это — использовать внешнюю функцию дважды.

Первая строка присваивает d этой матрице:

Вторая строка снова использует внешнюю функцию для расчёта всех возможных определителей. Последняя строка строит график.

Обобщённое транспонирование массива

Функция aperm(a, perm) используется для перестановки массива a. Аргументом perm должна быть перестановка чисел <1,…, k>, где k — количество индексов в a. Результатом функции будет массив того же размера, что и a, но прежняя размерность, заданная perm[j] , становится новой размерностью j-th .

Проще понять, если думать об этом как об обобщённом транспонировании матриц. Если A — это матрица, тогда B — просто результат перестановки матрицы A :

В таких особых случаях перестановку осуществляет функция t() .

Умножение матриц

Для умножения матриц используется оператор %*% . Если A и B являются квадратными матрицами одинакового размера, A*B — это поэлементное произведение двух матриц. A %*% B — это скалярное произведение (произведение матриц).

Если x — вектор, тогда x %*% A %*% x — его квадратичная форма.

crossprod() осуществляет перекрёстные произведения. Таким образом crossprod(X, y) аналогична операции t(X) %*% y , но более эффективна.

diag(v) , где v — вектор — задаёт диагональную матрицу с элементами вектора в качестве диагональных элементов. diag(M) , где m — матрица — задаёт вектор основных диагональных элементов M (так же как и в Matlab). diag(k) , где k — единичное числовое значение — возвращает единичную матрицу k на k .

Линейные уравнения и инверсия

Решение линейных уравнений является инверсией умножения матриц. Если

с заданными только A и b , вектор x — решение системы линейных уравнений, которое быстро решается в R:

Собственные значения и собственные векторы

Функция eigen(Sm) вычисляет собственные значения и собственные векторы симметричной матрицы Sm. Результат — это список, где первый элемент отображает значения, а второй — векторы. ev <- eigen(Sm) присваивает этот список ev .

ev$val — это вектор собственных значений Sm , и ev$vec — матрица соответствующих собственных векторов.

Для больших матриц лучше избегать вычисления собственных векторов, если они не нужны, используя выражение:

Сингулярное разложение и определители

Функция svd(m) принимает произвольный матричный аргумент m и вычисляет его сингулярное разложение. Оно состоит из 1) матрицы ортонормированных столбцов U с тем же пространством столбцов, что и m , 2) второй матрицы ортонормированных столбцов V , пространство столбцов которой является пространством строк m , 3) и диагональной матрицы положительных элементов D :

det(m) используется для вычисления определителя квадратной матрицы m .

Выравнивание методом наименьших квадратов и QR-разложение

Функция lsfit() возвращает список заданных результатов процедуры выравнивания методом наименьших квадратов. Присваивание наподобие этого:

выдаёт результаты выравнивания методом наименьших квадратов, где y — это вектор наблюдений, а X — проектная матрица.

ls.diag() используется для диагностики регрессии.

Тесно связанной функцией является qr().

Они вычисляют ортогональную проекцию y на диапазон X в fit , проекцию на ортогональное дополнение в res и вектор коэффициентов для проекции в b .

Формирование блочных матриц

Матрицы можно строить из других векторов и матриц с помощью функций cbind() и rbind() .

cbind() формирует матрицы, связывая матрицы горизонтально (поколоночно), а rbind() связывает матрицы вертикально (построчно).

В присвоении X <- cbind(arg_1, arg_2, arg_3, …) аргументами cbind() должны быть либо векторы любой длины, либо столбцы одинакового размера (одинаковым количеством строк).

Пример решения системы уравнений: Решение систем уравнений — метод как решить систему линейных уравнений

Чтобы решить систему уравнений в R, мы можем использовать встроенную функциюsolve() .

В следующих примерах показано, как использовать эти функции для решения нескольких различных систем уравнений в R.

Предположим, у нас есть следующая система уравнений, и мы хотели бы найти значения x и y:

В следующем коде показано, как использовать функциюsolve() в R для поиска значений x и y:

Это говорит нам о том, что значение x равно 3 , а значение y равно 5 .

Предположим, у нас есть следующая система уравнений, и мы хотели бы найти значения x, y и z:

В следующем коде показано, как использовать функциюsolve() в R для решения значений x, y и z:

Это говорит нам о том, что значение x равно 5 , значение y равно 6 , а значение z равно 2 .

Предположим, у нас есть следующая система уравнений, и мы хотели бы найти значения w, x, y и z:

6ш + 2х + 2у + 1з = 37

2ш + 1х + 1у + 0з = 14

3ш + 2х + 2у + 4з = 28

2ш + 0х + 5у + 5з = 28

В следующем коде показано, как использовать функциюsolve() в R для поиска значений w, x, y и z:

Это говорит нам о том, что значение w равно 4 , x равно 3 , y равно 3 и z равно 1 . 2 -xy-2x+1 = 0\\x-y=1\end $$

Поскольку второе уравнение этой системы линейно относительно каждой из переменных х и у, то одна из этих переменных,; например у, легко выражается через другую:

у = х — 1.

Подставляя это выражение для у в первое уравнение системы, получаем:

x 2 + 3 (х — 1) 2 — х (х — 1) — 2х + 1 = 0,

3x 2 — 7x +4 = 0; x1 = 4 /3; x2 = 1

Этим значениям х согласно второму уравнению системы соответствуют следующие значения у: y1 = 1 /3; y2 = 0.

Читать:
Как убрать разрывы изображения в играх без вертикальной синхронизации

Таким образом, данная система уравнений имеет два решения:

x1 = 4 /3; y1 = 1 /3; и x2 = 1; y2 = 0. 2 =8\end \;\;\; (1) $$

Характерная особенность этой системы уравнений состоит в том, что она содержит лишь выражения x 2 , y 2 и ху, суммарная степень х и у в которых постоянна и равна 2.

Для решения данной системы выполним следующие преобрaзования. Из первого уравнения системы (1) вычтем второе, умноженное на 2. В результате получим уравнение

2x 2 — 3ху + y 2 = 0, (2)

правая часть которого равна 0.

Заметим, что х \(\neq\) 0. В противном случае из (2) вытекало бы, что у = 0, а это явно противоречит уравнениям системы (1). Но если х \(\neq\) 0, то уравнение (2) можно почленно разделить на x 2 , что дает

2- 3 y /x + ( y / x ) 2 = 0.

Мы получили квадратное уравнение относительно y /x. Из него следует, что либо y /x = 1, либо y /x = 2.

Рассмотрим эти два случая отдельно.

1) Если y /x = 1, то у = х. Замена у в первом уравнении данной системы на х приводит к следующему результату:

4x 2 + 5x 2 + 3x 2 = 16,

12x 2 = 16.

Отсюда получаем следующие два решения данной системы:

2) Если y /x = 2, то у = 2х. Заменяя у в первом уравнении данной системы на 2х, получаем:

14x 2 — 10x 2 + 12x 2 = 16,

16x 2 = 16.

Следовательно, х = ±1. Отсюда, учитывая, что у = 2х

x1 = 1, y1= 2; x2= — 1 , y2= — 2

Проверка показывает, что ни одно из полученных четырех решений системы (1) не является «посторонним».

Ответ. Данная система уравнений имеет 4 решения:

3) x1 = 1, y1= 2; 4) x2= — 1 , y2= — 2

Пример 3. Решить систему уравнений

Если только данная система уравнений имеет решение, то по теореме, обратной теореме Виета, это решение должно состоять из корней квадратного уравнения (см. § 52):

x 2 — 6x — 7 = 0.

Это уравнение имеет корни x1= -1, x2 = +7. Следовательно, в роли решений данной системы уравнений могут выступать только следующие две пары чисел:

x1 = — 1, y1 = 7 и x2 = 7, y2 = — 1.

Элементарная проверка показывает, что каждая из этих пар чисел является решением нашей системы.

Ответ. Данная система уравнений имеет два решения:

x1 = — 1, y1 = 7 и x2 = 7, y 2 = — 1. 2 = 5 \\ xy= -2 \end $$

Из второго уравнения получаем x 2 y 2 = 4. Но в таком случае по теореме, обратной теореме Виета, x 2 и y 2 можно рассматривать как корни квадратного уравнения

z 2 — 5z + 4 = 0,

откуда z1 = 4, z2 = 1. Поэтому возможны два случая: 1) x 2 = 4, и тогда y 2 = 1; 2) x 2 = 1, и тогда y 2 = 4.

Случай 1. Если х = + 2, то у = -1 (согласно второму уравнению исходной системы ху = — 2 ). Если х =- 2, то у = 1.

Случай 2. Если x = 1, то у

Мы получили 4 решения данной системы уравнений:

x1 = 2, y1 = — 1 ; x2 = — 2, y2 = 1;

x3 = 1, y3 = — 2 ; x4 = — 1, y4 = 2. 2 + y = 4\\x + y = 2 \end $$

На одном и том же рисунке начертим две кривые, первая из которых имеет уравнение x 2 + у = 4, или у = 4 — x 2 , а вторая — уравнение х + у = 2, или у = 2 — х. Очевидно, что искомыми решениями данной системы уравнений будут координаты точек пересечения этих двух кривых.

Как видно из рисунка, рассматриваемые кривые пересекаются в двух точках: А с координатами (- 1,3) и В с координатами (2, 0). Поэтому данная система уравнений имеет два решения: x = — 1, у = 3 и x = 2, у = 0.

Решить систему уравнений в R

В этой статье мы обсудим, как решить систему уравнений на языке программирования R.

Solve() Функция языка R используется для решения уравнения. Здесь уравнение похоже на a*x = b, где b — вектор или матрица, а x — переменная, значение которой будет вычислено.

  • a: coefficients of the equation
  • b: vector or matrix of the equation

для решения этого с использованием двух матриц в R Мы используем следующий код:

A RBIND ( C (1, 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3), 3).

Output:

, что означает x=80, y=-36 и z=4, является решением линейных уравнений.

Чтобы получить решения в виде дробей, мы используем библиотеку MASS на языке R и оборачиваем функцию решения в дроби.

Чтобы решить это с помощью двух матриц в R, мы используем следующий код:

A rbind ( c (19, 32, 31),

B c (1110, 1406, 3040)

fractions ( solve (A , Б))

Output:

which means x=159950/2243 , y=-92039/4486 and z=29784/2243 is the solution для приведенного выше линейного уравнения.

A MATRIX ( C (4, 7, 7, 3, 7, 3, 3, 7, 3, 7, 3, 7, 3, 3, 7, 7, 3, 7, 7, 7, 3, 7, 7, 3, ( .

print ( «Inverse matrix» )

Вывод:

Реальные примеры — решение систем линейных уравнений

При написании систем уравнений важно уметь извлекать информацию из задачи. При извлечении информации вам нужно будет выбрать переменные для представления различных частей проблемы истории. Убедитесь, что вы последовательны при настройке этих переменных и знаете, что они представляют. Если у вас есть два или более уравнений, вы можете решить систему уравнений, используя график, замену или исключение.

Задача : Предположим, вы начинаете бизнес по сборке и продаже скутеров. Инструменты и оборудование для начала работы стоят 1500 долларов, а материалы для каждого самоката стоят 200 долларов за каждый самокат. Ваши скутеры продаются по 300 долларов. (a) Напишите и решите систему уравнений, представляющую общую стоимость и доход вашего бизнеса. (b) Опишите, что означает решение с точки зрения ситуации. (c) Приведите пример разумного количества самокатов, которые вы могли бы собрать и продать, чтобы получить прибыль, и определите прибыль, которую вы получите от этого количества самокатов.

(a) Напишите и решите систему уравнений, представляющую общие затраты и доходы вашего бизнеса.
Let S = Scooter and Let I = Доход
Стоимость: I = 1500 + 200 S
Доход: I = 300 S

. как и я — я знаю, что потратил не менее 1500 долларов на покупку инструментов и оборудования для сборки скутеров. Это деньги, которые не зависят от скутеров, но я потратил их несмотря ни на что. у меня 200 умножается на s потому что это будет стоить 200 долларов за каждый скутер. Поэтому, если мне нужно 4 самоката, я подключу 4, где s в уравнении.

Причина, по которой я создал уравнение дохода в том виде, в каком я его создал, — я знаю, что буду продавать скутеры за 300 долларов. Поэтому, в зависимости от количества самокатов, которые я продам, мне нужно будет умножить это на 300 долларов, чтобы рассчитать свой доход.

Решение: (Мой выбор метода — Замена )

(b) Опишите, что означает решение с точки зрения ситуации.
Решение означает, что как только мы получим прибыль в размере 4500 долларов США за продажу 15 самокатов, мы достигнем безубыточности между затратами и выручкой. Следовательно, любая точка после этой будет прибылью

(c) Приведите пример разумного количества самокатов, которые вы могли бы собрать и продать, чтобы получить прибыль, и определите прибыль, которую вы получите от этого количества самокатов.

Номер скутера: 25
Прибыль: $2000

Дополнительные видеоролики о том, как писать системы уравнений на основе примеров из реальной жизни.

Ниже приведен пример, который позволит вам попрактиковаться в решении систем линейных уравнений, возникающих в реальных задачах.

Русские Блоги

R’s Geek Ideal SeriesОхватывая ряд ключевых моментов мышления R, его использования, инструментов, инноваций и т. Д., Чтобы объяснить силу R своим личным опытом и знаниями.

Как язык статистики, язык R сиял в нишевой области. До появления больших данных язык R стал горячим инструментом для анализа данных. По мере того как все больше и больше людей с инженерным образованием присоединяются, сообщество языков R быстро расширяется и растет. Теперь это не только в области статистики, образования, банковского дела, электронной коммерции, Интернета . все используют язык R.

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

Об авторе:

  • Конан Чжан, программист Java, R, PHP, Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: [email protected]

Перепечатка, пожалуйста, укажите источник:
http://blog.fens.me/r-mathematics/

r-math

предисловие

R является статистическим языком. Он рожден с хорошей поддержкой математики. Функция может выполнять математические вычисления, поэтому особенно удобно использовать R для математических вычислений. Если функция калькуляции R может быть встроена в калькулятор, это, безусловно, высокотехнологичный продукт.

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

каталог

  1. Основной расчет
  2. Тригонометрический расчет
  3. Комплексный расчет
  4. Расчет уравнения

1 Базовый расчет

Четыре операции: сложение, вычитание, умножение и деление, остаток, деление, абсолютное значение, оценка плюс или минус

Математические вычисления: мощность, сила е, обычно используемая в природе, квадратный корень, логарифм

Сравнительный расчет: ==,>, =, isTRUE, идентичен

Логический расчет: &, |, &&, ||, xor

Примерный расчет: потолок, пол, ствол, круг, знак

Расчет массива: максимум, минимум, диапазон, суммирование, среднее, средневзвешенное значение, умножение, разность, ранг, медиана, квантиль, произвольное число, общее число

Расчет перестановок и комбинаций: факториал, комбинация, перестановка

Совокупный расчет: накопление, накопление, минимальное накопление, максимальное накопление

Вычисление двух массивов: пересечение, объединение, разность, равны ли массивы, взять уникальные, проверить индекс совпадающих элементов, найти индекс дублированных элементов

2 Тригонометрический расчет

2.1 Тригонометрические функции

Среди прямоугольных треугольников только острые углы (углы от 0 до 90 градусов) определяются как тригонометрические функции. При заданном остром угле θ прямоугольный треугольник может быть сделан так, что один из внутренних углов равен θ. В этом треугольнике длины противоположной стороны, соседней стороны и гипотенузы θ равны a, b и h соответственно.

Trigonometry_triangle_sim

Шесть видов отношений тригонометрических функций: синус, косинус, тангенс, котангенс, секущий, косеканс.

  • Синус θ — это отношение противоположной стороны к гипотенузе: sin θ = a / h
  • Косинус θ — это отношение соседней стороны к гипотенузе: cos θ = b / h
  • Тангенс θ — это отношение противоположной стороны к смежной стороне: tan θ = a / b
  • Котангенс θ — это отношение соседней стороны к противоположной стороне: cot θ = b / a
  • Секантой θ является отношение гипотенузы к соседу: sec θ = h / b
  • Косеканс θ — это отношение гипотенузы к противоположному краю: csc θ = h / a

Специальные значения тригонометрических функций:

Тригонометрические основные функции: синус, косинус, тангенс

Далее мы используем пакет ggplot2, чтобы нарисовать график тригонометрической функции.

Тригонометрическая функция рисования

triple-pic

2.1 Обратные тригонометрические функции

Определение базовой обратной тригонометрической функции:

Арк синус, арккосинус, арктангенс

Рисование обратных тригонометрических функций

arc-pic

2.3 Тригонометрическая формула

Далее, модульный тест используется для описания математической формулы тригонометрических функций. Модульное тестирование через пакет testthat. Для установки и использования пакета testthat, пожалуйста, обратитесь к статьеНа плечах гигантов Разработка пакета Catalyzing R

Формула суммы квадратов:

  • sin(x)^2+cos(x)^2 = 1

Формула суммы углов

  • sin(a+b) = sin(a)*cos(b)+sin(b)*cos(a)
  • sin(a-b) = sin(a)*cos(b)-sin(b)*cos(a)
  • cos(a+b) = cos(a)*cos(b)-sin(b)*sin(a)
  • cos(a-b) = cos(a)*cos(b)+sin(b)*sin(a)
  • tan(a+b) = (tan(a)+tan(b))/(1-tan(a)*tan(b))
  • tan(a-b) = (tan(a)-tan(b))/(1+tan(a)*tan(b))

2-кратная формула угла

  • sin(2*a) = 2*sin(a)*cos(a)
  • cos(2*a) = cos(a)^2-sin(a)^2=2*cos(a)^2-1=1-2*sin2(a)

3-кратная формула угла

  • cos(3*a) = 4*cos(a)^3-3*cos(a)
  • sin(3*a) = -4*sin(a)^3+3*sin(a)
  • sin(a/2) = sqrt((1-cos(a))/2)
  • cos(a/2) = sqrt((1+cos(a))/2)
  • tan(a/2) = sqrt((1-cos(a))/(1+cos(a))) = sin(a)/(1+cos(a)) = (1-cos(a))/sin(a)
  • sin(a)*cos(b) = (sin(a+b)+sin(a-b))/2
  • cos(a)*sin(b) = (sin(a+b)-sin(a-b))/2
  • cos(a)*cos(b) = (cos(a+b)+cos(a-b))/2
  • sin(a)*sin(b) = (cos(a-b)-cos(a+b))/2

Интеграция и отличие

  • sin(a)+sin(b) = 2*sin((a+b)/2)*cos((a+b)/2)
  • sin(a)-sin(b) = 2*cos((a+b)/2)*cos((a-b)/2)
  • cos(a)+cos(b) = 2*cos((a+b)/2)*cos((a-b)/2)
  • cos(a)-cos(b) = -2*sin((a+b)/2)*sin((a-b)/2)
  • sin(2*a)=2*tan(a)/(1+tan(a)^2)
  • cos(2*a)=(1-tan(a)^2)/(1+tan(a)^2)
  • tan(2*a)=2*tan(a)/(1-tan(a)^2)
  • sin(a+b)*sin(a-b)=sin(a)^2+sin(b)^2
  • cos(a+b)*cos(a-b)=cos(a)^2+sin(b)^2

Формула угла падения

  • cos(a)^2=(1+cos(2*a))/2
  • sin(a)^2=(1-cos(2*a))/2

Формула вспомогательного угла

  • a*sin(a)+b*cos(a) = sqrt(a^2+b^2)*sin(a+atan(b/a))

3 Расчет комплексного числа

Комплексное число является расширением действительного числа, что делает любой многочлен корнями. Мнимая единица i в комплексных числах является квадратным корнем из -1, то есть i ^ 2 = -1. Любое комплексное число может быть выражено как x + yi, где x и y — действительные числа, соответственно называемые «действительной частью» и «мнимой частью» комплексного числа.

3.1 Создайте комплексное число

3.2 Четыре арифметических операции над комплексными числами

  • Формула сложения: (a + bi) + (c + di) = (a + c) + (b + d) i
  • Формула вычитания: (a + bi) — (c + di) = (a-c) + (b-d) i
  • Формула умножения: (a + bi) (c + di) = ac + adi + bci + bidi = ac + bdi ^ 2 + (ad + bc) i = (ac-bd) + (ad + bc) i
  • Формула деления: (a + bi) / (c + di) = ((ac + bd) + (bc-ad) i) / (c ^ 2 + d ^ 2)

3.3 Квадратный корень комплексных чисел

4 Уравнение расчета

Вычисление уравнений является основной формой математического вычисления. Язык R также может помочь нам удобно решать уравнения. Далее будут введены уравнения с однократным кратным числом и решение двухвременных линейных уравнений.

Для решения многомерных уравнений в одной переменной вы можете использовать функцию uniroot ()!

4.1 Одномерное линейное уравнение

Унарное линейное уравнение: a * x + b = 0, установите a = 5, b = 10, найдите x?

Линейное уравнение по одной переменной очень легко решить, корень уравнения равен -2!

Графически покажите уравнение: у = 5 * х + 10

f1

4.2. Квадратичные уравнения в одной переменной

Квадратное уравнение по одной переменной: a * x ^ 2 + b * x + c = 0, установите a = 1, b = 5, c = 6, найдите x?

Подставляя параметры в уравнение и используя функцию uniroot (), мы решаем один корень уравнения и меняем интервал вычисления, мы можем получить другой корень.

Двумя корнями уравнения являются -2 и -3.

Благодаря функции uniroot () одновременно может быть вычислен только один корень, а конечное значение диапазона ввода должно быть противоположным знаку. Если мы напрямую введем интервал (-10,0), то функция uniroot () будет иметь ошибку.

Это должно быть разработано uniroot () для статистического расчета нескольких уравнений в одной переменной, поэтому, чтобы использовать функцию uniroot (), нам нужно принять различные различия для получения корня уравнения.

Графически покажите уравнение: у = х ^ 2 + 5 * х + 6

y2

Мы видим непосредственно из рисунка, и два корневых диапазона значений х.

4.3 Кубические уравнения в одной переменной

Унарное квадратное уравнение: a * x ^ 3 + b * x ^ 2 + c * x + d = 0, установить a = 1, b = 5, c = 6, d = -11, найти x?

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

Графически покажите уравнение: у = х ^ 2 + 5 * х + 6

y3

4.4 Бинарные линейные уравнения

Язык R также может решать квадратные уравнения. Конечно, метод вычисления фактически используется в матричном вычислении.

Система гипотетических уравнений: система уравнений, состоящая из двух переменных x1, x2 и определения значения x1, x2

fm1

Построить уравнения в матричной форме

fm2

Чтобы получить решение системы уравнений, x1 и x2 равны 3 и -1 соответственно.

Далее нарисуем график этих двух линейных уравнений. Пусть y = X2, x = X1, превратить исходную систему уравнений в две функциональные формы.

y4

Мы видим, что координаты пересечения двух прямых являются двумя корнями системы уравнений. Многомерные линейные уравнения также могут быть решены таким образом.

Через язык R мы реализовали различные вычисления для элементарной математики, что действительно очень удобно! В следующей статье будет рассказано об использовании языка R для решения задач вычисления в углубленной математике.

Похожие статьи