Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Нахождение корня уравнения методом Ньютона




Нахождение корня уравнения методом Ньютона

    Данный пример демонстрирует программу, вычисляющую приближенное значение корня уравнения 2x2 – 4x + 1 = 0 на отрезке от 0 до 0. 5 методом Ньютона.

    Метод Ньютона позволяет получить приближенное значение корня уравнения, используя итерационный процесс, по следующей формуле:

 

,

 

где Xi+1 – следующее приближение (уточненное значение корня), Xi - приближенное значение корня на предыдущем шаге. В качестве начального приближения выбирается та точка отрезка, в которой выполняется условие . В данном примере в качестве начального приближения выбрана точка 0, поскольку . В примере итерационный процесс выполняется до тех пор, пока не будет достигнут машинный нуль. Далее представлен текст программы.

CODE SEGMENT                    ; сегмент команд

   ASSUME CS: CODE, DS: DATA, SS: STAC

Start: MOV AX, DATA  ; настройка DS

   MOV DS, AX ; на сегмент данных

   FINIT              ; инициализация сопроцессора

   FLDZ              ; запись в стек начального приближения

   FLDZ         ; выделение места для предыдущего приближения

M1:   FXCH ST(1); обмен ST(1) и ST(0)

   FADDP ST, ST; выталкивание из стека значения

   FLDZ              ; загрузка в стек нуля

   FADD ST, ST(1); дублирование предыдущего приближения

   FMUL ST, ST ; вычисление xi2

   FLD n2           ; загрузка в стек числа 2. 0

   FMULP ST(1), ST    ; вычисление 2xi2

   FLD n4           ; загрузка в стек числа 4. 0

   FMUL ST, ST(2); вычисление 4xi

   FSUBP ST(1), ST; вычисление 2xi2 - 4xi

   FLD1              ; загрузка в стек единицы

   FADDP ST(1), ST    ; вычисление 2xi2 - 4xi + 1

   FLD n4           ; загрузка в стек числа 4. 0

   FMUL ST, ST(2); вычисление 4xi

   FLD n4           ; загрузка в стек числа 4. 0

   FSUBP ST(1), ST; вычисление 4xi – 4

; вычисление (2xi2 - 4xi + 1) / (4xi – 4)

   FDIVP ST(1), ST 

; вычисление -(2xi2 - 4xi + 1) / (4xi – 4)

   FCHS         

; вычисление xi - (2xi2 - 4xi + 1) / (4xi – 4)  

   FADD ST, ST(1) 

   FCOM           ; сравнение предыдущего и текущего приближений

   FSTSW SW    ; загрузка регистра состояния в переменную SW

   AND SW, 4500H; наложение маски

   CMP SW, 4000H; проверка на установку флага C3

   JNE M1          ; переход, если не достигнут машинный нуль

   MOV AX, 4C00H; функция завершения программы

   INT 21H         ; вызов DOS

CODE ENDS

DATA SEGMENT ; сегмент данных

   n1 DD 1. 0       ; определение промежуточных чисел

   n2 DD 2. 0

   n4 DD 4. 0

   SW DW?         ; переменная для хранения значения регистра состояния

DATA ENDS

STAC SEGMENT PARA STACK; сегмент стека

   DB 128 DUP (? )              ; область памяти под стек

STAC ENDS

END Start                   ; точка входа

В начале программы командой FLDZ в стек сопроцессора загружается начальное приближение. На каждой итерации последовательно вычисляются значение функции в точке предыдущего приближения и значение производной функции. После нахождения этих значений вычисляется следующее приближение по формуле, приведенной выше. После нахождения следующего приближения, оно сравнивается с предыдущим. Программа завершает работу, когда текущее и предыдущее приближения равны. Это свидетельствует о достижении машинного нуля. Результат работы программы – приближенное значение корня уравнения – заносится в регистр ST(0).

Задание на лабораторную работу

Вычислить значения заданной функции на указанном отрезке.

    В процессе проверки работы программы в отладчике проверить полученное значение функции со значением, вычисленным на калькуляторе.

    Для вычисления значения выражения вида  можно пользоваться следующей формулой перевода: , которая вычисляется с использованием команд FYL2X, F2XM1, FSCALE и FPREM.

    Для вычисления значений логарифмов можно воспользоваться формулой перевода для логарифмов:

                              .

Натуральный логарифм можно вычислить по формуле

с использованием команд FYL2X и FLDLN2.

Для вычисления значений синуса и косинуса можно воспользоваться следующими тригонометрическими тождествами:

В этих формулах перед знаком радикала должен быть поставлен знак «плюс» или «минус», в зависимости от того, в какой четверти находится значение угла для синуса или косинуса.

Гиперболические синус, косинус и тангенс определяются следующими формулами:

Так как команда FSCALE округляет указываемую степень числа 2 до наименьшего целого числа, то для корректного вычисления значения выражения  можно использовать следующую формулу

и следующую последовательность команд:

 fld y

fld x

fyl2x         ;

fld1

fscale        ;

fxch

fld1

fxch

fprem        ;

fmul

f2xm1       ;

fld1

fadd          ;

fmul          ;

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...