Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.81
asx
0 / 0 / 0
Регистрация: 25.02.2010
Сообщений: 10
27.02.2010, 12:20     Ряд Тейлора #1
Добрый день.
Помогите пожалуйста разобраться с задачей, я просто не могу понять что от меня требуется.
"Вычислить и вывести на экран значения исходной функции (функция записана слева от знака «=»), значения функции, рассчитанное с помощью ряда Тейлора, на интервале от хнач до хкон из обдасти определения функции с шагом dx и точностью ԑ. На экране так же должно отображаться количество просуммированных членов ряда."
Миниатюры
Ряд Тейлора  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2010, 12:20     Ряд Тейлора
Посмотрите здесь:

Ряд Тейлора C++
ряд Тейлора C++
ln - ряд Тейлора C++
вычислить функцию с помощью разложения в ряд.(Ряд Тейлора) C++
C++ Ряд Тейлора С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DartDayring
13 / 13 / 5
Регистрация: 10.02.2010
Сообщений: 72
27.02.2010, 14:31     Ряд Тейлора #2
Тебе требуется написать цикл, выполняющий сумму
asx
0 / 0 / 0
Регистрация: 25.02.2010
Сообщений: 10
27.02.2010, 15:22  [ТС]     Ряд Тейлора #3
Вот, я попробовал накидать, но работать не хочет.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <math.h>
#define PI 3.14
 
 
void main() {
     float x,res;
     int n;
     
     printf("x=");
     scanf("%f",&x);
     res=atan(x);
     printf("arctg x=%f\n",res);
     
     for (n=0;n<=x;++n) {
         res+=pow(-1,n)/((2*n+1)*pow(x,2*n+1));
         }
     res+=PI/2;
     printf("arctg x=%f",res);
     scanf("%%");
     }
Yurii_74
paladin
 Аватар для Yurii_74
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
27.02.2010, 15:29     Ряд Тейлора #4
Вы определитесь. (-1)^n или (-1)^(n+1) (исходя из картинки). Также не помешало бы увеличить проход по n для маленьких значений x. (например до max(3*x,4)).
asx
0 / 0 / 0
Регистрация: 25.02.2010
Сообщений: 10
28.02.2010, 14:25  [ТС]     Ряд Тейлора #5
Цитата Сообщение от Yurii_74 Посмотреть сообщение
Вы определитесь. (-1)^n или (-1)^(n+1) (исходя из картинки). Также не помешало бы увеличить проход по n для маленьких значений x. (например до max(3*x,4)).
Честно сказать ничего не понял. (-1)^n и там и там, вроде все правильно. А что понимается под словосочетанием увеличить проход? Мне бы конкретно указали на ошибку.
vetal-voyts
13 / 12 / 1
Регистрация: 23.08.2008
Сообщений: 43
28.02.2010, 16:01     Ряд Тейлора #6
имеем интервал [a, b] начиная с х = а, с шагом d пока х<=b по формуле в цикле определяем значения arctg(x) . точность определяем как n+1 член.

Добавлено через 1 час 21 минуту
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
void main()
{
    float a, b, d, x, e;
    const float pi = 3.14;
    cout<<("entere a, b, d,  e  respectively ");
    cin>>a>>b>>d>>e;
    x = a ;
    while( x <= b)
    {
        int  n = 0;
        float result = pi/2;
        float sum = 0;
        float E = 0;
        do
        {
            sum+= pow(-1.0,n)/((2*n+1)*pow(x, 2*n+1));
            ++n;
            E = 1.0/((2*n+1)*pow(x, 2*n+1));
        }while(E >= e);
        cout<<" x = "<< x <<" arctg(x) = " <<result - sum<<" steps n = "<<n-1<<endl;
        x+=d;
    }
}
asx
0 / 0 / 0
Регистрация: 25.02.2010
Сообщений: 10
28.02.2010, 16:54  [ТС]     Ряд Тейлора #7
Цитата Сообщение от vetal-voyts Посмотреть сообщение
имеем интервал [a, b] начиная с х = а, с шагом d пока х<=b по формуле в цикле определяем значения arctg(x) . точность определяем как n+1 член.
Добавлено через 1 час 21 минуту
За код огромное спасибо, но только он работать отказывается. Компилятор выдает ошибку "syntax error before "namespace"" на строке "using namespace std;". Пользуюсь Dev-C++ 4.9.9.2, возможно в нем проблема. Да и еще вопрос: Разве namespace std можно в C использовать? Я думал что только в C++.
Yurii_74
paladin
 Аватар для Yurii_74
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
28.02.2010, 17:03     Ряд Тейлора #8
Цитата Сообщение от asx Посмотреть сообщение
Честно сказать ничего не понял. (-1)^n и там и там, вроде все правильно. А что понимается под словосочетанием увеличить проход? Мне бы конкретно указали на ошибку.
Если раскрыть исходный ряд, то получим:
pi/2 + 1/x - ...
а не то, что написано после знака равенства. Хотя возможно ошибка только во вложении.
Ну а это
C
1
for (n=0;n<=x;++n)
заменить на что-нибудь подобное:
C
1
for (n=0;n<=max(4,3*x);++n)
asx
0 / 0 / 0
Регистрация: 25.02.2010
Сообщений: 10
28.02.2010, 17:06  [ТС]     Ряд Тейлора #9
Цитата Сообщение от Yurii_74 Посмотреть сообщение
Если раскрыть исходный ряд, то получим:
pi/2 + 1/x - ...
а не то, что написано после знака равенства. Хотя возможно ошибка только во вложении.
Ну а это
C
1
for (n=0;n<=x;++n)
заменить на что-нибудь подобное:
C
1
for (n=0;n<=max(4,3*x);++n)
Ааа, теперь понял. Спасибо, буду думать!
Yurii_74
paladin
 Аватар для Yurii_74
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
28.02.2010, 17:08     Ряд Тейлора #10
vetal-voyts написал все правильно. Вам надо только перевести всё это в чистый Си, как я понял.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2010, 17:27     Ряд Тейлора
Еще ссылки по теме:

C++ Вычисление функции через разложение в ряд (Ряд Тейлора)
ряд Тейлора C++
C++ Ряд Тейлора

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
asx
0 / 0 / 0
Регистрация: 25.02.2010
Сообщений: 10
28.02.2010, 17:27  [ТС]     Ряд Тейлора #11
Цитата Сообщение от Yurii_74 Посмотреть сообщение
vetal-voyts написал все правильно. Вам надо только перевести всё это в чистый Си, как я понял.
Да, вроде то правильно, только почему то не работает. Скорее всего это у меня компилятор такой.

Добавлено через 10 минут
Спасибо вам большое за помошь!
P.S. Пользуясь случаем (пока вы добрые) хотел бы попросить вас глянуть еще вот эту темку http://www.cyberforum.ru/cpp-beginne...read99015.html. Еще раз спасибо!!!
Yandex
Объявления
28.02.2010, 17:27     Ряд Тейлора
Ответ Создать тему
Опции темы

Текущее время: 14:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru