
Вопрос задан 21.02.2019 в 03:25.
Предмет Информатика.
Спрашивает Котов Никита.
Где здесь ошибка метод хорд 9.x5+3*sin(x)-3x2-12 program P12; var a,b,c,x:real; i,n:integer;
function F(x:real):real; begin f:=sqr(sqr(x))+3*sin(x)-3*x*sqr(x)-12; end; begin a:=0.5; b:=1.5; n:=12; for i:=1 to n do begin x:=x-(f(x))/(f(c)-f(x))*(c-x); c:=a-(f(a))/(f(a))*(b-a); writeln(x:10:8,'',f(x):12:8); if f(c)*f(a)>0 then break else begin c:=a; x:=b;end; end; end.

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

Отвечает Крюков Артём.
Везде, начиная с того что даже f написана не верно
вот рабочий код. Формулы брались на вики, потому что в ваших я сомневаюсь весьма
function F(x: real): real;
begin
f := sqr(sqr(x)) * x + 3 * sin(x) - 3 * sqr(x) - 12;
end;
function FindRoot(a, b, epsilon: real): real;
begin
while(abs(b - a) > epsilon) do
begin
a := b - (b - a) * f(b) / (f(b) - f(a));
b := a + (a - b) * f(a) / (f(a) - f(b));
writeln(a, ' ', b);
end;
FindRoot := b;
end;
begin
writeln('x = ', FindRoot(0.5, 1.5, 0.001));
end.
вот рабочий код. Формулы брались на вики, потому что в ваших я сомневаюсь весьма
function F(x: real): real;
begin
f := sqr(sqr(x)) * x + 3 * sin(x) - 3 * sqr(x) - 12;
end;
function FindRoot(a, b, epsilon: real): real;
begin
while(abs(b - a) > epsilon) do
begin
a := b - (b - a) * f(b) / (f(b) - f(a));
b := a + (a - b) * f(a) / (f(a) - f(b));
writeln(a, ' ', b);
end;
FindRoot := b;
end;
begin
writeln('x = ', FindRoot(0.5, 1.5, 0.001));
end.



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Ошибка в методе хорд
Код, который вы предоставили, содержит несколько ошибок. Вот подробный анализ:
Неправильное использование оператора "for"
Оператор цикла "for" должен выглядеть как `for i := 1 to n do`, но в вашем коде он выглядит как `for+i:=1+to+n+do`. Правильный синтаксис оператора for в Паскале должен быть "for <переменная> := <начальное значение> to <конечное значение> do".Необъявленная переменная "c"
Переменная "c" не была объявлена перед использованием в вашем коде. Вам следует объявить переменную "c", прежде чем использовать ее в вашем коде.Отсутствие присваивания начального значения переменной "x"
Переменная "x" используется в выражении `x := x - (f(x)) / (f(c) - f(x)) * (c - x);`, но до этого момента ей не было присвоено начальное значение. Вы должны присвоить начальное значение переменной "x", прежде чем использовать ее в этом выражении.Опечатка в функции "F"
В вашей функции "F" вы используете `f := sqr(sqr(x))`, но правильное написание этой строки должно быть `f := sqr(x) * sqr(x)`.Опечатка в условии "if"
В вашем условии `if +f(c)*f(a)>0+then` вы использовали символ ">", который представляет "больше", но выражение должно выглядеть как `if f(c) * f(a) > 0 then`.Неявное объявление типа переменных
В вашем коде переменные объявлены без указания их типов, что может вызвать проблемы. Вам следует явно указывать тип каждой переменной.Пропущена точка с запятой в цикле "for"
В вашем цикле "for" вы пропустили точку с запятой после `for i := 1 to n do`, это приведет к ошибке компиляции.Неправильное использование оператора "break"
В языке Pascal оператор "break" не используется для выхода из цикла, вместо этого используется оператор "exit". Правильное использование: `if f(c) * f(a) > 0 then exit`.После исправления этих ошибок, ваш код может выглядеть примерно так:
```pascal program P12; var a, b, x: real; i, n: integer;
function F(x: real): real; begin F := sqr(x) * sqr(x) + 3 * sin(x) - 3 * x * sqr(x) - 12; end;
begin a := 0.5; b := 1.5; n := 12; x := 0; // Присвоение начального значения переменной x for i := 1 to n do begin x := x - (F(x)) / (F(b) - F(x)) * (b - x); writeln(x:10:8, '', F(x):12:8); if F(b) * F(a) > 0 then exit else begin b := a; x := b; end; end; end. ```
После внесения этих изменений ваш код должен работать корректно.


Топ вопросов за вчера в категории Информатика

Информатика 562

Информатика 404

Информатика 31

Информатика 76

Информатика 16

Информатика 41

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