Форум программистов, компьютерный форум, киберфорум
Scilab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/50: Рейтинг темы: голосов - 50, средняя оценка - 4.82
0 / 0 / 2
Регистрация: 24.06.2012
Сообщений: 112

Задача о глубинной бомбе

22.01.2013, 15:23. Показов 9447. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот что необходимо сделать :
Глубинная бомба, установленная на взрыв на заданной глубине, сбрасывается со стоящего неподвижно противолодочного корабля. Исследовать связь между временем достижения заданной глубины и формой корпуса (сферической(c=0,4), полусферической(c=0,55), каплевидной(c=0,045) и т.д.).
Имеется решение для глубинной бомбы установленной на взрыв через заданное время.
Код на SciLab ...
Matlab M
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
clear all
r=0.5; s=%pi*r^2; g=9.8;
h=0; ro=1000; mu=1.002; c=0.55;
v=4/3*%pi*r^3;
plo=1000;
FA=plo*g*v;
m=3000*v;
k2=0.5*c*s*ro;
k1=6*%pi*mu*r;
v0=0;
vx(1)=v0;
ax(1)=(m*g-FA-k1*vx(1)-k2*vx(1)^2)/m;
x(1)=0;
y(1)=0;
dt=0.1;
dc=0.1;
i=1;
for t=0: dt:14,
    k2=0.5*c*s*ro;
    vx(i+1)=vx(i)+ax(i)*dt; 
    x(i+1)=x(i)+vx(i)*dt+0.5*ax(i)*dt^2;    
    ax(i+1)=(m*g-FA-k1*vx(i)-k2*vx(i)^2)/m;    
i=i+1;
end
 
i=1;
x2(1)=0; 
vx2(1)=v0;
ax2(1)=(m*g-FA-k1*vx2(1)-k2*vx2(1)^2)/m; 
c=0.4;
for t=0: dt:14,
       k2=0.5*c*s*ro;
    vx2(i+1)=vx2(i)+ax2(i)*dt; 
    x2(i+1)=x2(i)+vx2(i)*dt+0.5*ax2(i)*dt^2;    
    ax2(i+1)=(m*g-FA-k1*vx2(i)-k2*vx2(i)^2)/m;    
i=i+1;
end
 
i=1;
x3(1)=0;
vx3(1)=v0;
ax3(1)=(m*g-FA-k1*vx3(1)-k2*vx3(1)^2)/m;
c=0.045;
for t=0: dt:14,
       k2=0.5*c*s*ro;
    vx3(i+1)=vx3(i)+ax3(i)*dt; 
    x3(i+1)=x3(i)+vx3(i)*dt+0.5*ax3(i)*dt^2;
    ax3(i+1)=(m*g-FA-k1*vx3(i)-k2*vx3(i)^2)/m;
i=i+1;
end
t=0:dt:14+dt,
figure(1); 
subplot(2,2,1);
plot(t,ax,t,ax2,t,ax3); 
xlabel('t');
ylabel('ax');
subplot(2,2,2); 
plot(t,x,t,x2,t,x3);
xlabel('t'); 
ylabel('x');
subplot(2,2,3);
plot(t,vx,t,vx2,t,vx3); 
xlabel('t');
ylabel('vx');
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.01.2013, 15:23
Ответы с готовыми решениями:

В некотором государстве ввели компьютерный паспорт гражданина. Укажите пол гражданина и последовательность событий
Доброго времени суток,форумчане. Хотелось бы попросить помощи в решении одной задачи от умных голов. Задача: В некотором...

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он уплатил по 31 талеру, а за каждого быка по...

Задача на k-тую цифру последовательности, задача на схему Горнера.
Ну, собственно опять прошу помощи... Задача 1: Определить k-тую цифру последовательности 1234567891011121314…, в которой выписаны подряд...

5
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
28.01.2013, 17:01
Дружочек, давно не дает мне покоя твоя бомба

Чисто теоретически, глубина равна:

https://www.cyberforum.ru/cgi-bin/latex.cgi?h(t) = \int v(t)dt = \iint a(t) dtdt

Ускорение a можно найти из соотношения сил:

https://www.cyberforum.ru/cgi-bin/latex.cgi?ma = F_T - F_A - F_{tr}
где FT - сила тяжести, FA - сила Архимеда, Ftr- суммарная сила трения.
Подставим их выражения:

https://www.cyberforum.ru/cgi-bin/latex.cgi?m a(t) = m g - \rho V g - \pi \mu r v(t) - \frac{1}{2}\rho c S v(t)^2

Но если принять во внимание, что ускорение - это производная скорости, получаем дифференциальное ур-е:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{d v(t)}{d t} = \frac{mg - \rho V g - \pi \mu r v(t) - \frac{1}{2}\rho c S v(t)^2}{m}

Как видишь, ничего нового я не изобразил Но мне жутко не нравится твоя реализация моделирования погружения
Вот мой вариант (MATLAB), c решением ДУ:
Matlab M
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
clear all
clc
 
r = 0.5; % радиус сечения, м
S = pi*r^2; % площадь сечения, м
g = 9.8; % ускорение своб падения, м/c^2
p = 1000; % плотность воды, кг/м^3
mu = 1.002; % коэф-т трения 
c = 0.55; % коэф-т формы
V = 0.9; % объем бомбы? м^3
Fa = p*g*V; % Архимедова сила
m = 3000*V; % масса бомбы
Ft = m*g; % сила тяжести
 
% ускорение (производная от скорости)
dv = @(t,v) (Ft - Fa - pi*mu*r*v - 0.5*p*c*S*v^2)/m;
Tx = [0 6]; % пределы значений t
v0 = 0; % начальное знач-е скорости
[t V] = ode45(dv,Tx,v0); % услиенно решаем методом Рунге-Кутта 4-го порядка
for i = 2:length(t)
    h(i) = trapz(t(1:i),V(1:i)); % интеграл скорости (глубина)
end
a = diff(V)./diff(t); % считаем производную скорости (ускорение)
% рисуем
plot(t, V, t, h, t(2:end),a) 
grid on,
legend('Скорость, v(t)','Глубина, h(t)','Ускорение, a(t)','Location','NorthWest')
xlabel('t')


А теперь зададимся глубиной, например H = 30м и рассчитаем длительность погружения при различных коэф-тах формы Сх
Matlab M
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
clear all
clc
 
r = 0.5; % радиус сечения, м
S = pi*r^2; % площадь сечения, м
g = 9.8; % ускорение своб падения, м/c^2
p = 1000; % плотность воды, кг/м^3
mu = 1.002; % коэф-т трения
V = 0.9; % объем бомбы? м^3
Fa = p*g*V; % Архимедова сила
m = 3000*V; % масса бомбы
Ft = m*g; % сила тяжести
 
H = 30; % заданная глубина, м
c = [0.55, 0.4, 0.045]; % коэф-ты формы
 
Tmax = 50;
T = linspace(0,Tmax,500);
for i = 1:length(c)
    dv = @(t,v) (Ft - Fa - pi*mu*r*v - 0.5*p*c(i)*S*v^2)/m;  
    [t V] = ode23t(dv,[0 Tmax],0); % услиенно решаем методом Рунге-Кутта 4-го порядка
    h = 0;
    for j = 2:length(t)
        h(j) = trapz(t(1:j),V(1:j)); % считаем глубину
    end
    tau(i) = spline(h,t,H); % время за которое достигнем нужной глубины
    % сохраняем подпись
    str(i) = {['c=',num2str(c(i)),' \tau=',num2str(fix(tau(i)*100)/100),'c.']};
    dept(:,i) = spline(t,h,T); % сохраняем h(t)
end
 
% рисуем
yh = H*ones(1,length(tau));
plot(T, dept, tau, yh,'or'), grid on
ylim([0 H+5])
legend(str,'Location','NorthWest')
xlabel('Время, с')
ylabel('Глубина, м')


А вот вариант решения чисто для получения зависимости времени от коэф-та формы для заданной глубины:
Matlab M
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
clear all
clc
 
r = 0.5; % радиус сечения, м
S = pi*r^2; % площадь сечения, м
g = 9.8; % ускорение своб падения, м/c^2
p = 1000; % плотность воды, кг/м^3
mu = 1.002; % коэф-т трения
V = 0.9; % объем бомбы? м^3
Fa = p*g*V; % Архимедова сила
m = 3000*V; % масса бомбы
Ft = m*g; % сила тяжести
 
H = 30; % заданная глубина, м
c = linspace(0.01,1.5,20); % коэф-ты формы
 
Tmax = 50;
T = linspace(0,Tmax,500);
for i = 1:length(c)
    dv = @(t,v) (Ft - Fa - pi*mu*r*v - 0.5*p*c(i)*S*v^2)/m;  
    [t V] = ode23t(dv,[0 Tmax],0); % услиенно решаем методом Рунге-Кутта 4-го порядка
    h = 0;
    for j = 2:length(t)
        h(j) = trapz(t(1:j),V(1:j)); % считаем глубину
    end
    tau(i) = spline(h,t,H); % время за которое достигнем нужной глубины
end
 
plot(c, tau,'-*r'), grid on
set(gca, 'XTick',0:0.1:1.5)
legend(['Заданная глубина H = ',num2str(H),' м'],'Location','NorthWest')
xlabel('Коэффициент формы, Сх')
ylabel('Время, с')
2
0 / 0 / 2
Регистрация: 24.06.2012
Сообщений: 112
28.01.2013, 17:09  [ТС]
Спасибо большое. Я просто с физикой не очень дружу(даже вообще не дружу) и поэтому мало что тут понимаю. будем разбираться....
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
28.01.2013, 17:13
Ну, если вопросы будут - спрашивай!
Кстать, проверь формулы коэф-тов трения: pi*mu*r*v и 0.5*p*c*S*v^2
Во второй формуле я уверен, т.к. встречался с ней ранее, а с первой - нет, поправь, если ошибся
И в SciLab я слаб
1
0 / 0 / 2
Регистрация: 24.06.2012
Сообщений: 112
29.01.2013, 10:28  [ТС]
Мне хотя бы в MatLab. Буду пробовать засовывать в SciLab.
Если вопрос появиться напишу здесь.
0
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 3
03.12.2015, 20:00
можно на паскале эту же программу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.12.2015, 20:00
Помогаю со студенческими работами здесь

Первая смешанная задача для волнового уравнения на отрезке (задача о колебаниях ограниченной струны) методом Фурье
Решить первую смешанную задачу для волнового уравнения на отрезке (задача о колебаниях ограниченной струны) методом Фурье ...

Задача о размещении весов по ящикам (задача о рюкзаках)
Есть упорядоченный по невозрастанию набор весов предметов w1..wn, которые необходимо распределить по ящикам способным выдержать вес V,...

Задача на файл и задача на создание очереди
1 Дан символьный файл, содержащий, по крайней мере, один символ пробела. Удалить из файла все символы, предшествующие пробелу 2 ...

Задача линейного программирования, транспортная задача
Всем привет. сижу на экзамене, помогите пожалуйста решить,сроно!!! заранее спасибо.

Задача о размене -задача динамического программирования?
Является ли задача о размене суммы задачей динамического программирования? Мне кажется нет. хотя это зависит от алгоритма решения. ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru