Форум программистов, компьютерный форум, киберфорум
Наши страницы

Ряды Тейлора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Описать структуру MUSEUM http://www.cyberforum.ru/cpp-beginners/thread69103.html
Пожалуйста посмотрите это условие может вы сможете мне помочь..... Описать структуру MUSEUM (название музея, время работы, стоимость билета, адрес). Введите данные в массив, состоящий из шести...
C++ Определить количество слов в строке Люди помогите пожалуйста бедной девушке... Дана строка текста, в которой слова разделены пробелами. Необходимо: - определить количество слов в строке; - найти самое короткое и самое... http://www.cyberforum.ru/cpp-beginners/thread69101.html
Вычисление суммы ряда с точностью ЕПСИЛОН C++
Написать программу на языке С "вычисление суммы ряда с точностью ЕПСИЛОН"! Помогите кто может!...
C++ на циклы
такая задача: дано неравенство x^3-3*x+a>0 нужно выяснить, при каком наименьшем натуральном а будет решение над полем вещественных чисел. единственный вариант решения, который я вижу, это...
C++ Указатели http://www.cyberforum.ru/cpp-beginners/thread69072.html
Введите с клавиатуры данные в массив целого типа, а затем выведите на экран их среднее значение. тема:указатели Добавлено через 17 минут если можно, массив задать через константу, а не...
C++ Строки Дона строка текста, в которой слова разделены пробелами. Необходимо: -вычислить количество строк в строке -переставить слова в строке в обратном порядке. Помогите первый пункт сделал а вот второй... подробнее

Показать сообщение отдельно
Том Ардер
Модератор
Эксперт по математике/физике
3819 / 2431 / 317
Регистрация: 15.06.2009
Сообщений: 4,439
01.12.2009, 18:17
Цитата Сообщение от Vladimir. Посмотреть сообщение
Том Ардер, перед тем как упрощать, нужно понимать что делаешь и как делаешь. А так же, что измениться при упрощении. Имхо: код должен сначала начать работать, а потом отимизироваться..
3y6_DyIIJloBu4, вот готовое решение, разберитесь в нём:[SPOILER="развернуть код."][C]
Код, просто работающий, и код, дающий правильный результат - две большие разницы. Уверен, что предложенный код не проверялся на правильность, потому что в нём есть ошибки.

Об упрощении исходного выражения.
sin(pi*n/4) принимает лишь три значения (с точностью до знака): 0, 1, 1/корень(2). Нужно ли его вычислять? Рационально ли вычислять _целые_ степени функцией pow? А факториал легко приводит к переполнению целого.

Вот правильный код:

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
27
28
29
30
31
32
33
34
35
36
37
38
#include <math.h>
#include <iostream>
using namespace std;
 
int main()
{
    double  x, eps;
 
    cout << "x = ? ";
    cin >> x;
    cout << "eps = ? ";
    cin >> eps;
 
    double  x4 = 4*x*x*x*x;
    int     k2 = 1;     // 2k+1
    int     k4 = 1;     // 4k+1
    double  a = 1;      // главная часть текущего слагаемого
    double  t = 1. + x/double(k2)*(1. + x/double(k4+2));
    double  sum = 0;
 
    while( fabs(a*t) > eps )
    {
        t = 1. + x/double(k2)*(1. + x/double(k4+2));
 
        sum += a * t;
 
        k2 += 2;
        k4 += 4;
        a = -a * x4 / double((k4-3)*(k4-2)*(k4-1)*k4);
    }
    sum *= x;
 
    cout << sum << endl;
    cout << exp(x)*sin(x);
 
        system("pause");
        return 0;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru