Новые сообщения · Правила  
  • Страница 1 из 1
  • 1
Модератор форума: Berestovskiy  
Помогите составить программу на TP
Здравствуйте!!! Очень нужна помощь в следующем вопросе:
Методом половинного деления вычислить на ЭВМ корень уравнения вида f(x)=0,расположенный на отрезке[a,b],с абсолютной погрешностью e(эпсилон))).При решении использовать подпрограмму.Выполнить проверку полученного решения.Описать сущность метода решения задачи.
Вот само уравнение:3x-4lnx-5=0;Отрезок[2,3];Точность 10 в -3 степени.
Помогите пожалуйста!
Алгоритм примерно следущий,наверно...
1) Найдем середину отрезка [a; b]: c=(a+b)/2;
2) Вычислим значения функции в точках a и c и найдем
произведение полученных значений: d=f©ּf(a);
3) Если d>0, то теперь точкой a станет c: a=c;
Если d<0, то точкой b станет c: b=c;
4) Вычислим разность a и b, сравним ее с точностью ε
: если |a-b|> ε, то идем в пункт 1) если нет, то корень с нужной
нам точностью найден, и он равен: x=(a+b)/2;

Я,конечно,понимаю,что все это дело в цикле крутим до тех пор пока отрезок не сузится либо до корня либо до погрешности...
Но у мя туго с программированием...Помогите написать текст проги плиз!
Заранее спасибо! biggrin

1 | Автор: zloygeniy | 2009-03-21, 19:57   |  Репутация: [ + 0 ]
1 | Автор: zloygeniy | 2009-03-21, 19:57   |  Репутация: [ + 0 ]
Code
program trynytrobutan;
uses crt;

function fun(x:real):real;
          begin
          fun:=3*x-ln(x)-5;
          end;

function koren(a,b:real): real;
          var c:real;
          begin
          while (b-a)>0.001 do
                begin
                c:=(a+b)/2;
                if fun(a)*fun(c) > 0 then a:=c else b:=c;
                end;
          koren:=(a+b)/2;
          end;

begin
clrscr;
writeln('Koren v to4ke X=',koren(2,3));   
readkey;
end.

у тебя тут прямая и решения на отрезке нет, поєтому даст правую границу.


Меня все время преследуют умные мысли... но я быстрее!!!
2 | Автор: guru | 2009-03-28, 21:54   |  Репутация: [ + 8 ]
  • Страница 1 из 1
  • 1
Поиск: