Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
SonyaBers
2 / 2 / 1
Регистрация: 06.10.2012
Сообщений: 16
1

Моделирование математического маятника

28.04.2013, 21:19. Просмотров 1305. Ответов 2
Метки нет (Все метки)

Программа моделирует работу маятника, выводит значения массивов. Но при выводе значений массивов y[1] и y[2] выводятся какие-то странные числа, а не точки. Подскажите что не так в коде
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    btn1: TButton;
    edt1: TEdit;
    edt2: TEdit;
    edt3: TEdit;
    edt4: TEdit;
    edt5: TEdit;
    lbl1: TLabel;
    lbl2: TLabel;
    lbl3: TLabel;
    lbl4: TLabel;
    lbl5: TLabel;
    lst1: TListBox;
    procedure edt1Change(Sender: TObject);
    procedure edt2Change(Sender: TObject);
    procedure edt3Change(Sender: TObject);
    procedure edt4Change(Sender: TObject);
    procedure edt5Change(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
{$R *.dfm}
type
mas = array [1..2] of real;
matrix = array [1..4,1..4] of real;
var
x, h, b:real;
i, j, n, m:integer;
Y:mas;
F:mas;
 
procedure PRAV(m:integer; var x:real; var Y, F:mas);//podprogramma PRAV
begin
F[1]:=Y[2];
F[2]:=Y[2]-((9.8/0.10)*sin(Y[1]));
end;
procedure RGK(m:integer; h:real; var x:real; var Y:mas);// podprogramma runge-kutta
var
y1:mas;
F:mas;
T:matrix;
j: integer;
begin
PRAV(m,x,Y,F);
for j:=1 to m do
begin
T[1,j]:=h*F[j];
y1[j]:=Y[j]+T[1,j]/2;
end;
x:=x+h/2;
PRAV(m,x,y1,F);
for j:=1 to m do
begin
T[2,j]:=h*F[j];
y1[j]:=Y[j]+T[2,j]/2;
end;
PRAV(m,x,y1,F);
for j:=1 to m do
begin
T[3,j]:=h*F[j];
y1[j]:=Y[j]+T[3,j]/2;
end;
x:=x+h/2;
PRAV(m,x,y1,F);
for j:=1 to m do
begin
T[4,j]:=h*F[j];
y1[j]:=Y[j]+(T[1,j]+2*T[2,j]+2*T[3,j]+T[4,j])/6;
end;
Y:=y1;
end;
 
 
procedure TForm1.edt1Change(Sender: TObject);
var
  x :Real;
begin
  x :=StrToFloat(edt1.Text);
end;
 
procedure TForm1.edt2Change(Sender: TObject);
var
  Y:mas;
begin
  Y[1]:=StrToFloat(edt2.Text);
end;
 
procedure TForm1.edt3Change(Sender: TObject);
 var
  Y:mas;
begin
   Y[2]:=StrToFloat(edt3.Text);
end;
 
procedure TForm1.edt4Change(Sender: TObject);
begin
  h:=StrToFloat(edt4.Text);
end;
 
procedure TForm1.edt5Change(Sender: TObject);
var
  b:Real;
begin
  b:=StrToFloat(edt5.Text);
end;
 
procedure TForm1.btn1Click(Sender: TObject);
begin
  x :=StrToFloat(edt1.Text);
  Y[1]:=StrToFloat(edt2.Text);
  Y[2]:=StrToFloat(edt3.Text);
  h:=StrToFloat(edt4.Text);
  b:=StrToFloat(edt5.Text);
n:=round((b-x)/h);
for i:=1 to n do
begin
        RGK(m,h,x,y);
       lst1.Items.Add('  '+IntToStr(i)+'   '+ FloatToStr(x)+'   '+FloatToStr(Y[1])+'   '+FloatToStr(Y[2])+'  ');
 
 end;
end;
end.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2013, 21:19
Ответы с готовыми решениями:

Анимация математического маятника через таймер
Анимация математического маятника через таймер

Нужно сделать счетчик, который считает количество колебаний математического маятника
Нужно сделать счетчик, который считает количество колебаний математического маятника. Можно...

Анализ движения математического маятника
Здравствуйте. пишу программу про анализ движения математического маятника. Программа до горя...

движение маятника
var Form1: TForm1; n:real; implementation {$R *.dfm} procedure...

Моделирование математического маятника
MathCad Сидел писал данную работу по видео уроку, но что то я упустил и не могу понять что....

2
Cyborg Drone
Модератор
5941 / 3512 / 2571
Регистрация: 17.08.2012
Сообщений: 11,263
29.04.2013, 23:53 2
Цитата Сообщение от SonyaBers Посмотреть сообщение
Delphi
1
lst1.Items.Add(' '+IntToStr(i)+' '+ FloatToStr(x)+' '+FloatToStr(Y[1])+' '+FloatToStr(Y[2])+' ');
Цитата Сообщение от SonyaBers Посмотреть сообщение
выводятся какие-то странные числа, а не точки
Числа и выводятся, а не точки. Вы, вероятно, график точками желаете нарисовать?
1
SonyaBers
2 / 2 / 1
Регистрация: 06.10.2012
Сообщений: 16
09.05.2013, 15:15  [ТС] 3
Не, я имела ввиду, что не те числа выходят, неправильные. Ошибка в коде. Уже исправила.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2013, 15:15

Моделирование колебаний математического маятника с коэф. затухания
помогите записать в маткаде то что на фото. Очень надо. Пожалуйста!!!

Моделирование маятника: измерить время движения маятника с начала его движения до полной остановки
Подскажите пожалуйста какую формулу в данном коде добавить чтоб измерялось время движения маятника...

Движение математического маятника
Всем привет. Нужно срочно написать программу движения математического маятника на C#. Отклонение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.