Задание математических функций

Федеральное государственное образовательное бюджетное учреждение

Высшего образования

«ФИНАН

«ФИНАНСОВЫЙ УНИВЕРСИТЕТ ПРИ ПРАВИТЕЛЬСТВЕ

РОССИЙСКОЙ ФЕДЕРАЦИИ»

Департамент анализа данных, принятия решений и финансовых технологий

 

С.А.Зададаев

 

 

Программирование пользовательских

Функций в R (RStudio)

Учебно-методические рекомендации для проведения

семинара №14 по компьютерному практикуму

 

Для бакалавров направления 38.03.01 «Экономика»

 

 

Электронное издание

 

 

Москва 2017

Программирование пользовательских функций в R (RStudio)

Задание математических функций

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

Запустим RStudio, создадим новый лист программы (например, по сочетанию Ctrl+Shift+N) и наберем или скопируем следующий код:

f<-function(x) {(x-3)^2}# Задание функции f(x)=(x-3)^2

Что произойдет, если мы отправим этот код на компиляцию (Ctrl+Enter)?

На первый взгляд R никак не отреагировал на введенный текст, однако в действительности, в памяти R создалась функция под именем , значения которой, согласно нашему коду в фигурных скобках {(x-3)^2},зависят от одной переменной следующим образом:

.

Обратите внимание на правое верхнее окно RStudio: в нем появилась только что созданная функция .

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

f(5) # Значение функции f в точке 5

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

m <- 0:5 # Массив mцелых чисел 0,1,…4,5

f(m) # Массив значений функции f, вычисленной в точках из массива m

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

Задание 1. Объявить в R функцию

,

где и – параметры (по умолчанию считать параметры равными единицам) и вычислить значения , и .

Решение. Наберем следующий код в окне программы:

g <-function(x, a=1, b = 1) {(x^2-a)/(x-b)} # Заданиефункцииg(x,a,b)

Если теперь в следующей строчке набрать

g(2) # Вычислениефункцииg(x=2,a=1,b=1)

мы получим вычисленное значение функции для , при этом опущенные нами параметры и будут приравнены к значениям по умолчанию, т.е. 1, объявленным ранее в аргументах function(x, a = 1, b = 1).

Вызов функции в формате:

g(-3, a=5) # Вычислениефункцииg(x=-3,a=5,b=1)

даст нам значение функции для . При этом параметр , а опущенное значение параметра будет приравнено к значению по умолчанию, т.е. 1.

Естественно, возможно и полное обращение к нашей функции, с указанием всех ее аргументов:

g(6, a=9, b=3) # Вычислениефункцииg(x=6,a=9,b=3)

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

Замечание 2. Попробуйте объяснить результатNaN («невычисляемо», «не число»), если ввести команду:

g(3, 9, 3) # Вычислениефункцииg(x=6,a=9,b=3)

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: