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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.81
asx
0 / 0 / 0
Регистрация: 25.02.2010
Сообщений: 10
#1

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

27.02.2010, 12:20. Просмотров 3842. Ответов 10
Метки нет (Все метки)

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

Вычисление приближенного значения tan(x) через ряд Тейлора/ряд Маклорена - C++
Привет, CF. Задача: Вычисление приближенного значения tan(x) через ряд Тейлора/ряд Маклорена Проблема: не совпадают результаты...

Вычисление функции через разложение в ряд (Ряд Тейлора) - C++
Привет всем. Задание такого плана: Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора,...

вычислить функцию с помощью разложения в ряд.(Ряд Тейлора) - C++
Нужно написать программу по Ряду Тейлора.

Разложение ряд в ряд Тейлора.Переделать программу - C++
Написать программу вычисления и вывода на экран в виде таблицы значений функции, заданной с помощью ряда Тейлора, на интервале от Хзнач до...

ln - ряд Тейлора - C++
double ln(double x, double eps) { double T,S; int K; T=x; K=1; S=T; do{ K=K+1; T=-T*x/K; S=S+T;

Ряд тейлора - C++
Не могу написать код правильно Не правильно задаю цикл и не только табулирование для такой функции F(x) =...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
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
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
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
28.02.2010, 17:08 #10
vetal-voyts написал все правильно. Вам надо только перевести всё это в чистый Си, как я понял.
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. Еще раз спасибо!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2010, 17:27
Привет! Вот еще темы с ответами:

Ряд Тейлора С++ - C++
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от значения х_нач до х_кон с...

Ряд тейлора - C++
Доброй ночи. #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;float.h&gt; #include &lt;math.h&gt; using namespace std; void dno() { ...

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

Ряд Тейлора - C++
Помогите пожалуйста с решением задачи: Дано действительное число x. Вычислить значение y с помощью стандартной функции и с помощью...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.02.2010, 17:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru