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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2012, 19:04   #1
SL1M_DOGG
Пользователь
 
Регистрация: 08.06.2009
Сообщений: 96
Счастье нужно направить и посчитать данные в поиск решения или напишите нормальный алгоритм множителей Лагранжа

Есть незаконченый код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, Math;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s0,smin,sav,smax,xp,p,r1a,r2a,r3a,ap,smina,smaxa,r1aa,r2aa,r1a3,r2a3,x,r1a13,r1a23,r2a13,r3a13: array [1..4] of real;
  I,t: Integer;
var rp1,rp2,rp3,rp1a,rp3a,a,da,summ,rmina,rmaxa,risk,riska,rmin,rmax,r: real;
begin
rp1:=strtofloat(edit3.text);
rp2:=strtofloat(edit4.text);
rp3:=strtofloat(edit5.text);
a:=strtofloat(edit6.text);
da:=strtofloat(edit7.text);
risk:=strtofloat(edit8.text);

 for I := 1 to StringGrid1.Rowcount do
  with stringgrid1 do
  begin
  s0(i):=cells(1,i-1);
  smin(i):=cells(2,i-1);
  sav(i):=cells(3,i-1);
  smax(i):=cells(4,i-1);
  xp(i):=cells(5,i-1);
  p(i):=cells(6,i-1);
end;
  t:=StrToInt(edit2.Text);
  for I := 1 to 4 do
  ap(i):=(xp(i)-smin(i))/(sav(i)-smin(i));
  r1a(i):=(smin(i)-s0(i))/(t*s0(i));
  r2a(i):=(sav(i)-s0(i))/(t*s0(i));
  r3a(i):=(smax(i)-s0(i))/(t*s0(i));
  r1a13(i):=(xp(i)-p(i)-s0(i))/(t*s0(i));
  r1a23(i):=(xp(i)-s0(i))/(sav(i)-smin(i));
  r2a13(i):=(sav(i)-p(i)-s0(i))/(t*(s0(i)+p(i)));
  r3a13(i):=(smax(i)-p(i)-s0(i))/(t*(s0(i)+p(i)));
  smina(i):=smin(i)+ap(i)*(sav(i)-smin(i));
  smaxa(i):=smax(i)+ap(i)*(sav(i)-smax(i));
  r1aa(i):=(smina(i)-s0(i))/(t*s0(i));
  r2aa(i):=(smaxa(i)-s0(i))/(t*s0(i));
  if (a>=0) and (a<=ap[i]) then
  r1a3(i):=(xp(i)-p(i)-s0(i))/(t*(p(i)+s0(i)));
  if (a>=ap(i)) and (a<=1) then
  r1a3(i):=(smina(i)-s0(i))/(t*s0(i));
  r2a3(i):=(smaxa(i)-p(i)-s0(i))/(t*(p(i)+s0(i)));
  rmina:=r1aa(i)*x(i)+r1a3(i)*x(i);
  rmaxa:=r2aa(i)*x(i)+r2a3(i)*x(i);
  if rp3a<rmina then
  riska:=0;
  if (rp1a<=rmina) and (rmina<=rp3a) and (rp3a<=rmaxa) then
  riska:=((power(2,(rp3a-rmina)))/(2*(rp3a-rp1a)*(rmaxa-rmina)));
  if (rmina<=rp1a) and (rp1a<=rp3a) and (rp3a<=rmaxa) then
  riska:=(((rp1a-rmina)+(rp3a-rmina))/(2*(rmaxa-rmina)));
  if (rp1a<=rmina) and (rmina<=rmaxa) and (rmaxa<=rp3a) then
  riska:=(((rp3a-rmaxa)+(rp3a-rmina))/(2*(rp3a-rp1a)));
  if (rmina<=rp1a) and (rp1a<=rmaxa) and (rmaxa<=rp3a) then
  riska:=(1-(((power(2,(rmaxa-rp1a))))/(2*(rp3a-rp1a)*(rmaxa-rmina))));
  if (rmaxa<=rp1a) then
  riska:=1;
end;

procedure TForm1.Edit1Change(Sender: TObject);
var k: integer;
begin
 k:=strtoint(edit1.text);
 StringGrid1.RowCount:=k+1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[1,0]:='S0';
StringGrid1.Cells[2,0]:='Smin';
StringGrid1.Cells[3,0]:='Sav';
StringGrid1.Cells[4,0]:='Smax';
StringGrid1.Cells[5,0]:='Xp';
StringGrid1.Cells[6,0]:='P';
end;

end.
здесь нужно rmina взять как целевую функцию, изменять массив x при ограничениях riska=risk & summ x<=1

ДАС ИСТ ДИПЛОМ!! НУЖНО СДАТЬ ПОСЛЕЗАВТРА! ГОРИТ
SL1M_DOGG вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно разобрать готовый алгоритм решения задачи в среде Паскаль TaylorGang Помощь студентам 0 14.11.2011 22:17
нормальный алгоритм маркова Пьеро Помощь студентам 1 29.11.2010 10:08
Нормальный алгоритм Маркова Пьеро Помощь студентам 1 25.11.2010 16:02
Направить данные в Opera-у вместо IE Dj_SheLL Общие вопросы Delphi 4 10.04.2010 18:58
нормальный алгоритм Маркова Gimi Помощь студентам 1 20.01.2009 19:07