Уточнить корень, метод касательных - QBasic

Узнай цену своей работы

Формулировка задачи:

Добрый день! очень нужна ваша помощь. Помогите пожалуйста решить. Нужно уточнить корень методом касательных с точностью ε=0,001 составить программу расчетов на языке БЕЙСИК. Вот что получилось
Листинг программы
  1. 10 CLS
  2. 20 REM программа вычисления корня уравнения методом касательных
  3. 30 INPUT “Введите точность Е”, E
  4. 40 INPUT "введите координаты отрезка", a, b
  5. IF ((1/2*EXP(x) * (a + b) / 2) > 0) AND (1/2EXP(x) * (a + b) / 2) > 0 THEN x = b
  6. IF (1/2EXP(x) +X*X) * (a + b) / 2 < 0 AND (1/2EXP(x) * (a + b) / 2) < 0 THEN x = a
  7. WHILE t < (x - x1)
  8. x1 = x
  9. x = x - (1/2EXP(x) +X * X-2) / (1/2EXP(x) +X*X- 2)
  10. WEND
  11. PRINT "x=", x
  12. END

Решение задачи: «Уточнить корень, метод касательных»

textual
Листинг программы
  1. DECLARE FUNCTION fx! (x!)
  2. DECLARE FUNCTION min1! (a!, b!, eps!)
  3. DECLARE FUNCTION Derivat1! (x0!, eps!)
  4. DECLARE FUNCTION Derivat2! (x0!, eps!)
  5. DECLARE FUNCTION Tangent! (a!, b!, eps!)
  6.  
  7. DIM a!, b!, eps!, tmp!
  8. CLS
  9. eps = .001
  10. a = 1.3
  11. b = 1.5
  12. tmp = Tangent(a, b, eps)
  13. PRINT "x1= "; tmp
  14. PRINT "y1= "; fx(tmp)
  15. a = -.9
  16. b = -.7
  17. tmp = Tangent(a, b, eps)
  18. PRINT "x2= "; tmp
  19. PRINT "y2= "; fx(tmp)
  20.  
  21. FUNCTION Derivat1! (x0!, eps!)
  22.     DIM dx!, dy!, dy1!
  23.     dx = 1
  24.     DO
  25.         dx = dx / 2
  26.         dy = fx(x0 + dx / 2) - fx(x0 - dx / 2)
  27.         dy1 = fx(5 * x0 / 4 + dx) - 2 * fx(5 * x0 / 4)
  28.         dy1 = dy1 + fx(5 * x0 / 4 - dx)
  29.     LOOP UNTIL ABS(dy1 / (2 * dx)) < eps
  30.     Derivat1 = dy / dx
  31. END FUNCTION
  32.  
  33. FUNCTION Derivat2! (x0!, eps!)
  34.     DIM dx!, dy!, dy1!
  35.     dx = 1
  36.     DO
  37.         dx = dx / 2
  38.         dy = fx(x0 + dx) - 2 * fx(x0) + fx(x0 - dx)
  39.         dy1 = fx(5 * x0 / 4 + 2 * dx) - 2 * fx(5 * x0 / 4 + dx)
  40.         dy1 = dy1 - fx(5 * x0 / 4 - 2 * dx) + 2 * fx(5 * x0 / 4 - dx)
  41.     LOOP UNTIL ABS(dy1 / (6 * dx)) < eps
  42.     Derivat2 = dy / (dx * dx)
  43. END FUNCTION
  44.  
  45. FUNCTION fx! (x!)
  46. 'root1 [-0.9,-0.7]; root2 [1.3,1.5]
  47.     fx = 1 / (2 * EXP(x)) + x * x - 2
  48. END FUNCTION
  49.  
  50. FUNCTION min1! (a!, b!, eps!)
  51.     DIM d!, tmp!
  52.     a = a - eps
  53.     b = b + eps
  54.     DO
  55.         a = a + eps
  56.         b = b - eps
  57.         tmp = ABS(Derivat1(a, eps))
  58.         d = ABS(Derivat1(b, eps))
  59.         IF tmp > d THEN tmp = d
  60.     LOOP UNTIL tmp <> 0
  61.     min1 = tmp
  62. END FUNCTION
  63.  
  64. FUNCTION Tangent! (a!, b!, eps!)
  65.     DIM x1!, M!, tmp!
  66.     IF fx(a) * Derivat2(a, eps) > 0 THEN
  67.         x1 = a
  68.     ELSE
  69.         x1 = b
  70.     END IF
  71.     M = min1(a, b, eps)
  72.     DO
  73.         tmp = x1 - fx(x1) / Derivat1(x1, eps)
  74.         x1 = tmp
  75.     LOOP UNTIL ABS(fx(x1)) / M < eps
  76.     Tangent = tmp
  77. END FUNCTION

Объяснение кода листинга программы

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

  1. В функции Derivat1 и Derivat2 вычисляются приближенные значения первой и второй производных функции fx соответственно. Для этого используется метод конечных разностей. В обоих функциях используется цикл, который выполняется до тех пор, пока абсолютное значение производной не станет меньше заданной точности eps. Значение производной вычисляется на каждой итерации цикла, и если оно удовлетворяет условию, цикл прекращается и функция возвращает значение производной.
  2. Функция fx представляет собой функцию, корни которой мы ищем. В этой функции используется формула для вычисления значения функции, а также вычисляется ее производная с помощью функции Derivat1.
  3. Функция min1 используется для определения интервала, в котором ищется корень. Она находит точку, в которой производная Derivat1 меняет знак с плюса на минус (или наоборот). Для этого используется цикл, который выполняется до тех пор, пока не будет найдена точка с максимальной ошибкой.
  4. Функция Tangent вычисляет касательную к графику функции fx в точке x1. Если значение функции fx в этой точке положительно, то корень ищется на интервале [a, x1]. Если значение отрицательно, то корень ищется на интервале [x1, b]. Используется цикл, который выполняется до тех пор, пока абсолютное значение ошибки не станет меньше заданной точности eps.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы