Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Решение дифференциального уравнения с параметрами в MatLab
СообщениеДобавлено: 01 июл 2017, 18:47 
Не в сети
Начинающий
Зарегистрирован:
25 июн 2017, 13:05
Сообщений: 3
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Здравствуйте. Пожалуйста помогите решить проблему. У меня имеется два одинаковых m-файла, но графики получаются различными.

formula1.m

function dy=formula1(t,y)
dy=zeros(1,1);
dy(1)=-196323,98*10^(-18)*y(1)*t;

formula3.m

function dy=formula3(t,y)
sigmaa5=678,5*10^(-24);
fi0=578,7*10^6;
epsilon1=0,5;
dy=zeros(1,1);
dy(1)=-sigmaa5*y(1)*fi0*epsilon1*t;

Вызываю с помощью formula2.m

y0=[1];
tspan=[0:20:365];
[t,y]=ode45('formula3',tspan,y0);
plot(t,y);
grid on;

Соответственно 'formula3' заменяется на 'formula1' по необходимости.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Решение дифференциального уравнения с параметрами в MatLab
СообщениеДобавлено: 01 июл 2017, 19:21 
Не в сети
Мастер
Аватара пользователя
Зарегистрирован:
31 мар 2017, 00:16
Сообщений: 206
Cпасибо сказано: 11
Спасибо получено:
76 раз в 70 сообщениях
Очков репутации: 17

Добавить очки репутацииУменьшить очки репутации
Похоже на проблемы с потерей точности. DY отличается от Y на 13 порядков, а число double в машинном представлении хранит 16 порядков. То есть, у Вас при численном интегрировании в сложение попадают только 3 десятичных разряда с погрешностью до 0,01 на каждом шаге. Это слишком мало для численного интегрирования, результат может оказываться вообще в стороне.

У меня, например, для Вашего примера получается вообще ровный график, y[0]=1 и всё тут.

Изображение

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Решение дифференциального уравнения с параметрами в MatLab
СообщениеДобавлено: 02 июл 2017, 01:01 
Не в сети
Начинающий
Зарегистрирован:
25 июн 2017, 13:05
Сообщений: 3
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Благодарю за ответ. Видимо, стоит отказаться от переменных. В оригинале у меня система из 5 дифференциальных уравнений, в которых почти все константы заданы переменными. Придется заранее подставлять конечные числовые значения.

[math]\frac{ x }{ t }[/math]=-sigmaa5*x*fi(t);

[math]\frac{ y }{ t }[/math]=-sigmaa8*y*fi(t)-mu(1-fi)(nuf5*sigmaf5*x+nuf9*sigmaf9*z+nuf1*sigmaf1*p);

[math]\frac{ z }{ t }[/math]=mu(1-fi)(nuf5*sigmaf5*x+nuf9*sigmaf9*z+nuf1*sigmaf1*p)+sigmaa8*y*fi(t)-sigmaa9*z*fi(t);

[math]\frac{ q }{ t }[/math]=sigmac9*z*fi(t)-sigmaa0*q*fi(t);

[math]\frac{ p }{ t }[/math]=sigmac0*q*fi(t)-sigmaa1*p*fi(t).

Константы:
sigmaa0=289,6*10^(-24);
sigmaa1=1378*10^(-24);
sigmaa5=678,5*10^(-24);
sigmaa8=275*10^(-24);
sigmaa9=1012,9*10^(-24);
sigmac0=289,5*10^(-24);
sigmac9=267,2*10^(-24);
sigmaf1=1007,3*10^(-24);
sigmaf5=580*10^(-24);
sigmaf9=741,6*10^(-24);
nuf1=2,15;
nuf5=2,07;
nuf9=2,11;
mu=1,01;
fi=0,8.

Начальные условия:

x(0)=1;
y(0)=50;
z(0)=0;
q(0)=0;
p(0)=0.

Изображение

fi0=578703703,70;
e1=0,5;
e2=1,5;
e3=1.

После подстановки окончательных числовых выражений для периода e1 получается следующие графики:

function dy=formula1(t,y)
dy=zeros(5,1);
dy(1)=-196323,98*10^(-18)*y(1)*t;
dy(2)=-79571,25*10^(-18)*y(2)*t-242,52*10^(-24)*y(1)-316,08*10^(-24)*y(3)-437,47*10^(-24)*y(5);
dy(3)=242,52*10^(-24)*y(1)+316,08*10^(-24)*y(3)+437,47*10^(-24)*y(5)+79571,25*10^(-18)*y(2)*t-293082,62*10^(-18)*y(3)*t;
dy(4)=77314,32*10^(-18)*y(3)*t-83795,76*10^(-18)*y(4)*t;
dy(5)=83766,83*10^(-18)*y(4)*t-398724,30*10^(-18)*y(5)*t);

Изображение

Имеется алгоритм действий для любого количества промежутков dt с различными e, задаваемыми через консоль:

1). Ввести значение tk, обозначающее конечное время;
2). Ввод tk1, tk1+tk2, tk1+tk2+tk3, ..., [math]\sum\limits_{1}^{n}[/math]tkn, обозначающих конечные значения времени для промежутков функции fi(t), на которых функция ведет себя неизменно;
3). Ввод e1, e2, e3, ..., en, соответствующих промежуткам времени [0,tk1), [tk1,tk1+tk2), [tk1+tk2,tk1+tk2+tk3),...,[...,[math]\sum\limits_{1}^{n}[/math]tkn);
4). Последовательное сравнение tk и tk1, tk и tk1+tk2, tk и tk1+tk2+tk3 и т. д. до тех пор, пока не будет найден tki<=[math]\sum\limits_{1}^{i}[/math]tki;
5). Вычисление fi(t)=fi0*(tk1*e1+(tk1+tk2)*e2+(tk1+tk2+tk3)*e3+...+(tk-[math]\sum\limits_{1}^{i}[/math]tkn)*e'i+1').

Прошу помочь реализовать данный алгоритм в MatLab или подсказать более простой способ решения. Условие: система ДУ должна решаться методом Рунге-Кутта 4 порядка.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Решение дифференциального уравнения с параметрами в MatLab
СообщениеДобавлено: 03 июл 2017, 12:22 
Не в сети
Мастер
Аватара пользователя
Зарегистрирован:
31 мар 2017, 00:16
Сообщений: 206
Cпасибо сказано: 11
Спасибо получено:
76 раз в 70 сообщениях
Очков репутации: 17

Добавить очки репутацииУменьшить очки репутации
В коэффициентах точно нет опечатки? Очень уж нетипичная степень, "минус 24". Даже атом углерода (0,3 нм) по сравнению с расстоянием от Земли до Солнца (150 млн. км) - это разница в 20 степеней, а тут - 24. Обычные наши процессоры (32/64 разряда) не могут складывать числа с такой разницей.

Можете выложить исходное задание?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Решение дифференциального уравнения с параметрами в MatLab
СообщениеДобавлено: 16 июл 2017, 19:55 
Не в сети
Начинающий
Зарегистрирован:
25 июн 2017, 13:05
Сообщений: 3
Cпасибо сказано: 0
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Степень правильная: 1 барн = [math]10^{-24}[/math], на втором рисунке приведены значения коэффициентов. Само задание: Разработать программную систему для исследования процесса изменения изотопного состава ядерного реактора. В качестве численного метода решения системы уравнений использовать метод Рунге-Кутта. На Рис. 9.3.3 представлена система из 4-х уравнений, в моем случае добавлено уравнение для U238. В результате должен получиться график, представленный на Рис. 9.4.
[url=http://forumimage.ru/show/105673749][img]
Изображение
Изображение
Изображение
Изображение
Изображение
Изображение

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему      Страница 1 из 1 [ Сообщений: 5 ]

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Решение дифференциального уравнения в Matlab

в форуме MATLAB

polyariya

2

600

14 апр 2017, 17:09

Решение уравнения теплопроводности в matlab-е

в форуме Специальные разделы

Qwerty2

0

1014

03 мар 2016, 15:06

Частное решение дифференциального уравнения\общее решение

в форуме Дифференциальные и Интегральные уравнения

Swissboy

5

762

06 май 2014, 19:13

Решение дифференциального уравнения

в форуме Дифференциальные и Интегральные уравнения

PavelFedorov

3

257

17 янв 2022, 19:35

Решение дифференциального уравнения

в форуме Дифференциальные и Интегральные уравнения

distvamp

2

479

08 фев 2017, 15:32

Решение Дифференциального уравнения

в форуме Дифференциальные и Интегральные уравнения

Brodyga12388

7

371

28 дек 2022, 22:49

Решение дифференциального уравнения

в форуме Дифференциальные и Интегральные уравнения

Matemat121212

0

252

07 июн 2015, 12:25

Решение дифференциального уравнения

в форуме Дифференциальные и Интегральные уравнения

Matemat121212

1

372

07 июн 2015, 12:24

Решение дифференциального уравнения

в форуме Дифференциальные и Интегральные уравнения

Matemat121212

1

397

07 июн 2015, 12:27

Найти решение дифференциального уравнения

в форуме Дифференциальные и Интегральные уравнения

VgKroo

12

368

09 июн 2020, 19:03


Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved