Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 19:00   #1
xcripz
 
Регистрация: 13.04.2010
Сообщений: 5
Вопрос Не получается вывести график

Добрый день. помогите пожалуйста разобраться - график выводит не то что нужно.
У меня линейная функция loss:=alfa*L - с увеличением длины L должны увеличиваться потери.

Код:
unit Unit3;

interface

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

type
  TForm1 = class(TForm)
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Edit3: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit4: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Bevel1: TBevel;
    Edit1: TEdit;
    Label8: TLabel;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  A, B, i: Integer;
  Loss, lambda, f, L, sigma, alfa: real;

implementation

{$R *.dfm}

function findLambda(f:real):real;
begin
result:=300/f;
end;

function findSigma(f:real):real;
begin
result:=-9769.9+9260.3*exp(0.00013011*f);
end;

function findAlfa(a, b:integer; f:real):real;
begin
  result:=1000*(1.585*((1/b)+sqr(findLambda(f))/(2*Exp(3*ln(a))))*1/sqr(findLambda(f)*findSigma(f)*(1-sqr(findLambda(f)/(2*a)))));
end;

function findLoss(a, b:integer; f,L:real):real;
begin
result:=(findAlfa(a,b,f)*L);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    x,y:real;
begin

  try
  A:=StrToInt(trim(Edit1.Text));
  except label2.font.color:=clRed;
  end;

  try
  B:=StrToInt(trim(Edit2.Text));
  except label8.Caption:=('Проверьте значение высоты!');
  end;

  try
  L:=StrToFloat(trim(Edit3.Text));
  except label8.Caption:=('Проверьте значение длины!');
  end;

  try
  f:=StrToInt(trim(Edit4.Text));
  except label8.Caption:=('Проверьте значение частоты!');
  end;

 Image1.Canvas.Pen.Color:=clSilver;
 Image1.Canvas.MoveTo(20, Image1.Height-20);
 Image1.Canvas.LineTo(Image1.Width-20, Image1.Height-20);
 Image1.Canvas.MoveTo(20, 20);
 Image1.Canvas.LineTo(20, Image1.Height-20);

 for i:=1 to Image1.Width do
 begin
   x:=i;
   y:=findLoss(a,b,f,x);
   //y:=sin(x)*50;
   Image1.Canvas.Pixels[20 + trunc(x),Image1.Height - 20 + round(y)]:=clRed;
 end;

 Sigma:=findSigma(f);
 Alfa:=findAlfa(a,b,f);
 Loss:=findLoss(a,b,f,l);

Label1.Caption:=('Sigma=')+FloatToStrF(sigma,ffGeneral,4,2)+('  См/м')+(#10+#13)+('Alfa=')+FloatToStrF(alfa,ffGeneral,4,2)+(' *0.001  дБ/м')+(#10+#13)+('Loss=')+FloatToStrF(Loss,ffGeneral,4,2)+('  дБ');
end;

end.
Изображения
Тип файла: jpg 2.jpg (81.1 Кб, 25 просмотров)
xcripz вне форума Ответить с цитированием
Старый 18.10.2011, 23:23   #2
xcripz
 
Регистрация: 13.04.2010
Сообщений: 5
По умолчанию

Попробовал на TChart - вместо прямой линии ступеньки какие то(
Помогите пожалуйста кто-нибудь!
Изображения
Тип файла: jpg Untitled-1.jpg (91.0 Кб, 31 просмотров)
xcripz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Не получается вывести текст в Label murmuno Помощь студентам 4 26.03.2010 10:50
вывод числа из ax, не получается вывести большое число zmaxon Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 07.12.2009 00:09
не получается вывести текст sum42 Общие вопросы C/C++ 15 29.11.2008 18:55
Множества. Не получается вывести результат RECREATOR Общие вопросы Delphi 3 24.12.2007 23:31
Не получается вывести график RECREATOR Общие вопросы Delphi 7 23.12.2007 01:23