|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.10.2016, 18:23 | #81 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
А ты уверен что этот ряд сходящийся?
А ну, подсчитай вручную при x=3 (хотя бы с точностью 0,1). |
09.10.2016, 00:41 | #82 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
все равно придется писать еще одно лишнее условие, хоть Вы от него и избавились, во избежание той ситуации, что на скриншоте.
а вручную посчитал. получается примерно как (при 0.96): 1-(0.135764+0.020432)=0.843804 (точность 0.1 все-так сделать, чтоб сравнить результаты) а выдается 0.864236. Т.е. почему-то не прибавляется последние число, а местами последнюю и предпоследнюю строчки кода не поменяешь,заглючит
from dark to light)
Последний раз редактировалось Алексей_2012; 09.10.2016 в 00:48. |
09.10.2016, 05:31 | #83 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Кое что проясним.
п.1) Зачем ты поставил скобки в выражении: (pow(-1, j - 2)*a) + recurs(i + 2, j + 1, x); Тебе наверно не знакомо такое понятие как "Приоритет операций". Что это такое? Это то, что будет выполняться в первую очередь, а что во вторую, а что в 3-ю..... Вот таблица "Приоритета операций для С++" (смотри на колонку "приоритет", а колонка "ассоциативность" тебе пока не нужна): 3.jpg Сразу видно, что операция умножения ("*" с 4 приоритетом) выполниться быстрей операции сложения ("+", которая имеет приоритет 5). Скобки (" ()"), имеющие 1-й приоритет, нужно было ставить если бы было так: pow(-1, j - 2)*a / recurs(i + 2, j + 1, x); Обрати внимание, приоритет операций "*" и "/" одинаков и равен 4-м... Хотя... В этом случае вступает правило "ассоциативность". "Ассоциативность" - это то что выполниться быстрей "право" или "лево" при одинаковом приоритете. А как мы видим "ассоциативность" у нас "влево/направо", значит умножение будет раньше вычислено (т.е. и в этом случае сначала будет "умножить", а потом "поделить")... О-о, я придумал пример когда нужны скобки: recurs(i + 2, j + 1, x) / (pow(-1, j - 2)*a); или так: (pow(-1, j - 2)*a) ++; п.2) ты писал: "а выдается 0.864236. Т.е. почему-то не прибавляется последние число, а местами последнюю и предпоследнюю строчки кода не поменяешь, заглючит". Ну поменяй местами строчки... 5.jpg п.3) Теперь о точности расчета... Представь себе, ты прибавил новый член ряда, а его сума НЕ поменялась (обрати внимание на значение 0.1181. Когда оно устанавливается?): 4.jpg А вот более точное решение: 41.jpg p.s.1: Плохо что у тебя ряд знакопеременный. Вроде для такого проверка (a<0.001) не правильна. А нужно сравнить "текущий расчет всей суммы ряда" и "предыдущий, в котором меньше на 1-н член" (типа такого: |Sk - Sk-1|<0.0001). Если б у тебя был ряд одного знака (всегда "+" или "-") тогда можно было бы брать "a<0.001", а так.... p.s.2: Для x=0.96 точность 0,1 слишком велика, поэтому я рассчитал сумму ряда с точностями 0,0001 и 0,00001. Теперь я повторю задание, которое ты кстате не выполнил: " Подсчитай вручную (калькулятор используй), сумму ряда при x=3 и точностью 0.1". п.4) Усложню моё задание. По своему расчету построй график: СУММА РЯДА ОТ КОЛ-ВА ЧЛЕНОВ В РЯДУ. У меня получилось вот что: 43.jpg Последний раз редактировалось ura_111; 09.10.2016 в 07:58. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
рекурсия | Ника-Вероника | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 23.03.2012 21:43 |
Рекурсия | unbanned | Паскаль, Turbo Pascal, PascalABC.NET | 7 | 19.01.2012 11:25 |
Рекурсия | dusya9992 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 29.08.2010 14:14 |
Рекурсия | Solnze2 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 09.06.2010 09:28 |
Рекурсия | Shadows_Behind | Помощь студентам | 6 | 26.05.2010 15:07 |