Упражнение 2

Измените приложение (упражнение 1) таким образом, чтобы оно выполняло построение графика функции у = Sqrt(x)*Sin(x), причем цвет графика должен быть синим.

Для изменения выражения функции отредактируйте текст функции f(x).

Функция имела следующий вид:

Function f(x:real):real; {функция, график которой надо перестроить}

begin

f:= 3*Sin(x)*Cos(x/6);

end;

После изменения тела функция будет иметь следующий вид:

Function f(x:real):real; {функция, график которой надо построить}

begin

f:=Sqrt(x)*Sin(x);

end;

Преобразуем исходное тело процедуры DrawGraph:

begin {область вывода графика на форме}

1:=10; {X — координата левого верхнего угла}

b:=Forml.С1ientHeight-20; (У — координата левого верхнего угла}

h:=Forml.ClientHeight-40; // высота

w:=Forml.Width-40; // ширина

х1:=0; // нижняя граница диапазона аргумента

х2:=25; // верхняя граница диапазона аргумента

dx:=0.01; // шаг аргумента

{определение максимального и минимального значений функции на отрезке [xl,x2] для масштабирования}

yl:=f(xl); {минимальное значение функции}

y2:=f(xl); {максимальное значение функции}

x:=xl;

{вычислять значения функции для значений х<=х2 и определить максимальное и минимальное значения для масштабирования}

repeat y:=f(x); if y< then>

yl;=y; {если текущее значение у меньше минимального, то у1:=у}

if y>y2 then у2:=у; {если текущее значение у больше минимального, то у2:=у}

x:=x+dx; {перейти к следующему значению х}

until (x>=x2); {как только х>=х2. прекратить}

my:=h/abs(y2-yl); // масштаб по оси Y mx:=w/abs(x2-xl); // масштаб по оси X

{задать начало координат} х0:=1;

yO:=b-Abs(Round(yl*my));

with Forml.Canvas do {рисование графика}

begin

{начертить оси координат} MoveTo(I ,b);

LineTo(I,.b-h); {ось x} MoveTo(xO,yO);

LineTo(xO+w.yO); {ось у} Text0ut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));

{вывести максимальное значение}

TextOut(xO+w,yO,’x’); // подписать ось х TextOut(1+5,b,FloatToStrF(yl,ffGeneral,6,3));

{вывести минимальное значение}

Text0ut(l-7,b-h-5,’у’); // подписать ось у

{построение графика} x:=xl:

repeat {повторять рисовать точки}

y:=f(x); Forml. Canvas. Pixel s[xO+Round(x*mx),yO-Round(y*rny)]:=clRed;

{clRed — красный цвет рисования графика}

x:=x+dx;

until (x>=x2); {прекратить, как только х>=х2}

end;

end;

следующим образом: для изменения цвета графика измените значение свойства Forml.Canvas.Pixels с красного (cLRed) на синий (cLBlue):

repeat {рисовать точки}

y:=f(x);

Forml.Canvas.Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clBlue; {clBlue — синий цвет}

x:=x+dx;

until (x>=x2); {прекратить, как только х>=х2}

Сохраните измененное приложение, откомпилируйте его и проверьте его работу. Убедитесь, что в окне приложения выполняется построение графика заданной функции, причем цвет пикселов графика – синий.

Добавить комментарий