Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
DECLARE SUB iter (x0!, e!, kol!, root!)
DECLARE SUB iter (x0!, e!, kol!, root!)
DECLARE SUB dix (a!, b!, e!, root!)
DECLARE SUB kas (a!, b!, x!, e!, root!)
DECLARE FUNCTION F! (x!)
DECLARE FUNCTION G! (x!)
DECLARE FUNCTION F1! (x!)
DECLARE FUNCTION F2! (x!)
DECLARE FUNCTION G2! (x!)
REM численное решение не линейных уравнений
'уточнение корня методами касательных/дихот/ньютона/итерации
CLS
PRINT "проверка существования корня"
PRINT " y = = x - 2 + SIN(1 / x)"
REM ввод отрезка с проверкой на сущ решения
DO
INPUT "a= "; a
INPUT "b= "; b
INPUT "точность решения Eps="; e
LOOP WHILE F(a) * F(b) > 0
REM мет дихотомии или метод деления отрезка пополам
CALL dix(a, b, e, root)
PRINT "корень ур по методу дихотомии="; root
PRINT "значение функции F(x)=";
PRINT USING " ##.######"; F(root)
PRINT "-------------------------------------------"
REM метод касательных или метод Ньютона
INPUT "введите начальное значение корня на (a,b) X0="; x
IF F(x) * F2(x) > 0 THEN
PRINT "метод касательных(Ньютона) Применим"
a = 1: b = 3
CALL kas(a, b, x, e, root)
PRINT "корень по методу касательных="; root
PRINT "значение функции F(x)=";
PRINT USING " ##.######"; F(root)
ELSE
PRINT "метод касательных(Ньютона) НЕ Применим"
END IF
PRINT "-------------------------------------------"
REM метод итерации
INPUT "введите XO="; x0
IF ABS(G1(x)) < 1 THEN
PRINT "метод Не применим"
ELSE
a = 1: b = 3
CALL iter(x0, e, kol, root)
PRINT "корень по методу итерации="; root
PRINT "количество итериций k="; kol
PRINT "значение функции F(x)=";
PRINT USING " ##.######"; F(root)
END IF
END
SUB dix (a, b, e, root)
x = (a + b) / 2
DO
IF F(x) * F(a) < 0 THEN
b = x
ELSE
a = x
END IF
x = (b + a) / 2
LOOP UNTIL (b - a) < e
root = (b + a) / 2
END SUB
FUNCTION F (x)
F = x - 2 + SIN(1 / x)
END FUNCTION
FUNCTION F1 (x)
F1 = 2 + COS(1 / x)
END FUNCTION
FUNCTION F2 (x)
F2 = -SIN(1 / x)
END FUNCTION
FUNCTION G (x)
G = 2 - SIN(1 / x)
END FUNCTION
FUNCTION G1 (x)
G1 = -COS(1 / x)
END FUNCTION
SUB iter (x0, e, kol, root)
kol = 0
x = x0
DO
y = F1(x)
kol = kol + 1
x = y
LOOP UNTIL ABS(y - x) < e
root = y
END SUB
SUB kas (a, b, x, e, root)
DO
x = x - F(x) / F1(x)
LOOP UNTIL ABS(F(x) / F1(x)) < e
root = x
END SUB
Дата публикования: 2015-04-10; Прочитано: 462 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!