|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.11.2012, 19:37 | #1 |
Пользователь
Регистрация: 30.10.2012
Сообщений: 37
|
Найдите ошибку
Уважаемые знатоки! Помогите исправить код программы. Почему то не могу получить ответы которые даны как выходные данные
Код программы Код:
ч 0 0 1 0 0.1 -0.1054 4 -0.1054 0.2 -0.2231 5 -0.2231 0.3 -0.3567 7 -0.3567 0.4 -0.5108 8 -0.5108 0.5 -0.6931 10 -0.6931 0.6 -0.9162 14 -0.9163 0.7 -1.204 18 -1.204 0.8 -1.609 27 -1.609 0.9 -2.302 51 -2.303 А у меня: 0 0 1 0 0.1 -0.105358 4 -0.105361 0.2 -0.223131 8 -0.223144 0.3 -0.356664 14 -0.356675 0.4 -0.51078 21 -0.510826 0.5 -0.693065 30 -0.693147 0.6 -0.916219 43 -0.916291 0.7 -1.20379 60 -1.20397 0.8 -1.60913 86 -1.60944 0.9 -2.30189 136 -2.30259 Подскажите как сделать так чтобы точность была как в задании и почему количество просуммированных элементов ряда не такое как в задании. Подскажите в чем ошибка? |
05.11.2012, 19:42 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
пропиши cout.precision(4); в начале проги
I'm learning to live...
|
05.11.2012, 19:49 | #3 |
Пользователь
Регистрация: 30.10.2012
Сообщений: 37
|
Спасибо
Только опять вопрос почему у меня не такое количество членов ряда суммирует?
у меня 1 4 8 14 21 30 43 60 86 136 а в задании 1 4 5 7 8 10 14 18 27 51 |
05.11.2012, 20:02 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А ты отладчиком пройдись по программе, и выяснишь
I'm learning to live...
|
05.11.2012, 20:17 | #5 |
Пользователь
Регистрация: 30.10.2012
Сообщений: 37
|
Попробую
Хотя пока представления не имею как это делать
|
05.11.2012, 21:32 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
В чем работаешь?
I'm learning to live...
|
05.11.2012, 22:35 | #7 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,334
|
не сомневаюсь. что неверно реализован алгоритм вычисления суммы ряда.
Правильно - через рекурентную формулу, когда следующий элемент ряда вычисляется через предыдущий. В случае задачи: ln(1-x) = Sum(x^n/n), где n = 1... Т.е. an+1 = an*k, где k = (n/(n+1)*x; a1 := x; n = 1; a2 = x^2/2; n = 2; a3= x^3/3; и т.д. Подробности можно найти в книгах Т.А. Павловской: например: - Программирование на языке высокого уровня. Паскаль. См. в списке предлагаемой литературы, или - Программирование на языке высокого уровня. С/С++. что ближе к теме Как-то так надо бы ...
Как-то так, ...
|
05.11.2012, 23:11 | #8 |
Пользователь
Регистрация: 30.10.2012
Сообщений: 37
|
Visual C++ 2010
Отладчик я кажется нашла F10, но ошибку с его помощью не выявила. Может правда не так считаю сумму ряда?
|
05.11.2012, 23:19 | #9 |
Пользователь
Регистрация: 30.10.2012
Сообщений: 37
|
ln(1-x)
В задании написано
ln(1-x) =-(x+x^2/2+x^4/4+x^6/6+....) |
05.11.2012, 23:34 | #10 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,334
|
Да, да. Загляните в предложенные мной книжки.
Ранее я уже обращал внимание на то, как тут некоторые неправильно решают подобные задания. Дело в том, что при Вашем способе вычисления накапливаются большие неточности и сходимость ряда ухудшается. Поскольку диапазон для х: -1<= x < 1, т.е. |х| < 1, то для случая, когда выполняется вычисление элемента ряда через возведение в степень, получаются очень малые слагаемые, к тому же обремененные большими ошибками вычисления. Как-то так ...
Как-то так, ...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найдите ошибку | Yanik | Помощь студентам | 4 | 12.06.2011 11:45 |
Найдите ошибку C++ | D.176 | Помощь студентам | 1 | 24.05.2011 07:31 |
найдите ошибку | Sergey240892 | Помощь студентам | 15 | 04.03.2011 11:34 |
Найдите ошибку | Гиро-Гинор | Помощь студентам | 2 | 12.11.2010 23:16 |
Найдите ошибку | St1fler92 | Помощь студентам | 4 | 26.05.2009 15:23 |