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

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

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

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

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

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

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

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

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

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

12
Модератор
Эксперт по математике/физике
 Аватар для VSI
5277 / 4059 / 1389
Регистрация: 30.07.2012
Сообщений: 12,429
16.04.2015, 08:09 2
Milky Way, и где же РЕЗУЛЬТАТ Вашей 2-х дневной работы (в виде программы)? Приведите свои попытки решения этой задачи, тогда Вам гораздо быстрее помогут в ней разобраться...
P.S. И почитайте Правила форума (в частности - 5.18)
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
16.04.2015, 23:01  [ТС] 3
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 4
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  [ТС] 5
SSC, а не подскажешь, как мне избавиться от хардкода коэффицентов? В файлик допустим их отдельный вынести, где я смогу их редактировать
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
19.04.2015, 23:16  [ТС] 6
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
142 / 142 / 37
Регистрация: 14.12.2013
Сообщений: 221
20.04.2015, 10:39 7
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 8
Использование чтения из файла внутри функции определения производных напрочь убъет скорость вычислений.
Лучше работать с глобальными переменными.
Мне не понятен физический смысл задачи, поэтому что-то советовать не могу.
Вы пытаетесь менять коэффициенты во время решения системф дифуравнений? (тогда вопрос в зависимости от чего они меняются) или Вам надо провести много решений при разных коэффициентах - это две совершенно по разному решаемые проблемы.
Но есть предостережение. Менять коэффициенты внутри расчета шага интегрирования крайне опасно, можно получить не просто неточное решение, а решение противоречащее физическому смыслу задачи.
При этом очень многое зависит от поведения алгоритма подбора шага интегрирования для обеспечения точности решения.
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
21.04.2015, 23:35  [ТС] 9
надо провести много решений при разных коэффициентах - это две совершенно по разному решаемые проблемы.
Это.

Добавлено через 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 10
Я взял исходные два файла, исправил 2 ошибки (которые обозначил коментариями), т у меня программа выполняется выводя какие-то данные и строя 5 графиков. Все интересное на них происходит в интервале t от 0 до 10.
Попробуй вернуться назад к исходной точке, возможно внес какието изменения в функцию определения производных
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 17
23.04.2015, 01:03  [ТС] 11
Да вроде начальный пробую.
А от версии матлаба это никак не зависит?
Или может нужно в определенную директорию файл класть?

Добавлено через 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 12
Такое число уравнений для 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 13
Привет, занят примерно тем же самым Определение параметров при аппроксимации , есть рабочая прога. Пиши в лс
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
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Сайт компании Red-Star-Soft переехал на новый хостинг!
Etyuhibosecyu 06.03.2025
Как и советовал Rius, я покинул хостинг от "Ru-Center" и перенес сайт red-star-soft. com на хостинг с более позитивными отзывами (спойлер: найти его было далеко не просто) (чтобы прочитать текст,. . .
Альтернативная сериализация в Java: сравнение Kryo, Protobuf и Avro
Jamaican 06.03.2025
Сериализация — один из краеугольных процессов в Java-разработке. Превращение объектов в поток байтов для хранения или передачи по сети с последующим восстановлением звучит просто, но реализация этого. . .
Битва Java-кешей: Сравниваем Ehcache, Caffeine и Hazelcast
Jamaican 06.03.2025
Производительность — вечный Святой Грааль для Java-разработчиков. Мы оптимизируем алгоритмы, настраиваем JVM, распараллеливаем процессы, но неизменно приходим к одному и тому же средству ускорения —. . .
Параметры подтверждения сообщения Kafka
Jamaican 06.03.2025
Среди распределённых систем и высоконагруженных приложений Apache Kafka занимает особое место. Эта платформа потоковой обработки данных давно стала стандартом де-факто для организаций, которым. . .
Оптимизация времени запуска Spring Boot
Jamaican 06.03.2025
Вы когда-нибудь сидели, барабаня пальцами по столу, пока ваше Spring Boot приложение медленно поднимается? Этот момент, когда вы успеваете сходить за кофе, пообщаться с коллегами и вернуться, а. . .
Деплой Kubernetes в Java: масштабирование Spring Boot приложений
Jamaican 06.03.2025
Когда ваше Spring Boot приложение внезапно получает всплеск трафика или требует плавного обновления без простоя — традиционные методы деплоя часто пасуют. Именно здесь на сцену выходит Kubernetes —. . .
Бессерверные приложения Java: сравнение AWS Lambda и Azure Functions
Jamaican 06.03.2025
Что такое "бессерверные приложения" и почему они так привлекательны? Вопреки названию, серверы никуда не исчезли — просто теперь управление инфраструктурой перекладывается на плечи облачного. . .
Безопасность микросервисов с OAuth2 и OpenID Connect
Jamaican 06.03.2025
С ростом популярности микросервисов растут и проблемы, связанные с их безопасностью. В отличие от монолитных приложений, где безопасность можно было обеспечить централизованно, микросервисная. . .
Структурное логирование в Spring Boot
Jamaican 06.03.2025
Представьте, что вы управляете сотней микросервисов в продакшн-среде. Внезапно один из сервисов начинает давать сбои, и вам нужно срочно выяснить причину. Вы открываете логи и видите бесконечные. . .
Предотвращение XSS, CSRF и SQL-инъекций в JavaScript
bytestream 05.03.2025
В эпоху цифровизации безопасность веб-приложений становится не просто рекомендацией, а жизненной необходимостью. Если вы разрабатываете приложения на JavaScript, вам наверняка знакома эта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru