2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2, 3  След.
 
 Помогите придумать апроксимацию
Сообщение05.06.2014, 00:38 
Аватара пользователя
Имеется функция, заданная в виде ряда:
$$\[f\left( x \right)=\frac{4}{\pi }\sum\limits_{m=0}^{\infty }{\frac{{{\left( -1 \right)}^{m}}}{2m+1}\exp \left( -{{\left( 2m+1 \right)}^{2}}x \right)}\]$$
Опыт показывает, что при малых икс, ряд сходится плохо, а при больших икс он фактически представляет собой одно первое слагаемое. Хотелось бы вычислять значения этой функции для любых $x\ge 0$ одинаково быстро. У меня есть подозрение, что эту функцию нельзя аппроксимировать рядом Тейлора в нуле, так как все её (правые) производные равны нулю (Как это доказать?).

Недавно встретил в интернете аппроксимацию для функции ошибок $\operatorname{erf}(x)$:
$a_1= 0.254829592$;
$a_2=-0.284496736$;
$a_3= 1.421413741$;
$a_4=-1.453152027$;
$a_5= 1.061405429$;
$p=  0.3275911$;$$t=\frac{1}{1+p\left| x \right|}$$$$\operatorname{erf}(x)=\operatorname{sign}\left( x \right)\left( 1-\left( {{a}_{5}}{{t}^{5}}+{{a}_{4}}{{t}^{4}}+{{a}_{3}}{{t}^{3}}+{{a}_{2}}{{t}^{2}}+{{a}_{1}}{t} \right)\exp \left( -{{x}^{2}} \right) \right)+\varepsilon(x)$$$$\left|\varepsilon(x)\right|<1.5\cdot 10^{-7}$$
Хотелось бы узнать, как такие аппроксимации составляются и получить рекомендацию как сделать что-нибудь подобное для моей функции.

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 08:03 
Аватара пользователя
Знакочередующийся ряд. Ошибка не больше первого отброшенного члена.

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 09:57 
Аватара пользователя
ex-math, совершенно верно. Поэтому, чтобы получить точность $10^{-7}$ в нуле для этой функции необходимо сложить $\[M\ge \text{6 }\!\!\grave{\ }\!\!\text{ 366 }\!\!\grave{\ }\!\!\text{ 198}\]$ слагаемых, но такое расточительство недопустимо. Поэтому хочется заменить исходную функцию какой-либо быстро и удобно вычисляемой аппроксимацией.

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

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 10:36 
Аватара пользователя
Да Вы смеётесь, что ли? Экспонента от квадрата Вам слишком медленная сходимость?
А в нуле функция равна, очевидно, единице, и складывать вообще ничего не надо.

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 11:12 
Аватара пользователя
То есть нет никакой возможности заменить ряд аналитической функцией, дающей на $x\ge 0$ точность $10^{-7}$ ?

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 11:19 
Аватара пользователя
Наверняка есть. Но зачем?

-- менее минуты назад --

Такие суммы обычно выражаются через тета-функции, а для них что-то должно быть известно.

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 11:48 
Аватара пользователя
ИСН в сообщении #872003 писал(а):
Но зачем?
Ну, задача так стоит. При этом ещё желательно, чтобы производная аппроксимации отличалась от производной функции тоже не более чем на $10^{-7}$, но этот вопрос лучше оставить на потом. Для вычисления $f(10^{-2})$ с точностью $10^{-7}$ требуется сложить 18 членов ряда, а это 18 вычислений экспонент. Такая расточительность недопустима, поскольку задача стоит не только считать эту функцию с заданной точностью, но и быстро.

У меня была идея протабуировать значения функции на отрезке $[0,1]$ с каким-то шагом (заранее посчитать значения функции я могу) и сшить их сплайнами, а хвост вычислять по первым двум-трём слагаемым ряда. Но на этом пути встают две проблемы: 1) как гладко сшить хвост и сплайны (боюсь возникнут трансцендентные уравнения); 2) как правильно (и в каком количестве) выбрать точки для вычисления значений функции, чтобы обеспечить желаемую точность.

По этой причине я интересуюсь, а существуют ли хорошо проработанные методы аппроксимации, дающие удобные формулы на подобии той, что я привёл в первом посте для функции ошибок?

ИСН в сообщении #872003 писал(а):
Такие суммы обычно выражаются через тета-функции
А где про это можно узнать по-подробней?

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 12:17 
B@R5uk, с какой точностью должно вычисляться $e$, чтобы получить итоговую точность $10^{-7}$ ? Обеспечит ли это язык программирования?

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 12:26 
Аватара пользователя
Пока задача никак не связана ни с каким языком программирования. Задача пока исключительно математическая: получить гладкую аппроксимацию заданной рядом функции с заданной точностью на заданном множестве. Если возможно учесть такое пожелание, то аппроксимирующая функция должна быть аналитична.

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 15:44 
Аватара пользователя
Заметил интересную особенность. Для $x\in[0,0.02]$ ряд-функция $f(x)$ отличается от $1$ не более, чем на $10^{-15}$. А для $x\in[0,0.1]$ с точностью $10^{-7}$ представляется в виде $$f\left(x\right)=1-\exp\left(-\frac{1}{1.24229\cdot x^{0.940951}} \right)$$
Как бы это теперь гладко сшить с хвостом?

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 16:46 
А что, если попробовать сшить с помощью какой-нибудь достаточно гладкой функции вроде $$g(x)=\left\{\begin{matrix}
e^{\frac{1}{\alpha(x-0.1)}},\;x<0.1,
\\ 
0,\;x\geqslant 0.1
\end{matrix}\right?$$ Параметр $\alpha$ подобрать так, чтобы переход был достаточно коротким.

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 16:54 
Аватара пользователя
Sender, не совсем понял, что вы предлагаете.

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 19:34 
Аватара пользователя
Решил попробовать подогнать функцию на отрезке $[0,2]$кубическими сплайнами. Получилось что-то такое (чёрным -- подгоняемый ряд, синим -- сплайн, красным -- разница):

Изображение

Десять сплайнов дали точность всего $10^{-3}$, а ведь это десять кубических полиномов, каждый с четырьмя константами. Такая точность при заметной сложности неудовлетворительна. Подскажите, пожалуйста, что-нибудь более совершенное.

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 21:58 
Вариантов немало. Пара навскидку:
1) Разбейте интервал не на $10$ а на $100500$ отрезков и интерполируйте любыми способами, хоть теми же сплайнами. Считается мгновенно. Хранится только массив исходных точек.
2) Подгоняйте разные аппроксимирующие функции на нескольких интервалах разбиения.

 
 
 
 Re: Помогите придумать апроксимацию
Сообщение05.06.2014, 22:07 
Аватара пользователя
_Ivana в сообщении #872197 писал(а):
Разбейте интервал не на $10$ а на $100500$ отрезков и интерполируйте
Пожалуй, придётся думать в этом направлении. Судя по всему, формула для вычисления функции ошибок, выписанная мной из A&S, — это шедевр математического искусства. Повторить такое для своей функции простым смертным типа меня не дано. Изображение

 
 
 [ Сообщений: 41 ]  На страницу 1, 2, 3  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group