Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2013, 20:31   #11
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

а какие лучше подставлять значения вместо х и n?
Diana528 вне форума Ответить с цитированием
Старый 20.09.2013, 20:33   #12
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

ряд почему то не сходится!
Код:
#include <iostream>
#include <cmath>
using namespace std;

double ryad(double x, int n) {
    double sum = 0, a;

    for (int i = 1; i <= n; i++) {
        a=a*(-1)*x/(2*i)*(2*i-1); 
        sum = sum + a;
    }

    double y1;
    y1 = sum;
    return y1;
}

main()
{

cout<<"vvedite x"<<endl;
int x;
cin>>x;
cout<<"vvedite n"<<endl;
int n;
cin>>n;

double y1, y2 = x*cos(pow(x,0.5));
y1 = ryad(x, n);


cout<<"y1= "<<y1<<" y2= "<<y2<<endl;
system("pause");
}
Diana528 вне форума Ответить с цитированием
Старый 22.09.2013, 21:40   #13
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Вот здесь отличный пример, как раз в тему: http://pers.narod.ru/algorithms/cpp_seriescount.html

Там рассчитывается для девяти точек. Я укоротил тот пример для одной точки и вынес расчёт ряда в отдельную функцию. Сохранил комментарии.

Код:
#include <iostream>
#include <cmath>
using namespace std;

double sumOfSeries(double x, const double eps) {
    double z = log(1 + x); // точное значение суммы ряда
    double y = 0; // сумма ряда
    double zn = 1; // знак слагаемого
    double n = 1; // номер шага
    double xn = x; // x в степени n
    do {
        y += zn * (1 / n) * xn; // формула накопления суммы ряда
        zn = -zn; // меняем знак следующего слагаемого
        xn *= x; // x в степени n домножаем на x для следующего шага
        n++; // yвеличиваем номер шага на 1
    } while (fabs(y - z) > eps && n < 1000);
    // пока не достигнута точность eps или не сделано 1000 шагов цикла

    return y;
}

int main(int argc, char** argv) {
    double x = 0.1;
    double eps = 1e-15; // требуемая точность эпсилон
    double z = log(1 + x); // точное значение суммы ряда
    double y = sumOfSeries(x, eps); /* рассчитываем значение суммы ряда с
                                     * заданой точностью эпсилон
                                     */

    // Настраиваем вывод на 15 знаков после запятой
    cout.precision(15);
    cout.setf(ios::fixed, ios::floatfield);

    // Выводим результат
    cout << "z = " << z << endl; // Точное значение суммы ряда
    cout << "y = " << y << endl; // Рассчитанное значение суммы ряда

    // Погрешность
    cout << fabs(y - z) << endl;
    return 0;
}
Вот интересный вариант нашёл расчёта факториала: http://stackoverflow.com/questions/1...02932_10645671

Я тот код немного изменил. В этом примере факториал расчитывается для a = 13. Факториал не помещается в int поэтому генерируется исключение и выводится сообщение: "Range error: the number must be from the range [0, 12]"

Код:
#include <iostream>
#include <stdexcept>
using namespace std;

unsigned int factorial(unsigned int n) throw(out_of_range) {
    static const unsigned int table[] = {1, 1, 2, 6, 24, 120, 720,
        5040, 40320, 362880, 3628800, 39916800, 479001600};
    if (n >= sizeof table / sizeof *table)
        throw out_of_range("Range error: the number must be from the range [0, 12]");
    return table[n];
}

int main(int argc, char** argv) {
    int f = 0;
    int n = 13;

    try {
        f = factorial(n);
        cout << f << endl;
    } catch(const out_of_range& e) {
        cout << e.what() << endl;
    }
    
    return 0;
}
P.S. Если тема ещё актуальна, то дописать тут немного осталось....

Последний раз редактировалось 8Observer8; 22.09.2013 в 21:47.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить факториал числа п. Факториал числа представить в виде целочисленного массива десятичных цифр. M1kefly Общие вопросы C/C++ 1 07.07.2013 21:00
факториал artscorp Помощь студентам 2 10.05.2011 22:23
Факториал artscorp Помощь студентам 7 10.05.2011 19:54
C++ (факториал) slim>>> Помощь студентам 2 13.01.2010 20:34
Факториал. dimka660i Помощь студентам 11 10.10.2009 23:28