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

Вычисление факториала

05.01.2018, 21:06. Показов 2703. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, добрые люди.
Получил задачу изготовить приложение для вычисления суммы ряда.
В условии имеется факториал - k!.
Подскажите, пожалуйста, как его обозначить в программе.

кратко задание:
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры.
a=0,1
b=1,0
h=0,1
n=30

S(x) = E(k=0,n) cos(kPi/4)*x^k/k!
Y(x) = e^xcosPi/4*(cos(xsinPi/4)

кратко код
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double a,b,x,h,Pi,e,y,s,r;  
int n,k;
Pi=3.14159265359;
e=2,718281828459045;
                a = StrToFloat(Edit1->Text);
        b = StrToFloat(Edit2->Text);
        n = StrToInt(Edit3->Text);
        h = StrToFloat(Edit4->Text);
 
      for (x = a; x<=b; x+=h)
      {
      y=pow(e,cos(Pi/4))*cos(x*(sin(Pi/4)));
      r=fabs(y-s);
                 for(k = 1; k<=n; ++k)
   {
       s+=(cos(k*Pi/4)*pow(x,k))/k ; 
 
                      }
      Memo1->Lines->Add("При x= "+FloatToStrF(x,ffFixed,8,2)
                        +"\t Y(x)= "+FloatToStrF(y,ffFixed,8,5)
                       +"\t S(x)= "+FloatToStrF(s,ffFixed,8,5)
                       +"\t |Y(x)-S(x)|= "+FloatToStrF(r,ffFixed,8,5));
 }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2018, 21:06
Ответы с готовыми решениями:

Вычисление факториала
Вычислить 7! каждым из трёх вариантов цикла(for, while, do …while) помогите пожалуйста...только начали изучать с++ builder

Вычисление факториала в С++ Builder 6
Надо помочь написать часть кода для вычисления факториала.

Вычисление факториала и вычисление степени числа
Нужно проверить правильность сделанной программы если не правильно помогите исправить. Var a,a1,a2,a3,x,c,st,otvet:real; ...

7
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,008
05.01.2018, 22:28
C++
1
2
3
4
5
6
7
unsigned __int64 fact (unsigned int num)
{
  unsigned __int64 result = 1;
  for (int i = 2; i <= num; i++)
    result *= i;
  return result; 
}
0
0 / 0 / 0
Регистрация: 21.12.2017
Сообщений: 51
05.01.2018, 23:17  [ТС]
gunslinger,
простите, где объявлять сию функцию? в теле buttonClick?
что за переменная num? крайнее число счётчика ряда? в моём случае такое число n=30,
как использовать result в цикле?
0
0 / 0 / 0
Регистрация: 21.12.2017
Сообщений: 51
06.01.2018, 00:56  [ТС]
Вот такой цикл получается. но ответ не сходится.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
double a,b,x,h,Pi,e,y,s,r,f,t,v,m; 
int n,k;
Pi=3.14159265359;
e=2,718281828459045;
t=cos(Pi/4);
v=sin(Pi/4);
 
      for (x = a; x<=b; x+=h)
      {
      y=pow(e,t)*cos(x*v);//y=pow(e,cos(Pi/4))*cos(x*(sin(Pi/4)));
 
                 for(k=1,f=1; k<=n; k++)
   {
              f=f*k;                                   //факториал
             m=(cos(k*Pi/4)*pow(x,k))/f ; //член ряда
             s=s+m;                                //сумма
             r=fabs(y-s);
                      }
https://www.cyberforum.ru/cgi-bin/latex.cgi?S(x) = \sum_{k=0}^{n}cos(k*\pi/4)*{x}^{k} /k!
Миниатюры
Вычисление факториала  
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,008
06.01.2018, 01:50
Функцию можно объявлять для простоты в любом "свободном" отдельном месте cpp-файла до вызова (использования) самой функции. num - факториал какого числа считается. n у тебя - количество членов ряда (+1). result - значение факториала, используется внутри функции. Прочитай про вызов функции, тебе нужно использовать fact(num), где num - число.
Ошибка в вычислении суммы ряда - значит, где-то подсчет идет неправильно.
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,008
06.01.2018, 05:26
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
unsigned __int64 fact (unsigned int num)
{
  unsigned __int64 result = 1, i;
  for (i = 2; i <= num; i++)
    result *= i;
  return result;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  double a = 0.1, b = 1.0, h = 0.1, e = exp(1), y, s, r, t = cos(M_PI / 4), v = sin(M_PI / 4), m;
  int k, n = 30;
  for (double x = a; x <= b; x += h)
  {
    y = pow(e, x * t) * cos(x * v);  // ты тут вроде x забыл в pow
    k = 0;
    // первый член ряда m (при k = 0) равен 1, можно сразу присвоить 1 и тогда не нужна функция fact
    m = cos(k * M_PI / 4) * pow(x ,k) / fact(k);
    s = m;  // вначале сумма ряда s равна значению первого члена ряда
    for (k = 1; k <= n; k++)
    {
      // вычисление члена ряда в зависимости от k (математика - наше всё)
      m *= cos(k * M_PI / 4) / cos((k - 1) * M_PI / 4) * x / k;
      s += m;  // суммируем
    }
    r = fabs(y - s);
    Memo1->Lines->Add("При x= "+FloatToStrF(x,ffFixed,8,2)
                      +"\t Y(x)= "+FloatToStrF(y,ffFixed,8,5)
                      +"\t S(x)= "+FloatToStrF(s,ffFixed,8,5)
                      +"\t |Y(x)-S(x)|= "+FloatToStrF(r,ffFixed,8,5));
  }
}
Миниатюры
Вычисление факториала  
1
0 / 0 / 0
Регистрация: 21.12.2017
Сообщений: 51
06.01.2018, 15:40  [ТС]
gunslinger,
класс. работает.
не понял немного почему так m *= cos(k * M_PI / 4) / cos((k - 1) * M_PI / 4) * x / k;
преобразование формулы с учётом свойств факториала?
хорошо, разберусь.спасибо.
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,008
06.01.2018, 16:09
Чтобы не вычислять каждый раз степень и факториал, нужно понять, как следующий член ряда получается из предыдущего.
Так как k увеличивается на единицу, то нам нужно для получения нового значения умножать на x и делить на k, что формула и демонстрирует. Тут скорее не свойство факториала, а его формула, но суть не меняется. Плюс разница в множителе с косинусом (учитываем изменение k).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2018, 16:09
Помогаю со студенческими работами здесь

Вычисление факториала
Как исправить программу, что б факториал с 9 считал правильно? Фрагмент программы вычисления факториала: mov ax,1 mov cx,N mov...

Вычисление факториала
ребята помогите решить. составьте пожалуйста код!) а) (m+1)!

Вычисление факториала
Помогите разобраться! Нужно посчитать факториал 25, а у меня при вводе 21 вылетает ошибка в чем дело не пойму! program Project1; ...

Вычисление факториала
помогите вычислить фокториал! вот что я придумал, вот только ни как не дам ума факториалу! #include &lt;iostream&gt; #include...

Вычисление факториала
Нужно написать интерфейс для подсчета факториала. Метод для кнопки Button : using System; using System.Collections.Generic; using...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru