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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2019, 14:24   #1
Ann Tachuk
Новичок
Джуниор
 
Регистрация: 02.06.2019
Сообщений: 1
По умолчанию [C++] Вычислить значение разложения в ряд функции sin(x) / x

Очень нужна помощь
Помогите написать код, пожалуйста
Изображения
Тип файла: jpg 4B4B8BFC-29C8-4556-AA17-C963ED3F93EF.jpg (79.2 Кб, 126 просмотров)
Ann Tachuk вне форума Ответить с цитированием
Старый 02.06.2019, 14:28   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Начните решать задачу самостоятельно. Если что-то не будет получаться, показывайте то, что сделали, задавайте конкретные вопросы.
Вадим Мошев вне форума Ответить с цитированием
Старый 02.06.2019, 15:59   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Даю подсказку (допустим, я - Неверов ):
Код:
procedure TForm1.Button1Click(Sender: TObject);
var x,ir,x2,y,tmp: Extended ; i : integer ;
begin
// Здесь мы вводим Х
  y := 1.0 ;
  ir := 3.0 ;
  x2 := x*x ;
  tmp := x2/6.0 ;
  for i := 0 to 20 do
    begin
      tmp := -tmp ;
      y := y + tmp ;
      tmp := tmp * x2 / ( (ir+1)*(ir+2) ) ;
      ir := ir + 2.0 ;
      Memo1.Lines.Add(Format('%4.0f %12.6f %12.6f',[ir,tmp,y]))
    end ;

end;
Алгоритм разъяснен. Задание на подумать головой:
1. Перепереть с Delphi
2. Продумать окончание цикла, чтоб не по счетчику, а по достигнутой точности
Впрочем, ТС уже, мабудь, слинял на другой форум, где ленивых и темных студней любят больше.

Последний раз редактировалось digitalis; 02.06.2019 в 16:07.
digitalis вне форума Ответить с цитированием
Старый 02.06.2019, 16:27   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Как-то так. Не знаю, правильно или нет.
Код:
double x=0.6; // х
double res=1.0; // сумма ряда при n = 0
double tmp=1.0; // текущий член ряда
int fact = 1; // факториал
int sn= 1; // знак
int n; // номер члена ряда
int n1 = 2; // для подсчета факториала

for (n=1;n<5;n++)
{
sn *= -1;
fact *= n1;
n1++;
fact *= n1;
n1++;
tmp = (double) sn * x * x;
tmp /= (double) fact;
res += tmp;
printf("n %d n1 %d sn %d fact %d x %f tmp %f res %f\n",
n, n1, sn, fact, x, tmp, res);
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 02.06.2019, 17:37   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

challengerr
Цитата:
Как-то так. Не знаю, правильно или нет.
Конечно же неправильно.
Не следует в таких вычислениях считать факториал в лоб.
Правильная идея изложена у digitalis, хотя, как понимаю, человек немного пошутил. Например, x2 считается только один раз.
Пусть ТС доводит до ума.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 02.06.2019, 17:47   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
допустим, я - Неверов
Не верю!
Black Fregat вне форума Ответить с цитированием
Старый 02.06.2019, 19:50   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
хотя, как понимаю, человек немного пошутил. Например, x2 считается только один раз.
Никаких шуток. x2 - это x в квадрате, и сколько раз его надо считать? А каждое последующее слагаемое - это предыдущее, умноженное на этот самый x2 и деленное на возросший факториал со сменой знака. Это вы, батенька, не разобрамшись
Я свои предложения имею обыкновение проверять, как и в этом случае, чего и всем сомневающимся советую.
А Неверов любит туповатым ленивым студеням решать, вот и я вослед ему - размять пальчики на чем-нить жутко элементарном.

Последний раз редактировалось digitalis; 02.06.2019 в 19:52.
digitalis вне форума Ответить с цитированием
Старый 02.06.2019, 23:32   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Да! Тут я вновь лопухнулся.
Вывел формулу для коэффициента an+1 = an* x^2/((2n_1)*(2n+2)) и не подумал, что в цикле повторять вычисление x^2 не имеет смысла.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 03.06.2019, 11:49   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Бывает...
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление функции с использованием разложения в ряд Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, maximk301 Помощь студентам 1 20.10.2018 16:20
Составить программу для приближенного вычисления значения функции в точке х с помощью разложения в ряд Тейлора. Найти приближенное значение функции с погрешностью менее 0,0001. marysluva Помощь студентам 1 18.12.2016 18:13
Найти значение функции Y(X) при заданном X. Используя стандартные функции, вычислить Y11=[Y], где [ ] означают целую часть от ч Viraj Паскаль, Turbo Pascal, PascalABC.NET 0 23.05.2015 12:30
Вычислить значение функции(или функция не определена), значение х вводится с клавиатуры Safok Помощь студентам 2 16.12.2014 08:04
Использование подпрограммы-функции: Вычислить значение функции (Турбо паскаль) RealUnited Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2012 20:34