Расчет динамики разгона судна.




Рис 7. Параболическая аппроксимация 4й степени исходных функций R(V) и T(V).

 

R(v)= 0.0489*x*x*x*x-6.4743*x*x*x+251.1*x*x-1783.8*x+1112

T(v)= -0.0079*x*x*x*x+0.5714*x*x*x-20.918*x*x+176.02*x+59860

Определение стационарной скорости.

Для нахождения интервала изоляции используем шаговый метод:

# include <iostream.h>

# include <math.h>

 

double f (double x)

{return(0.0489*x*x*x*x-6.4743*x*x*x+251.1*x*x-1783.8*x+1112

)-(-0.0079*x*x*x*x+0.5714*x*x*x-20.918*x*x+176.02*x+59860);}

 

void main ()

{ double a,h;

a=0;

h=1;

 

 

while(f(a)*f(a+h)>0)

 

{a=a+h;}

{cout<<"koren ot"<<a<<"from"<<a+h<<endl;}

a=a+h;}

Корень от 18 до 19

 

Для определения значения стационарной скорости используем метод половинного деления:

#include <iostream.h>

#include <math.h>

double f(double x)

{return ((0.0489*x*x*x*x-6.4743*x*x*x+251.1*x*x-1783.8*x+1112

)-(-0.0079*x*x*x*x+0.5714*x*x*x-20.918*x*x+176.02*x+59860));}

void main ()

{ double a,b,c,e;

a=18;

b=19;

e=0.001;

c=(a+b)/2;

while (fabs(f(c))>e)

 

{cout<<c<<endl;

if (f(a)*f(c)<=0)

{b=c;}

else

{a=c;}

c=(a+b)/2;}

cout<<"x="<<c<<endl;}

Стационарная скорость Vст=18.5206 с

 

Определение времени разгона осуществляется методом трапеций:

#include <iostream.h>

#include <math.h>

double f(double x)

{return (52900/((0.0489*x*x*x*x-6.4743*x*x*x+251.1*x*x-1783.8*x+1112

)-(-0.0079*x*x*x*x+0.5714*x*x*x-20.918*x*x+176.02*x+59860)

));}

void main ()

{double t,a,h,b;

a=0;

b=18.5206;

t=0;

h=0.001;

while (a<b)

{t=t+h*((f(a)+f(a+h))/2);

a=a+h;}

cout<<"vremya razgona = "<<t<<endl;}

Время разгона t=57.0884 с

 

 

Путь разгона находим методом Эйлера:

#include <iostream.h>

#include <math.h>

#include <fstream.h>

int x;

double f(double t)

 

{return fabs ((0.0489*x*x*x*x-6.4743*x*x*x+251.1*x*x-1783.8*x+1112

)-(-0.0079*x*x*x*x+0.5714*x*x*x-20.918*x*x+176.02*x+59860)

)/52900;}

 

 

void main ()

{ double t,s,x,b,h,k;

{ofstream onstr1;

ofstream onstr2;

ofstream onstr3;

onstr1.open("data1.txt");

onstr2.open("data2.txt");

onstr3.open("data3.txt");

b=57.0884;

h=b/100;

k=0;

x=0;s=0;

t=0;

while (t<=b)

{x=x+h*(((0.0489*x*x*x*x-6.4743*x*x*x+251.1*x*x-1783.8*x+1112

)-(-0.0079*x*x*x*x+0.5714*x*x*x-20.918*x*x+176.02*x+59860))/52900);

s=s+x*h;

t=t+h;

k=k++;

onstr1<<" "<<t<<endl;

onstr2<<" "<<x<<endl;

onstr3<<" "<<s<<endl;}

onstr1.close();

onstr2.close();onstr3.close();}cout<<"k="<<k<<endl;}

Время Скорость Путь разгона
0.570884 1.14177 1.71265 2.28354 2.85442 3.4253 3.99619 4.56707 5.13796 5.70884 6.27972 6.85061 7.42149 7.99238 8.56326 9.13414 9.70503 10.2759 10.8468 11.4177 11.9886 12.5594 13.1303 13.7012 14.2721 14.843 15.4139 15.9848 16.5556 17.1265 17.6974 18.2683 18.8392 19.4101 19.9809 20.5518 21.1227 21.6936 22.2645 22.8354 23.4062 23.9771 24.548 25.1189 25.6898 26.2607 26.8315 27.4024 27.9733 28.5442 29.1151 29.686 30.2569 30.8277 31.3986 31.9695 32.5404 33.1113 33.6822 34.253 34.8239 35.3948 35.9657 36.5366 37.1075 37.6783 38.2492 38.8201 39.391 39.9619 40.5328 41.1036 41.6745 42.2454 42.8163 43.3872 43.9581 44.529 45.0998 45.6707 46.2416 46.8125 47.3834 47.9543 48.5251 49.096 49.6669 50.2378 50.8087 51.3796 51.9504 52.5213 53.0922 53.6631 54.234 54.8049 55.3757 55.9466 56.5175 57.0884 0.846504 1.70461 2.54948 3.36283 4.13358 4.85674 5.53172 6.16067 6.7472 7.29552 7.80992 8.29447 8.75293 9.18862 9.60449 10.0031 10.3867 10.7571 11.116 11.4647 11.8043 12.1359 12.46 12.7772 13.0879 13.3923 13.6905 13.9824 14.2677 14.5461 14.8172 15.0804 15.3353 15.5811 15.8172 16.0431 16.2581 16.4618 16.6537 16.8337 17.0014 17.157 17.3005 17.4322 17.5524 17.6617 17.7605 17.8494 17.9293 18.0006 18.0641 18.1205 18.1704 18.2145 18.2533 18.2875 18.3174 18.3437 18.3666 18.3867 18.4042 18.4195 18.4328 18.4444 18.4544 18.4632 18.4708 18.4774 18.4832 18.4881 18.4925 18.4962 18.4995 18.5023 18.5047 18.5069 18.5087 18.5103 18.5117 18.5129 18.5139 18.5148 18.5156 18.5163 18.5168 18.5173 18.5178 18.5182 18.5185 18.5188 18.519 18.5192 18.5194 18.5196 18.5197 18.5198 18.5199 18.52 18.5201 18.5202 0.483256 1.45639 2.91185 4.83163 7.19142 9.96406 13.122 16.6391 20.4909 24.6558 29.1144 33.8496 38.8465 44.0921 49.5752 55.2858 61.2153 67.3564 73.7023 80.2473 86.9862 93.9144 101.028 108.322 115.794 123.439 131.255 139.237 147.382 155.686 164.145 172.754 181.509 190.404 199.434 208.593 217.874 227.272 236.779 246.389 256.095 265.89 275.766 285.718 295.739 305.821 315.96 326.15 336.386 346.662 356.975 367.319 377.693 388.091 398.512 408.952 419.409 429.881 440.366 450.863 461.369 471.885 482.408 492.937 503.473 514.013 524.558 535.106 545.658 556.213 566.77 577.329 587.89 598.453 609.017 619.582 630.148 640.715 651.283 661.852 672.421 682.991 693.561 704.132 714.703 725.274 735.846 746.418 756.989 767.562 778.134 788.706 799.279 809.851 820.424 830.996 841.569 852.142 862.715 873.288

 

Рис 8. График зависимости V(t)

 

Рис 9. График зависимости S(t)

 

Вывод

Судно выходит на стационарную скорость 18.5206 м/с за 57.0884 секунд, пройдя при этом 873.288 метров.

 

Аппроксимация для метода Эйлера:

# include <iostream.h>

# include <math.h>

# include <fstream.h>

 

void main ()

{int i;

double x[100],y[100],b,a,s1,s2,s3,s4;

 

ifstream out;

out.open ("data.txt");

for (i=0;i<=99; i++)

{out>>x[i];}

for (i=0;i<=99;i++)

{out>>y[i];}

out.close ();

 

s1=s2=s3=s4=0;

 

for(i=0;i<=100;i++)

{s1=s1+x[i];

s2=s2+y[i];

s3=s3+pow(x[i],2);

s4=s4+x[i]*y[i];}

 

cout<<"s1="<<s1<<endl;

cout<<"s2="<<s2<<endl;

cout<<"s3="<<s3<<endl;

cout<<"s4="<<s4<<endl;

b=(s2*s3-s1*s4)/(100*s3-pow(s1,2));

a=(s4-s1*b)/s3;

cout<<endl;

cout<<"V(t):y="<<a<<"x+"<<b<<endl;

cout<<endl;}

V(t)=0.238082*x+8.43901

 

Кинетическую энергию разгона вычисляем методом правых прямоугольников:

#include <iostream.h>

#include <math.h>

 

 

double f(double x)

 

{return (0.238082*x+8.43901);}

 

void main ()

 

{

double e,a,b,S,h;

a=0,e=0.001, b=57.0884, h=b/20;

S=f(a+h)*h;

do

{S=S+f(a+2*h)*h;

 

 

a=h+a;

}

while ((a+h)<b);

cout<<"E="<<S*25300<<endl;

}

E=24135100 Дж

 

Время торможения(при отсутствии тяги) определяем методом правых прямоугольников:

#include <iostream.h>

#include <math.h>

 

 

double f(double x)

{return (25300/fabs(371.27-1604.4*x+1001.8*x*x-87.546*x*x*x+2.2353*x*x*x*x));}

 

void main ()

{double s,a,h,b;

b=0;

a=18.5206;

s=0;

h=0.1;

while (a>b)

{s=s+f(a+h)*h;

a=a-h;

}

cout<<"vremya = "<<s<<endl;

}

Время торможения t=433.172 c

 

Путь торможения (при отсутствии тяги) определяем методом Эйлера:

#include <iostream.h>

#include <math.h>

#include <fstream.h>

void main ()

{ double t,s,v,b,h,k;

{ofstream onstr1;

ofstream onstr2;

ofstream onstr3;

onstr1.open("data1.txt");

onstr2.open("data2.txt");

onstr3.open("data3.txt");

b=433.172;

h=b/100;

k=0;

v=18.5206;s=0;

t=0;

while (t<=b)

{v=v+h*(-(0.0489*v*v*v*v-6.4743*v*v*v+251.1*v*v-1783.8*v+1112) /52900);

s=s+v*h;

t=t+h;

k=k++;

onstr1<<" "<<t<<endl;

onstr2<<" "<<v<<endl;

onstr3<<" "<<s<<endl;

}

onstr1.close();

onstr2.close();

onstr3.close();}

cout<<"k="<<k<<endl;}

Время Скорость Путь торможения
4.33172 8.66344 12.9952 17.3269 21.6586 25.9903 30.322 34.6538 38.9855 43.3172 47.6489 51.9806 56.3124 60.6441 64.9758 69.3075 73.6392 77.971 82.3027 86.6344 90.9661 95.2978 99.6296 103.961 108.293 112.625 116.956 121.288 125.62 129.952 134.283 138.615 142.947 147.278 151.61 155.942 160.274 164.605 168.937 173.269 177.601 181.932 186.264 190.596 194.927 199.259 203.591 207.923 212.254 216.586 220.918 225.249 229.581 233.913 238.245 242.576 246.908 251.24 255.571 259.903 264.235 268.567 272.898 277.23 281.562 285.894 290.225 294.557 298.889 303.22 307.552 311.884 316.216 320.547 324.879 329.211 333.542 337.874 342.206 346.538 350.869 355.201 359.533 363.864 368.196 372.528 376.86 381.191 385.523 389.855 394.187 398.518 402.85 407.182 411.513 415.845 420.177 424.509 428.84 433.172 14.8414 11.4437 7.89892 5.13837 3.66204 2.90918 2.47242 2.18944 1.99129 1.84461 1.73145 1.64134 1.56774 1.50638 1.45434 1.40956 1.37055 1.33619 1.30565 1.27827 1.25354 1.23105 1.21047 1.19154 1.17402 1.15775 1.14256 1.12832 1.11492 1.10227 1.09028 1.07888 1.06801 1.05762 1.04765 1.03806 1.02882 1.01988 1.01123 1.00282 0.994645 0.986666 0.978866 0.971227 0.963728 0.956353 0.949085 0.941909 0.93481 0.927774 0.920788 0.913837 0.90691 0.899993 0.893073 0.886139 0.879177 0.872173 0.865115 0.85799 0.850782 0.843476 0.836059 0.828511 0.820817 0.812958 0.804913 0.79666 0.788175 0.779433 0.770406 0.761061 0.751363 0.741275 0.730752 0.719745 0.708199 0.696052 0.68323 0.669652 0.655222 0.639829 0.623342 0.60561 0.58645 0.565644 0.54293 0.517987 0.490422 0.459743 0.42533 0.386389 0.341888 0.29046 0.230253 0.158703 0.0721485 0.0348085 0.020467 0.018242 64.2888 113.86 148.076 170.334 186.197 198.798 209.508 218.992 227.618 235.608 243.108 250.218 257.009 263.535 269.834 275.94 281.877 287.665 293.321 298.858 304.288 309.62 314.864 320.025 325.111 330.126 335.075 339.963 344.792 349.567 354.29 358.963 363.589 368.171 372.709 377.205 381.662 386.08 390.46 394.804 399.113 403.387 407.627 411.834 416.008 420.151 424.262 428.342 432.392 436.411 440.399 444.358 448.286 452.185 456.053 459.892 463.7 467.478 471.225 474.942 478.627 482.281 485.903 489.492 493.047 496.569 500.055 503.506 506.92 510.297 513.634 516.93 520.185 523.396 526.562 529.679 532.747 535.762 538.722 541.622 544.461 547.232 549.932 552.556 555.096 557.546 559.898 562.142 564.266 566.258 568.1 569.774 571.255 572.513 573.51 574.198 574.51 575.16 575.51 576.113

Рис.10 График торможения судна V(t)

Рис.11 График торможения судна S(t)

Аппроксимация для метода Эйлера:

# include <iostream.h>

# include <math.h>

# include <fstream.h>

 

void main ()

{int i;

double x[100],y[100],b,a,s1,s2,s3,s4;

 

ifstream out;

out.open ("data_V.txt");

for (i=0;i<=99; i++)

{out>>x[i];}

for (i=0;i<=99;i++)

{out>>y[i];}

out.close ();

 

s1=s2=s3=s4=0;

 

for(i=0;i<=100;i++)

{s1=s1+x[i];

s2=s2+y[i];

s3=s3+pow(x[i],2);

s4=s4+x[i]*y[i];}

 

cout<<"s1="<<s1<<endl;

cout<<"s2="<<s2<<endl;

cout<<"s3="<<s3<<endl;

cout<<"s4="<<s4<<endl;

b=(s2*s3-s1*s4)/(100*s3-pow(s1,2));

a=(s4-s1*b)/s3;

cout<<endl;

cout<<"Function P(t):y="<<a<<"x+"<<b<<endl;

cout<<endl;}

V(t)=-0.00876638*x+3.288

 

Кинетическую энергию торможения вычисляем методом правых прямоугольников.

#include <iostream.h>

#include <math.h>

double f(double x)

{return (-0.00876638*x+3.288);}

void main ()

{

double e,a,b,S,h;

a=0,e=0.001, b=433.172, h=b/20;

S=f(a+h)*h;

do

{S=S+f(a+2*h)*h;

a=h+a;

}

while ((a+h)<b);

cout<<"E="<<S*25300<<endl;

}

E=13802400 Дж

Вывод.

Кинетическая энергия разгона равна 24135100 Дж, кинетическая энергия торможения равна 13802400 Дж. Судно тормозит за 433.172 секунд, пройдя при этом 576.113 метров.


Общий вывод

Исследование динамики разгона (торможения) движения судна на тихой воде осуществлялось с использованием кривых зависимостей сопротивления и силы тяги от времени. В данной работе используются методы численные, в частности, методы аппроксимации, решения дифференциальных уравнений, систем линейных уравнений и т.п. В большинстве случаев из-за сложности задачи, решение задачи аналитически невозможно, решения же численными методами предпочтительней с точки зрения простоты и точности решения.

В первой модельной задаче мы получили приблизительные значения искомых результатов, так как функции R(V) и T(V) аппроксимировались полиномами низких степеней. Значения полученные в третьей модельной задаче, имеют сравнительно большую достоверность, так как аппроксимированные кривые наиболее близко приблизились к данным кривых R(V) и T(V).

Таблица результатов

Модельная задача Стационарная скорость V, м/с Разгон Торможение
Путь S, м Время t, с Энергия E, Дж Путь S, м Время t, с Энергия E, Дж
1. 19.5795       - - -
2. 18.6457 782.603 48.9436   - - -
3. 18.5206 873.288 57.0884   576.113 433.172  

 


 

Список литературы

1. Васильев Д.Н. Задача динамики разгона (торможения) судна. Метод. Разработка по выполнению курсовой работы по информатике /НГТУ; Сост.: Васильев Д.Н., Гетманцева Т.Н., Катаева Л.Ю., Н.Новгород, 2004г.

2. Хейфец Л.Л. Гребные винты для катеров. - Л.: Судостроение, 1980 г.

3. Катаева Л.Ю. Лабораторный практикум по численным методам: метод, разработка по курсу «Методы вычислений». Ч.1 / НГТУ, - Н.Новгород, 2003 г.

4. Бахвалов Н.С. и др. Численные методы. - М.: Лаборатория Базовых Знаний, 2001 г.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: