Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
03.09.2014, 18:53
Студворк — интернет-сервис помощи студентам
Alex7421, с помошью ode45 считаешь значения L (точнее только L2)
у тебя будет что-то вроде:
[T L] = ode45...
а потом численно находишь производную
delta1 = diff(F)./diff(T);
t1 = T(1:end-1); % массив времени для производной на одно значение короче
plot(T,L,'r', t1, delta1,'b')

Добавлено через 33 минуты
я попытался сделать так:
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
clear, clc
 
ik=0;% Инициализация счётчика
tstep=0.001;
T=0:tstep:40;
N=0;
VyMem=zeros(size(T));% Заготавливаем память под VyMem
L1=zeros(size(T));% Заготавливаем память под L1
L2=zeros(size(T));% Заготавливаем память под L2
L2(1) = 0;
for ik = 2:length(T)-1
    Uk=L2(ik-1);
    E=randn;
    b=exp(-0.1*tstep);
    Vy=b*Uk + 2*sqrt(1-b^2)*E;
    L1(ik)=0.06*Vy;
    
    % метод Рунге-Кутты 4го порядка
    k1=0.001*Vy-5*L2(ik);
    k2=0.001*Vy-5*(L2(ik)+k1/2);
    k3=0.001*Vy-5*(L2(ik)+k2/2);
    k4=0.001*Vy-5*(L2(ik)+k3);
    L2(ik+1) = L2(ik) + tstep*(k1+2*k2+2*k3+k4)/6 ;
 
    VyMem(ik)=Vy;    
end
 
L = L1 + L2;
delta1 = diff(L)./diff(T);
t1 = T(1:end-1);
plot(T,L,'r',t1,delta1,'b')
legend('L(t)','\delta_1(t)')
но значения L под конец улетают в минус бесконечность...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.09.2014, 18:53
Ответы с готовыми решениями:

Решение дифференциальных уравнений
Все доброго времени суток! Помогите пожалуйста решить следующие дифференциальные уравнения в ode45 (см. картинку). Я уже обращался на...

Решение дифференциальных уравнений
Дана система диф.уравнений dv/dt=(P-Xa)/m-g*sin(Teta); dTeta/dt=-g*sin(Teta)/v; dy/dt=v*sin(Teta); dx/dt=v*cos(Teta). Надо решить...

Решение дифференциальных уравнений
Не могу разобратся с кодом, делаю все по аналогии, но ничего не получается, помогите разобратся, буду весьма признателен. function prakt;...

27
1 / 1 / 0
Регистрация: 28.01.2014
Сообщений: 226
12.09.2014, 20:31  [ТС]
Всем привет, извините, что затянул с ответом. tvoretsmira спасибо тебе за помощь, очень помогли твои ответы. (Правда я так и не смог вытащить Vy из под ode45).
Зосима спасибо Тебе за ответ, я долго думал почему графики уходят в бесконечность: правда может ошибка в этом:
Matlab M
1
2
3
4
5
    k1=tstep.*(0.001*Vy-5*L2(ik));
    k2=tstep.*(0.001*Vy-5*(L2(ik)+k1/2));
    k3=tstep.*(0.001*Vy-5*(L2(ik)+k2/2));
    k4=tstep.*(0.001*Vy-5*(L2(ik)+k3));
    L2(ik+1) = L2(ik) + tstep*(k1+2*k2+2*k3+k4)/6 ;
На этом форуме есть пример решения по Рунге-Кутту, и там коэффициенты перемножаются еще на tstep, или вы все-таки правильно написали?
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
12.09.2014, 20:57
Цитата Сообщение от Alex7421 Посмотреть сообщение
На этом форуме есть пример решения по Рунге-Кутту, и там коэффициенты перемножаются еще на tstep, или вы все-таки правильно написали?
Коэффициенты умножаются на шаг.Лучше почитайте теорию по этим методам,тогда все станет понятнее.
1
 Аватар для tvoretsmira
462 / 452 / 56
Регистрация: 28.05.2013
Сообщений: 699
12.09.2014, 21:27
Цитата Сообщение от Alex7421 Посмотреть сообщение
Правда я так и не смог вытащить Vy из под ode45
Значения собираются в переменной VyMem. Если вам нужна эта переменная в рабочем пространстве матлаба, то исправьте в функции OdeCaller5 первую строку:
Matlab M
1
function VyMem=OdeCaller5
и так и вызывайте в командном окне эту функцию:
Matlab M
1
VyMem=OdeCaller5
0
1 / 1 / 0
Регистрация: 28.01.2014
Сообщений: 226
13.09.2014, 13:05  [ТС]
Цитата Сообщение от tvoretsmira Посмотреть сообщение
Значения собираются в переменной VyMem. Если вам нужна эта переменная в рабочем пространстве матлаба, то исправьте в функции OdeCaller5 первую строку:
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
function VyMem=OdeCaller5;
ik=0;% Инициализация счётчика
tstep=0.001;
Tspan=0:tstep:40;
N=0;
VyMem=zeros(1,numel(Tspan));% Заготавливаем память под VyMem
[T,Y]=ode45(@odefun11,Tspan, [0 0]);
 
 
 
function dy=odefun11(t,y)
ik=ik+1; %Считаем сколько раз вызвана функция odefun11
Uk=N;
 
L2=y(1);
E=randn;
 
b=exp(-0.05*tstep);
Vy=b*Uk + 2*sqrt(1-b^2)*E;
 
L1=0.006*Vy;
 
dy=zeros(2,1);
dy(1)=0.001*Vy-5*L2;
 
L=L1+L2;
 
N=Vy;
VyMem(ik)=Vy;
end
end
Спасибо, вроде что-то получилось, правда собираются только первые несколько значений VyMem, а потом идут нули, хотя ode45 дальше считает

Цитата Сообщение от S_el Посмотреть сообщение
Коэффициенты умножаются на шаг.Лучше почитайте теорию по этим методам,тогда все станет понятнее.
Да, я читал, и в разных источниках пишут по-разному, в одних умножается на шаг, а в других нет и как все-таки правильно? P.S. Так tstep-это и есть шаг интегрирования
0
1 / 1 / 0
Регистрация: 28.01.2014
Сообщений: 226
13.09.2014, 13:14  [ТС]
Если уж зашла речь о решениях по Рунге-Кутту, то подскажите пжл как решается следующее уравнение по этому методу? Если в правой части только числа, то, как высчитываются коэффициенты k1,k2,k3,k4?
Изображения
 
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
13.09.2014, 19:05
Цитата Сообщение от Alex7421 Посмотреть сообщение
Да, я читал, и в разных источниках пишут по-разному, в одних умножается на шаг, а в других нет и как все-таки правильно? P.S. Так tstep-это и есть шаг интегрирования
Да,tstep это шаг.И умножать на него надо обязательно.
Просто в некоторых источниках его вносят в коэффициенты k1,k2,k3,k4.

Добавлено через 4 минуты
Alex7421, если правые части const,то и коэффициенты тоже будут const.
И вообще такие уравнения решайте аналитически.
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
16.09.2014, 10:30
Alex7421, где же там константы, если при каждом обращении будет новое случайное число?
Matlab M
1
2
3
4
function dy=odefun11(t,y)
V1 = 1;
V = randn;
dy = V-V1;
*кстати, V будет меняться в пределах ~[-3,3] - правило трех сигм.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2014, 10:30

Решение дифференциальных уравнений
Добрый день. В Matlab необходимо построить график от уравнения показанном ниже.

Решение дифференциальных уравнений.
Найти решение уравнений: а) tyy'' - ty'2= yy' t=, y1(0)=1, y2(0)=0 б) ty''= y'+ t(y'2+t2) t=, y1(0)=0 , y2(0)=0

Решение системы дифференциальных уравнений
Добрый день! Понадобилось решить вот такую систему диф.уравнений: \begin{cases} & \text{} \dot{x}-x-2y=t \\ & \text{}...

Численное решение дифференциальных уравнений
Всем привет! Есть уравнение: y''+2y'+2y=(2e^(-x))*cos(x) Подскажите как решить данное уравнение средствами пакета matlab? Для...

Решение системы дифференциальных уравнений
Здравствуйте, помогите решить систему ОДУ. В файле записала вот такой фрагмент кода function dy = myfun(t,y) dy = zeros(2,1); ...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru