Отделить корень уравнения графически и аналитически. Метод бисекций - QBasic
Формулировка задачи:
Добрый день! ребята помогите пожалуйста с программой. только начинаю изучать.
Отделить корень уравнения графически и аналитически (если в уравнении корней несколько, взять наименьший положительный); уточнить корень указанным методом с точностью ε=0,001 составить программу расчетов на языке БЕЙСИК.
а) 5sinx – x + 1 = 0 метод бисекций
Вариант программы соответствующей алгоритму решения задачи определения корня уравнения 5sinx-x=1:
Заранее всем спасибо!
Листинг программы
- 10 СLS
- 20 REM Метод деления отрезка пополам
- 30 INPUT “Введите точность Е”, E
- 40 INPUT “Введите значение левого конца отрезка A”, A
- 50 INPUT “Введите значение левого конца отрезка B”, B
- 60 XN=A: XK=B
- 70 XS=(XN+XK)/2
- 80 FX=5*SIN(XS)-XS +1
- 90 FN1=5*SIN(XN)-XN+1
- 100 IF FN1*FX<0 THEN XK=XS ELSE XN=XS
- 110 IF ABS(XN-XK)> E THEN 70
- 120 PRINT “Значение корня Х=”; Х
- 130 END
Решение задачи: «Отделить корень уравнения графически и аналитически. Метод бисекций»
textual
Листинг программы
- DECLARE FUNCTION Div2! (A!, B!, Eps!)
- DECLARE FUNCTION Fx! (x!)
- DIM A!, B!, Eps!, Tmp!
- CLS
- A = 2.5
- B = 3
- Eps = .001
- Tmp = Div2(A, B, Eps)
- PRINT "x= "; Tmp
- PRINT "F(x)="; Fx(Tmp)
- FUNCTION Div2! (A!, B!, Eps!)
- DIM x!, Fa!, Fxx!
- Fa = Fx(A)
- WHILE ABS(Fa) > Eps
- x = (A + B) / 2
- Fxx = Fx(x)
- IF Fa * Fxx <= 0 THEN
- B = x
- ELSE
- A = x
- Fa = Fxx
- END IF
- WEND
- Div2 = A
- END FUNCTION
- FUNCTION Fx! (x!)
- Fx = 5 * SIN(x) - x + 1
- END FUNCTION
Объяснение кода листинга программы
- Объявлены функции
Div2!
,Fx!
- В основной программе определены переменные
A!
,B!
,Eps!
,Tmp!
- Заданы начальные значения
A=2.5
,B=3
,Eps=.001
- Вызвана функция
Div2!(A!, B!, Eps!)
с передачей текущих значений переменныхA!
,B!
,Eps!
- Результат вычисления функции
Div2!
сохранен в переменнуюTmp!
- Выведено на экран значение переменной
Tmp!
- Вычислено значение функции
Fx!(Tmp!)
и выведено на экран - В функции
Div2!
определены дополнительные переменныеx!
,Fa!
,Fxx!
- При вычислении функции
Div2!
в цикле пока выполняется условиеABS(Fa) > Eps
- В каждой итерации цикла переменная
x!
принимает значение(A + B) / 2
- Вычисляется значение функции
Fx!(x!)
и сохраняется в переменнуюFxx!
- Проверяется условие
Fa * Fxx <= 0
- Если условие истинно, то переменная
B
присваивается значениеx!
, иначе переменнойA
присваивается значениеx!
, а переменнойFa
значениеFxx!
- Цикл выполняется до тех пор, пока условие
ABS(Fa) > Eps
истинно - В результате выполнения функции
Div2!
возвращается значение переменнойA
- В функции
Fx!
определена формула для вычисления значения функцииFx(x) = 5 * SIN(x) - x + 1
- В основной программе вызывается функция
Fx!(Tmp)!
для вычисления значения функцииFx(Tmp)
- Завершается выполнение основной программы
- Значения переменных
A!
,B!
,Eps!
,Tmp!
,x!
,Fa!
,Fxx!
не используются после выполнения функцийDiv2!
,Fx!
- Значение переменной
Tmp!
не используется после вывода на экран
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д