Решение уравнения SQR(x) + SQR(x+1) +.+ SQR(x+9) = 100 - QBasic

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

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

Решить уравнение SQR(x) + SQR(x+1) +...+ SQR(x+9) = 100 (ответ 95.52058)
Листинг программы
  1. REM
  2. REM SQR(x) + SQR(x+1) +...+ SQR(x+9) = 100
  3. REM
  4. REM x = 95.52058
  5. REM
  6. DECLARE FUNCTION f! (x!)
  7. CLS
  8. FOR x = 90 TO 100 STEP .0001
  9. IF ABS(f(x)) < .00003 THEN PRINT x
  10. NEXT x
  11. END
  12. FUNCTION f (x)
  13. FOR i = 0 TO 9
  14. S = S + SQR(x + i)
  15. NEXT
  16. f = S - 100
  17. END FUNCTION

Решение задачи: «Решение уравнения SQR(x) + SQR(x+1) +.+ SQR(x+9) = 100»

textual
Листинг программы
  1. Sub www()
  2.     Dim a As Double, b As Double, c As Double, epsx As Double
  3.     Dim fa As Double, fb As Double, fc As Double, epsy As Double
  4.     a = 90 'начало отрезка
  5.    b = 100 'конец отрезка
  6.    epsy = 0.00000000001 'точность по y
  7.    epsx = 0.000001 'точность по x
  8.    fa = f(a)
  9.     If Abs(fa) < epsy Then Debug.Print a: Exit Sub 'корень в точке a
  10.    fb = f(b)
  11.     If Abs(fb) < epsy Then Debug.Print b: Exit Sub 'корень в точке b
  12.    If Sgn(fa) = Sgn(fb) Then Exit Sub ' не правильно задан отрезок
  13.    While b - a >= epsx
  14.         c = (a + b) / 2
  15.         fc = f(c)
  16.         If Abs(fc) < epsy Then Debug.Print c: Exit Sub
  17.         If Sgn(fa) = Sgn(fc) Then a = c: fa = fc Else b = c: fb = fc
  18.     Wend
  19.     Debug.Print (a + b) / 2
  20. End Sub
  21.  
  22. Function f(x As Double) As Double
  23.     Dim i As Long, s As Double
  24.     For i = 0 To 9
  25.         s = s + Sqr(x + i)
  26.     Next i
  27.     f = s - 100
  28. End Function

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

В этом коде решается квадратное уравнение методом половинного деления. Список действий:

  1. Задаются начальное приближение для переменной a и конечное приближение для переменной b.
  2. Проверяется, достаточно ли точна приближённая точка a. Если да, то выводится её значение и происходит выход из подпрограммы.
  3. Проверяется, достаточно ли точна приближённая точка b. Если да, то выводится её значение и происходит выход из подпрограммы.
  4. Проверяется, правильно ли задан отрезок. Если точки a и b имеют одинаковый знак, значит, отрезок задан некорректно, происходит выход из подпрограммы.
  5. Задаётся переменная c как середина отрезка между a и b.
  6. Проверяется, достаточно ли точна приближённая точка c. Если да, то выводится её значение и происходит выход из подпрограммы.
  7. Если точки a и c имеют одинаковый знак, значит, сближение происходит из-за округления, происходит замена a и c местами, иначе замена происходит для a и b.
  8. Цикл while выполняется, пока длина отрезка между a и b больше заданной точности epsx.
  9. В каждой итерации циклически обновляются значения a и b на значение переменной c.
  10. Выводится значение переменной c.

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


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

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

11   голосов , оценка 3.636 из 5

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

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

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