Выполнить график функции - 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.
Объяснение кода листинга программы
- В начале кода используется библиотека graph, которая предоставляет функции для работы с графиками.
- Функция F(x) представляет собой шестую степень переменной x.
- Переменные a, b, mx, my, min, max используются для определения интервала [a, b] и координат начала и конца графика.
- Координаты начала и конца графика определяются как наименьшее и наибольшее значения функции F(x) в интервале [a, b].
- Для построения графика используются функции initgraph, line, outtextXY, putpixel.
- Строки с подписями осей и концами осей строятся с помощью функций str, settextstyle, outtextXY.
- Центр графика определяется как точка (x0, y0+10).
- Засечки на оси Х строятся с помощью функций line, outtextXY.
- Засечки на оси Y строятся с помощью функций line, outtextXY.
- Интервал корня определяется как наименьшее и наибольшее значения функции F(x) в интервале [x2-1, x2+1].
- Название графика и интервала корня строятся с помощью функций settextstyle, outtextXY, str.
- Координаты начала и конца засечек на оси Х и оси Y определяются с помощью функций line, outtextXY.
- Числа 0, 1, 10, 10, 100, 160, 150, 150 используются для позиционирования текста на экране.
- Строки с числами 0, 1, 10, 10, 100, 160, 150 строятся с помощью функций str, settextstyle, outtextXY.
- Числа 0, 1, 10, 10, 100, 160, 150 используются для определения длины строки с помощью функции str.
- Числа 0, 1, 10, 10, 100, 160, 150 используются для определения ширины шрифта с помощью функции settextstyle.
- Числа 0, 1, 10, 10, 100, 160, 150 используются для определения положения текста на экране с помощью функции outtextXY.