Форум по 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 просмотров)
Ответить с цитированием
  #2  
Старый 17.07.2011, 16:28
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

А чем тебе твой вариант не нравится?
Ответить с цитированием
  #3  
Старый 17.07.2011, 20:47
fonochka fonochka вне форума
Прохожий
 
Регистрация: 17.07.2011
Сообщения: 10
Репутация: 10
По умолчанию

Так мой вариант линию не чертит(( А мне нужно, чтобы чертил по коэффициентам...
Ответить с цитированием
  #4  
Старый 17.07.2011, 20:57
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Сделай массивы а, b, c и передавай их в процедуру рисования.
Ответить с цитированием
  #5  
Старый 17.07.2011, 22:32
fonochka fonochka вне форума
Прохожий
 
Регистрация: 17.07.2011
Сообщения: 10
Репутация: 10
По умолчанию

А что в эти массивы помещать??? Я не понимаю как-то...
Ответить с цитированием
  #6  
Старый 17.07.2011, 22:37
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от fonochka
... не могу найти в делфи функцию, которая бы рисовала прямую по коэффициентам...
Polyline не подходит?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 17.07.2011, 22:54
fonochka fonochka вне форума
Прохожий
 
Регистрация: 17.07.2011
Сообщения: 10
Репутация: 10
По умолчанию

Насколько я понимаю PolyLine соединяет точки, а мне не нужно чтобы точки соединялись. Мне нужно, чтобы прямая строилась по уравнению прямой. То есть у меня в задаче находятся коэффициенты этой прямой по методу наименьших квадратов и мне нужно построить прямую. Вроде просто все, но не получается((
Ответить с цитированием
  #8  
Старый 17.07.2011, 23:01
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от fonochka
... не могу найти в делфи функцию, которая бы рисовала прямую по коэффициентам...

Цитата:
Сообщение от fonochka
Насколько я понимаю PolyLine соединяет точки, а мне не нужно чтобы точки соединялись...

Прямая в программировании и в геометрии несколько отличаются.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 17.07.2011, 23:09
fonochka fonochka вне форума
Прохожий
 
Регистрация: 17.07.2011
Сообщения: 10
Репутация: 10
По умолчанию

Я старалась все доходчиво объяснить, жаль что мы друг друга не поняли..
Ответить с цитированием
  #10  
Старый 17.07.2011, 23:27
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Поняли, поняли. Я просто показал несоответствие в сообщениях.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 18.07.2011, 00:25
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от angvelem
Прямая в программировании и в геометрии несколько отличаются.

А чем??
Ответить с цитированием
  #12  
Старый 18.07.2011, 00:41
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Хотя бы тем, что она должна быть отрисована визуально. В геометрии это абстракция.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #13  
Старый 18.07.2011, 00:48
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от angvelem
Хотя бы тем, что она должна быть отрисована визуально. В геометрии это абстракция.

Какая абстракция, вообще причем тут абстракция. Линия она и в Африке линия, точно так же как и геометрии и программировании.
Ответить с цитированием
  #14  
Старый 18.07.2011, 00:55
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Да ну? Интересно, какая линия между Землёй и Луной - наверно толстая, канат. Но это всё оффтоп, желающие за школьную парту по-новой.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #15  
Старый 18.07.2011, 01:11
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Товарищи... помогаем девушке, давайте ) Покажите вашу главную "мышцу" ))

Вопрос к автору: что в массиве D?
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter