Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

simlig

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
 
unit TEST;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, Grids, Series;
 
type
  TForm1 = class(TForm)
    Chart1: TChart;
    Series1: TLineSeries;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
const NN = 2;
 
type TDArrayD = array of Double;
     TDArrayI = array of Integer;
     TArrayNND = array [1..NN] of Double;
     TArrayNNnD = array [0..NN] of Double;
     TArray1I = array [1..1] of Integer;
     Todef = procedure (
              n: Integer;
              x: Double;
          var y: TArrayNND;
          var f: TArrayNND;
          var rpar: TArrayNNnD;
          var ipar: TArray1I
              ); stdcall;
 
procedure odef(
              n: Integer;
              x: Double;
          var y: TArrayNND;
          var f: TArrayNND;
          var rpar: TArrayNNnD;
          var ipar: TArray1I
              ); stdcall;
 
procedure radau5solver(
                      neqn: Integer;
                  var t: TArrayNNnD;
                  var y: TArrayNND;
                      odef: Todef;
                  var rtol: TArrayNND;
                  var atol: TArrayNND;
                      h0: Double
                      ); stdcall;
 
implementation
 
{$R *.dfm}
 
procedure odef(
              n: Integer;
              x: Double;
          var y: TArrayNND;
          var f: TArrayNND;
          var rpar: TArrayNNnD;
          var ipar: TArray1I
              ); stdcall;
begin
  ShowMessage('OoOoo');
  ShowMessage(IntToStr(n));
//  f[0] := y[1];
//  f[1] := ((1-sqr(y[0]))*y[1]-y[0])/0.000001;
end;
 
procedure radau5solver(
                      neqn: Integer;
                  var t: TArrayNNnD;
                  var y: TArrayNND;
                      odef: Todef;
                  var rtol: TArrayNND;
                  var atol: TArrayNND;
                      h0: Double
                      ); stdcall; external 'radau5solver.dll' name 'radau5solver';
 
procedure TForm1.FormCreate(Sender: TObject);
var neqn: Integer;
    h0: Double;
    t: TArrayNNnD;
    y, rtol, atol: TArrayNND;
    Fil: TextFile;
    K, i: Integer;
    Outs: array of array of Double;
begin
    neqn := 2;
//    SetLength(t,neqn+1);
//    SetLength(y,neqn);
//    SetLength(rtol,neqn);
//    SetLength(atol,neqn);
    h0 := 0.000001;
    rtol[1] := 0.000001;
    atol[1] := 0.000000001;
    t[0] := 0;
    t[1] := 2;
    y[1] := 2;
    y[2] := 0;
    radau5solver(neqn,t,y,odef,rtol,atol,h0);
 
    AssignFile(Fil, 'vdpolRADAU5.txt');
    {$I-}                           // îòêëþ÷åíèå êîíòðîëÿ îøèáîê ââîäà-âûâîäà
    Reset(Fil);                     // îòêðûòèå ôàéëà äëÿ ÷òåíèÿ
    {$I+}                           // âêëþ÷åíèå êîíòðîëÿ îøèáîê ââîäà-âûâîäà
    if IOResult <> 0 then           // &#229;&#241;&#235;&#232; &#229;&#241;&#242;&#252; &#238;&#248;&#232;&#225;&#234;&#224; &#238;&#242;&#234;&#240;&#251;&#242;&#232;&#255;, &#242;&#238;
      begin
      ShowMessage('&#206;&#248;&#232;&#225;&#234;&#224; &#238;&#242;&#234;&#240;&#251;&#242;&#232;&#255; &#244;&#224;&#233;&#235;&#224;');
      Exit;                         // &#226;&#251;&#245;&#238;&#228; &#232;&#231; &#239;&#240;&#238;&#246;&#229;&#228;&#243;&#240;&#251; &#239;&#240;&#232; &#238;&#248;&#232;&#225;&#234;&#229; &#238;&#242;&#234;&#240;&#251;&#242;&#232;&#255; &#244;&#224;&#233;&#235;&#224;
      end;
 
    K := 0;
    while not Eof(Fil) do
    begin
    SetLength(Outs,3,K+1);
    Readln(Fil, Outs[0,K], Outs[1,K], Outs[2,K]);
    Inc(K);
    end;
    CloseFile(Fil);
 
    for i := 0 to K-1 do
        begin
        Series1.AddXY(Outs[0,i],Outs[1,i]);
        end;
 
end;
 
end.
 


Всего записей: 4 | Зарегистр. 24-03-2011 | Отправлено: 19:51 24-03-2011
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru