Форум программистов, компьютерный форум CyberForum.ru

Падение тела - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Denmark
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 10
24.12.2012, 20:20     Падение тела #1
Промоделировать падение тела с заданными характеристиками (массой, формой) в различных вязких средах. Изучить влияние вязкости среды на характер движения. Скорость движения должна быть столь невелика, чтобы квадратичной составляющей силы сопротивления можно было пренебрегать.


Есть метод Рунге Кутта, с помощью которого нужно выполнить задачу
C++
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
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <fstream>
 
using namespace std;
 
double m=1;
 
double Fx(double t, double x, double y)
{
       return y;
       }
 
double Fy(double t, double x, double y)
{
       return (  t*t   )/m;
       }
 
void RK4_2(int n, double * t, double * &x, double * &y)
{
 double h=(t[n-1]-t[0])/n; 
 double kx1,kx2,kx3,kx4, ky1,ky2,ky3,ky4, Kx,Ky;  
 for(int i=1; i<=n; i++)
 {
   kx1=Fx(t[i-1],x[i-1],y[i-1]);
   ky1=Fy(t[i-1],x[i-1],y[i-1]);
   
   kx2=Fx(t[i-1]+0.5*h, x[i-1]+0.5*h*kx1, y[i-1]+0.5*h*ky1);
   ky2=Fy(t[i-1]+0.5*h, x[i-1]+0.5*h*kx1, y[i-1]+0.5*h*ky1);
 
   kx3=Fx(t[i-1]+0.5*h, x[i-1]+0.5*h*kx2, y[i-1]+0.5*h*ky2);
   ky3=Fy(t[i-1]+0.5*h, x[i-1]+0.5*h*kx2, y[i-1]+0.5*h*ky2);
      
   kx4=Fx(t[i-1]+h, x[i-1]+h*kx3, y[i-1]+h*ky3);
   ky4=Fy(t[i-1]+h, x[i-1]+h*kx3, y[i-1]+h*ky3);
 
   Kx= kx1/6 + 2*kx2/6 + 2*kx3/6 + kx4/6;
   Ky= ky1/6 + 2*ky2/6 + 2*ky3/6 + ky4/6;
   x[i]=x[i-1]+h*Kx;     
   y[i]=y[i-1]+h*Ky;
        }     
    
}
 
 
int main(int argc, char *argv[])
{
    cout<<"rk4";
    
int n; 
double h, t0,tn, x0,y0;
double *t, *x, *y;
 
cout<<"t0="; cin>>t0;
cout<<"tn="; cin>>tn;
cout<<"n="; cin>>n;
cout<<"x0="; cin>>x0;
cout<<"y0="; cin>>y0;
 
t= new double [n+1];
x= new double [n+1];
y= new double [n+1];
 
h=(tn-t0)/n;
for (int i=0; i<=n; i++) t[i]=t0+i*h;
x[0]=x0; y[0]=y0;
 
RK4_2(n, t, x, y);
 
ofstream fn("d:\\dataRK.txt");
for (int i=0; i<=n; i++) fn<<t[i]<<" "<<x[i]<<" "<<y[i]<<endl;
fn.close();
 
cout<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2012, 20:20     Падение тела
Посмотрите здесь:

Падение шарика C++
Падение капли C++
Падение производительности на gcc C++
C++ Цикл без тела
Падение Release C++
C++ Падение снега
Смоделировать падение мяча C++
C++ Падение программы при вставке элемента в конец vector

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
liliya_031990
Сообщений: n/a
21.01.2013, 19:21     Падение тела #2
а вы в Excel делали эту задачу??? не могли б помочь сделать ее)
Yandex
Объявления
21.01.2013, 19:21     Падение тела
Ответ Создать тему
Опции темы

Текущее время: 22:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru