• Паскаль.
    На интервале (a, b) найти с точностью ε= 10⁻⁵ корни уравнения f(x)=0 методом деления отрезка пополам.
    Примечание: a, b и ε вводятся с клавиатуры; на экран осуществляется вывод промежуточных результатов в три столбика (n=K, x=K, f(x)=K), где n – номер шага (целое число), x – середина отрезка [a,b] ; x и f(x) выводятся с точностью до 6 знаков после запятой; когда и длина отрезка [a,b] , и модуль f(x) становятся меньше ε , делается сообщение о завершении вычислений.

    question img

Ответы 2

  • function f(var x: real): real;begin  f:=power(x,5)-0.3*abs(x-1);end;var a,b,c,eps: real;    k: integer;begin  writeln('метод деления пополам');  repeat    write('границы интервала a b через пробел: ');    readln(a,b);    if f(a)*f(b)>0 then writeln('не верные границы интервала');  until f(a)*f(b)<0;   write('точность вычислений eps = '); readln(eps);  repeat    c:=(a+b)/2;    if sign(f(c))=sign(f(b)) then b:=c    else a:=c;    inc(k);    writeln('n = ',k,'   x = ',c:8:6,'   f(x) = ',f(c):8:6);  until (abs(f(c))<eps) and (b-a<eps);   writeln('корень x = ',c:8:6,'  f(x) = ',f(c):8:6);  end.метод деления пополамграницы интервала a b через пробел: 0 1точность вычислений eps = 1.0e-5n = 1   x = 0.500000   f(x) = -0.118750n = 2   x = 0.750000   f(x) = 0.162305n = 3   x = 0.625000   f(x) = -0.017133n = 4   x = 0.687500   f(x) = 0.059840n = 5   x = 0.656250   f(x) = 0.018591n = 6   x = 0.640625   f(x) = 0.000087n = 7   x = 0.632813   f(x) = -0.008677n = 8   x = 0.636719   f(x) = -0.004335n = 9   x = 0.638672   f(x) = -0.002134n = 10   x = 0.639648   f(x) = -0.001026n = 11   x = 0.640137   f(x) = -0.000470n = 12   x = 0.640381   f(x) = -0.000192n = 13   x = 0.640503   f(x) = -0.000052n = 14   x = 0.640564   f(x) = 0.000017n = 15   x = 0.640533   f(x) = -0.000018n = 16   x = 0.640549   f(x) = 0.000000n = 17   x = 0.640556   f(x) = 0.000009корень x = 0.640556  f(x) = 0.000009
    • Автор:

      irenevuxm
    • 5 лет назад
    • 0
  • PascalABC.NET 3.3.5, сборка 1644 от 23.03.2018Внимание! Если программа не работает, обновите версию!begin  var f:real->real:=x->x**5-0.3*Abs(x-1);  var (a,b):=ReadReal2('Введите границы интервала:');  var (fa,fb):=(f(a),f(b));  var eps:=ReadReal('Введите требуемую точность:');  var n:=1;  Writeln(' n',12*' ','x',14*' ','y');   while True do begin    var x:=(a+b)/2;    var y:=f(x);    if (Abs(y)<eps) and (Abs(b-a)<eps) then break;    Writeln(n:3,x:15:6,y:15:6);    if Sign(fa)=Sign(y) then a:=x else b:=x;    n+=1    end     end.
    answer img
    • Автор:

      claudia27
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years