Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 13.02.2018, 21:35   #1
Cordis
Новичок
 
Регистрация: 13.02.2018
Сообщений: 1
Репутация: 10
По умолчанию Нужна помощь в расчете формулы

Добрый вечер. У меня есть формула которую нужно расчитать, но вот никак не могу написать код.

Задание: Для каждого x, изменяющегося от a до b с шагом h найти значение функции S(x). a, b, h вводятся с клавиатуры.
Изображения
Тип файла: png Снимок.PNG (3.4 Кб, 31 просмотров)

Последний раз редактировалось Cordis; 13.02.2018 в 21:41. Причина: Добавил задание.
Cordis вне форума   Ответить с цитированием
Старый 13.02.2018, 22:54   #2
Мановар
Форумчанин
 
Регистрация: 13.11.2016
Сообщений: 79
Репутация: 58
По умолчанию

Помощь то в чем нужна? Что то из сообщения не очень понятно.
Мановар вне форума   Ответить с цитированием
Старый 13.02.2018, 23:08   #3
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 624
Репутация: 319
По умолчанию

Если это вычисление сходящегося ряда, д.быть указана требуемая точность eps, иначе д.быть указано фиксирванное число n.
Моя телеповина подсказывает, что шас тебя модераторы пошлют на хр хриланс, так что пиши свою версию, а я ее выкину и напишу правильную, тем боле что задачка - на 2 глотка кофе. Если модераторы затопчут - пиши в личку; люблю помогать лентяям и несмышленышам, все равно - не им поднимать Расею
Даю наводку: во внешнем цикле перебираешь x от a до b, во внутреннем - вспомогательную переменную домножаешь на (x*x) и делишь ее на ((i*2-1)*(i*2) ), где i - параметр цикла, а потом добавляешь этот борщ в накапливающий сумматор sum, пока он не перестанет увеличиваться (почти) .
И кошке понятно, что начальные значения tmp и sum д. быть 1.0 .

Последний раз редактировалось digitalis; 13.02.2018 в 23:22.
digitalis вне форума   Ответить с цитированием
Старый 13.02.2018, 23:59   #4
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 210
Репутация: 4
По умолчанию Вычисление косинуса через разложение в ряд

Цикл собственно не сложный
Код:

while (abs(Add)>Eps) do Sum+=Add*=(x*x/((k-1)*k));

есть хитрость в инициализации слагаемого - члена ряда. Нельзя набирать эту сумму с нуля

Похоже на программу вычисления косинуса, но не вижу в задании чередования знака у членов ряда.

Последний раз редактировалось СтудПом; 14.02.2018 в 00:13.
СтудПом вне форума   Ответить с цитированием
Старый 14.02.2018, 10:02   #5
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 309
Репутация: 59
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
И кошке понятно, что начальные значения Tmp и Sum должны быть 1.
- почему начальное значение Sum = 1? В рядах всегда при вычислении суммы Sum = 0.:D При всем уважении к Вам, Digitalis.
СтудПом, используй fabs вместо abs - так по-моему будет правильнее. Если знак не надо чередовать и вычислять, то это же хорошо.
Цитата:
Сообщение от digitalis Посмотреть сообщение
во внешнем цикле перебираешь x от a до b, во внутреннем - вспомогательную переменную домножаешь на (x*x) и делишь ее на ((i*2-1)*(i*2) ), где i - параметр цикла, а потом добавляешь этот борщ в накапливающий сумматор sum, пока он не перестанет увеличиваться (почти).
- с домножением на (x*x) согласен, но зачем делить на ((i*2-1)*(i*2))? Разве нельзя просто поделить на (i*2)? - Так домножиться факториал в знаменателе. Не так?

Последний раз редактировалось Cuprum5; 14.02.2018 в 10:12.
Cuprum5 на форуме   Ответить с цитированием
Старый 14.02.2018, 12:07   #6
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 624
Репутация: 319
По умолчанию

Цитата:
- почему начальное значение Sum = 1? В рядах всегда при вычислении суммы Sum = 0.:D

- с домножением на (x*x) согласен, но зачем делить на ((i*2-1)*(i*2))?
" Это правильно. Но неверно."©
Нулевой член ряда = 2^(2*0) / 0! Т.к. 0! принято считать за 1, получаем - 0-й член ряда, он же tmp, он же начальное значение суммы=1. Первый = tmp*(x^2)/(2)! = x^2/(1*2), второй tmp*(x^2)/(4)! = x^4/(1*2*3*4) и далее до упора. Кстати, об упоре. Взял х=100, и на 99, 100 шаге имеем вот что:
99 5,04655E+025 1,34406E+043
100 1,26798E+025 1,34406E+043
Ряд практически сошелся, а прибавка еще ооочень большая. Я бы условие сходимости оценивал как eps = Abs(1-S[i]/S[i-1]), т.е. относительная погрешность. Ну и что это за ряд - ХЗ, но к косинусу, как видим, он никаким боком. Косинусов с 43 нулями в целой части - не бывает.
Ну че, уважение ко мне ешшо повысилось ?
Код:

function SmRd(x:extended):extended ;
var i: integer ;
    x2,i2,tmp,sum: extended ;
begin
  tmp := 1.0 ;
  sum := tmp ;
  x2 := x*x ;
  for i := 1 to 100 do
    begin
      i2 := i * 2.0 ;
      tmp := tmp*x2/((i2-1)*i2) ;
      sum := sum + tmp ;
      Result := sum ;
    end ;
end;

Перетаскивать из Дельфи в С мне лень . Здесь я не вычислял eps, а тупо фиксированное число шагов - посмотреть, что будет. Это чтобы ТС-у тоже немножко поработать бошкой, если он еще не растворился в тумане (купил решение у сокурсника или препода).

Последний раз редактировалось digitalis; 14.02.2018 в 12:22.
digitalis вне форума   Ответить с цитированием
Старый 14.02.2018, 12:18   #7
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,104
Репутация: 5996
По умолчанию

Цитата:
с домножением на (x*x) согласен, но зачем делить на ((i*2-1)*(i*2))? Разве нельзя просто поделить на (i*2)? - Так домножиться факториал в знаменателе. Не так?
Не так. Мало того, должно быть не x*x/((k-1)*k, а x*x/((2*k-1)*2*k). Раздели k-ый член ряда на (k-1)-ый и поймешь почему

ps это ряд для гиперболического косинуса
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.02.2018 в 12:23.
Аватар на форуме   Ответить с цитированием
Старый 14.02.2018, 12:35   #8
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 624
Репутация: 319
По умолчанию

У кого-то из нас что-то с монитором... Или у меня с глазами
Пардон, пустился в полемику, хотя возражали не мне. Бывает.

Код:

  x*x/((2*k-1)*2*k).

аналогично
Код:

  x2 := x*x ;
 .........
  i2 := i * 2.0 ;
  tmp := tmp*x2/((i2-1)*i2) ;


Последний раз редактировалось digitalis; 14.02.2018 в 12:47.
digitalis вне форума   Ответить с цитированием
Старый 14.02.2018, 12:37   #9
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,104
Репутация: 5996
По умолчанию

x*x/((k-1)*k к посту #4
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 14.02.2018, 13:27   #10
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 309
Репутация: 59
По умолчанию

Круто, Digitalis, теперь я все понял - спасибо за объяснения!!!!!
Уважение еще сильнее повысилось!!!!!
А уже сказали, что это гиперболический косинус. Чистый косинус это вот это(см. картинку).
Изображения
Тип файла: jpg Разложение Косинуса в ряд Тейлора.jpg (46.4 Кб, 12 просмотров)
Cuprum5 на форуме   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь в создании формулы в MS Excel Лия666 Помощь студентам 6 20.09.2017 18:39
Нужна помощь в привязке к выпадающему меню определённой формулы VilgaukAV Microsoft Office Excel 2 14.11.2014 15:07
Помощь в написание формулы x_omega_x Microsoft Office Excel 1 07.07.2009 13:52
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12




21:05.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
лучший хостинг
Выбираем лучший хостинг: рейтинг ТОП 10
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru