Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/64: Рейтинг темы: голосов - 64, средняя оценка - 4.73
 Аватар для Newbie_cpp
1 / 1 / 0
Регистрация: 06.04.2020
Сообщений: 24

Вычисление значения функции atan(x) заданной разложением в ряд Тейлора

01.07.2021, 20:17. Показов 12700. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Решил самостоятельно реализовать алгоритм вычисления арктангенса.
Алгоритм состоит из нескольких частей:
1. Сокращение области определения (-∞;+∞) ––> [0;+∞).
2. Сокращение области определения [0;+∞) ––> (0;+∞).
3. Сокращение области определения (0;+∞) ––> (0;1].
4. Сокращение области определения (0;1] ––> (0;1).
5. Сокращение области определения (0;1) ––> (0;arctg(π/12)].
Делается это по математической формуле: arctg(x) = π/6 + arctg( (x*sqrt(3)-1)/(x+sqrt(3)) ).
Примечание 1: sqrt() у меня определена и работает хорошо.
6. Расчёт арктангенса для x ∈ (0;arctg(π/12)] по ряду Маклорена (ряд Тейлора в окрестности нуля).

Вот код реализации:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
double arctg(double x, int k = default_prec){
    if(x<0.0){return -arctg(-x, k);}
    
    if(x==0.0){return x;}
    
    if(x>1.0){return _pi/2.0 - arctg(1.0/x, k);}
    
    if(x==1.0){return _pi/4.0;}
    
    double z = 0.0;
    double t;
    if(x<0.26795){
        t = x;
        for(int i=1;i<=k;i++){
            z += t/(2.0*i-1.0);
            t *= -x*x;
        }
    }
    else{
        t = (x*sqrt(3.0)-1.0)/(x+sqrt(3.0));
        z += _pi/2.0 + arctg(t, k);
    }
    
    cout.precision(k);
    return z;
}
Однако, результаты работы не верны.
Помогите, пожалуйста, найти ошибку. Заранее спасибо.
Примечание 2: работаю в namespace std с подлюченным iostream.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.07.2021, 20:17
Ответы с готовыми решениями:

Вычислить значение функции atan(x) заданной разложением в ряд Тейлора
Через оператора while Вычислить с помощью разложения в ряд Тейлора значение функции с точностью e(эпсилон)(вводится пользователем)....

Вычислить значение функции atan(x) заданной разложением в ряд Тейлора
добрый день, нужна помощь в написании программы для вычисления суммы ряда, условия прикрепляю во вложении.

Вычисление значения функции заданной разложением в ряд Тейлора
Напишите программу для вычисления значения выражения (exp(x)-1)/x=1+(x/2!)+(x^2/3!)+(x^3/4!)+...+x^n/((n+1)!) Помогите :)

4
19497 / 10102 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
01.07.2021, 20:30
Цитата Сообщение от Newbie_cpp Посмотреть сообщение
Делается это по математической формуле: arctg(x) = π/6 + arctg( (x*sqrt(3)-1)/(x+sqrt(3)) ).
Тогда почему у вас тут PI/2, а не PI/6?
Цитата Сообщение от Newbie_cpp Посмотреть сообщение
z += _pi/2.0 + arctg(t, k);
0
Злостный нарушитель
 Аватар для Verevkin
10297 / 5720 / 1268
Регистрация: 12.03.2015
Сообщений: 26,494
01.07.2021, 22:26
Цитата Сообщение от Newbie_cpp Посмотреть сообщение
Однако, результаты работы не верны.
Помогите, пожалуйста, найти ошибку. Заранее спасибо.
Слыш, я тебе логарифм запилил уже.
Теперь тебе арктангенс надо.
Мож сразу всё вывалишь, чтоп мы не мучались?

0
 Аватар для Newbie_cpp
1 / 1 / 0
Регистрация: 06.04.2020
Сообщений: 24
02.07.2021, 12:09  [ТС]
DrOffset, хороший вопрос
Надо бы поправить...

Добавлено через 3 минуты
Verevkin
Мож сразу всё вывалишь, чтоп мы не мучались?
Спасибо за отзывчивость! Но остальное либо работает (как кв. корень и экспонента), либо не работает из-за натурального логарифма (лог. a по основанию b или a^x, гда a>0).
0
Злостный нарушитель
 Аватар для Verevkin
10297 / 5720 / 1268
Регистрация: 12.03.2015
Сообщений: 26,494
02.07.2021, 12:16
Цитата Сообщение от Newbie_cpp Посмотреть сообщение
Спасибо за отзывчивость!
Ты не путай отзывчивость с сарказмом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.07.2021, 12:16
Помогаю со студенческими работами здесь

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

Вычисление значения функции заданной разложением в ряд Тейлора
Доброго времени суток. Помогите пожалуйста найти ошибки в данной программе. У меня она будто не видит cout и скорее всего где-то внутри...

Вычисление значения функции заданной разложением в ряд Тейлора
Дано задание (прикрепил фото). Написал такой код. Но при компиляции вместо результата появляется not(ind)(скрин так же прикрепляю).Так же...

Вычисление значения функции заданной разложением в ряд Тейлора
Приветствую! Имеется задача-https://i m g u r . c o m /a/YyFxa9h (На E не обращайте внимание) Суть задачи в том,чтобы сравнивать...

Вычисление значения функции заданной разложением в ряд Тейлора
Проблема такая: ввожу погрешность до которой она должна считать. Ввожу 0,1 0,001 - ответ тот же самый nan, и даже не даёт ввести другие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru