Вот я тоже интересуюсь, есть ли научное объяснение такой чудесной точности на всём диапазоне сразу. Но пользы от него немного, ведь по сравнению с современными способами он медленный, как эниак.
Обзор - не знаю. Известные мне аппроксимации элементарных функций были взяты из KHИГИ 'COMPUTER APPROXIMATIONS' (ABTOPЫ J.F.HART И ДP., ИЗД-BO JOHN WILEY AND SONS,NEW YORK,1968)
А так-то, насколько я понимаю, "современные" методы в основном состоят из применения алгоритма Ремеза (1934), или нахождению аппроксиманта Паде (1892).
Чего из этого они там в своей Голландии в 1961 году не знали - загадка.
Поочередное применение среднего арифметического и среднего геометрического наводит на мысль о какой-то AGMовско-эллиптической хитрости. Собственно говоря, последовательность b[i] сходится к x/arctan(x) - это, наверное, или известный факт, или несложно доказывается (а вычислительно видно воочию). А вот как они подобрали веса первых 5 членов ряда - полнейшая загадка.
Немножко поковырялся - сходимость b[k] действительно доказывается несложно. Достаточно рассмотреть случай a[0]=cos ф, b[0]=1 и доказать, что b[k]→sinф/ф - что в свою очередь следует из явной формулы b[k]=cos (ф/2) cos(ф/4)...cos(ф/2^k)=sin ф / (2^k sin(ф/2^k)).
Вот я тоже подумал, что это, скорее всего, писала одна из его сотрудниц, которые занимались математической библиотекой (...Miss M.J.H. Römgens and Miss S.J. Christen started work on the organisational and arithmetic subroutines...)
Этот код реализует численный метод для приближенного вычисления функции арктангенса \(\arctan(x)\). Алгоритм, используемый в этом коде, относится к методу Гаусса-Лежандра для численного вычисления значений функции арктангенса. В данном контексте это метод, который использует последовательное усреднение и нахождение среднего геометрического для вычисления приближения значений арктангенса.
### Принцип работы кода:
1. **Начальные условия**:
- `a` изначально равно 1.
- `b[0]` вычисляется как \(\sqrt{1 + x^2}\).
2. **Итерации**:
- В каждой итерации (всего 4) происходит обновление значений `a` и `b[k+1]`:
- `a` обновляется как среднее арифметическое текущих значений `a` и `b[k]`.
- `b[k+1]` обновляется как среднее геометрическое текущих значений `a` и `b[k]`.
- Итерации продолжаются 4 раза, результатом которых является последовательность значений `b`.
3. **Возвращаемое значение**:
- В конце вычисляется приближенное значение арктангенса через выражение:
Коэффициенты, используемые в финальной формуле, подбираются с целью минимизации погрешности аппроксимации функции арктангенса \(\arctan(x)\). Основной метод для их подбора заключается в следующем:
### 1. **Постановка задачи**:
- Задача заключается в нахождении таких коэффициентов \(c_0, c_1, \dots, c_4\), чтобы выражение:
Пересказать на естественном языке, что делает программа, и дурак может, а в остальном этот ответ смысла не имеет. В следующий раз попробуйте проверять ответы LLM на галлюцинации независимым поиском и пересказывать своими словами.
Comments 15
Reply
Reply
Reply
А так-то, насколько я понимаю, "современные" методы в основном состоят из применения алгоритма Ремеза (1934), или нахождению аппроксиманта Паде (1892).
Чего из этого они там в своей Голландии в 1961 году не знали - загадка.
Reply
Первая же ассоциация, которая приходит в голову - какая-то квадратурная формула для 1/(1+x2)...
Reply
Собственно говоря, последовательность b[i] сходится к x/arctan(x) - это, наверное, или известный факт, или несложно доказывается (а вычислительно видно воочию). А вот как они подобрали веса первых 5 членов ряда - полнейшая загадка.
Reply
Достаточно рассмотреть случай a[0]=cos ф, b[0]=1 и доказать, что b[k]→sinф/ф - что в свою очередь следует из явной формулы
b[k]=cos (ф/2) cos(ф/4)...cos(ф/2^k)=sin ф / (2^k sin(ф/2^k)).
Но эти веса...
Reply
Там про веса тоже непонятно.
Reply
Reply
Reply
Этот код реализует численный метод для приближенного вычисления функции арктангенса \(\arctan(x)\). Алгоритм, используемый в этом коде, относится к методу Гаусса-Лежандра для численного вычисления значений функции арктангенса. В данном контексте это метод, который использует последовательное усреднение и нахождение среднего геометрического для вычисления приближения значений арктангенса.
### Принцип работы кода:
1. **Начальные условия**:
- `a` изначально равно 1.
- `b[0]` вычисляется как \(\sqrt{1 + x^2}\).
2. **Итерации**:
- В каждой итерации (всего 4) происходит обновление значений `a` и `b[k+1]`:
- `a` обновляется как среднее арифметическое текущих значений `a` и `b[k]`.
- `b[k+1]` обновляется как среднее геометрическое текущих значений `a` и `b[k]`.
- Итерации продолжаются 4 раза, результатом которых является последовательность значений `b`.
3. **Возвращаемое значение**:
- В конце вычисляется приближенное значение арктангенса через выражение:
\[
\frac{x}{ 0.725940450930260474 \cdot b[4] + 0. ( ... )
Reply
Это GPT писал? Очень знакомое построение текста.
Reply
Коэффициенты, используемые в финальной формуле, подбираются с целью минимизации погрешности аппроксимации функции арктангенса \(\arctan(x)\). Основной метод для их подбора заключается в следующем:
### 1. **Постановка задачи**:
- Задача заключается в нахождении таких коэффициентов \(c_0, c_1, \dots, c_4\), чтобы выражение:
\[
\frac{x}{c_0 \cdot b[4] + c_1 \cdot b[3] + c_2 \cdot b[2] + c_3 \cdot b[1] + c_4 \cdot b[0]}
\]
давало максимально точное приближение к \(\arctan(x)\) на некотором диапазоне значений \(x\).
### 2. **Аппроксимация с помощью рядов Тейлора**:
- В начальном приближении можно использовать разложение функции \(\arctan(x)\) в ряд Тейлора:
\[
\arctan(x) = x - \frac{x^3}{3} + \frac{x^5}{5} - \cdots
\]
- Этот ряд можно использовать для подбора коэффициентов на интервале значений \(x\), например, для \(x \in [0, 1]\).
### 3. **МНК или другие методы минимизации ошибок**:
- Далее применяется метод наименьших квадратов (МНК) или другие численные методы минимизации ошибок, чтобы ( ... )
Reply
Reply
Leave a comment