Страницы

пятница, 2 августа 2013 г.

Точка пересечения графиков функций - Pascal

Еще одна простая задача, на этот раз на Паскале.
Найти точки графиков функций y(x) и g(x) (функция  y(x) и g(x) – функции вещественной переменной х на интервале значений   x = (-50; 50).
Если точек пересечения нет, программа должна выдавать соответствующее сообщение. Если точки пересечения есть, программа должна выдавать координаты (х и у) точек.
Вариант  задачи
у(х) = 1  + х
g (х) = (х +1) ^2 - 1 
Математическая модель:
Для решения задачи введем несколько переменных x, y, g, xp, dx. х, y, g – это координаты точки, а dx будет шагом увеличения х, а также критерием точности сравнения двух результатов y и g. Примем погрешность  вычислений равной 0,001. Для всех переменных выберем тип данных real, это обеспечит необходимую точность.
Для нахождения точек пересечения решим систему уравнений:

После решения системы уравнений найдены две точки пересечения       (-1.618, -0.618) и (0.618, 1.618). Это ожидаемые результаты работы программы.
Код программы:
uses crt;
var x,y,g,xp,dx:real; {объявляем переменные}
begin
clrscr;
x:=-50;            {начальное значение х}
dx:=0.001;               {погрешность}
xp:=-51;        {переменная для определения нахождения точки}
while x<=50 do    {цикл перебора х в заданных пределах}
 begin
 y:=1+x;
 g:=(x+1)*(x+1)-1;
 if abs(y-g)<dx then     {если y=g с заданной точностью}
  begin  {выводим координаты точки пересечения}
   writeln('x=',x:0:3,'  y=',y:0:3);
   xp:=x;     {точка найдена}
  end;
 x:=x+dx;    {увеличиваем х}
 end;
if xp=-51 then write ('Points not found');  {точка не найдена}
readln;
end.
Результаты, полученные при работе программы, показаны на рисунке 1.

 Рисунок 1 – Окно результатов выполнения программы
Как видно, полученные результаты совпали с ожидаемыми, рассчитанными с помощью системы уравнений.