Результаты исследований студентов в проекте графика в Delphi

Материал из НГПУ им. К.Минина
Перейти к: навигация, поиск

Авторы и участники проекта

Кабанов Максим Кобылянский Александр

Тема исследования группы

Математические задачи в Delphi.

Проблемный вопрос (вопрос для исследования)

Как с помощью Delphi решить математическую задачу?


Цели исследования

1.Познакомиться с графическими операторами в Delphi.

2.Подобрать задачу,выполнить постановку задачи.

3.Разработать алгоритм и программу решения задачи.

4.Проанализировать результаты.

Результаты проведённого исследования

Нами была подобрана задача о построении графика функции.

Код программы:

unit grfunc_;

interface

uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type

 TForm1 = class(TForm)
   procedure FormPaint(Sender: TObject);
   procedure FormResize(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var

 Form1: TForm1;

implementation

{$R *.DFM}

// Функция, график которой надо построить

Function f(x:real):real;
begin
   f:=2*Sin(x)*exp(x/5);
end;

// строит график функции procedure GrOfFunc; var

x1,x2:real;    // границы изменения аргумента функции
y1,y2:real;    // границы изменения значения функции
x:real;        // аргумент функции
y:real;        // значение функции в точке x
dx:real;       // приращение аргумента
l,b:integer;   // левый нижний угол области вывода графика
w,h:integer;   // ширина и высота области вывода графика
mx,my:real;    // масштаб по осям X и Y
x0,y0:integer; // точка - начало координат

begin

// область вывода графика
l:=10;                     // X - координата левого верхнего угла
b:=Form1.ClientHeight-20;  // Y - координата левого верхнего угла
h:=Form1.ClientHeight-40;  // высота
w:=Form1.Width-40;         // ширина
x1:=0;     // нижняя граница диапазона аргумента
x2:=25;    // верхняя граница диапазона аргумента
dx:=0.01;  // шаг аргумента
// найдем максимальное и минимальное значения
//  функции на отрезке [x1,x2]
y1:=f(x1); // минимум
y2:=f(x1); // максимум
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);  // масштаб по оси Y
mx:=w/abs(x2-x1);  // масштаб по оси X
// оси
x0:=l;
y0:=b-Abs(Round(y1*my));
with form1.Canvas do
begin
  // оси
  MoveTo(l,b);LineTo(l,b-h);
  MoveTo(x0,y0);LineTo(x0+w,y0);
  TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
  TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3));
  // построение графика
  x:=x1;
  repeat
    y:=f(x);
    Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
    x:=x+dx;
  until (x>=x2);
end;

end;


procedure TForm1.FormPaint(Sender: TObject); begin

 GrOfFunc;

end;

// изменился размер окна программы procedure TForm1.FormResize(Sender: TObject); begin

 // очистить форму
 form1.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));
 // построить график
 GrOfFunc;

end;

end. 800px-Кобылянский и Кабанов.JPG

Вывод

Использование языка Delphi обладает широкими графическими возможностями для решения математических задач.Например для построения графика функции.

Полезные ресурсы

Другие документы