С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17

Решение системы ДУ с подтягиванием коэффицентов

16.04.2015, 00:42. Показов 763. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем хорошего дня.
Очень надеюсь на Вашу помощь, т.к. уже на пороге отчаяния.
Мне нужно обсчитать достаточно сложную систему.
Уже два дня читаю гайды, но к успеху не приблизился ни на миллиметр.

Что у меня есть:
Кинетическая модель хим. реакции.
На языке математики - система из 5 ДУ, с большим количеством коэффицентов, которые нельзя хардкодить. В идеале их нужно тянуть из cfg файла.

Что мне нужно:
Программа, которая позволит мне моделировать процесс, меняя коэффиценты и задавая новые условия.
Тому, кто окажет реальную помощь, готов задонатить небольшую сумму на телефон/киви.

Сабж в аттаче, сама система - на правой стороне фото
Миниатюры
Решение системы ДУ с подтягиванием коэффицентов  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.04.2015, 00:42
Ответы с готовыми решениями:

Выпадающий список с подтягиванием значений
Категорически приветствую камрады Друзья! заранее благодарю, тема простенькая, я уже глаз замылил, прошу помощи... 1....

Решение неоднородной системы, если известны собственные вектора и значения однородной системы
Можно ли решить неоднородной системы если известны собсвенные вектора и значения однородной системы?

Исследовать совместность и найти общее решение и одно частное решение системы уравнений.
Исследовать совместность и найти общее решение и одно частное решение системы уравнений. (3 системы) помогите кто чем может

12
Модератор
Эксперт по математике/физике
 Аватар для VSI
5289 / 4071 / 1392
Регистрация: 30.07.2012
Сообщений: 12,487
16.04.2015, 08:09
Milky Way, и где же РЕЗУЛЬТАТ Вашей 2-х дневной работы (в виде программы)? Приведите свои попытки решения этой задачи, тогда Вам гораздо быстрее помогут в ней разобраться...
P.S. И почитайте Правила форума (в частности - 5.18)
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
16.04.2015, 23:01  [ТС]
VSI, ну я, например, совсем не понимаю, как мне сделать редактируемые коэффиценты.
Хотелось бы это услышать.

Сам я смог написать вот это:
И оно не запускается
Matlab M
1
2
3
4
5
6
7
8
9
function dy = diff_urav(t,y)
dy = zeros(5,1); 
% система
 
dy(1) = y(1);
dy(2) = y(1)-y(2);
dy(3) = y(1)+y(2);
dy(4) = y(5)-y(1)+1-y(2)*y(4)
dy(5) = (y(1)+1+y(2)-y(5)-y(5)^2)*2
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear all; clc;
% время
t=[0 100];
%начальные условия
y0=[0 1 0 1 2];
 
[T,Y]=ode45(@diff_urav,t,y0);
figure
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'-.',T,Y(:,4),'-.',T,Y(:,5)'--')
grid on
title('График искомых функций');
legend('X','Y','Z','A','B');
xlabel('t');
disp('Вывод значений функций')
[Y(:,1),Y(:,2),Y(:,3),Y(:,4),Y(:,5)]
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
17.04.2015, 11:42
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear all; clc;
% время
t=0 : 0.2 :100;                   % Была ошибка
%начальные условия
y0=[0 1 0 1 2];
 
[T,Y]=ode45(@diff_urav,t,y0);
figure
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'-.',T,Y(:,4),'-.',T,Y(:,5),'--')   % Была ошибка, нехватало запятой
grid on
title('График искомых функций');
legend('X','Y','Z','A','B');
xlabel('t');
disp('Вывод значений функций')
[Y(:,1),Y(:,2),Y(:,3),Y(:,4),Y(:,5)]
Вот так уже выводит графики
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
17.04.2015, 20:55  [ТС]
SSC, а не подскажешь, как мне избавиться от хардкода коэффицентов? В файлик допустим их отдельный вынести, где я смогу их редактировать
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
19.04.2015, 23:16  [ТС]
up!

Добавлено через 1 час 42 минуты
Еще свежий вопрос по коду.
Синтаксис матлаба переваривает такое присваивание?
И как мне, наконец вынести все эти k-шки в отдельный файл, чтобы тянуть их оттуда?

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
function dy = diff_urav(t,y)
dy = zeros(5,1); 
% система
 
dy(1) = k(6)*y(1);
dy(2) = k(6)*y(1)-k(12)*y(2);
dy(3) = k(6)*y(1)+k(12)*y(2);
dy(4) = k(7)*y(5)-k(2)*y(1)+k(8)-k(11)*y(2)*y(4)
dy(5) = (k(6)*y(1)+k(8)+k(12)*y(2)-k(7)*y(5)-k(14)*y(5)^2)*k(16)
 
k(1)=2
k(2)=1
k(3)=3
k(4)=4
k(5)=2
k(6)=2
k(7)=3
k(8)=4
k(9)=5
k(10)=2
k(11)=3
k(12)=3
k(13)=4
k(14)=1
k(15)=1
k(16)=1
0
143 / 143 / 37
Регистрация: 14.12.2013
Сообщений: 221
20.04.2015, 10:39
Milky Way,если я все верно понял

Matlab M
1
2
3
4
5
6
7
8
9
function dy = diff_urav(t,y)
dy = zeros(5,1); 
% система
k=load('koeff.txt');
dy(1) = k(6)*y(1);
dy(2) = k(6)*y(1)-k(12)*y(2);
dy(3) = k(6)*y(1)+k(12)*y(2);
dy(4) = k(7)*y(5)-k(2)*y(1)+k(8)-k(11)*y(2)*y(4);
dy(5) = (k(6)*y(1)+k(8)+k(12)*y(2)-k(7)*y(5)-k(14)*y(5)^2)*k(16);
ну и внутри koeff.txt например 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
21.04.2015, 11:24
Использование чтения из файла внутри функции определения производных напрочь убъет скорость вычислений.
Лучше работать с глобальными переменными.
Мне не понятен физический смысл задачи, поэтому что-то советовать не могу.
Вы пытаетесь менять коэффициенты во время решения системф дифуравнений? (тогда вопрос в зависимости от чего они меняются) или Вам надо провести много решений при разных коэффициентах - это две совершенно по разному решаемые проблемы.
Но есть предостережение. Менять коэффициенты внутри расчета шага интегрирования крайне опасно, можно получить не просто неточное решение, а решение противоречащее физическому смыслу задачи.
При этом очень многое зависит от поведения алгоритма подбора шага интегрирования для обеспечения точности решения.
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
21.04.2015, 23:35  [ТС]
надо провести много решений при разных коэффициентах - это две совершенно по разному решаемые проблемы.
Это.

Добавлено через 1 час 46 минут
SSC, и при использовании твоего кода, у меня тоже ошибка

??? Error using ==> feval
Undefined function or method 'diff_urav' for input arguments of type 'double'.

Error in ==> odearguments at 109
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.

Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Добавлено через 6 минут
Из-за чего может быть?
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
22.04.2015, 07:35
Я взял исходные два файла, исправил 2 ошибки (которые обозначил коментариями), т у меня программа выполняется выводя какие-то данные и строя 5 графиков. Все интересное на них происходит в интервале t от 0 до 10.
Попробуй вернуться назад к исходной точке, возможно внес какието изменения в функцию определения производных
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
23.04.2015, 01:03  [ТС]
Да вроде начальный пробую.
А от версии матлаба это никак не зависит?
Или может нужно в определенную директорию файл класть?

Добавлено через 3 минуты
Пробую вот эту версию:

Matlab M
1
2
3
4
5
6
7
8
9
function dy = diff_urav(t,y)
dy = zeros(5,1); 
% система
 
dy(1) = y(1);
dy(2) = y(1)-y(2);
dy(3) = y(1)+y(2);
dy(4) = y(5)-y(1)+1-y(2)*y(4)
dy(5) = (y(1)+1+y(2)-y(5)-y(5)^2)*2
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear all; clc;
% время
t=0 : 0.2 :100;                   % Была ошибка
%начальные условия
y0=[0 1 0 1 2];
 
[T,Y]=ode45(@diff_urav,t,y0);
figure
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'-.',T,Y(:,4),'-.',T,Y(:,5),'--')   % Была ошибка, нехватало запятой
grid on
title('График искомых функций');
legend('X','Y','Z','A','B');
xlabel('t');
disp('Вывод значений функций')
[Y(:,1),Y(:,2),Y(:,3),Y(:,4),Y(:,5)]
Добавлено через 20 минут
Вопрос снимается.
Не в той директории лежал файл.

Добавлено через 23 минуты
Вопрос следующий:
Мне на самом деле нужно 8 уравнений - 5 дифференциальных и 3 линейных (см фото в 1 посте)
Если я все это запихиваю под ode, он нормально переваривать будет?

И еще вопрос: когда я ставлю нужные мне коэффиценты в файлик, очень сильно проседает производительность, и даже на промежутке для t от 0 до 10 считает несколько минут.
Как пофиксить можно?
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
23.04.2015, 07:48
Такое число уравнений для MATLAB не проблема, проблема что растет время решения.
Для ode45 производные вычисляются 4 раза на каждый шаг интегрирования. Поэтому обязательно оптимизируй функцию diff_urav.
Например присваивание вычисляется быстрее чем умножение, а возведение в квадрат обязательно замени умножением.

Второе направление это подбор шага.
t=0 : 0.2 :100; 0.2- это шаг. Чем он больше тем расчет быстрее но менее точно вплодь до развала решения. Поэтому требуется подбор с анализом получаемых решений.

Третье направление выбор другой функции вместо ode45, возможно они будут давать на ваших уравнениях лучший результат.
Хотя ode45 мне очень нравится, надежный не капризный метод, с него рекомендую всегда начинать.
Когда MATLABA еще небыло у меня были реализации данного метода сначала на BASiC, потом FORTRAN, потом С.
0
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 39
23.04.2015, 11:59
Привет, занят примерно тем же самым Определение параметров при аппроксимации , есть рабочая прога. Пиши в лс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2015, 11:59
Помогаю со студенческими работами здесь

Вычисление коэффицентов
Здравствуйте уважаемые математики. Сразу прошу прощение за , возможно, не совсемм коректный или за не правильно поставленный вопрос. ...

Выпадающий список в Excel с подтягиванием к нему таблицы из другого листа
Добрый день! Прошу помощи! Задача следующая. Совершенно неразрешимая для меня пока)) Для подсчета продуктов, которые нужно...

Найти фундаментальную систему решений однородной системы и выразить через нее общее решение этой системы
Найти фундаментальную систему решений однородной системы и выразить через нее общее решение этой системы: 3x1+2x2+x3+3x4+5x5=0 ...

Решение системы уравнений в matlab. Не сходится решение
Здравствуйте! решаю такую сичтему уравнений (уравнения Кирхгофа применительно к задаче гидравлики для определения расходов). Решение...

Решение не было найдено. Решение системы уравнений
Подскажите пожалуйста, в чем ошибка. Вроде бы все перепроверила, задано все верно. Заметила, что у z не добавила переменные, от которых z...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru