Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 28.04.2019
Сообщений: 1

Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε

28.04.2019, 10:48. Показов 2526. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал программу по заданию с двойным факториалом. Посмотрите пожалуйста что не так?


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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
 
typedef double (*uf)(double, double, int &);
 
void tabl(double, double, double, double, uf);
double y(double, double, int &);
double s(double, double, int &);
 
int factorial(int );
 
 
void tabl(double a, double b, double h, double eps, uf fun) {
    int k=0;
    double sum;
    for (double x=a; x<b+h/2; x+=h) {
        sum=fun(x,eps,k);
        cout << setw(8) << x << setw(15) << sum << setw(10) << k << endl;
    } }
 
//////////// обозначим функцию у(х)//////////////////////////////////////
double y(double x, double eps, int &k) {
    return sqrt(x+1)-1-x/2;
}
 
/////////// обозначим разложение ряда s(x)///////////////////////////////
 
 
 
double s(double x, double eps, int &k) {
    double a,c,sum; sum=a=c=x;
    k=1;
    while (fabs(c)>eps) {
        c = pow(-1,k-1)*factorial(factorial(2*k-3))*pow(x,k)/factorial(2*k); a *= -c;
        sum += a;
        k++;
    }
     return sum; }
 
int factorial(int &k)
{
    int res=1;
    int i;
    for (i=1; i<=k;i++)
    {
        res *= i;
    }
    return res;
}
 
//////////////// основная функция/////////////////////////////////////////
int main()
{
    cout << setw(8) <<"x"<< setw(15) <<"y(x)"<< setw(10) << "k" << endl; tabl(-0.9,0.9,0.1,0.001,y);
    cout << endl;
    cout << setw(8) <<"x"<< setw(15) <<"s(x)"<< setw(10) << "k" <<endl ; tabl(-0.9,0.9,0.1,0.001,s);
    return 0;
}
Миниатюры
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε   Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.04.2019, 10:48
Ответы с готовыми решениями:

Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε
Помогите сделать: Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε. Вывести число итераций,...

Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε. Вывести число итераций, необходимое для...

Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε (табл. 8.1). Вывести число итераций,...

3
Злостный нарушитель
 Аватар для Verevkin
10310 / 5732 / 1269
Регистрация: 12.03.2015
Сообщений: 26,562
28.04.2019, 11:57
Цитата Сообщение от Yrickk Посмотреть сообщение
Посмотрите пожалуйста что не так?
Да всё не так. Если ряд рекуррентный, то не надо вычислять чёртовы факториалы и степени. Надо тупо домножать на известный множитель.
0
Злостный нарушитель
 Аватар для Verevkin
10310 / 5732 / 1269
Регистрация: 12.03.2015
Сообщений: 26,562
28.04.2019, 13:21

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define PRECISION 1E-9   
 
double S(double x, unsigned &iterations)
{
  unsigned k = 2;
  double sum = 0.0, m = -(x * x) * (2 * k - 3) / (2 * 4);
  iterations = 1;
  
  while (fabs(m) > PRECISION)
  {
    sum += m;
    k++;
    m *= -x * (1 - 3.0 / (2.0 * k));  
    iterations++;        
  }
  
  return sum;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.04.2019, 14:10
Yrickk, в условии пропущен шаг. если принять h=0.1
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
29
30
31
32
33
34
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
 
int main()
{    
    int n;
    double a=-0.9, b=0.9, h=0.1, an, eps=1e-3, S, Y, delta=1e-9; 
    
    cout <<  "  x     S(x)      Y(x)\n";
    for (double x=a; x<=b+delta; x+=h)
    {
        if(fabs(x)<delta) {x=0.0;S=0.0;Y=0.0;}
        else 
        {
        n=2;
        Y=sqrt(1.+x)-1.-x/2.;
        
        an=-x*x/8.;
        S=0.0;        
        while(fabs(an)>eps)    
        {           
           S+=an;           
           n++;           
           an*=-x*(2*n-3)/(2*n);            
        }
        }
    cout << setprecision(1) << fixed << x << setprecision(5) << "  " << S << "  " << Y << "\n";  
    }
    
system("pause");
return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2019, 14:10
Помогаю со студенческими работами здесь

Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε. Вывести число итераций
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε. Вывести число итераций, необходимое для...

Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε. Вывести число итераций, необход
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε. Вывести число итераций, необходимое для...

Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью 0,1
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью 0,1 табл. 8.1. Вывести число итераций, необходимое...

Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью e
Ни как не получается сделать эту лабу, помогите пожалуйста. Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с...

Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью 0.001
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью 0.001. Вывести число итераций, необходимое для...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru