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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2017, 16:05   #1
holykilla
Пользователь
 
Регистрация: 04.04.2017
Сообщений: 12
Лампочка Найти значения функции Y(X), суммы S(x)

Условие задания:
Значение аргумента x меняется от a до b с шагом h. Для каждого x найти значения функции Y(X), суммы S(x) (ее разложение в ряд c заданной точностью ε=1.e-6) и вывести в виде таблицы. В основной программе организовать ввод исходных данных (a, b, h), обращение к функции, вывод результатов. Вычисления Y(x), S(x) реализовать в виде функций

Сама функция во вложении

вот мой код
Код:
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <conio.h>
#include <math.h>
#include <iomanip>
float Y(float x);
 
int main()
{
    system("cls");
    setlocale(LC_ALL, "RUS");
    float x, a, b, h;
    puts("Введи a,b,h");
    scanf_s("%f%f%f", &a, &b, &h);
    for (x = a; x < b; x = x + h)
    {
        printf("\nx=%5.2f\t sum=%7.3f\t cos(x)=%7.3f\n", x, Y(x), 1. / (1. + x));
    }
    system("pause");
    return 0;
}
 
float Y(float x)
{
    float u = 1, sum = u, eps = 1.E-6,k;
    int i = 1;
    while (fabs(u)>eps)
    {
        u = pow(-1,k) *(pow(x,2*k+1) / (2 * i*(2 * i - 1)));
        sum += u;
        i++;
    }
    return sum;
}
я не правильно вроде функцию написал, не знаю как факториалом быть ! Помогите пожалуйста составить функции эти что бы правильно работала программа!

Функция во вложении
Изображения
Тип файла: png Снимок.PNG (6.3 Кб, 105 просмотров)
holykilla вне форума Ответить с цитированием
Старый 25.12.2017, 16:14   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

факториал можно вычислять исходя из предыдущего значения (через рекуррентное соотношение):
Код:
    float u = 1, ffact=1, sum = x, eps = 1.E-6;
    int k = 1;
    while (fabs(u)>eps)
    {
        ffact *= (2*k)*(2*k+1);
        u = pow(-1,k) *( pow(x,2*k+1) / ffact );
        sum += u;
        k++;
    }

____
Цитата:
Сообщение от holykilla Посмотреть сообщение
cos(x)
почему cos(x) и где для него вычисление?


может так надо:

Код:
float S(float x)
{
    float u = 1, ffact=1, sum = x, eps = 1.E-6;
    int k = 1;
    while (fabs(u)>eps)
    {
        ffact *= (2*k)*(2*k+1);
        u = pow(-1,k) *( pow(x,2*k+1) / ffact );
        sum += u;
        k++;
    }
    return sum;
}

float Y(float x){
    return sin(x);
}

....
    for (x = a; x <= b; x +=h)
    {	
	printf("\nx=%5.2f\t S(x)=%7.6f\t Y(x)=%7.6f", x, S(x), Y(x) );
    }

Последний раз редактировалось Serge_Bliznykov; 25.12.2017 в 16:33.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2017, 16:17   #3
holykilla
Пользователь
 
Регистрация: 04.04.2017
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
факториал можно вычислять исходя из предыдущего значения (через рекуррентное соотношение):
Код:
    float u = 1, ffact=1, sum = 0, eps = 1.E-6;
    int k = 1;
    while (fabs(u)>eps)
    {
        ffact *= (2*k)*(2*k+1);
        u = pow(-1,k) *( pow(x,2*k+1) / ffact );
        sum += u;
        k++;
    }
Спасибо большое! Быстрый ответ!
holykilla вне форума Ответить с цитированием
Старый 25.12.2017, 16:35   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от holykilla Посмотреть сообщение
Спасибо большое! Быстрый ответ!
там ошибка!

возьмите исправленный вариант ниже!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2017, 16:37   #5
holykilla
Пользователь
 
Регистрация: 04.04.2017
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
там ошибка!

возьмите исправленный вариант ниже!
Ошибка там в том что не правильно синус вычисляется или в чем-то еще ?
holykilla вне форума Ответить с цитированием
Старый 25.12.2017, 16:39   #6
holykilla
Пользователь
 
Регистрация: 04.04.2017
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
там ошибка!

возьмите исправленный вариант ниже!
я в
Код:
 printf("\nx=%5.2f\t sum=%7.3f\t cos(x)=%7.3f\n", x, Y(x), 1. / (1. + x));
поменял на

Код:
 printf("\nx=%5.2f\t sum=%7.3f\t cos(x)=%7.3f\n", x, Y(x), sin(x));
и вроде его правильно считает
holykilla вне форума Ответить с цитированием
Старый 25.12.2017, 16:47   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ошибка была в
Цитата:
Сообщение от holykilla Посмотреть сообщение
Цитата:
sum = 0
правильно:

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Код:
sum = x
ну и по мелочи:
функции должны быть S(X) и Y(x) - это у Вас в задании требуется.



Цитата:
Сообщение от holykilla Посмотреть сообщение
cos(x)
итить. при чём здесь КОСИНУС?!!


Вы вообще видели мой пост #2 после слов:
Цитата:
может так надо
???!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2017, 17:33   #8
holykilla
Пользователь
 
Регистрация: 04.04.2017
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ошибка была в


правильно:



ну и по мелочи:
функции должны быть S(X) и Y(x) - это у Вас в задании требуется.




итить. при чём здесь КОСИНУС?!!


Вы вообще видели мой пост #2 после слов: ???!
Да, извиняюсь, все исправил!
holykilla вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу для приближенного вычисления значения функции в точке х с помощью разложения в ряд Тейлора. Найти приближенное значение функции с погрешностью менее 0,0001. marysluva Помощь студентам 1 18.12.2016 18:13
Для заданных значений аргумента Х вычислить значения суммы S и функции Y или Z. Вычисление S произвести с точностью E Марина1986 C/C++ Сетевое программирование 1 08.05.2013 13:35
Найти значения функции у = nn для n = 1, 2 ... n. Bakasova Паскаль, Turbo Pascal, PascalABC.NET 1 29.10.2012 09:30
Для каждого x, изменяющегося от a до b с шагом h, найдите значения функции Y(x), суммы S(x) и |Y(x)-S(x)| Язык Си zig1 Помощь студентам 2 01.02.2012 21:08
Как найти мин и макс значения в табуляции функции? idmessage Паскаль, Turbo Pascal, PascalABC.NET 0 10.01.2011 17:45