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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2017, 20:53   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Разложить в ряд Тейлора - Cи

Добрый вечер. Дано задание: написать программу для вычисления приближенного значения у(х) в точке 0<|x|<1 с помощью разложения в ряд Тейлора S(x). Найти приближенное значения функции с погрешностью меньше е<0,0001. Значение х и е вводить с клавиатуры. Вывести на экран точное значение y(x), найденное приближенное значение S(x) и полученную погрешность |y(x)-S(x)|
Функция
Код:
y=((x*x)/4+(x/2)+1)*pow(e,(x/2));
Разложение в ряд Тейлора
Код:
s+=(((k*k)+1)/(fact(k)))*(pow(x/2,k));
k Є (0;infinity)
Вот то что уже есть:
Код:
double  fact(int N)
{
    if(N < 0) 
        return 0; 
    if (N == 0) 
        return 1; 
    else  
        return N * fact(N - 1); 
}
int main()
{
    float x,e,y=0,s=0; 
    int k=0;
 
    printf("Enter x\n");
    scanf("%f",&x);
    if(x<=0||x>=1)
        return 0;
    printf("\nEnter e\n");
    scanf("%f",&e);
        
 
            y=((x*x)/4+(x/2)+1)*pow(e,(x/2));
            printf("%f\n",y);
    
            do
            {
                s+=(((k*k)+1)/(fact(k)))*(pow(x/2,k));
                printf("%f\n",s);
                k++;
            }
            while((fabs(y-s))<0.0001);
                
    return 0;
}
Что здесь нужно добавить, чтобы программа соответствовала заданию?
Вероника99 вне форума Ответить с цитированием
Старый 13.12.2017, 21:40   #2
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Не подскажете?(
Вероника99 вне форума Ответить с цитированием
Старый 14.12.2017, 00:21   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Как минимум: добавить проверку на введенную точность, цикл крутить до введенной точности, исправить условие цикла - у вас достигаемая точность должна останавливать цикл.
p51x вне форума Ответить с цитированием
Старый 14.12.2017, 00:56   #4
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Цитата:
Код:
            while((fabs(y-s))<0.0001);
                

}
Вместо этого написала while((fabs(y-s))<e);
Но получаетс бесконечный цикл. Что именно нужно поменять в цикле?Я что-то совсем не понимаю
Вероника99 вне форума Ответить с цитированием
Старый 14.12.2017, 01:05   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Еще раз перечитайте мой пост. У вас при каком условии должен продолжать работать, а при каком остановиться? Какое их этих условий вы запихнули в вайл?
p51x вне форума Ответить с цитированием
Старый 14.12.2017, 01:18   #6
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Мне нужно найти приближенное значения функции с погрешностью меньше е<0,0001.
Приближенное значения функции в моем коде - это s
значит, я перепутала, в цикле нужно писать:
Код:
while(s>e);
Добавляю проверку на ввод точности:
Код:
    printf("\nEnter e\n");
    scanf("%f",&e);
        if(e>1)
			return 0;
Правильно?
Вероника99 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с ошибками. Разложить функцию e^2x в ряд Тейлора (Маклорена). Паскаль NikSon-xD Помощь студентам 7 24.12.2013 16:30
вычислить функцию с по-щью разложения в ряд.(Ряд Тейлора) feelstor Помощь студентам 2 26.12.2011 03:44
sh(х) разложить в ряд Тейлора Litoi Помощь студентам 5 26.09.2011 21:16
Разложить ф-цию рядом Тейлора (С++) Дезик Помощь студентам 7 15.11.2010 09:19
Разложить в ряд arcsin. FPU smalsvoloch Общие вопросы C/C++ 0 28.10.2010 20:57