|
|
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Всем программистам привет! Respect! В общем столкнулся с такой проблемой, как решение(на уровне логики, т к программировать там элементарно) уравнения методом простой итерации: авторРешить методом итераций уравнение вида x=Фи(x). Очередное приближение корня находится по формуле Xn= Фи ( Xn-1 ); начальное приближение Xo задается произвольно. Обратить внимание, что метод сходится, если только | Фи штрих (x) | < 1. стал искать инфу и кое что нашел в инете: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. но я немного не понимаю, какой уравнение f(x) = 0 необходимо будет решать(т к F(x) необходимо заменить на х = j(x)), т е любое, введенное в какое либо текстовое поле с клавы(или нечто подобное). А штрих, это типа производная? Может кто нить делал нечто подобное ранее, подскажите логическую схему действий. Подскажите как быть то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2007, 18:07 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Хо используют(как прочел в инете) в методе Ньютона. В общем допустим у меня есть некое уравнение: Y(X) = x * x - 2x + 1 и его необходимо решить методом простых итераций. Т е по правилам математики необходимо решить уравнение х*х - 2х +1 =0, а так придется предположить, что допустим х = 2(любое, желательно максимально близкое). Т е если я правильно понимаю, то это и есть Хо(2). Метод простых итераций решения уравнения f(x) = 0 состоит в замене исходного уравнения эквивалентным ему уравнением x = Фи (x) и построении итерационной последовательности по формуле: Хi+1 = Фи(Хi), i = 0,1,2,3,4.. может Фи штрих это есть разность Хi+1 - Xi? и она должна быть менее 1. Вот начинаю: сначала проверяю Хо =2: 2 = 2*2-2*2+1 -не верно, значит необходимо изменить анализируемый корень в меньшую сторону. Приращние задаю допустим 0.1 2 итерация: 1.9 = 1.9*1.9-2*1.9+1 - не верно .. и таким образом добираюсь до 1 и в ерзультате получаю один из корней(через 10 итераций)? или как то не так? Подскажите как быть то? и что еще интересно, у меня нет самой анализируемой функции, т е ее необходимо придумать самому или сделать возможность вводить само выражение функции с клавы. Тоже не очень понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2007, 19:29 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
автор Хi+1 = Фи(Хi), i = 0,1,2,3,4.. может Фи штрих это есть разность Хi+1 - Xi? и она должна быть менее 1. Вот начинаю: сначала проверяю Хо =2: 2 = 2*2-2*2+1 -не верно, значит необходимо изменить анализируемый корень в меньшую сторону. Приращние задаю допустим 0.1 2 итерация: 1.9 = 1.9*1.9-2*1.9+1 - не верно .. и таким образом добираюсь до 1 и в ерзультате получаю один из корней(через 10 итераций)? или как то не так? Подскажите как быть то? и что еще интересно, у меня нет самой анализируемой функции, т е ее необходимо придумать самому или сделать возможность вводить само выражение функции с клавы. Тоже не очень понятно? Все неверно. Штрих -- это производная. Уравнение x^2-2x+1=0 переписывается в виде эквивалентного уравнения x=x^2- x +1. Не -2х, а просто -х !!! Правая часть обозначается за Ф(x) Ф(х)=x^2-x+1 Пусть x_0 = 0,5 (при х=2 производная слишком большая) Тогда x_1 = Ф(x_0)=Ф(0,5)=0,5^2-0.5+1=0.75 x_2=Ф(x_1)=Ф(0.75)=0.75^2-0.75+1=13/16 и так далее Чем дальше, тем ближе x к искомому корню 1. В таких задачах (а это задача на итерационный метод, а не заказ на изготовление программы) не следует путать божий дар с яичницей. Понимание по написанной в окошке формуле, что же это за формула, есть отдельная нетривиальная задача. Так что в твоем случае в программе просто есть функция Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2007, 21:42 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext это хорошо, что рассмотрен такой пример х*х - 2* +1, а если б е^х*х*х - sin2x*arctgx..(можно придумать сумашедшее по сложности что нить в 20 степенях:)), то как тогда подгадать с какого значения х начинать(можно попасть на триллионы итераций тогда получается )?(в простых примерах корень можно предвосхитить с хорошей точностью:)). Я понимаю прекрасно, что штрих это производная и как ее посчитать, но как это увязать с усовием,что она должна быть менее 1 по модулю?. Чтобы написать прогу, мне придется зашить некую функцию(трансцендентное уравнение) и на основе ее уже показать алгорит простой итерации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2007, 23:15 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Воощета все люди которых я знаю и которые начали программировать в 83 или ранее только этими вещами н занимались, больше тогда на компах по большому счёту и делать то было нечего. Чем же Вы то до 17 года занимались? Fast&Furiousэто хорошо, что рассмотрен такой пример х*х - 2* +1, а если б е^х*х*х - sin2x*arctgx..(можно придумать сумашедшее по сложности что нить в 20 степенях:)), то как тогда подгадать с какого значения х начинать(можно попасть на триллионы итераций тогда получается )?(в простых примерах корень можно предвосхитить с хорошей точностью:)). Я понимаю прекрасно, что штрих это производная и как ее посчитать, но как это увязать с усовием,что она должна быть менее 1 по модулю?. А никак. Вам что, кто-то сказал что методом простой итерации всегда можно найти корень? Если да, то тот кто это сделал забыл сказать что это шутка. Если корень таков, что в его окрестности производная не удовлетворяет этому условию, то найти такой корень этим методом нельзя. Как выбрать начальное приближение? Если функция только одного переменного - ну попробуйте деление пополам. Достигнете какой-нибудь достаточно малой с Вашей точки зрения невязки и убедитесь что производная функции по модулю меньше 1 - перейдёте на метод простой итерации. Fast&FuriousЧтобы написать прогу, мне придется зашить некую функцию(трансцендентное уравнение) и на основе ее уже показать алгорит простой итерации? На эту тему предыдущий оратор Вам уже сказал - грамотно написанная реализация метода простой итерации в качестве одного из своих входных параметров будет иметь (предположим Вы пишите на C) указатель на функцию, кот. вычисляет значение той математической функции, корень которой Вы хотите найти. Так что ничего "зашивать" не надо. Успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2007, 23:53 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext в общем написал прогу, обрабатывающую не все корни, но считающую правильно и жестко привязанную к конкретной реализации: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. но все равно осталось куча нерешенных задач. Если пользователь введет значение предполагаемого корня, например -100, то будет сообщение уменьшить значение, когда необходимо увеличивать, все из за корня квадратного:). Также нет возможности определить корень равным 1. А так ответ правильный получился, все перепроверил. Эх:). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2007, 01:11 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Автор, перепиши программу! 1. Пойми, что ты реализуешь метод, а не разрабатываешь его. Не твоя головная боль, сколько корней он может найти и для каких функций. Ты просто его применяешь и констатируешь: метод дал корень / метод не сработал. 2. По знаку производной нельзя понять, слева или справа от данной точки лежит корень. Поэтому предложения "увеличьте/уменьшите начальное значение" взяты с потолка. Просто констатируешь, что с таким значением далеко не посчитаешь и все. 3. Еще раз. Функция (и ее производная) -- внешние к методу параметры. Нельзя их вшивать в метод! Потому что если я хочу решать другое уравнение, мне надо моск сломать, ища, что в твоей программе поменять. Должны быть просто две функции, которые в соотв. местах вызываются. 4. Тебя просили решить уравнение вида х=Ф(х), а не найти корни соответствующей функции f(x)=Ф(х)-х (как это написано на форме). Лучше точно следовать заданию. 5. Не надо делать рекурсии, она тут не к месту. Метод итерационный, а не рекурсивный! Тут рекурсия затрудняет понимаение и кушает лишние ресурсы. 6. Переменным -- более адекватные имена. root1 -- не понял, что это значит. 7. Все магические константы 0.00001 вынести из кода в константы либо вводимые пользователем параметры. 8. Хорошо бы еще ограничить число итераций на всякий случай (еще один параметр метода). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2007, 14:25 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext спасибо за замечания grieg, учту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2007, 15:17 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Код: plaintext авторЧем же Вы то до 17 года занимались? готовился к октябрьской революции:). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2007, 22:58 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
посмотри на http://negusta.narod.ru/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2007, 00:10 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Если нужен метод простой итерации , то без проверок зацикливания (счет числа циклов) и расходимости (try/catch) он занимает 3 строки Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 01:15 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
double DirectIteration(double e, double x, double (*f)(double)) Ага, теперь не забудьте раз'яснить что f(x) в сигнатуре Вашего метода - это не та функция, корень которой необходимо найти. Конечно дело вкуса, но мне это не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 18:24 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Люди помогите пожалуйста, не могу решить похожую задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2008, 22:27 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
текст задачи : решить уравнение f(x)=0 мтодом Ньютона, с помощью рекурсии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2008, 22:44 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
homosapiensтекст задачи : решить уравнение f(x)=0 мтодом Ньютона, с помощью рекурсии. Для начала стоит просто прочитать учебник. Сразу половина станет ясна - и вопросы станут конкретнее: видно же, что даже не брался за решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2008, 22:47 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
я нашел сам алгоритм и его код но без рекурсии, я плохо знаю программинг, у знакомых спрашивал не смогли, посоветовали обратиться к вам http://alglib.sources.ru/equations/feq0newton.php это ссылка на алг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2008, 23:53 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Хм, изврат однако, ну почему бы нет? Сразу скажу, ни компилировать, ни дебажить не буду, если оно Вам серьёзно надо - доводите до ума сами. Итак, для одного нелинейного уравнения заданного в виде f(x) = 0: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. Вообщем никаких проверок на близость производной к нулю в данной реализации не делается - отсюда могут быть деления на нуль и arithmetic overflow - если хотите корректно орабатывать такие ситуации - добавьте соответствующий код сами. Да, и машинный ноль можно было бы определять по-элегантней, скажем динамически через nextafter(), но это опять же сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 01:28 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Найти корень уравнения х^3-x+1=0 методом простых итераций с точностью 0,01 на промежутке [-2;-1] Напишите цепь решения :) плиз :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2008, 02:41 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
BAC9IНайти корень уравнения х^3-x+1=0 методом простых итераций с точностью 0,01 на промежутке [-2;-1] Напишите цепь решения :) плиз :) Возьмите любую методичку или лекции по вышке за 1 курс . Там все есть. Ну, в конце концов, почитайте: http://i026.radikal.ru/0809/57/6b4fa584ca6e.jpg http://s52.radikal.ru/i138/0809/08/3f0d141a5b77.jpg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2008, 04:23 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
А если интересовало, как народ для начала (очень давно уж) пишет проги для этого, то можно сходить сюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2008, 04:32 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
чё-то не пойму, семестр вроде тока начался, до сессии далеко. чё все кинулись лабы делать? или это заочники? и что, в методичках нету примеров с разьяснениями? не поверю. на 3-м или 4-м курсе у меня были подобные задачи, но как-то доступа на форум не было всвязи с отсутствием интернета. потому все обходились тем что есть в библиотеке, но данный курс (не помню как назывался) сдали все мои одногруппники. так что не ленитесь, а читайте методички ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2008, 12:19 |
|
||
|
не получается разобраться с методом простой итерации при решении уравнения
|
|||
|---|---|---|---|
|
#18+
Почему-то никто не вспомнил про Педевикию, там тоже неплохо написано: http://ru.wikipedia.org/wiki/Метод_Ньютона Особое внимание советую обратить на случай обращения метода на комплексную плоскость, очень красивые картинки можно получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2008, 13:41 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35074619&tid=1345028]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 212ms |
| total: | 527ms |

| 0 / 0 |
