Помощь - Поиск - Пользователи - Календарь
Полная версия: Метод деления отрезка пополам
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Roman_1
Задача. Приближенное решение уравнения f(x)=0 методом деления отрезка пополам.(метод биссектрисс) Найти наименьший положительный корень уравнения tg(a*x)-b*x=0. a=0.6319, b=0.9217
Не знаю как найти наименьший положительный корень, а так программа вроде бы работает. заранее спасибо.

Прога:
Код

Program Half;

Uses Crt;

Var
a,b,e,x: real;

Function f(x:real):real;
Begin
f:= (sin(a*x))/(cos(a*x))-b*x;
End;

Begin

Clrscr;
Write('BBeguTe rpaHuL|bI uHTepBa/Ia: ');
Readln(a,b);

if (f(a)*f(b)) > 0 then
Begin
Sound(220);
Delay(200);
NoSound;
Writeln('ERROR! Funkciya ne menyaet znak na intervale!');
Writeln('Press aNy key');
Readkey;
Halt;
End
                     else
Begin
Write('3agauTe To4HocTb: ');
Readln(e);
Writeln;
Writeln('     X     F(X)      A     F(A)      B     F(B)');
Writeln('------------------------------------------------');
While (Abs(b-a)>=2*e) do
Begin
  x:=(b+a)/2;
  if f(x)*f(a)>0 then a:=x else b:=x;
  Writeln(x:8:3,f(x):8:3,a:8:3,f(a):8:3,b:8:3,f(b):8:3);
End;
End;

Writeln;
Writeln('KopeHb ',(B + A) / 2:4:2);
Writeln('Press AnY key');
Readkey;

End.
volvo
А никак... Определение метода дихотомии читал?
Цитата
находит корень уравнения F(x) = 0, где F(x) - непрерывная на отрезке [a,b] функция, удовлетворяющая условию F(a)F(b) < 0.
Понимаешь? ЛЮБОЙ корень... Если тебе нужно именно
Цитата
наименьший положительный корень
, то подбирай такой интервал, в котором этот корень находится...

Цитата
а так программа вроде бы работает
А вот дублировать программы как раз незачем... Есть же уже готовая и проверенная!

Численные методы решения уравнений

А вдруг твоя программа будет сбоить? "Вроде бы" - это не критерий правильности работы... А кто-то скачает, и начнется: "на вашем форуме программы нерабочие"...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.