БЛОК-СХЕМА
ВИД ПРОГРАММЫ НА ЯЗЫКЕ QBASIC
DECLARE SUB dix (a!, b!, e!, root!)
DECLARE SUB kas (a!, b!, x!, e!, root!)
DECLARE FUNCTION F! (x!)
DECLARE FUNCTION F1! (x!)
DECLARE FUNCTION F2! (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 "----------------------------------"
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
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
FUNCTION F (x)
F = x - 2 + SIN(1 / x)
END FUNCTION
FUNCTION F1 (x)
F1 = 1 + COS(1 / x)
END FUNCTION
FUNCTION F2 (x)
F2 = -SIN(1 / x)
END FUNCTION