Выполнить график функции - Turbo Pascal

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

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

Функция: x5+8x4+17x3-8x2-14x+20=0 Составить программу на языке Паскаль, которая строит график функции (в координатах (F (x), x) с координатной сеткой и подписанимы и проградуированными осями координат) для определения начального приближенного неизвестного корня х (графическим методом). Программа также должна обеспечивать: введение выходных данных, развязанная заданного уравнения, запись результатов каждой итерации в массив, вывод результатов в удобной форме на экран и в файл.

Решение задачи: «Выполнить график функции»

textual
Листинг программы
uses graph;
function F(x:real):real;
begin
F:=x*x*x*x*x+8*x*x*x*x+17*x*x*x-8*x*x-14*x+20 {функция}
end;
 
var a,b,mx,my,min,max:real;
    x,x1,x2:real;
    x0,y0,i:integer;
    s,s1:string;
begin
x0:=0;
initgraph(x0,y0,'');{инициализация графического режима}
a:=-2;
b:=1.5;{интервал по Х}
x0:=round(-a*getmaxX/(b-a));{начало координат по Х}
mx:=(x0-30)/-a;{масштаб по Х}
x:=a; {найдем мин и макс для масштаба по Y}
min:=F(x);
max:=min;
while x<=b do
 begin
  if F(x)<min then min:=F(x);
  if F(x)>max then max:=F(x);
  x:=x+0.01;
 end;
y0:=round(max*getmaxY/(max-min));{начало координат по Y}
if max>abs(min) then my:=(y0-20)/max
else my:=(y0-20)/abs(min);
line(0,y0,getmaxX,y0);{оси}
line(x0,0,x0,getmaxY);
for i:=1 to 20 do{максимальное количество засечек в одну сторону}
 begin
  line(x0-3,y0-round(i*my*10),x0+3,y0-round(i*my*10));{засечки на оси У}
  line(x0-3,y0+round(i*my*10),x0+3,y0+round(i*my*10));
  {подпись оси У}
  str(i*10:3,s);
  settextstyle(0,0,1);{горизонтальный шрифт}
  outtextXY(x0-35,y0-round(i*my*10),s);{соответственно засечкам}
  outtextXY(x0-40,y0+round(i*my*10),'-'+s);
  line(x0+round(i*mx/10),y0-3,x0+round(i*mx/10),y0+3); {засечки на оси Х}
  line(x0-round(i*mx/10),y0-3,x0-round(i*mx/10),y0+3);
  {подпись оси Х}
  if i mod 2=0 then
   begin
    str(i/10:0:1,s);
    settextstyle(0,1,1);{вертикальный шрифт}
    outtextXY(x0+round(i*mx/10)+5,y0+10,s);
    outtextXY(x0-round(i*mx/10)+5,y0+10,'-'+s);
   end;
 end;
{центр}
outtextXY(x0-15,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0+5,10, 'Y');
{график}
x:=a;
x1:=a;
while x<=b do
 begin
  putpixel(x0+round(x*mx),y0-round(F(x)*my),12);
  x:=x+0.001;
  if F(x1)*F(x1+1)<0 then x2:=x1;
  x1:=x1+1;
 end;
{название}
settextstyle(0,0,1);
setcolor(12);
outtextXY(100,10,'y=x^6+8x^4+17x^3-8x^2-14x+20');
outtextXY(160,30,'int.[-2;1.5]');
{интервал корня}
str(x2:0:1,s);
str(x2+1:0:1,s1);
outtextXY(150,50,'int.kornya['+s+';'+s1+']');
readln
end.

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

  1. В начале кода используется библиотека graph, которая предоставляет функции для работы с графиками.
  2. Функция F(x) представляет собой шестую степень переменной x.
  3. Переменные a, b, mx, my, min, max используются для определения интервала [a, b] и координат начала и конца графика.
  4. Координаты начала и конца графика определяются как наименьшее и наибольшее значения функции F(x) в интервале [a, b].
  5. Для построения графика используются функции initgraph, line, outtextXY, putpixel.
  6. Строки с подписями осей и концами осей строятся с помощью функций str, settextstyle, outtextXY.
  7. Центр графика определяется как точка (x0, y0+10).
  8. Засечки на оси Х строятся с помощью функций line, outtextXY.
  9. Засечки на оси Y строятся с помощью функций line, outtextXY.
  10. Интервал корня определяется как наименьшее и наибольшее значения функции F(x) в интервале [x2-1, x2+1].
  11. Название графика и интервала корня строятся с помощью функций settextstyle, outtextXY, str.
  12. Координаты начала и конца засечек на оси Х и оси Y определяются с помощью функций line, outtextXY.
  13. Числа 0, 1, 10, 10, 100, 160, 150, 150 используются для позиционирования текста на экране.
  14. Строки с числами 0, 1, 10, 10, 100, 160, 150 строятся с помощью функций str, settextstyle, outtextXY.
  15. Числа 0, 1, 10, 10, 100, 160, 150 используются для определения длины строки с помощью функции str.
  16. Числа 0, 1, 10, 10, 100, 160, 150 используются для определения ширины шрифта с помощью функции settextstyle.
  17. Числа 0, 1, 10, 10, 100, 160, 150 используются для определения положения текста на экране с помощью функции outtextXY.

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

13   голосов , оценка 4.385 из 5