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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.12.2011, 20:10
BACARDInk BACARDInk вне форума
Прохожий
 
Регистрация: 19.12.2011
Сообщения: 4
Репутация: 10
По умолчанию нужна помощь.

Здравствуйте. Тут такой проблема, написана программка, Решение дифференциальных уравнений методом Милна. Проблема в том,что значения какие-то странные. Может кто помочь? Не знаю,что не так
Вот код:
PHP код:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsGridsStdCtrls;

type
  TForm1 
= class(TForm)
    
Edit1TEdit;
    
Edit2TEdit;
    
Label1TLabel;
    
Label2TLabel;
    
Button1TButton;
    
Button2TButton;
    
Button3TButton;
    
GroupBox1TGroupBox;
    
GroupBox2TGroupBox;
    
StringGrid1TStringGrid;
    
Edit3TEdit;
    
Label4TLabel;
    
procedure FormCreate(SenderTObject);
    
procedure Button1Click(SenderTObject);
    
procedure Button2Click(SenderTObject);
    
procedure Button3Click(SenderTObject);

  private
    { Private 
declarations }

  public
    { Public 
declarations }
  
end;
Const
n=10;
eps=10e-6;
var
  
Form1TForm1;
    
x0,y0,z0,h:real;
  
k1,k2,k3,k4:real;
  
r1,r2,r3,r4:real;
  
abs_pogr:real;
   
z,zkor,zpr,ypr,ykor,x,y:array [0..nof real;
  
i,j:integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(SenderTObject);
begin
StringGrid1
Cells[0,0]:='x';
StringGrid1Cells[1,0]:='y';
StringGrid1Cells[2,0]:='z';
end;

function 
f1(xa,ya,za:real):real;
begin
  f1
:=2*sqr(xa)+2*ya+za;
end;
 
function 
f2(xa,ya,za:real):real;
begin
  f2
:=1-2*sqr(xa)+2*ya-za;
end;

procedure TForm1.Button1Click(SenderTObject);
begin
x0
:=Strtofloat(Edit1.Text);
y0:=Strtofloat(Edit2.Text);
h:=Strtofloat(Edit2.Text);
end;

procedure TForm1.Button2Click(SenderTObject);
begin
x
[0]:=x0;
  
y[0]:=y0;
  
z[0]:=y0;
  
i:=0;
  { 
Gotovim 1-e 3 tochki po metodu runge-kutta }
  while 
i<=3  do
    
begin
      k1
:=h*f1(x[i],y[i],z[i]);
      
r1:=h*f2(x[i],y[i],z[i]);
      
k2:=h*f1(x[i]+h/2,y[i]+k1/2,z[i]+r1/2);
      
r2:=h*f2(x[i]+h/2,y[i]+k1/2,z[i]+r1/2);
      
k3:=h*f1(x[i]+h/2,y[i]+k2/2,z[i]+r2/2);
      
r3:=h*f2(x[i]+h/2,y[i]+k2/2,z[i]+r2/2);
      
k4:=h*f1(x[i]+h,y[i]+k3,z[i]+r3);
      
r4:=h*f2(x[i]+h,y[i]+k3,z[i]+r3);
      
y[i+1]:=y[i]+(k1+2*k2+2*k3+k4)/6;
      
z[i+1]:=z[i]+(r1+2*r2+2*r3+r4)/6;
      
x[i+1]:=x[i]+h;
      
i:=i+1;
       
i:=4;
  while 
x[i]<=1.0+h{epsabs_pogr} do
    
begin
  
etap prognoza i korrektsii}
      
ypr[i]:=y[i-4]+(4*h)/3*(2*f1(x[i-3],y[i-3],z[i-3])-f1(x[i-2],y[i-2],z[i-2])+2*f1(x[i-1],y[i-1],z[i-1]));
      
ykor[i]:=y[i-2]+(h/3)*(f1(x[i-2],y[i-2],z[i-2])+4*f1(x[i-1],y[i-1],z[i-1])+f1(x[i],ypr[i],z[i]));
      
zpr[i]:=z[i-4]+(4*h)/3*(2*f2(x[i-3],y[i-3],z[i-3])-f2(x[i-2],y[i-2],z[i-2])+2*f2(x[i-1],y[i-1],z[i-1]));
      
zkor[i]:=z[i-2]+(h/3)*(f2(x[i-2],y[i-2],z[i-2])+4*f2(x[i-1],y[i-1],z[i-1])+f2(x[i],zpr[i],z[i]));
       
abs_pogr:=abs(ykor[i]-ypr[i])/29;
      if 
abs_pogr>eps then
        y
[i]:=ykor[i]
      else
          
y[i]:=ypr[i];
      
abs_pogr:=abs(zkor[i]-zpr[i])/29;
      if 
abs_pogr>eps then
        z
[i]:=zkor[i]
      else
          
z[i]:=zpr[i];
      
x[i+1]:=x[i]+h;
      
i:=i+1;
    
end;
     for 
i:=1 to n+do
     
begin
StringGrid1
.Cells[0,i] := FloatToStr(x[i]);
StringGrid1.Cells[1,i] := FloatToStr(y[i]);
StringGrid1.Cells[2,i] := FloatToStr(z[i]);
end;
end;
end;

procedure TForm1.Button3Click(SenderTObject);
begin
close
end
;
end
Ответить с цитированием
  #2  
Старый 22.12.2011, 20:11
BACARDInk BACARDInk вне форума
Прохожий
 
Регистрация: 19.12.2011
Сообщения: 4
Репутация: 10
По умолчанию

результаты счета не могу выложить
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter