Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Метод итераций в VB6 / 7 сообщений из 7, страница 1 из 1
13.03.2011, 15:44
    #37162222
Satanarchist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод итераций в VB6
Всем доброго времени суток) Нам задали, ничего не объясняя по данной теме, решить уравнение методом итераций. Типа "на самостоятельное изучение". Само уравнение выглядит так: X^3 - 3*(X^2) + 4*X - 9 = 0, интервал изоляции корня [2;3], точность 0.001. Дайте, пожалуйста, ссылку на какой-то учебник\мануал\еще что-то, где объясняется, как это решать! А то ничего не получается с программой... Гугл проверял, ничего толкового не нашел. Ну или, если найдется добрая душа, напишите программку:)
...
Рейтинг: 0 / 0
13.03.2011, 18:53
    #37162411
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод итераций в VB6
Satanarchist,
Код: 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.
' преобразуем исходную функцию к виду: 
'   f(x) = (x - 3)*(x^2 + 4) + 3
' формула для вычисления следующего приближения x:
'   [xi] = 3 - 3 / ([xi-1]^2 + 4), где
'   [xi] - следующее приближение для x
'   [xi-1] - приближение, полученное на предидущем шаге


' код:

Sub iteration_method()

Const epsilon! =  0 . 001     ' точность вычислений
Const MAXITER% =  1000      ' максимальное кол-во итераций
Const X0! =  2 !            ' нулевое приближение

Dim x!, x2!
Dim count%

x2 = X0

Debug.Print "Iter#", "xi", "delta"

Do Until Abs(x2 - x) < epsilon Or count >  1000 
    x = x2
    x2 =  3  -  3  / (x * x +  4 )
    count = count +  1 
    Debug.Print Format(count, "000"), x2, Format(Abs(x2 - x), "0.0000")
Loop
if Abs(x2 - x) > epsilon Then _
Debug.Print "(!) требуемая точность не достигнута. Ищите другую формулу для приближений."

End Sub
...
Рейтинг: 0 / 0
13.03.2011, 18:54
    #37162414
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод итераций в VB6
ЗЫ: про округление полученного результата позаботьтесь самостоятельно.
...
Рейтинг: 0 / 0
14.03.2011, 19:08
    #37164489
Satanarchist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод итераций в VB6
Спасибо) А все же, можно ссылочку на какой-то мануал, где объяснены принципы составления подобных программ? А то принцип работы метода итераций я понял, а принцип программы - не очень..
...
Рейтинг: 0 / 0
14.03.2011, 20:19
    #37164553
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод итераций в VB6
Satanarchist.., а принцип программы - не очень..
Вам это надеюсь понятно?
Код: plaintext
Const X0! =  2 !
...
Рейтинг: 0 / 0
15.03.2011, 00:25
    #37164772
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод итераций в VB6
Satanarchist,
со ссылками на маны, к сожалению, проблема. А принцип составления простой как двери:
1) задать нулевое приближение;
2) вычислить следующее приближение;
3) выполнять 2) до тех пор, пока не быдет достигнута требуемая точночть, либо не будет превышен допустимый предел итераций.

ЗЫ: в предложенном мной варианте проверку Until Abs(x2 - x) < epsilon Or count > 1000 лучше следует выполнять не в начале итерации, а в конце, т.е.:
Код: plaintext
1.
2.
Do
' ...
Loop Until
Чтобы избежать ошибки в случае нулевого приближения X0 = 0.
...
Рейтинг: 0 / 0
16.03.2011, 18:59
    #37168579
Satanarchist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Метод итераций в VB6
ок, спасибо, понял;)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Метод итераций в VB6 / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]