• ✅Доработано
    • 23898 id
    • 2000.0 ₽
    • 20.0%
SYSTEM
  • S:10:13:09 24.12
  • R:00:00:00 00.00
  • 🤖 • Чат открыт.
    SYSTEM
  • S:10:13:10 24.12
  • R:00:00:00 00.00
  • 🤖 • 📌 Заказ №23898 📚 Дисциплина: MATLAB 🗂 Тип работы: Домашняя работа 📅 Время сдачи: 25.12.2025 15:00 💸 Стоимость: 1 ₽ 💬 Комментарий: Matlab Дз 25.12 14:00 Написать код в Matlab для решения задачи
    SYSTEM
  • S:10:13:10 24.12
  • R:00:00:00 00.00
  • 🤖 • Выберите исполнителя ниже.
    Сергей Захаров
  • S:10:13:10 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Салют
    SYSTEM
  • S:10:13:10 24.12
  • R:00:00:00 00.00
  • 🤖 • Беседа активирована, не забудьте поздороваться.
    SYSTEM
  • S:10:13:10 24.12
  • R:00:00:00 00.00
  • 🤖 • Беседа активирована, не забудьте поздороваться.
    SYSTEM
  • S:10:13:34 24.12
  • R:00:00:00 00.00
  • 🤖 • 📌 Заказ №23898 📚 Дисциплина: MATLAB 🗂 Тип работы: Домашняя работа 📅 Время сдачи: 25.12.2025 15:00 💸 Стоимость: 1 ₽ 💬 Комментарий: Matlab Дз 25.12 14:00 Написать код в Matlab для решения задачи
    SYSTEM
  • S:10:13:34 24.12
  • R:00:00:00 00.00
  • 🤖 • Ознакомьтесь с карточкой заказа и обсудите детали с заказчиком.
    Marty Seamus
    • S:10:13:34 24.12
    • R:00:00:00 00.00
    👨‍💻 • привет
    Сергей Захаров
  • S:10:14:27 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Шаришь за газодинамику?
    Сергей Захаров
  • S:10:14:56 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Поскольку тут задачка про это
    Marty Seamus
    • S:10:15:24 24.12
    • R:00:00:00 00.00
    👨‍💻 • ради интереса откликнулся, вчера попробовал разобраться в задаче, в итоге что-то сам писал, что-то ии помогал, если интересно, могу закинуть код, если верно отработает закинешь монету, если нет, значит нет)
    Сергей Захаров
  • S:10:17:28 24.12
  • R:00:00:00 00.00
  • 🤖 • ⏳ Загружаем вложения, просим немного подождать.
    Сергей Захаров
  • S:10:17:28 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 •
    Marty Seamus
    • S:10:18:50 24.12
    • R:00:00:00 00.00
    👨‍💻 • не подгрузилось
    Сергей Захаров
  • S:10:18:59 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • ?
    Сергей Захаров
  • S:10:19:14 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Твои потуги?
    Сергей Захаров
  • S:10:19:21 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Или моё гс?
    Marty Seamus
    • S:10:19:33 24.12
    • R:00:00:00 00.00
    👨‍💻 • гс
    Marty Seamus
    • S:10:19:42 24.12
    • R:00:00:00 00.00
    👨‍💻 • тут вроде нельзя голосовыми
    Сергей Захаров
  • S:10:19:49 24.12
  • R:00:00:00 00.00
  • 🤖 • ⏳ Загружаем вложения, просим немного подождать.
    Сергей Захаров
  • S:10:19:49 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 •
    Сергей Захаров
  • S:10:20:55 24.12
  • R:00:00:00 00.00
  • 🤖 • ⏳ Загружаем вложения, просим немного подождать.
    Сергей Захаров
  • S:10:20:56 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 •
    Marty Seamus
    • S:10:21:31 24.12
    • R:00:00:00 00.00
    👨‍💻 • договорились)
    Marty Seamus
    • S:10:21:32 24.12
    • R:00:00:00 00.00
    👨‍💻 • жду тогда
    Сергей Захаров
  • S:10:21:37 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Огонь
    Сергей Захаров
  • S:11:09:24 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Я на связи
    Сергей Захаров
  • S:11:09:27 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • :)
    Marty Seamus
    • S:11:09:39 24.12
    • R:00:00:00 00.00
    👨‍💻 • я тоже
    Marty Seamus
    • S:11:10:46 24.12
    • R:00:00:00 00.00
    👨‍💻 • clear; clc; %% Физические параметры D = 0.035; % диаметр трубы, м L = 3.0; % длина трубы, м A = pi*(D/2)^2; % площадь сечения, м^2 gamma = 1.4; % показатель адиабаты воздуха [web:11] R = 287; % газовая постоянная воздуха, Дж/(кг*K) [web:11] % Участок A LA = 1.0; % длина участка A, м pA0 = 1.4e5; % давление в A, Па TA0 = 290; % температура в A, K % Остальная часть трубы pB0 = 1.0e5; % давление вне A, Па TB0 = 290; % температура вне A, K % Поршень xp0 = 0.5; % начальное расстояние поршня от левой границы A, м Lp = 0.05; % длина участка, в котором расположен поршень, м mp = 0.02; % масса поршня, кг xp = LA - xp0; % координата центра поршня от начала трубы vp = 0.0; % начальная скорость поршня %% Численные параметры Nx = 300; % число ячеек по длине dx = L / Nx; % шаг по пространству x = linspace(dx/2, L-dx/2, Nx); % центры ячеек tEnd = 0.02; % конечное время расчета, с (подберите) CFL = 0.5; % число Куранта %% Инициализация газовых параметров rho = zeros(1, Nx); u = zeros(1, Nx); p = zeros(1, Nx); E = zeros(1, Nx); % полная энергия на единицу объёма % левая часть трубы (участок A) idxA = x <= LA; rho(idxA) = pA0 ./ (R*TA0); p(idxA) = pA0; u(idxA) = 0; % остальная часть трубы idxB = ~idxA; rho(idxB) = pB0 ./ (R*TB0); p(idxB) = pB0; u(idxB) = 0; E = p./(gamma-1) + 0.5*rho.*u.^2; % Вектор консервативных переменных U1 = rho; % плотность U2 = rho .* u; % импульс U3 = E; % энергия %% Функция вычисления потоков flux = @(U1,U2,U3) deal( ... U2, ... U2.^2./U1 + (gamma-1).*(U3 - 0.5*U2.^2./U1), ... (U3 + (gamma-1).*(U3 - 0.5*U2.^2./U1)).[id2482012|*U2]./U1 ); %% Основной цикл по времени t = 0; it = 0; % массивы для записи параметров в центре участка A % выберем ячейку в центре A [~,iAcent] = min(abs(x - LA/2)); t_hist = []; p_hist = []; rho_hist = []; u_hist = []; xp_hist = []; while t < tEnd it = it + 1; % Звуковая скорость и шаг по времени a = sqrt(gamma * p ./ rho); dt = CFL * min(dx ./ (abs(u) + a)); if t + dt > tEnd dt = tEnd - t; end % Расчёт потоков на границах ячеек (схема Роу / Лакса–Фридрихса, упрощённо) F1 = zeros(1, Nx+1); F2 = zeros(1, Nx+1); F3 = zeros(1, Nx+1); for i = 2:Nx % левый и правый состояния UL1 = U1(i-1); UR1 = U1(i); UL2 = U2(i-1); UR2 = U2(i); UL3 = U3(i-1); UR3 = U3(i); [F1L,F2L,F3L] = flux(UL1,UL2,UL3); [F1R,F2R,F3R] = flux(UR1,UR2,UR3); % максимальная скорость распространения pL = (gamma-1)*(UL3 - 0.5*UL2^2/UL1); pR = (gamma-1)*(UR3 - 0.5*UR2^2/UR1); aL = sqrt(gamma*pL/UL1); aR = sqrt(gamma*pR/UR1); smax = max( abs(UL2/UL1)+aL , abs(UR2/UR1)+aR ); % численный поток Лакса–Фридрихса F1(i) = 0.5*(F1L+F1R) - 0.5*smax*(UR1-UL1); F2(i) = 0.5*(F2L+F2R) - 0.5*smax*(UR2-UL2); F3(i) = 0.5*(F3L+F3R) - 0.5*smax*(UR3-UL3); end % Граничные условия: твердые стенки (u = 0) % левая граница U1L = U1(1); U2L = -U2(1); U3L = U3(1); [F1L,F2L,F3L] = flux(U1L,U2L,U3L); F1(1) = F1L; F2(1) = F2L; F3(1) = F3L; % правая граница U1R = U1(end); U2R = -U2(end); U3R = U3(end); [F1R,F2R,F3R] = flux(U1R,U2R,U3R); F1(end) = F1R; F2(end) = F2R; F3(end) = F3R; % Обновление консервативных переменных U1 = U1 - dt/dx * (F1(2:end) - F1(1:end-1)); U2 = U2 - dt/dx * (F2(2:end) - F2(1:end-1)); U3 = U3 - dt/dx * (F3(2:end) - F3(1:end-1)); % Восстановление примитивных переменных rho = U1; u = U2 ./ U1; p = (gamma-1) .* (U3 - 0.5*rho.*u.^2); %% Учет движения поршня % считаем, что поршень занимает фиксированное число ячеек вокруг xp ip = round(xp / dx); % индекс
    Marty Seamus
    • S:11:10:46 24.12
    • R:00:00:00 00.00
    👨‍💻 • ячейки с поршнем ip = max(2, min(Nx-1, ip)); % защита от выхода за границы % давление слева и справа от поршня pL_p = p(ip-1); pR_p = p(ip+1); Fp = (pL_p - pR_p) * A; % сила на поршень ap = Fp / mp; % ускорение vp = vp + ap*dt; % скорость поршня xp = xp + vp*dt; % координата поршня % жёсткая привязка скорости газа к скорости поршня в ячейке u(ip) = vp; U2(ip) = rho(ip).*u(ip); U3(ip) = p(ip)/(gamma-1) + 0.5*rho(ip).*u(ip).^2; %% Запись истории t = t + dt; t_hist(end+1) = t; p_hist(end+1) = p(iAcent); rho_hist(end+1) = rho(iAcent); u_hist(end+1) = u(iAcent); xp_hist(end+1) = xp; end %% Графики в центре участка A figure; subplot(3,1,1); plot(t_hist, p_hist/1e5); ylabel('p, бар'); grid on; subplot(3,1,2); plot(t_hist, rho_hist); ylabel('\rho, кг/м^3'); grid on; subplot(3,1,3); plot(t_hist, u_hist); ylabel('u, м/с'); xlabel('t, с'); grid on; %% Давление по длине трубы в характерный момент времени figure; plot(x, p/1e5); xlabel('x, м'); ylabel('p, бар'); grid on; title('Распределение давления по трубе');
    Marty Seamus
    • S:11:10:53 24.12
    • R:00:00:00 00.00
    👨‍💻 • че-то такое получилось
    Сергей Захаров
  • S:11:11:10 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Выдает графики?
    Сергей Захаров
  • S:11:16:19 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Хуя
    Сергей Захаров
  • S:11:16:22 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Слушай
    Сергей Захаров
  • S:11:16:32 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Не дурно
    Сергей Захаров
  • S:11:17:24 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Надо преподу скинуть на проверку Посмотрим, что скажет
    Marty Seamus
    • S:11:17:55 24.12
    • R:00:00:00 00.00
    👨‍💻 • ага
    Marty Seamus
    • S:11:18:06 24.12
    • R:00:00:00 00.00
    👨‍💻 • кидай, если че подредачу что попросит
    Сергей Захаров
  • S:11:18:07 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Ток ещё Ремарка Мы используем метод Годунова
    Сергей Захаров
  • S:11:18:39 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Произвольный распад-разрыв
    Сергей Захаров
  • S:11:20:14 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Там метод упрощенный А у тебя с гиперболическими уравнениями
    Marty Seamus
    • S:11:21:31 24.12
    • R:00:00:00 00.00
    👨‍💻 • ща
    Marty Seamus
    • S:11:23:50 24.12
    • R:00:00:00 00.00
    👨‍💻 • я тогда табличкой IC сделаю, в ней можно будет менять границы интервалов, давление, темпы и скорости, и он оттуда выбирать будет произвольно
    Marty Seamus
    • S:11:23:53 24.12
    • R:00:00:00 00.00
    👨‍💻 • так?
    Сергей Захаров
  • S:11:24:16 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Я тебе могу кинуть файлик с отчетом по похожей задачке. Там есть часть с теорией
    Marty Seamus
    • S:11:24:25 24.12
    • R:00:00:00 00.00
    👨‍💻 • давай
    Marty Seamus
    • S:11:25:21 24.12
    • R:00:00:00 00.00
    👨‍💻 • какой дедлайн вообще?
    Marty Seamus
    • S:11:25:31 24.12
    • R:00:00:00 00.00
    👨‍💻 • я просто скоро занят буду
    Marty Seamus
    • S:11:25:35 24.12
    • R:00:00:00 00.00
    👨‍💻 • до вечера
    Сергей Захаров
  • S:11:26:03 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • хорошо, конечно завтра утром уже хлопнуть это хозяйство
    Сергей Захаров
  • S:11:26:07 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • сроки жмут
    Marty Seamus
    • S:11:26:22 24.12
    • R:00:00:00 00.00
    👨‍💻 • вечером сделаем тогда
    Сергей Захаров
  • S:11:26:32 24.12
  • R:00:00:00 00.00
  • 🤖 • ⏳ Загружаем вложения, просим немного подождать.
    Сергей Захаров
  • S:11:26:33 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 •
    Marty Seamus
    • S:11:26:42 24.12
    • R:00:00:00 00.00
    👨‍💻 • спасибо
    Сергей Захаров
  • S:11:26:48 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • вот тут теория и похожая задачка
    Marty Seamus
    • S:11:26:56 24.12
    • R:00:00:00 00.00
    👨‍💻 • отлично
    Сергей Захаров
  • S:11:27:12 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Ты сам с какого ВУЗа?
    Marty Seamus
    • S:11:27:56 24.12
    • R:00:00:00 00.00
    👨‍💻 • бомонка
    Сергей Захаров
  • S:11:28:22 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Оооо
    Сергей Захаров
  • S:11:28:24 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Наши люди
    Сергей Захаров
  • S:11:28:29 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • С какой кафедры?
    Marty Seamus
    • S:11:28:40 24.12
    • R:00:00:00 00.00
    👨‍💻 • иу7))
    Сергей Захаров
  • S:11:28:52 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Ясно Коллайдер
    Сергей Захаров
  • S:11:28:57 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • 🤓🤓🤓
    Marty Seamus
    • S:11:29:03 24.12
    • R:00:00:00 00.00
    👨‍💻 • ваххвавхахва
    Сергей Захаров
  • S:11:30:38 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Ну вот я тебе кинул Изучи тогда А я разберусь в том, что ты выслал В целом, сами ответы должны совпасть, каким бы способом они не получились
    Marty Seamus
    • S:11:30:49 24.12
    • R:00:00:00 00.00
    👨‍💻 • окей
    Marty Seamus
    • S:11:30:51 24.12
    • R:00:00:00 00.00
    👨‍💻 • договорились
    Сергей Захаров
  • S:21:56:52 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Где ты там?
    Marty Seamus
    • S:22:51:13 24.12
    • R:00:00:00 00.00
    👨‍💻 • сорян
    Marty Seamus
    • S:22:51:17 24.12
    • R:00:00:00 00.00
    👨‍💻 • занят пипец был
    Marty Seamus
    • S:22:51:25 24.12
    • R:00:00:00 00.00
    👨‍💻 • ща гляну все
    Сергей Захаров
  • S:22:51:53 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Да я тоже
    Сергей Захаров
  • S:22:51:58 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Недавно домой ток вернулся
    Сергей Захаров
  • S:22:52:06 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Мурыжили в институте
    Marty Seamus
    • S:23:47:10 24.12
    • R:00:00:00 00.00
    🤖 • ⏳ Загружаем вложения, просим немного подождать.
    Marty Seamus
    • S:23:47:10 24.12
    • R:00:00:00 00.00
    👨‍💻 • глянь
    Сергей Захаров
  • S:23:51:48 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Опа
    Сергей Захаров
  • S:23:51:53 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • А вот это похоже на правду
    Сергей Захаров
  • S:23:52:09 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Давление по длине трубы
    Сергей Захаров
  • S:23:52:15 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Но сегодня препод уже не ответит
    Сергей Захаров
  • S:23:52:23 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Как узнаю я тебе отпишусь
    Marty Seamus
    • S:23:53:28 24.12
    • R:00:00:00 00.00
    👨‍💻 • окей
    Marty Seamus
    • S:23:53:30 24.12
    • R:00:00:00 00.00
    👨‍💻 • буду ждать
    Сергей Захаров
  • S:23:53:45 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Да и я тоже :)
    Marty Seamus
    • S:23:54:20 24.12
    • R:00:00:00 00.00
    👨‍💻 • пиши)
    Сергей Захаров
  • S:23:54:39 24.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Само собой
    Сергей Захаров
  • S:15:04:59 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Я тут сижу и делаю отчет по этой канители
    Сергей Захаров
  • S:15:05:11 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Что бы препод принял
    Сергей Захаров
  • S:15:05:42 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Я вот пытаюсь понять, что такое векторы состояния
    Сергей Захаров
  • S:15:05:53 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Вот эти U1, U2 и U3
    Сергей Захаров
  • S:15:06:00 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • А потом они обновляются
    Сергей Захаров
  • S:20:11:51 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • И ещё проблема выявилась
    Сергей Захаров
  • S:20:12:59 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Как мне менять шаг по времени В задании есть пункт с выявлением влияния шага по времени на решение Я меняю число куранта, но шаг по времени как был, так и остался тот же
    Marty Seamus
    • S:20:13:05 25.12
    • R:00:00:00 00.00
    👨‍💻 • сорян, только добрался до телефона
    Marty Seamus
    • S:20:13:35 25.12
    • R:00:00:00 00.00
    👨‍💻 • через минут 20 гляну
    Сергей Захаров
  • S:20:13:41 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Давай
    Marty Seamus
    • S:20:53:38 25.12
    • R:00:00:00 00.00
    🤖 • ⏳ Загружаем вложения, просим немного подождать.
    Marty Seamus
    • S:20:53:38 25.12
    • R:00:00:00 00.00
    👨‍💻 • векторы состояния используются просто как способ хранить и соответственно обновлять переменные уравнений эйлера в каждой ячейке сетки, каждый из них хранит плотность газа, продольный импульс на единицу объема и полную энергию на единицу объема соответственно мы подставляем значения для i-ой ячейки в F(U) в уравнении эйлера
    Marty Seamus
    • S:20:56:59 25.12
    • R:00:00:00 00.00
    👨‍💻 • про изменение куранта: есть два варианта, либо ты смотришь не на тот участок времени, либо так совпадает, что изменение скорости/давления компенсирует изменение куранта
    Marty Seamus
    • S:20:57:49 25.12
    • R:00:00:00 00.00
    👨‍💻 • ты хочешь жестко задавать dt?
    Сергей Захаров
  • S:21:11:25 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Да знаешь нафиг пока
    Сергей Захаров
  • S:21:11:28 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Я нашел способ
    Сергей Захаров
  • S:21:12:10 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Я ему это вышлю И посмотрим что он скажет мне
    Marty Seamus
    • S:21:12:40 25.12
    • R:00:00:00 00.00
    👨‍💻 • окей
    Сергей Захаров
  • S:21:24:33 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • А как ты учел, что у нас замкнутая кольцевая труба?
    Сергей Захаров
  • S:21:25:19 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Ну типо это же не труба, у которой один конец закрытый, а на другом втекание или вытекание У тебя написано: отражение на границах
    Сергей Захаров
  • S:21:29:42 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • И все таки я не могу найти шаг по времени
    Сергей Захаров
  • S:21:30:19 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Он всегда одинаковый Я ставлю в командной строке dt он всегда выдает 6,9е-6
    Сергей Захаров
  • S:21:30:58 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Однако при увеличении числа куррента решение теряет устойчивость и начинает ломаться
    Сергей Захаров
  • S:21:31:26 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Типо при куренте 1,5 оно уже не строиться
    Marty Seamus
    • S:21:36:28 25.12
    • R:00:00:00 00.00
    🤖 • ⏳ Загружаем вложения, просим немного подождать.
    Marty Seamus
    • S:21:36:29 25.12
    • R:00:00:00 00.00
    👨‍💻 • исправил, глянь
    Сергей Захаров
  • S:21:52:28 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • E(1) = (E_bound + p_bound) * v_bound;
    Сергей Захаров
  • S:21:52:43 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • а как ты энергию и давление складываешь?
    Marty Seamus
    • S:22:09:29 25.12
    • R:00:00:00 00.00
    👨‍💻 • так всм
    Marty Seamus
    • S:22:09:34 25.12
    • R:00:00:00 00.00
    👨‍💻 • это же из уравнения эйлера
    Marty Seamus
    • S:22:09:46 25.12
    • R:00:00:00 00.00
    🤖 • ⏳ Загружаем вложения, просим немного подождать.
    Marty Seamus
    • S:22:09:47 25.12
    • R:00:00:00 00.00
    👨‍💻 •
    Сергей Захаров
  • S:22:52:25 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • короче, давай попробуем задавать время жестко
    Сергей Захаров
  • S:22:52:54 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • а то у меня при определнном значении шага вообще нет ничего
    Сергей Захаров
  • S:22:53:35 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • типо 2,6e-5 все есть, а 2,62e-5 уже ничерта нет
    Marty Seamus
    • S:22:56:49 25.12
    • R:00:00:00 00.00
    👨‍💻 • ну тогда надо выбирать фикс куранта
    Marty Seamus
    • S:22:56:58 25.12
    • R:00:00:00 00.00
    👨‍💻 • и не менять dt в цикле
    Marty Seamus
    • S:22:57:05 25.12
    • R:00:00:00 00.00
    👨‍💻 • function moving_piston_kольцо_fixed_dt % Решение задачи "Подвижная перегородка" в КОЛЬЦЕВОЙ трубе % с ФИКСИРОВАННЫМ шагом по времени % Труба D=35мм, L=3м. Участок А (1м) p=1.4 бар, остальное 1.0 бар. % Поршень m=20г находится на расстоянии 0.5м от участка А. % Подвижность поршня ограничена 5 см. clear; close all; clc; %% 1. Физические параметры и сетка L_tube = 3.0; % длина трубы, м D = 0.035; % диаметр, м Area = pi*(D/2)^2; % площадь сечения, м^2 m_cells = 300; % число ячеек сетки dx = L_tube / m_cells; x_centers = dx/2 : dx : L_tube - dx/2; % Параметры газа (воздух) k = 1.4; % показатель адиабаты R = 287.3; % газовая постоянная % Начальные условия p0 = 1.0e5; % фоновое давление 1.0 бар T0 = 290; % температура фоновая v0 = 0; p_high = 1.4e5; % давление в участке А (1.4 бар) T_high = 290; % Геометрия задачи L_A = 1.0; % длина участка А x_piston_0 = L_A + 0.5; % начальное положение поршня L_limit = 0.05; % длина участка, где поршень может двигаться (5 см) % Границы движения поршня x_p_min = x_piston_0 - L_limit/2; x_p_max = x_piston_0 + L_limit/2; mp = 0.02; % масса поршня 20 г = 0.02 кг %% 2. Инициализация полей p = ones(m_cells, 1) * p0; T = ones(m_cells, 1) * T0; v = ones(m_cells, 1) * v0; % Заполняем участок А высоким давлением idx_A = find(x_centers <= L_A); p(idx_A) = p_high; T(idx_A) = T_high; % Консервативные переменные rho = p ./ (R * T); e_int = p ./ ((k-1) * rho); E_total_vol = rho .* (e_int + 0.5 * v.^2); U1 = rho; U2 = rho .* v; U3 = E_total_vol; % Состояние поршня xp = x_piston_0; vp = 0; % Время t_current = 0; t_end = 0.05; %% 3. Выбор ФИКСИРОВАННОГО шага по времени % Оценим максимальную скорость волн на начальных данных c_sound = sqrt(k * p ./ rho); a_max_init = sqrt(k * p_high / (p_high/(R*T_high))); lambda_max = abs(v0) + a_max_init; % начальная оценка % Фиксированное число Куранта (менять этот параметр для исследования влияния dt) CFL_fixed = 0.3; % ← ОСНОВНОЙ ПАРАМЕТР ДЛЯ ИССЛЕДОВАНИЯ dt = CFL_fixed * dx / lambda_max; fprintf('=== Параметры расчёта ===\n'); fprintf('dx = %.5e м\n', dx); fprintf('lambda_max (начальная оценка) = %.2f м/с\n', lambda_max); fprintf('CFL_fixed = %.3f\n', CFL_fixed); fprintf('dt (фиксированный) = %.5e с\n', dt); fprintf('Предполагаемое число шагов за время t_end: %d\n', ceil(t_end/dt)); fprintf('\n'); % История для графиков step = 0; hist_t = []; hist_xp = []; hist_vp = []; hist_pA = []; hist_rhoA = []; hist_vA = []; hist_dt = []; % история dt (для проверки) hist_sigma = []; % история σ = (|u|+a)*dt/dx (для проверки CFL) % Индекс центра участка А idx_monitor = round(length(idx_A)/2); if idx_monitor < 1, idx_monitor = 1; end % Моменты времени для сохранения профилей save_times = [0.005, 0.01, 0.02, 0.03, 0.04, 0.05]; profiles_p = {}; save_idx = 1; fprintf('Start simulation...\n'); %% 4. Основной цикл по времени (с ФИКСИРОВАННЫМ dt) while t_current < t_end step = step + 1; %% 4.1 Проверка CFL-условия (для диагностики) c_sound = sqrt(k * p ./ rho); max_speed = max(abs(v) + c_sound); sigma = max_speed * dt / dx; % число Куранта if sigma > 1.0 fprintf('⚠️ Warning at step %d, t=%.5f: σ=%.4f > 1.0 (CFL нарушено!)\n', ... step, t_current, sigma); end %% 4.2 Реконструкция потоков (акустический решатель + ПЕРИОДИЧЕСКИЕ ГРАНИ) F1 = zeros(m_cells+1, 1); F2 = zeros(m_cells+1, 1); F3 = zeros(m_cells+1, 1); % Внутренние грани i
    Marty Seamus
    • S:22:57:06 25.12
    • R:00:00:00 00.00
    👨‍💻 • 2..m_cells for i = 2:m_cells rhoL = rho(i-1); uL = v(i-1); pL = p(i-1); aL = c_sound(i-1); rhoR = rho(i); uR = v(i); pR = p(i); aR = c_sound(i); ZL = rhoL * aL; ZR = rhoR * aR; p_star = (ZR * pL + ZL * pR + ZL * ZR * (uL - uR)) / (ZL + ZR); u_star = (ZL * uL + ZR * uR + pL - pR) / (ZL + ZR); if u_star > 0 rho_face = rhoL + (p_star - pL)/aL^2; else rho_face = rhoR + (p_star - pR)/aR^2; end F1(i) = rho_face * u_star; F2(i) = rho_face * u_star^2 + p_star; E_star = p_star/(k-1) + 0.5*rho_face*u_star^2; F3(i) = (E_star + p_star) * u_star; end % === ПЕРИОДИЧЕСКИЕ ГРАНИЧНЫЕ УСЛОВИЯ (КОЛЬЦЕВАЯ ТРУБА) === % Грань между последней ячейкой (m_cells) и первой (1) rhoL = rho(m_cells); uL = v(m_cells); pL = p(m_cells); aL = c_sound(m_cells); rhoR = rho(1); uR = v(1); pR = p(1); aR = c_sound(1); ZL = rhoL * aL; ZR = rhoR * aR; p_star = (ZR * pL + ZL * pR + ZL * ZR * (uL - uR)) / (ZL + ZR); u_star = (ZL * uL + ZR * uR + pL - pR) / (ZL + ZR); if u_star > 0 rho_face = rhoL + (p_star - pL)/aL^2; else rho_face = rhoR + (p_star - pR)/aR^2; end % Поток на "левой" границе массива (слева от i=1) F1(1) = rho_face * u_star; F2(1) = rho_face * u_star^2 + p_star; E_star = p_star/(k-1) + 0.5*rho_face*u_star^2; F3(1) = (E_star + p_star) * u_star; % Поток на "правой" границе массива (справа от i=m_cells) - периодичность F1(m_cells+1) = F1(1); F2(m_cells+1) = F2(1); F3(m_cells+1) = F3(1); %% 4.3 Обновление консервативных переменных U1 = U1 - dt/dx * (F1(2:end) - F1(1:end-1)); U2 = U2 - dt/dx * (F2(2:end) - F2(1:end-1)); U3 = U3 - dt/dx * (F3(2:end) - F3(1:end-1)); %% 4.4 Пересчёт в примитивные переменные rho = U1; v = U2 ./ (rho + 1e-16); % защита от деления на 0 p = (k-1) * (U3 - 0.5 * rho .* v.^2); % Санитизация (физически недопустимые значения) p(p < 0) = p0 * 0.1; rho(rho < 0) = 1e-6; %% 4.5 Движение поршня idx_p = floor(xp / dx) + 1; idx_p = max(2, min(m_cells-1, idx_p)); p_left_val = p(idx_p - 1); p_right_val = p(idx_p + 1); F_piston = (p_left_val - p_right_val) * Area; acc_p = F_piston / mp; vp_new = vp + acc_p * dt; xp_new = xp + vp_new * dt; % Ограничение подвижности (упругий отскок) if xp_new < x_p_min xp_new = x_p_min; vp_new = -0.8 * vp_new; elseif xp_new > x_p_max xp_new = x_p_max; vp_new = -0.8 * vp_new; end xp = xp_new; vp = vp_new; % Увлечение газа поршнем (метод "immersed boundary") v(idx_p) = vp; U2(idx_p) = rho(idx_p) * vp; %% 4.6 Запись истории t_current = t_current + dt; hist_t(end+1) = t_current; hist_xp(end+1) = xp; hist_vp(end+1) = vp; hist_pA(end+1) = p(idx_monitor); hist_rhoA(end+1) = rho(idx_monitor); hist_vA(end+1) = v(idx_monitor); hist_dt(end+1) = dt; hist_sigma(end+1) = sigma; % Сохранение профилей if save_idx <= length(save_times) && t_current >= save_times(save_idx) - 1e-9 profiles_p{save_idx} = p; save_idx = save_idx + 1; end % Вывод прогресса if mod(step, 100) == 0 fprintf('Step %5d, t=%.5f с, σ=%.4f, xp=%.4f м, vp=%.4f м/с\n', ... step, t_current, sigma, xp, vp); end end fprintf('✓ Simulation finished. Total steps: %d\n',
    Marty Seamus
    • S:22:57:06 25.12
    • R:00:00:00 00.00
    👨‍💻 • step); %% 5. Построение графиков % График 1: Закон движения поршня figure('Name', 'Piston Motion', 'Color', 'w', 'Position', [100 100 1000 600]); subplot(2,1,1); plot(hist_t, hist_xp, 'LineWidth', 1.5, 'Color', 'b'); hold on; yline(x_p_min, '--r', 'LineWidth', 1, 'DisplayName', 'Границы'); yline(x_p_max, '--r', 'LineWidth', 1); hold off; ylabel('x, м'); grid on; title('Закон движения поршня x(t)'); legend('x_{piston}', 'Location', 'best'); subplot(2,1,2); plot(hist_t, hist_vp, 'LineWidth', 1.5, 'Color', 'r'); xlabel('Время t, с'); ylabel('Скорость v, м/с'); grid on; title('Скорость поршня v(t)'); % График 2: Параметры газа в центре участка А figure('Name', 'Parameters at Center A', 'Color', 'w', 'Position', [150 150 1000 700]); subplot(3,1,1); plot(hist_t, hist_pA/1e5, 'LineWidth', 1.5, 'Color', 'b'); ylabel('p, бар'); grid on; title('Давление в центре участка А'); subplot(3,1,2); plot(hist_t, hist_rhoA, 'LineWidth', 1.5, 'Color', 'g'); ylabel('\rho, кг/м^3'); grid on; title('Плотность в центре участка А'); subplot(3,1,3); plot(hist_t, hist_vA, 'LineWidth', 1.5, 'Color', 'r'); xlabel('Время t, с'); ylabel('u, м/с'); grid on; title('Скорость газа в центре участка А'); % График 3: Профили давления figure('Name', 'Pressure Profiles', 'Color', 'w', 'Position', [200 200 1000 600]); hold on; p_init = ones(size(p))*p0; p_init(idx_A) = p_high; plot(x_centers, p_init/1e5, 'k--', 'LineWidth', 1.2, 'DisplayName', 't=0'); colors = lines(length(profiles_p)); for i = 1:length(profiles_p) plot(x_centers, profiles_p{i}/1e5, 'Color', colors(i,:), 'LineWidth', 1.5, ... 'DisplayName', sprintf('t=%.3f с', save_times(i))); end xlabel('Координата x, м'); ylabel('Давление p, бар'); title('Распределение давления по длине трубы (кольцевая)'); legend('show', 'Location', 'best'); grid on; hold off; % График 4: Контроль CFL-условия figure('Name', 'CFL Control', 'Color', 'w', 'Position', [300 300 1000 600]); subplot(2,1,1); plot(hist_t, hist_dt*1e4, 'LineWidth', 1.5, 'Color', 'b'); ylabel('dt, ×10^{-4} с'); grid on; title('Шаг по времени (должен быть фиксированным)'); subplot(2,1,2); plot(hist_t, hist_sigma, 'LineWidth', 1.5, 'Color', 'r'); hold on; yline(1.0, '--k', 'LineWidth', 1.5, 'DisplayName', 'σ = 1 (граница CFL)'); yline(CFL_fixed, '--g', 'LineWidth', 1.5, 'DisplayName', sprintf('σ = CFL = %.3f', CFL_fixed)); hold off; xlabel('Время t, с'); ylabel('σ = (|u|+a)·Δt/Δx'); title('Число Куранта во времени (должно быть σ ≤ CFL)'); legend('show', 'Location', 'best'); grid on; fprintf('\n✓ All plots created successfully!\n'); fprintf('CFL_fixed = %.3f\n', CFL_fixed); fprintf('dt = %.5e с\n', dt); fprintf('Средний σ = %.4f\n', mean(hist_sigma)); fprintf('max(σ) = %.4f\n', max(hist_sigma)); end =
    Marty Seamus
    • S:22:57:07 25.12
    • R:00:00:00 00.00
    👨‍💻 • глянь
    Сергей Захаров
  • S:23:12:06 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • понял)
    Сергей Захаров
  • S:23:12:08 25.12
  • R:00:00:00 00.00
  • 👨‍🎓 • пасибо
    Marty Seamus
    • S:09:04:33 26.12
    • R:00:00:00 00.00
    👨‍💻 • слуш, а выберешь меня исполнителем?
    Marty Seamus
    • S:09:04:40 26.12
    • R:00:00:00 00.00
    👨‍💻 • чтобы тебе отклики не приходили больше
    Сергей Захаров
  • S:09:04:50 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Конечно
    Marty Seamus
    • S:09:05:02 26.12
    • R:00:00:00 00.00
    👨‍💻 • спасибо)
    SYSTEM
  • S:09:05:14 26.12
  • R:00:00:00 00.00
  • 🤖 • Обсудите детали перед подтверждением — после подтверждения беседы с другими специалистами закроются.
    SYSTEM
  • S:09:05:14 26.12
  • R:00:00:00 00.00
  • 🤖 • Подтвердите исполнителя.
    SYSTEM
  • S:09:05:31 26.12
  • R:00:00:00 00.00
  • 🤖 • Клиент подтвердил выбор исполнителя. Используйте прикрпленные кнопки в меню для управления.
    SYSTEM
  • S:09:05:31 26.12
  • R:00:00:00 00.00
  • 🤖 • Исполнитель выбран. Используйте прикрпленные кнопки в меню для упраления.
    Сергей Захаров
  • S:09:05:49 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 • А я и забыл совсем
    Сергей Захаров
  • S:21:12:56 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Так
    Сергей Захаров
  • S:21:12:59 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 • О мой спаситель
    Сергей Захаров
  • S:21:13:05 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Все принято Все четко
    Сергей Захаров
  • S:21:13:11 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Твоя цена?
    Marty Seamus
    • S:22:19:06 26.12
    • R:00:00:00 00.00
    👨‍💻 • йоу
    Marty Seamus
    • S:22:19:11 26.12
    • R:00:00:00 00.00
    👨‍💻 • сорян, только с работы вышел
    Marty Seamus
    • S:22:19:21 26.12
    • R:00:00:00 00.00
    👨‍💻 • сколько готов?
    Сергей Захаров
  • S:22:20:35 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 • 2к
    Marty Seamus
    • S:22:20:52 26.12
    • R:00:00:00 00.00
    👨‍💻 • газ
    SYSTEM
  • S:22:20:57 26.12
  • R:00:00:00 00.00
  • 🤖 • Введите новую стоимость заказа (например: 1000). 💸 Текущая стоимость: 1 ₽.
    SYSTEM
  • S:22:21:01 26.12
  • R:00:00:00 00.00
  • 🤖 • Обновлено. Новая стоимость: 2000 ₽.
    SYSTEM
  • S:22:21:01 26.12
  • R:00:00:00 00.00
  • 🤖 • Стоимость изменена исполнителем. Новая стоимость: 2000 ₽.
    SYSTEM
  • S:22:21:01 26.12
  • R:00:00:00 00.00
  • 🤖 • Меню управления.
    Marty Seamus
    • S:22:21:01 26.12
    • R:00:00:00 00.00
    👨‍💻 • 2000
    Сергей Захаров
  • S:22:21:10 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 • А куда переводить?
    Marty Seamus
    • S:22:21:15 26.12
    • R:00:00:00 00.00
    👨‍💻 • +79854567435 Сбер Максим Максимович К.
    SYSTEM
  • S:22:22:08 26.12
  • R:00:00:00 00.00
  • 🤖 • Проверьте материалы и подтвердите отправку решения.
    SYSTEM
  • S:22:22:09 26.12
  • R:00:00:00 00.00
  • 🤖 • Решение отправлено клиенту.
    SYSTEM
  • S:22:22:09 26.12
  • R:00:00:00 00.00
  • 🤖 • Проверьте решение. Если зачтено — подтвердите закрытие.
    SYSTEM
  • S:22:22:48 26.12
  • R:00:00:00 00.00
  • 🤖 • Заказ закрыт. Действие недоступно.
    Сергей Захаров
  • S:22:23:13 26.12
  • R:00:00:00 00.00
  • 🤖 • ⏳ Загружаем вложения, просим немного подождать.
    Сергей Захаров
  • S:22:23:14 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 •
    Marty Seamus
    • S:22:23:31 26.12
    • R:00:00:00 00.00
    👨‍💻 • спасибо за оплату)
    Marty Seamus
    • S:22:24:27 26.12
    • R:00:00:00 00.00
    👨‍💻 • если что-то еще будет, если хочешь можешь писать в тг kl33n
    Сергей Захаров
  • S:22:24:50 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Не вопрос!
    Сергей Захаров
  • S:22:25:05 26.12
  • R:00:00:00 00.00
  • 👨‍🎓 • Спасибо :)
    Marty Seamus
    • S:22:27:38 26.12
    • R:00:00:00 00.00
    👨‍💻 • обращайся)
      • USER
      • 2000.0

        /

        2000.0

      • EXEC
      • 1600.0

        /

        1600.0

        

    Сбер

       

    Тинькофф