Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
asx
0 / 0 / 0
Регистрация: 25.02.2010
Сообщений: 10
#1

Ряд Тейлора

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

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

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

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

Разложение ряд в ряд Тейлора.Переделать программу
Написать программу вычисления и вывода на экран в виде таблицы значений...

Ряд Тейлора
Помогите, пожалуйста! Формулировка задания и само задание я прикрепила файлами....

Ряд Тейлора на С++

10
DartDayring
14 / 14 / 5
Регистрация: 10.02.2010
Сообщений: 72
27.02.2010, 14:31 #2
Тебе требуется написать цикл, выполняющий сумму
0
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("%%");
     }
0
Yurii_74
paladin
284 / 184 / 7
Регистрация: 25.02.2009
Сообщений: 592
27.02.2010, 15:29 #4
Вы определитесь. (-1)^n или (-1)^(n+1) (исходя из картинки). Также не помешало бы увеличить проход по n для маленьких значений x. (например до max(3*x,4)).
0
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 и там и там, вроде все правильно. А что понимается под словосочетанием увеличить проход? Мне бы конкретно указали на ошибку.
0
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;
    }
}
2
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++.
0
Yurii_74
paladin
284 / 184 / 7
Регистрация: 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)
1
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)
Ааа, теперь понял. Спасибо, буду думать!
0
Yurii_74
paladin
284 / 184 / 7
Регистрация: 25.02.2009
Сообщений: 592
28.02.2010, 17:08 #10
vetal-voyts написал все правильно. Вам надо только перевести всё это в чистый Си, как я понял.
0
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. Еще раз спасибо!!!
0
28.02.2010, 17:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2010, 17:27

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

Ряд Тейлора
Вычислить и вывести на экран в виде таблицы значения функции , заданной с...

Ряд Тейлора
Помогите найти ошибку:(вот задачка...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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