Общий член ряда

Тема в разделе "C/C++/C#", создана пользователем Truymf, 23 ноя 2010.

Статус темы:
Закрыта.
  1. Truymf

    Truymf Гость

    задан общий член ряда:
    a[sub]n[/sub] = (-1)[sup](n-1)[/sup]/n[sup]n[/sup]
    Я пишу программу, которая будет находить любой член ряда с заданной точностью "eps" по рекуррентной формуле : \\
    Из
    a[sub]n+1[/sub] = (-1)[sup]n[/sup]/(n+1)[sup](n+1)[/sup] ,
    a[sub](n+1)[/sub]/a[sub]n[/sub] = -n[sup]n[/sup]/(n+1)[sup](n+1)[/sup] ,
    a[sub](n+1)[/sub] = -n[sup]n[/sup]/(n+1)[sup](n+1)[/sup] * a[sub]n[/sub] .



    <!--shcode--><pre><code class='c++'>//Programma 3.1
    #include <iostream>

    using namespace std;

    double An_1(int n);

    void main()
    {
    double an = 1;
    double eps = pow((double)10,-4);
    for (int n = 0;an>eps;n++)
    {
    an = An_1(n);
    cout << an << endl;
    }
    }

    double An_1(int k)
    {
    if (k = 0)
    return 1;
    else
    {
    int k1 = pow((double)k,k);
    int k2 = pow((double)(k+1),(k+1));
    double koef = -k1/k2;
    return koef * An_1(k-1);
    }
    }[/CODE]
    но почему-то у меня происходит зацикливание вроде...Подскажите новичку в чем проблема...а то сижу борюсь с этим уже пол дня!!!
     
  2. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
  3. Truymf

    Truymf Гость




    Да уж....Все...нашел ошибку....Фух...не прошло и полугода...Самая банальная ошибка у новичков...вместо логической операции поставил операцию присваивания...
     
  4. Truymf

    Truymf Гость

    Итак решил выложить полностью рабочую программу...Вдруг таким же новичкам, как и мне пригодиться...

    Задание: 10) Найти сумму ряда с точностью ε=10-4, общий член которого :
    a[sub]n[/sub] = (-1)[sup](n-1)[/sup]/n[sup]n[/sup]
    В ходе решения задачи использовать рекуррентное соотношение, полученное путем преобразований :
    a[sub]n+1[/sub] = (-1)[sup](n)[/sup]/(n+1)[sup]n+1[/sup]
    => a[sub]n+1[/sub] / a[sub]n[/sub] => a[sub]n+1[/sub] = K * a[sub]n[/sub]


    Код программы :
    <!--shcode--><pre><code class='c++'>//Programma 3.1
    #include <iostream>

    using namespace std;

    double An_1(int n); // прототип функции, вычисляющей член(№) ряда

    void main()
    {
    int n; //объявляем переменную под номер члена ряда;
    double sum = 0; //объявляем переменную под сумму элементов;
    double an = 1; //объявляем переменную под член ряда;
    double eps = pow((double)10,-4); //инициализируем точность вычислений;
    for (n = 1;abs(an)>eps;n++) //задаем цикл для нахождения суммы при заданной точности;
    { //заданная точность означает, что ищем и суммируем члены
    an = An_1(n); //ряда до тех пор, пока очередной член ряда не будет
    sum +=an; //меньше "eps"
    }
    cout << "sum = " << sum << endl; //выводим на экран сумму;
    cout << "n = " << n << endl; //выводим на экран номер элемента,при котором цикл;
    } //закончил работу;

    double An_1(int k) //определение функции;
    {
    if (k == 0)
    return 1;
    else
    {
    double k1 = pow((double)k,k); //ищем числитель рекуррентной формулы;
    double k2 = pow((double)(k+1),(k+1)); //ищем знаменатель рекуррентной формулы;
    double koef = -k1/k2; //ищем коэффициент рекуррентной формулы;
    return koef * An_1(k-1); //возвращаем значение рекуррентной формулы;
    }
    }[/CODE]
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей