![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 26.06.2012
Сообщений: 9
|
![]()
Всем привет.Получил непростое задание(для меня) которое надо решить в VBA,задание заключается в следующем:
Решить методом итераций уравнение х^3 - 3*x + 1 = 0 Для начального приближения х-нулевое = 1. Точность e = 0,0001 На каждом шаге решения необходимо предусмотреть номера итерации,значения аргумента и функции,результат должен быть в MsgBox. Так вот что я не понял,так это для чего в этом уравнение дали точность??? Где и в каком месте она должна использоваться? Прошу вашей помощи! |
![]() |
![]() |
![]() |
#2 |
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
![]()
а как вы собираетесь иначе остановить вычисления?
вот когда при очередной итерации левая часть уравнения будет отличаться от правой (в вашем случае -- от 0) на величину, по модулю меньшую погрешности -- вот тогда вы и получите искомое решение методом итераций. учите матчасть. учебник по численным методам, в частности.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 |
![]() |
![]() |
![]() |
#3 | |
Новичок
Джуниор
Регистрация: 26.06.2012
Сообщений: 9
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
![]()
в общем, идея такова -- начальное значение x вам известно.
подставляете его в уравнение, сравниваете с правой частью (с 0, то есть). разница по модулю больше заданной погрешности, значит, надо изменить значение x на некоторую величину и опять пересчитать... и так до тех пор, пока абсолютное значение разницы не будет меньше погрешности. как-то так...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 |
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 26.06.2012
Сообщений: 9
|
![]()
Благодарю за помощь...если что тогда выложу сюда код.
|
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 26.06.2012
Сообщений: 9
|
![]()
Сделал что-то вроде нижеописанного,но ничего не выходит,помогите пож-ста.
Код:
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,377
|
![]()
Маааленькое замечание.
Для вычисления x преобразуй данное тебе уравнение к виду: x = f(x). Тогда, подставив начальное значение в f(x), получим новое x. И если Dx (разность подставленного и вычисленного) велика, то подставляем среднее между начальным и вычисленным или вновь вычисленное. При этом следует следить за знаком Dx. В общем, следует отслеживать сходимость вычисления. Что-то в этом роде ...
Как-то так, ...
|
![]() |
![]() |
![]() |
#8 | |
Новичок
Джуниор
Регистрация: 26.06.2012
Сообщений: 9
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,377
|
![]()
Ну, не обижайся. По тому, что написано в первом посте не понять...
В твоем случае: x=(1+x^3)/3 Если теперь последовательно подставлять xn =1, затем тот х, который получили, и т.д. то см. табличку (это в Calc, но можно и в Экселе). ---- x ------ (1+x^3)/3 ----- Dx --------------------------------------- 1,00000000 0,66666667 0,3333333 0,66666667 0,43209877 0,2345679 0,43209877 0,36022563 0,0718731 0,36022563 0,34891459 0,0113110 0,34891459 0,34749245 0,0014221 0,34749245 0,34732002 0,0001724 0,34732002 0,34729921 0,0000208 0,34729921 0,34729670 0,0000025 0,34729670 0,34729640 0,0000003 0,34729640 0,34729636 0,0000000 При сравнении Dx с eps надо использовать функцию Abs() Ладно, это тебе подойдет ... eps = 0.0001 xn = 1 x = (1 + x ^ 3) / 3 While Abs(xn - x) > eps xn = x x = (1 + xn ^ 3) / 3 Wend ' А тут выводишь полученное решение Вроде так должно получиться ...
Как-то так, ...
|
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 26.06.2012
Сообщений: 9
|
![]()
Благодарю за код,ответ получился 0,так ли должно быть?Я думал просто на каждом шаге должен появляться ответ,а тут он высвечивается 1 раз даже если ответ находится в цикле while
Код:
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Решить СЛАУ методом простых итераций | trum | Помощь студентам | 1 | 15.04.2012 17:47 |
решить уравнение методом итераций | Evgeniya666777 | Помощь студентам | 3 | 16.12.2011 11:13 |
Решить систему линейных уравнений методом простых итераций на Delphi | Кнопик | Помощь студентам | 2 | 22.10.2009 16:11 |
уравнение методом итераций | Golovastik | Общие вопросы Delphi | 2 | 22.06.2009 15:57 |
как решить нелинейное уравнение методом простых итераций??? | Bonifaciy | Помощь студентам | 3 | 13.11.2008 17:30 |