Система 2 уравнений в Паскале (графическое решение) - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Имеется 2 функции, заданные неявно:

F1=cosd(0.2*x^2-y)-4*x*y+2*x-4*y+0.684444=0 где cosd косинус с аргументом в градусах F2=0.25*y^2-(1-x^2)^3+0.956562=0 Необходимо построить их графики в одной системе координат и выделить точку(и) их пересечения. Вывести график и систему координат вроде не проблема, проблема в поиске точек графиков. Прошу помочь, т.к. сам никак не могу додуматься, как можно найти координаты точек (неужто перебор по всем точкам???)

Решение задачи: «Система 2 уравнений в Паскале (графическое решение)»

textual
Листинг программы
uses graph;
function f1(x,y:real):real;
begin
f1:=cos((0.2*x*x-y)*pi/180)-4*x*y+2*x-4*y+0.684444;
end;
function f2(x,y:real):real;
begin
f2:=0.25*y*y-sqr(1-x*x)*(1-x*x)+0.956562
end;
var x,y,m:real;
    x1,y1,x2,y2,xc,yc:integer;
begin
initgraph(xc,yc,'');
xc:=getmaxX div 2;
yc:=getmaxY div 2;
m:=(yc-20)/5;
x:=-2.5;
while x<=2.5 do
 begin
  y:=-2.5;
  while y<=2.5 do
   begin
    if abs(f1(x,y))<0.01 then
     begin
      x1:=xc+round(x*m);
      y1:=yc-round(y*m);
      putpixel(x1,y1,9);
     end;
    if abs(f2(x,y))<0.001 then
     begin
      x2:=xc+round(x*m);
      y2:=yc-round(y*m);
      putpixel(x2,y2,12);
     end;
    y:=y+0.001;
   end;
  x:=x+0.001;
 end;
readln
end.

Объяснение кода листинга программы

  1. Подключается библиотека graph.
  2. Определяются две функции f1 и f2, которые принимают два аргумента типа real и возвращают значение типа real.
  3. Объявляются переменные x, y, m типа real.
  4. Объявляются переменные x1, y1, x2, y2, xc, yc типа integer.
  5. Вызывается функция initgraph с аргументами xc, yc, пустая строка.
  6. Вычисляется значение переменной m как (yc — 20) / 5.
  7. Инициализируются переменные x и y как -2.5.
  8. Запускается цикл while, который выполняется, пока значение переменной x не станет больше или равно 2.5.
  9. Внутри цикла while запускается другой цикл while, который выполняется, пока значение переменной y не станет больше или равно 2.5.
  10. Внутри циклов while проверяется абсолютное значение функций f1 и f2, вычисленных для текущих значений x и y.
  11. Если абсолютное значение функции f1 меньше 0.01, то вычисляются координаты x1 и y1 с помощью функций initgraph и putpixel.
  12. Если абсолютное значение функции f2 меньше 0.001, то вычисляются координаты x2 и y2 с помощью функций initgraph и putpixel.
  13. После окончания внутреннего цикла while значение переменной y увеличивается на 0.001.
  14. После окончания внешнего цикла while значение переменной x увеличивается на 0.001.
  15. Выводится команда readln для завершения работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы