Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.07.2011, 13:55
fonochka fonochka вне форума
Прохожий
 
Регистрация: 17.07.2011
Сообщения: 10
Репутация: 10
По умолчанию Нарисовать линию по коэффициентам

Доброго времени суток, уважаемые программисты!
Такая проблема - не могу найти в делфи функцию, которая бы рисовала прямую по коэффициентам. У меня задача состоит в построении прямой по методу наименьших квадратов. Все работает, кроем построения самой прямой(( Подскажите как решить....
Вот код
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Series, TeEngine, TeeProcs, Chart, ExtCtrls, StdCtrls, Math;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Chart1: TChart;
    Series1: TPointSeries;
    Series2: TLineSeries;
    LabeledEdit1: TLabeledEdit;
    Button1: TButton;
    Label1: TLabel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var D: array of real;
  ReadOk: boolean;
  ff: textfile;

  {$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Form1.OpenDialog1.Execute then
    Form1.LabeledEdit1.Text := Form1.OpenDialog1.FileName;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i, n: LongWord;
  a,b,sx,sxx,sxy: real;
begin
  ReadOk := true;
  SetLength(D, 0);
  Try
    AssignFile(ff, Form1.LabeledEdit1.Text);
    Reset(ff);
    Try
      while not(EOF(ff)) do
      begin
        SetLength(D, Length(D)+1);
        readln(ff, D[Length(D)-1]);
      end;
    finally
      CloseFile(ff);
    end;
  except
    ReadOk := false;
  end;
  if ReadOk then
  begin
    sx := 0;
    sxx := 0;
    sxy := 0;
    n := Length(D);
    for i := 1 to n do
    begin
      sx := sx + D[i];
      sxx := sxx + D[i]*D[i];
      sxy := sxy + D[i]*i;
    end;
    a := (sxy - 1)/(sxx - sx*sx/n);
    b := 1 - sx/n*a;
    Form1.Label1.Caption := 'y = '+floattostr(RoundTo(a,-2))+' x + '+floattostr(RoundTo(b,-2));
  end
  else
    Form1.Label1.Caption := 'Ошибка загрузки данных';
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  i, n: LongWord;
begin
  n := Length(D);
  for i:=0 to (n div 2) - 1 do begin
      Form1.Chart1.Series[0].AddXY(D[i*2],D[i*2+1]);
  end;
end;

procedure TForm1.Button4Click(Sender: TObject);  //это пробный вариант, ну и похоже бредовый
var
 a,b : Real;
 m : Integer;
begin
  for m:= -20 to 20 do
  begin
    Chart1.Series[2].AddXY(m,m*a+b);
  end;
end;

end.
Вложения
Тип файла: rar проба2.rar (239.0 Кбайт, 5 просмотров)
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter