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

Тьомчик
Участник
Участник
Статус
Оффлайн
Регистрация
30 Июн 2020
Сообщения
799
Реакции
159
1699955749040.png


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

код/code:
Expand Collapse Copy
#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 :/
 
Последнее редактирование:
Посмотреть вложение 263839

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

код/code:
Expand Collapse Copy
#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));
 
solved
reason: диапазон в водимого числа Х от -1 до 1
 
Назад
Сверху Снизу