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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2012, 12:39   #1
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
Стрелка СИ, циклы, вычисление суммы ряда...

Здравствуйте. Нужна ваша помощь в разъяснении задачи и написании программы на СИ.

Задача:
Написать программу вычисления значения функции arctg x, с помощью формулы
Я понимаю что нужно вычислять ряд, но до каких пор это делать? И причём тут |x|<=1?

Последний раз редактировалось Immoralist; 25.04.2012 в 12:42.
Immoralist вне форума Ответить с цитированием
Старый 25.04.2012, 13:15   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Делать нужно до тех пор, пока член ряда не станет меньше погрешности, с которой нужно посчитать сумму ряда.
А ограничение по модулю икса нужно затем, что иначе ряд будет расходящимся.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 25.04.2012, 13:39   #3
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Делать нужно до тех пор, пока член ряда не станет меньше погрешности, с которой нужно посчитать сумму ряда.
А ограничение по модулю икса нужно затем, что иначе ряд будет расходящимся.
А как определить погрешность?
Immoralist вне форума Ответить с цитированием
Старый 25.04.2012, 14:23   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Immoralist Посмотреть сообщение
А как определить погрешность?
Её не определяют, а задают. Например так:
Код:
While(fabs(x) <= 1)
{
..........
x += 0.01;
}
Погрешность будет в одну сотую.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 25.04.2012, 14:53   #5
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Её не определяют, а задают. Например так:
Код:
While(fabs(x) <= 1)
{
..........
x += 0.01;
}
Погрешность будет в одну сотую.
И это будет также ограничением количества итераций?
Область значений функции y=arctg x [-1,1] значит и x нужно вводить в данном диапазоне?

Последний раз редактировалось Immoralist; 25.04.2012 в 14:58.
Immoralist вне форума Ответить с цитированием
Старый 25.04.2012, 15:11   #6
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Её не определяют, а задают. Например так:
Код:
While(fabs(x) <= 1)
{
..........
x += 0.01;
}
Погрешность будет в одну сотую.
не совсем так, извините.
fabs(x) <= 1 -- это защита от неправильного ввода.

а проверку на погрешность надо как-то так реализовывать:

Код:
n = 0;
sum = 0;
while (f(n) >= eps)
{
    sum += f(n);
    n++;
}
eps -- погрешность , f(n) -- функция, вычисляющая n-й член ряда.
например, так:

Код:
double f(int n)
{
    return pow(-1, n) * pow(x, 2 * n + 1) / (2 * n + 1);
}
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062

Последний раз редактировалось Mandrivnyk; 25.04.2012 в 15:13.
Mandrivnyk вне форума Ответить с цитированием
Старый 25.04.2012, 15:24   #7
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

Вот что получилось:
PHP код:
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#include <locale.h>

float f(int x,int n);

void main()
{
    
setlocale(LC_ALL,"Russian");
    
float x,eps=0.1,y,n=1;
    
printf("Введите x в промежутке [-1,1]:\t");
    
scanf("%f",&x);
    
y=x;
    while(
fabs(y)>=eps)
    {
        
y+=f(x,n);
        
n++;
    }
    
printf("Результат: %g\n",y);
}

float f(int x,int n)
{
    return 
pow((float)-1,n)*pow((float)x,2*n+1)/(2*n+1);


Последний раз редактировалось Immoralist; 25.04.2012 в 15:37.
Immoralist вне форума Ответить с цитированием
Старый 25.04.2012, 15:26   #8
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Ну почему n+=2; ?!
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 25.04.2012, 15:30   #9
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Ну почему n+=2; ?!
Там же после 3 идёт 5, потом 7 и т.д.
А, это же в функции...)) да там 1 должен быть...
Всё равно, в результате выводит 0

Последний раз редактировалось Immoralist; 25.04.2012 в 15:40.
Immoralist вне форума Ответить с цитированием
Старый 25.04.2012, 16:18   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Код:
#include <stdio.h>
#include <math.h>
#include <locale.h>

int
main()
{
    float x,eps=0.001,y,n=0,s=0,x0;
    printf("Input x on [-1,1]: ");
    scanf("%f",&x);
    y=x0=x;
    while(fabs(y)>=eps)
    {
        s+=y;
        n++;
        x0*=-x*x;
        y=x0/(2*n+1);
    }
    printf("Result: %f\n",s);
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление суммы ряда Shark_snt Паскаль, Turbo Pascal, PascalABC.NET 0 28.12.2011 19:35
С++ вычисление суммы ряда Маюха Чайковская Помощь студентам 3 16.06.2011 01:29
Интерационные циклы. Вычисление суммы ряда Ildar017 Помощь студентам 0 10.05.2011 21:00
Вычисление суммы ряда в С++ Tador Помощь студентам 21 10.12.2010 00:49