C++ Вопрос Помогите с формулой (-1)^n-1

Тьомчик
Участник
Статус
Оффлайн
Регистрация
30 Июн 2020
Сообщения
751
Реакции[?]
153
Поинты[?]
61K
1699955749040.png

проблема в (-1)^n-1, справа ограничение и основная формула

код/code:
#include <Windows.h>
#include <iostream>
#include <locale.h>
#include <string.h>

#define _USE_MATH_DEFINES
#include <math.h>

using namespace std;

void main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "");

    int n = -1;
    float x, formula, summa_first, summa_second = 0.0f;
    const float epsilon = pow(10, -4);

    cout << "цифра x: ";
    cin >> x;

    summa_first = log1p(x);

    do
    {
        if (n > 1)
        {
            break;
        }

        formula = pow(-1, n - 1) * (pow(x, n) / n);
   
        /*
        не правильно только
        pow(-1, n - 1)
   
        это правильно.
        (pow(x, n) / n)
        */
   
        summa_second += formula;
        n++;
    } while (fabs(formula) > epsilon);

    cout << "первая: " << summa_first << endl;
    cout << "вторая: " << summa_second << endl;

    if (fabs(summa_second - summa_first) < epsilon)
    {
        cout << "точное" << endl;
    }
    else
    {
        cout << "не точное" << endl;
    }
}
цифра x: 5
первая: 1.79176
вторая: -inf
ВТОРАЯ В ЛЮБОМ СЛУЧАЕ ВЫХОДИТ -inf :/
 
Последнее редактирование:
я сырок со вкусом вишни
Пользователь
Статус
Оффлайн
Регистрация
31 Июл 2021
Сообщения
252
Реакции[?]
49
Поинты[?]
22K
Посмотреть вложение 263839

проблема в (-1)^n-1, справа ограничение и основная формула

код/code:
#include <Windows.h>
#include <iostream>
#include <locale.h>
#include <string.h>

#define _USE_MATH_DEFINES
#include <math.h>

using namespace std;

void main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "");

    int n = -1;
    float x, formula, summa_first, summa_second = 0.0f;
    const float epsilon = pow(10, -4);

    cout << "цифра x: ";
    cin >> x;

    summa_first = log1p(x);

    do
    {
        if (n > 1)
        {
            break;
        }

       // formula = pow(-1, n - 1) * (pow(x, n) / n);
formula = pow(-1, n) * (pow(x, 2 * n + 1) / (2 * n + 1));
 
        /*
        не правильно только
        pow(-1, n - 1)
 
        это правильно.
        (pow(x, n) / n)
        */
 
        summa_second += formula;
        n++;
    } while (fabs(formula) > epsilon);

    cout << "первая: " << summa_first << endl;
    cout << "вторая: " << summa_second << endl;

    if (fabs(summa_second - summa_first) < epsilon)
    {
        cout << "точное" << endl;
    }
    else
    {
        cout << "не точное" << endl;
    }
}
цифра x: 5
первая: 1.79176
вторая: -inf
ВТОРАЯ В ЛЮБОМ СЛУЧАЕ ВЫХОДИТ -inf :/

formula = pow(-1, n) * (pow(x, 2 * n + 1) / (2 * n + 1));
 
Тьомчик
Участник
Статус
Оффлайн
Регистрация
30 Июн 2020
Сообщения
751
Реакции[?]
153
Поинты[?]
61K
solved
reason: диапазон в водимого числа Х от -1 до 1
 
Сверху Снизу