Решение уравнения SQR(x) + SQR(x+1) +.+ SQR(x+9) = 100 - QBasic
Формулировка задачи:
Решить уравнение SQR(x) + SQR(x+1) +...+ SQR(x+9) = 100
(ответ 95.52058)
Листинг программы
- REM
- REM SQR(x) + SQR(x+1) +...+ SQR(x+9) = 100
- REM
- REM x = 95.52058
- REM
- DECLARE FUNCTION f! (x!)
- CLS
- FOR x = 90 TO 100 STEP .0001
- IF ABS(f(x)) < .00003 THEN PRINT x
- NEXT x
- END
- FUNCTION f (x)
- FOR i = 0 TO 9
- S = S + SQR(x + i)
- NEXT
- f = S - 100
- END FUNCTION
Решение задачи: «Решение уравнения SQR(x) + SQR(x+1) +.+ SQR(x+9) = 100»
textual
Листинг программы
- Sub www()
- Dim a As Double, b As Double, c As Double, epsx As Double
- Dim fa As Double, fb As Double, fc As Double, epsy As Double
- a = 90 'начало отрезка
- b = 100 'конец отрезка
- epsy = 0.00000000001 'точность по y
- epsx = 0.000001 'точность по x
- fa = f(a)
- If Abs(fa) < epsy Then Debug.Print a: Exit Sub 'корень в точке a
- fb = f(b)
- If Abs(fb) < epsy Then Debug.Print b: Exit Sub 'корень в точке b
- If Sgn(fa) = Sgn(fb) Then Exit Sub ' не правильно задан отрезок
- While b - a >= epsx
- c = (a + b) / 2
- fc = f(c)
- If Abs(fc) < epsy Then Debug.Print c: Exit Sub
- If Sgn(fa) = Sgn(fc) Then a = c: fa = fc Else b = c: fb = fc
- Wend
- Debug.Print (a + b) / 2
- End Sub
- Function f(x As Double) As Double
- Dim i As Long, s As Double
- For i = 0 To 9
- s = s + Sqr(x + i)
- Next i
- f = s - 100
- End Function
Объяснение кода листинга программы
В этом коде решается квадратное уравнение методом половинного деления. Список действий:
- Задаются начальное приближение для переменной a и конечное приближение для переменной b.
- Проверяется, достаточно ли точна приближённая точка a. Если да, то выводится её значение и происходит выход из подпрограммы.
- Проверяется, достаточно ли точна приближённая точка b. Если да, то выводится её значение и происходит выход из подпрограммы.
- Проверяется, правильно ли задан отрезок. Если точки a и b имеют одинаковый знак, значит, отрезок задан некорректно, происходит выход из подпрограммы.
- Задаётся переменная c как середина отрезка между a и b.
- Проверяется, достаточно ли точна приближённая точка c. Если да, то выводится её значение и происходит выход из подпрограммы.
- Если точки a и c имеют одинаковый знак, значит, сближение происходит из-за округления, происходит замена a и c местами, иначе замена происходит для a и b.
- Цикл while выполняется, пока длина отрезка между a и b больше заданной точности epsx.
- В каждой итерации циклически обновляются значения a и b на значение переменной c.
- Выводится значение переменной c.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д