эрф | Функции ошибок, использующие cmath в C ++
В математике функция ошибки (также называемая функцией ошибки Гаусса) является специальной (неэлементарной) функцией сигмоидальной формы, которая встречается в уравнениях вероятности, статистики и дифференциальных уравнений в частных производных, описывающих диффузию.
Это вероятность того, что нормальная случайная величина со средним значением 0 и дисперсией 0,5 принимает значение между [-x, x]. Обозначается через erf (x) и рассчитывается как:

В cmath библиотеке C ++ функция ошибок уже была реализована. Есть две такие функции:
- erf (x) : эта встроенная функция вычисляет функцию ошибки для входного значения x. Параметр x, который может быть int или float или double. Возвращает двойное число, которое есть erf (x).
- erfc (x) : эта встроенная функция вычисляет дополнительную функцию ошибки для входного значения x. Параметр x, который может быть int или float или double. Возвращает двойное число, равное 1 — erf (x).
/ * C ++ код для использования erf * /
#include <iostream>
#include <cmath> /* erf */
Функция ошибки
В математике , то функция ошибок (также называется гауссовская ошибка функция ) является функция целого числа используется в анализе . Эта функция обозначается erf и является частью специальных функций . Это определяется:
Функция erf регулярно вмешивается в области вероятностей и статистики , а также в проблемы диффузии ( тепла или вещества ).
Резюме
Интерес этой функции
Вероятность и статистика
Вероятность того, что приведенная центрированная нормальная переменная X принимает значение в интервале [- z , z ], равна:
Функция распределения по X , или функция распределения нормального закона , как правило , обозначаются Ф, связана с функцией ошибки, ERF , обозначенное соотношением:
Проблемы диффузии
Функция ошибок участвует в выражении решений уравнения теплопроводности или уравнения диффузии , например, когда начальные условия задаются функцией Хевисайда .
Рассмотрим, в частности, полупространство x ≥ 0, занятое твердым телом с температуропроводностью κ и изначально однородной температурой T 1 . Если в момент времени t = 0 его граница x = 0 доведена до температуры T 2 , температура T ( x , t ) в любой момент времени t> 0 и в любой точке x > 0 определяется выражением:
Численный расчет
Интеграл не может быть получен с помощью замкнутой формулы, а путем разложения в целочисленный ряд (бесконечного радиуса сходимости), интегрированного по члену,
Существуют таблицы, в которых значения интегралов представлены в зависимости от z , но сегодня большинство числовых программ ( электронные таблицы , Scilab ) или CAS (например, Maple или MuPAD ) включают в себя процедуру вычисления erf (x) и ее взаимное смещение, инвертирование (x), которое еще более полезен при вычислении вероятностей .
Однако могут быть полезны следующие приближения:
- In (с погрешностью менее 6 × 10 –4 при x <0,5) v ( 0 ) , Эрф ( Икс ) знак равно 2 π е — Икс 2 ( Икс + 2 3 Икс 3 + 4 15 Икс 5 ) + о ( Икс 6 е — Икс 2 ) <\ displaystyle v (0), \ quad \ operatorname
(x) = <\ frac <2><\ sqrt <\ pi>>> e ^ <- x ^ <2>> \ left (x + < \ frac <2><3>> \, x ^ <3>+ <\ frac <4><15>> \, x ^ <5>\ right) + o (x ^ <6>\, e ^ < - x ^ <2>>)> - In (с погрешностью менее 2 × 10 –4 при x > 1,75) v ( + ∞ ) , Эрф ( Икс ) знак равно 1 — е — Икс 2 1 π . ( 1 Икс — 1 2 Икс 3 + 3 4 Икс 5 — 15 8 Икс 7 ) + о ( Икс — 8 е — Икс 2 ) <\ displaystyle v (+ \ infty), \ quad \ operatorname
(x) = 1-e ^ <- x ^ <2>><\ frac <1><\ sqrt <\ pi>>>. \ left ( <\ frac <1> > — <\ frac <1><2x ^ <3>>> + <\ frac <3><4x ^ <5>>> — <\ frac <15>< 8x ^ <7>>> \ right) + o (x ^ <- 8>e ^ <- x ^ <2>>)> - Для Икс > 0 , 1 — е — Икс 2 ≤ Эрф ( Икс ) ≤ 1 — е — 4 Икс 2 / π <\ displaystyle x> 0, \ quad <\ sqrt <1-e ^ <- x ^ <2>>>> \ leq \ operatorname
(x) \ leq <\ sqrt <1-e ^ <- 4x ^ <2>/ \ pi>>>>
(схема, предложенная Дж. Т. Чу, 1955; верхняя граница приближается к функции erf всюду в пределах 7 × 10 −3 ).
- Для Икс > 0 , Эрф ( Икс ) ≃ 1 — е — 1 , 9 Икс 1 , 3 <\ displaystyle x> 0, \ quad \ operatorname
(x) \ simeq 1-e ^ <- 1,9x ^ <1,3>>>
(приближение, предложенное Э. Робертом, 1996; оно приближается к функции erf везде в пределах 2,2 × 10 −2 . Приближение улучшается до менее 10 −2 для ). Икс ≥ 1
- Функция является решением дифференциального уравнения, имеющего значение 0 в 0 и производную в 0. Икс ↦ Эрф ( Икс ) × е Икс 2 <\ displaystyle x \ mapsto \ operatorname
(x) \ times e ^ >> y ″ — 2 Икс y ′ — 2 y знак равно 0 <\ displaystyle y '' - 2x \, y'-2y = 0>2 π <\ displaystyle <\ frac <2><\ sqrt <\ pi>>>>
Расширения
Бывает, что более общая функция определяется: E нет <\ displaystyle E_
используется, а E 2 называется интегральной ошибкой.
Другие функции ошибок, используемые в анализе, в том числе:
- Дополнительная функция ошибок отметила ERFC и определяется по формуле:
- Функция ierfc (напротив) интеграла дополнительной функции ошибок erfc :
- Функция мнимой ошибки, отмеченная erfi , определяется следующим образом:
Часто он определяется только в некоторых программах компьютерной алгебры, таких как Mathematica и Maple . Тем не менее, его можно описать с помощью разложения в целочисленный ряд :
Взаимная функция
![]()
Функция обратной ошибки иногда используется в статистических формулах . Это можно описать с помощью последовательного расширения:
где и против 0 знак равно 1 <\ displaystyle c_ <0>= 1>
Получаем следующую разработку:
( радиус сходимости этого ряда равен 1, он дает хорошие приблизительные значения, например, только для | z | <1/2).
Документация
erf( x ) возвращает Функцию ошибок, оцененную для каждого элемента x .
Примеры
Нахождение функции ошибок
Найдите функцию ошибок значения.
Найдите функцию ошибок элементов вектора.
Найдите функцию ошибок элементов матрицы.
Нахождение кумулятивной функции распределения нормального распределения
Кумулятивная функция распределения (CDF) нормального, или Гауссова, распределения со стандартным отклонением σ и среднее значение μ
ϕ ( x ) = 1 2 ( 1 + e r f ( x — μ σ 2 ) ) .
Обратите внимание на то, что для увеличенной вычислительной точности, можно переписать формулу в терминах erfc . Для получения дополнительной информации смотрите Советы.
Постройте CDF нормального распределения с μ = 0 и σ = 1 .

Вычисление решения уравнения тепла с начальным условием
Где u ( x , t ) представляет температуру в положении x и время t , уравнение тепла
∂ u ∂ t = c ∂ 2 u ∂ x 2 ,
где c константа.
Для материала с коэффициентом тепла k , и для начального условия u ( x , 0 ) = a для x > b и u ( x , 0 ) = 0 в другом месте решение уравнения тепла
u ( x , t ) = a 2 ( e r f ( x — b 4 k t ) ) .
Для k = 2 , a = 5 , и b = 1 , постройте решение уравнения тепла во времена t = 0.1 , 5 , и 100 .

Входные параметры
x входной параметр
вещественное число | вектор из вещественных чисел | матрица вещественных чисел | многомерный массив вещественных чисел
Введите в виде вещественного числа, или вектора, матрицы или многомерного массива вещественных чисел. x не может быть разреженным.
Типы данных: single | double
Больше о
Функция ошибок
Функция ошибок erf x
erf( x )= 2 π ∫ 0 x e − t 2 d t .
Советы
Можно также найти стандартное нормальное распределение вероятностей с помощью функции normcdf (Statistics and Machine Learning Toolbox) . Отношение между функцией ошибок erf и normcdf
normcdf ( x ) = 1 2 ( 1 − erf ( − x 2 ) ) .
Для выражений формы 1 — erf(x) , используйте дополнительную функцию ошибок erfc вместо этого. Эта замена обеспечивает точность. Когда erf(x) близко к 1 , затем 1 — erf(x) небольшое число и может быть округлено в меньшую сторону до 0 . Вместо этого замена 1 — erf(x) с erfc(x) .
Расширенные возможности
"Высокие" массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.
Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.
Указания и ограничения по применению:
Строгие вычисления с одинарной точностью не поддерживаются. В сгенерированном коде входные параметры с одинарной точностью производят выходные параметры с одинарной точностью. Однако переменные в функциональной силе быть с двойной точностью.
Основанная на потоке среда
Запустите код в фоновом режиме с помощью MATLAB® backgroundPool или ускорьте код с Parallel Computing Toolbox™ ThreadPool .
Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.
Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.
Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox) .
Распределенные массивы
Большие массивы раздела через объединенную память о вашем кластере с помощью Parallel Computing Toolbox™.
Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox) .
Смотрите также
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация MATLAB
Поддержка
© 1994-2021 The MathWorks, Inc.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.