![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
ioManip |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 12.8.2011 Где: Благовещенск Репутация: нет Всего: нет |
Привет! Вообщем совсем запутался с этой точностью...., а точнее не пойму, что значит вычислить сумму ряда с точностью Е. (на рис. задачка 2). То есть какое условие должно быть, чтобы считать, что точность достигнута?
Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() --------------------
Мечты не работают, пока ты не работаешь! |
|||
|
||||
feodorv |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Так не пойдёт. Результат должен быть double:
Впрочем, для факториала тоже, так как факториал растёт очень быстро. Это значит, что Вы должны вычислять частичную сумму ряда до тех пор, пока её значение не станет отличаться от реальной суммы ряда на очень малую величину E, заданную заранее. Увы ряд не знакопеременный, поэтому не можем применить критерий, что суммируем до тех пор, пока очередной член ряда не станет меньше E. Придётся проанализировать ряд аналитически с тем, чтобы оценить погрешность вычислений, если мы ограничимся первыми N членами ряда. Итак, рассмотрим a(n+1) / a(n). Это будет (n / (n+1)) ** n, что для больших n стремится к 1/e (где e - основание натуральных логарифмов). В любом случае при больших n величина (n / (n+1)) ** n меньше, чем 1/2 (так как e > 2), отсюда:
Поэтому мы можем оценить остаток ряда (после суммирования первых N членов) как
Таким образом, нужно суммировать первых N членов ряда, где N таково, что ( 1/3 * 1/2**N ) < E. Добавлено @ 09:45 Допустим, что мы умеем вычислять очередной член ряда:
Как тогда суммировать:
Это сообщение отредактировал(а) feodorv - 11.11.2012, 09:52 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||||||
|
|||||||||||
ioManip |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 12.8.2011 Где: Благовещенск Репутация: нет Всего: нет |
feodorv, И снова Вы меня выручаете
![]() Вот вроде получилось(гляньте одним глазком):
Считает,только правильно ли? Я так понимаю правильность суммы нужно проверять с ручкой и листом бумаги? P.S. Что означают две звездочки? (n / (n+1)) ** n Супер умножение? ![]() --------------------
Мечты не работают, пока ты не работаешь! |
|||
|
||||
feodorv |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
В том-то и дело, что Fact должна быть double. Цикл можно начинать с 2 (умножение на 1 сильной роли не играет). Не понял совершено, что это за цикл такой странный. Где вычисление суммы? Где оценка остатка ряда?
Ну, эээ, возведение в степень ![]() -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
ioManip |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 12.8.2011 Где: Благовещенск Репутация: нет Всего: нет |
feodorv, а сейчас ближе к истине?
--------------------
Мечты не работают, пока ты не работаешь! |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Да ![]() ![]() А вот здесь зачем n_ double? Да и не нужен этот аргумент функции, всё равно отсчитывать начиная с 1... И ещё одна тонкость (это непринципиально, просто аккуратно):
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
ioManip |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 12.8.2011 Где: Благовещенск Репутация: нет Всего: нет |
feodorv, еще раз Большое спасибо!
![]() --------------------
Мечты не работают, пока ты не работаешь! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |