2014 dxdy logo

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

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




На страницу Пред.  1, 2, 3
 
 
Сообщение10.11.2008, 14:37 
К слову, изложение вычисления натурального логарифма и квадратного корня во втором томе трехтомного издания «Курса дифференциального и интегрального исчисления» Фихтенгольца мне нравится гораздо меньше чем в [4]. Так что, если выбирать между Фихтенгольцом и [4], то однозначно [4]. (Изложение детальнее, чем в [4] в неспециализированной учебной литературе я не встречал, но поскольку x87 поддерживает вычисление логарифма и квадратного корня, этим вопросом и не интересовался. Возможно, разложением в цепную дробь (см. (10) [на момент написания сообщения этим номером помечено разложение в цепную дробь]), вычислять логарифм более эффективно. Не проверял, не знаю.)

Добавлено спустя 9 минут 8 секунд:

Наа всякий случай отмечу: я отредактировал свое предыдущее сообщение.

 
 
 
 
Сообщение10.11.2008, 22:22 
GAA писал(а):
Brukvalub уже Вам ответил:
Brukvalub писал(а):
3. Если взять х таким, чтобы модуль общего члена ряда монотонно убывал, то ряд станет Лейбницевым. Для таких рядов ошибка замены суммы ряда на его частичную сумму не превосходит модуля первого из отброшенных членов.

Вы можете подсобить, выписать этот модуль общего члена ряда - оценку?

У меня под рукой только книжка Фихтенгольца, что книжном прикупил. В ней пп 411, 412 посвящены вычислению логарифма и квадратного корня. Но пример то другой, про $arsh x$

 
 
 
 
Сообщение10.11.2008, 22:27 
к слову, если речь о практическом вычислении, то никакие ряды заведомо не оптимальны (за исключением ряда Фурье по многочленам Чебышёва -- он близок к оптимальному). И цепная дробь -- тоже не оптимальна, если речь не о приближении совершенно конкретного числа, а об общей формуле.

 
 
 
 
Сообщение11.11.2008, 11:10 
1. Для разложения по степеням $x$ модуль общего члена есть $\frac {(2n-1)!!} {(2n)!!} \frac {|x|^{2n+1}} {2n+1}$.
Для ряда по степеням $1/x$, при положительных $x$, модуль общего члена есть $\frac {(2n-1)!!} {(2n)!!} \frac {(1/x)^{2n}}{2n}$.
О Лейбницевских рядах можно посмотреть в n «Знакопеременные ряды» (Т II) трехтомного издания Фихтенгольца (в издании 1964 г. это n 381).

2. Книга [4] имеется в электронном виде.

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

 
 
 
 
Сообщение11.11.2008, 22:26 
GAA писал(а):
Точная формулировка задачи вычисления не приведена. В помощь формулировки этой задачи я привел некоторые доводы.

Пусть требуется вычислить значения $arsh x$ с двумя (2) правильными десятичными знаками
при следующих значениях $x$:
$x_1=e^{-1}$
$x_2=e$
$x_3=e^3$
$x_4=e^7$
Как полученные оценки могут помочь?

 
 
 
 
Сообщение12.11.2008, 08:20 
Рассмотрим случай $|x| \le 1$.
Обозначим общий член ряда по степеням $x$ через $a_n$. $a_n$ удовлетворяет условиям:
$a_0 = x$, $a_n = - \frac{(2n-1)^2x^2}{2n(2n+1)}a_{n-1}$, $n=1, 2, 3, \ldots$.

Вычисления можно оформить как-то так:
n:= 0; a:= x; S:= 0;
Пока |a| > точности вычислений делаем:
1.1 S:= S + a;
1.2 n:= n+1; {переходим к следующему члену ряда}
1.3 a = -(2*n-1)^2/(2*n*(2*n+1))*x^2*a;
возвращаемся к проверке

Для справки: $\ln(e^{-1} + \sqrt{e^{-2} +1})$ приближенно равен 0.3600496446091037.

i) Пусть x = 0.3679, а точность 0.005, тогда вычисления остановятся после сравнения a[2] с 0.005, т.е. члены ряда начиная со второго будут отброшены. Приближенное значение суммы ряда: 0.3596; выражение $\ln(0.3679 + \sqrt{0.3679^2+1})$ приближенно равен 0.3598;

ii) Пусть x= .3678794, а точность 0.00005, , тогда вычисления остановятся после сравнения a[3] с 0.00005, т.е. члены ряда начиная с третьего будут отброшены. Приближенное значение суммы ряда: 0.3600869; выражение $\ln(.3678794 + \sqrt{.3678794^2+1})$ приближенно равно 0.3600492.

 
 
 
 
Сообщение12.11.2008, 08:24 
Практически, вообще говоря -- никак.

Т.е. в теории-то всё замечательно. Есть ряд по степеням иксов, который сходится на промежутке $[0;1]$. И есть ряд по обратным степеням, сходящийся на $[1;\+\infty)$. И оба ряда -- знакочередующиеся, т.е. погрешность строго оценивается первым из отброшенных членов. Т.е. надо просто суммировать до тех пор, пока очередное слагаемое не окажется меньше допустимой погрешности. Это в теории.

А на практике -- радиус сходимости обоих рядов равен единице, и при иксах, близких к единице, оба ряда сходятся крайне медленно. Т.е. формально результат мы получим, но понадобится очень много слагаемых (а там, глядишь, и погрешность округления поднакопится). Практически использование этих рядов приемлемо только левее 1/3 или правее 3 -- тогда каждое слагаемое будет выбивать очередной десятичный порядок, а на большее (в универсальной ситуации) и расчитывать не приходится.

На практике наиболее эффективный способ -- использование чебышёвских разложений. Например, в книжке: Ю.Люк, "Специальные математические функции и их аппроксимации" (М., Мир, 1980) на стр.46 приводится такое разложение логарифма:

$$\ln(1+x)=-2\,\ln(1-q)-2\,\sum_{n=1}^{\infty}{(-1)^nq^n\over n}\,T_n^*(x)$$,
$$q=3-2\sqrt2,\qquad x\in[0;1]$$.

Здесь $T_n^*(x)$ -- это "сдвинутые" многочлены Чебышёва, определяемые рекуррентными соотношениями:

$$T_{n+1}^*(x)=2(2x-1)\,T_n^*(x)-T_{n-1}^*(x)$$,
$$T_0^*(x)\equiv1,\qquad T_1^*(x)=2x-1$$

(именно эти соотношения при практической реализации и надо использовать, а не какой-либо явный вид многочленов -- тогда эффективность вычислений будет почти такой же, как и для просто степенного ряда). Для вычисления именно логарифма этого вполне достаточно: вещественные числа хранятся в памяти компьютера в нормализованном виде как двоичная мантисса из диапазона $[1/2;\;1)$ и двоичный порядок $n$, ряд позволяет найти логарифм от мантиссы, и останется только добавить $n\,\ln2$.

Ряд сходится со скоростью геометрической прогрессии со знаменателем где-то около 1/6. Это означает, что достигнутая точность оценивается как 7/6 первого из отбрасываемых коэффициентов (ну или как 7/36 последнего из учтённых). Не просто как первый из отбрасываемых -- т.к. здесь нет знакочередования в точном смысле.

В той же книжке приведены таблицы первых 25 коэффициентов с точностью в 20 значащих цифр. И это -- ровно то, что нужно для практических расчётов, т.к., разумеется, при составлении программы эти коэффициенты следует не находить на лету, а вычислить заранее.

Если уж совсем любопытно, то там же на стр.73 (Таблица 3.11) приведены аналогичные коэффициенты именно для гиперболического синуса.

 
 
 
 
Сообщение12.11.2008, 08:29 
Аватара пользователя
e7e5 писал(а):
Пусть требуется вычислить значения $arsh x$ с двумя (2) правильными десятичными знаками
при следующих значениях $x$:
$x_1=e^{-1}$
Что разрешено использовать для вычисления? Можно пользоваться функцией $\exp$?

 
 
 
 
Сообщение12.11.2008, 10:06 
TOTAL писал(а):
e7e5 писал(а):
Пусть требуется вычислить значения $arsh x$ с двумя (2) правильными десятичными знаками
при следующих значениях $x$:
$x_1=e^{-1}$
Что разрешено использовать для вычисления? Можно пользоваться функцией $\exp$?

Можно, будем считать, что функцию $\exp$ умеем вычислять с заданной точностью.

 
 
 
 
Сообщение12.11.2008, 10:54 
Аватара пользователя
e7e5 писал(а):
TOTAL писал(а):
e7e5 писал(а):
Пусть требуется вычислить значения $arsh x$ с двумя (2) правильными десятичными знаками
при следующих значениях $x$:
$x_1=e^{-1}$
Что разрешено использовать для вычисления? Можно пользоваться функцией $\exp$?

Можно, будем считать, что функцию $\exp$ умеем вычислять с заданной точностью.

Тогда для заданного $x$ решайте методом Ньютона (сходится мгновенно) относительно $y$ уравнение $\sh(y) = x$

 
 
 
 
Сообщение12.11.2008, 22:39 
ewert писал(а):
А на практике -- радиус сходимости обоих рядов равен единице, и при иксах, близких к единице, оба ряда сходятся крайне медленно. Т.е. формально результат мы получим, но понадобится очень много слагаемых (а там, глядишь, и погрешность округления поднакопится). Практически использование этих рядов приемлемо только левее 1/3 или правее 3 -- тогда каждое слагаемое будет выбивать очередной десятичный порядок, а на большее (в универсальной ситуации) и расчитывать не приходится.

Поясните пожалуйста подробнее про радиус сходимости.
Вот например если разложить в ряд
$ln(x+ \sqrt{x^2+a^2})$
a>0, то радиус сходимости ряда = $a$
Как это теперь практически скажется, если использовать (его нужно выписать, чтобы понять?)?

 
 
 
 
Сообщение13.11.2008, 05:35 
теперь сходимость будет медленной вблизи $x=a$ (достаточно сделать замену $x=at$, и задача более-менее сведётся к предыдущей), а вообще-то не понял, в чём вопрос

 
 
 
 
Сообщение14.11.2008, 19:27 
ewert писал(а):
а вообще-то не понял, в чём вопрос


Мне не очень понятно, почему сходимость будет медленной вблизи определенного $x$
Вот если вычислять ряд, как GAA советовал

Или вот вы написали:
ewert писал(а):
А на практике -- радиус сходимости обоих рядов равен единице, и при иксах, близких к единице, оба ряда сходятся крайне медленно.

 
 
 
 
Сообщение14.11.2008, 23:38 
если говорить про чистые арксинусы (безо всяких "а", они тут не при чём). В точке 1 получается знакочередующийся примерно гармонический ряд, который сходится, но крайне медленно. Ну и рядом с единицей ситуация очень уж принципиально не изменится (с вычислительной точки зрения).

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


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