Еще одна простая задача, на этот раз на Паскале.
Найти точки графиков функций 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). Это ожидаемые результаты работы программы.
Код программы:
Найти точки графиков функций 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;Результаты, полученные при работе программы, показаны на рисунке 1.
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 – Окно результатов выполнения программы
Как видно, полученные результаты совпали с ожидаемыми, рассчитанными с помощью системы уравнений.