0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 14
1

Построение графика функций

03.03.2010, 01:17. Показов 1958. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: Изменить программу так, чтобы оси выводились зеленым цветом, а график функции - синим. Подписать оси координат.

Помогите вписать в программу следующее (у меня никак не получается):
Перед выводом осей координатной плоскости установить цвет пера clGreen и для подписи осей выполнить действия: Font.Name:='arial'; Font.Size:=10;
Textout(x0+5,y0+5,'y=2*sin(x)*exp(x/5)'); Textout(x0+w-5,y0-8,'>’);
Textout(x0+w-5,y0+5, ' X') ;
Textout(l-3,b-h-15,'/\ Y'); Для вывода графика синими пикселями установить цвет clBlue.

Вот сам график:
f(x) = 2sin x-e5

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
 
type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
    procedure FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
procedure GrOfFunc;
var x,y,
x1,y1,dx,x2,y2,mx,my:real;
l,b,h,w,x0,y0:integer;
function f (x:real):real;
begin
f:=2*sin(x)*exp(x/5);
end;
begin
l:=10;
b:=Form1.ClientHeight-20; h:=Form1.ClientHeight-40;
w:=Form1.ClientWidth-40;
x1:=0;x2:=25;
dx:=0.001;
y1:=f(x1);y2:=f(x2);
x:=x1;
repeat
y:=f(x);
if y<y1 then y1:=y;if y>y2 then y2:=y;
x:=x+dx;
until (x>=x2);
my:=h/abs(y2-y1);mx:=w/abs(x2-x1) ;
x0:=1;
y0:=b-abs(round(y1*my));
with Form1.Canvas do
begin
 
Moveto(l,b);lineto(l,b-h-13);
Moveto(x0,y0);lineto(x0+w,y0);
TextOut(1+5,b-h,FloatToStrF(y2,ffgeneral,6,3));
TextOut(1+5,b,FloatToStrF(y1,ffgeneral,6,3));
x:=x1;
repeat y:=f(x);
Form1.Canvas.Pixels [x0 + round(x*mx) , y0 -round(y*my)]:=clblack;
x:=x+dx;
until   (x>=x2);
end;
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
 GrOfFunc;
end;
 
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
with    form1     do    Canvas.FillRect(rect     (0,0, ClientWidth,   clientHeight));
GrOfFunc;
end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2010, 01:17
Ответы с готовыми решениями:

Построение графика функций y=f(x)
на форуме нашёл код, но выдаёт ошибку в плане preparation,recogn,ChangeVar. Помогите, с чем это...

Построение графика нескольких функций
1. Написать по заданному варианту функцию. 2. Реализовать построение с помощью примитивов по...

Построение графика функций через TChart
Я ещё не волшебник и только недавно начал на него учиться:) Суть проблемы (их больше на самом...

Построение графика
нужно построить график по двум столбцам из базы: DATAPRIH и SUMMA. Данные находятся в IBQuery....

1
59 / 58 / 9
Регистрация: 11.12.2009
Сообщений: 350
03.03.2010, 04:18 2
Дописал в твою процедуру:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
procedure GrOfFunc;
var x,y,
x1,y1,dx,x2,y2,mx,my:real;
l,b,h,w,x0,y0:integer;
 
function f (x:real):real;
begin
 f:=2*sin(x)*exp(x/5);
end;
 
begin
l:=10;
b:=Form1.ClientHeight-20;
h:=Form1.ClientHeight-40;
w:=Form1.ClientWidth-40;
x1:=0;
x2:=25;
dx:=0.001;
y1:=f(x1);
y2:=f(x2);
x:=x1;
repeat
y:=f(x);
if y<y1 then y1:=y;
if y>y2 then y2:=y;
x:=x+dx;
until (x>=x2);
my:=h/abs(y2-y1);
mx:=w/abs(x2-x1) ;
x0:=1;
y0:=b-abs(round(y1*my));
with Form1.Canvas do begin
 form1.Canvas.Pen.Color:=clGreen;             //********************
 Moveto(l,b);
 lineto(l,b-h-13);
 Moveto(x0,y0);
 lineto(x0+w,y0);
 TextOut(1+5,b-h,FloatToStrF(y2,ffgeneral,6,3));
 TextOut(1+5,b,FloatToStrF(y1,ffgeneral,6,3));
 x:=x1;
  repeat
   y:=f(x);
   Form1.Canvas.Pixels [x0 + round(x*mx) , y0 -round(y*my)]:=clblue;            //*****************
   x:=x+dx;
  until   (x>=x2);
end;
end;



1
03.03.2010, 04:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2010, 04:18
Помогаю со студенческими работами здесь

Построение графика
Необходимо построить график по полученным значениям по оси Х /// Входящей M11:=F1/23;...

Построение графика
Доброго времени суток,уважаемые форумчане! Пытаюсь нарисовать график по следующей формуле:...

Построение графика
Всем доброго времени суток. Есть программа, считающая определенные значения и записывающая их в...

Построение графика
Ребята, нужна помощь, есть программный код который рисует график функции, но он начинается Х и Y,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru