Где здесь ошибка метод хорд 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; ...

Где здесь ошибка метод хорд 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.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы