
Вопрос задан 23.10.2023 в 04:24.
Предмет Информатика.
Спрашивает Стрельникова Катя.
составить программу решения уравнения sinx^2+cosx^2-10x=0 методом деления отрезка пополам.
Известно, что корень находится на промежутке [0,1]

Ответы на вопрос

Отвечает Волчкевич Лиза.
Ваша небрежность при записи задания привела к необходимости составить решение для двух выражений.
Соответственно, были найдены два корня.
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
function f1(x:real):=sin(x*x)+cos(x*x)-10*x;
function f2(x:real):=1-10*x;
function Root(a,b,eps:real; f:real->real):real;
begin
var x,fx:real;
var fa:=f(a);
if abs(fa)<=eps then Result:=a
else begin
var fb:=f(b);
if abs(fb)<=eps then Result:=b
else
if fa*fb>0 then Result:=0/0
else
repeat
x:=(a+b)/2;
fx:=f(x);
if abs(fx)<=eps then Result:=x
else
if fa*fx>0 then a:=x else b:=x;
until abs(fx)<=eps
end
end;
begin
var eps:=ReadReal('Введите точность решения:');
Writeln('r1=',Root(0,1,eps,f1));
Writeln('r2=',Root(0,1,eps,f2))
end.
Тестовое решение
Введите точность решения: 1e-7
r1=0.10101518034935
r2=0.0999999940395355
Соответственно, были найдены два корня.
// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
function f1(x:real):=sin(x*x)+cos(x*x)-10*x;
function f2(x:real):=1-10*x;
function Root(a,b,eps:real; f:real->real):real;
begin
var x,fx:real;
var fa:=f(a);
if abs(fa)<=eps then Result:=a
else begin
var fb:=f(b);
if abs(fb)<=eps then Result:=b
else
if fa*fb>0 then Result:=0/0
else
repeat
x:=(a+b)/2;
fx:=f(x);
if abs(fx)<=eps then Result:=x
else
if fa*fx>0 then a:=x else b:=x;
until abs(fx)<=eps
end
end;
begin
var eps:=ReadReal('Введите точность решения:');
Writeln('r1=',Root(0,1,eps,f1));
Writeln('r2=',Root(0,1,eps,f2))
end.
Тестовое решение
Введите точность решения: 1e-7
r1=0.10101518034935
r2=0.0999999940395355



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Программа для решения уравнения sin(x^2) + cos(x^2) - 10x = 0 методом деления отрезка пополам может выглядеть следующим образом на Python:
pythonimport math
# Функция, которую мы хотим решить
def equation(x):
return math.sin(x**2) + math.cos(x**2) - 10*x
# Начальные границы отрезка
a = 0
b = 1
# Точность, с которой мы хотим найти корень
epsilon = 1e-6
# Пока длина отрезка больше точности, продолжаем делить пополам
while (b - a) > epsilon:
# Вычисляем середину отрезка
c = (a + b) / 2
# Значения функции на концах и в середине отрезка
fa = equation(a)
fb = equation(b)
fc = equation(c)
# Если корень лежит слева от середины, обновляем левую границу
if (fa * fc) < 0:
b = c
# В противном случае, корень лежит справа от середины, обновляем правую границу
else:
a = c
# Корень уравнения находится ближе к середине отрезка
root = (a + b) / 2
print("Корень уравнения:", root)
Этот код делит отрезок [a, b] пополам до тех пор, пока разница между левой и правой границей не станет меньше заданной точности (epsilon). Когда длина отрезка становится меньше точности, программа выводит приближенное значение корня уравнения.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili