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

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

Показать ответ
Ответ:
tanzbis
tanzbis
03.10.2020 18:13
Ваша небрежность при записи задания привела к необходимости составить решение для двух выражений.
F_1(x)=sin(x^2)+cos(x^2)-10x \\ F_2(x)=sin^2x+cos^2x-10x=1-10x
Соответственно, были найдены два корня.

// 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
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота