Измените приложение (упражнение 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} Сохраните измененное приложение, откомпилируйте его и проверьте его работу. Убедитесь, что в окне приложения выполняется построение графика заданной функции, причем цвет пикселов графика – синий. |