Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/65: Рейтинг темы: голосов - 65, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48

Решить дифференциальное уравнение методом Рунге-Кутта 4 порядка (ode45)

01.01.2014, 11:12. Показов 14477. Ответов 85
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Необходимо решить дифференциальное уравнение методом Рунге-Кутта 4 порядка.
Уравнение подготовил, а вот как реализовать его через функцию ode45, с построением графика не знаю.
Подскажите пожалуйста, какой код необходимо дописать?
Код программы:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
e=15;
V1=10;
t=(1:0.1:30);
V2=1;
f=10000;
omega=2*pi*f;
k=1.36*10-23;
Lk=0.000001;
R=1600;
T=222;
B=222;
Vc=0.92837;
R=1;
Vn=sqrt(4*k*R*T*B);
function q(2)=solverDE(t,y);
f=@(t,q)([q(2); V1+V2*sin*(omega*t)-Lk*q(2)-R*q(1)-Vn-Vc*sin((2*pi*q(1))/2*e)/Lk]);
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.01.2014, 11:12
Ответы с готовыми решениями:

Проинтегрировать дифференциальное уравнение второго порядка методом Рунге-Кутта
Здравствуйте, пожалуйста расскажите где я ошибся. проинтегрировать дифференциальное уравнение второго порядка методом Рунге-Кутта. ...

Дифференциальное уравнение методом Рунге-Кутта.
нужно решить дфиеренциальное уравнение в matlab методом рунге-кутта. вот оно: dy/dt+a*y=b*Um*sin(w*t)

Решить ур-ние методом Рунге-Кутта порядка N=4
Решить ур-ние 4y'''+15y"+2y'+y=2+e^-0.1 , методом Рунге-Кутта порядка N=4 для систем. Может кто шарит в таких тонкостях

85
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
22.01.2014, 13:39  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Зосима Посмотреть сообщение
эх, где же идентично то? систему не правильно написал: в программе d2q/dt2 = V/R, а на бумаге dq/dt = V/R
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function tempq 
[T,Q] = ode45(@loreq, [0,3], [0 0 0]); 
plot(T,Q) 
legend('q(t)', 'I(t)','I2(t)' )
end 
 
function dq = loreq(t,q) 
R = 2; 
V=4; 
dq=zeros(3,1) 
dq(1)=V/R;
dq(2)=q(2);
dq(3)=q(3);
end
Ну, хорошо, вот по другому: dqdt=V/R => q(t)- строит верно, а вот первую производную уже неправильно. Она должна приходится на уровень 2.

Хочу просто понять как сделать в матлабе то, что изображено у меня на бумаге.
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
22.01.2014, 14:31
Хочу просто понять как сделать в матлабе то,
что изображено у меня на бумаге.
ну так, же!
function tempq
[ T , Q ] = ode45( @loreq , [ 0 , 3 ] , [ 0 ] ) ;
plot ( T , Q )
legend ( ' q(t) ' )
end

function dq = loreq ( t , q )
R = 2 ; V = 4 ;
dq = V / R ;
end


Добавлено через 1 минуту
*какой-то глюк с оформлением кода пробелы вставляются
0
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
22.01.2014, 15:11  [ТС]
Tak eto ponyatno!!!, my vidimo drygdryga chytochky ne ponimaem.
dq = V / R ; eto stroka est q(t). Kak bydet q'(t)? Esli tak
Matlab M
1
2
dq(1)=q(2)
dq(2)=V/R ;
to nepravilno. pervaya proizvodnaya dolgna byt na yrovne '2' pri nylevyx nachalnyx ysloviyax i tyanytsya vdol osi 'x', bez izmeneniya formy!!!
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
23.01.2014, 15:27
Ничего подобного!
dq = V/R; это есть q'(t) = V/R

*Номера производных слева на единицу больше чем справа, т.е. dq(1)->q'(t), dq(2)->q''(t), dq(3)->q'''(t) и q(1)->q(t), q(2)->q'(t), q(3)->q''(t) и т.д.
0
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
23.01.2014, 15:47  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Ничего подобного!
dq = V/R; это есть q'(t) = V/R

*Номера производных слева на единицу больше чем справа, т.е. dq(1)->q'(t), dq(2)->q''(t), dq(3)->q'''(t) и q(1)->q(t), q(2)->q'(t), q(3)->q''(t) и т.д.
Togda polychaetsya chto Matlab stroit neverno. Mne pravda ochen nelovko odni i tege voprosy po neskolko raz zadavat. No po drygomy nelzya.
Ya moget byt yravnenie differencialnoe reshil nepravilno (na bymage kotoroe),tak Vy tak i skagite. No ne moget byt pervaya proizvodnaya (q'(t)) takaya kak predlagaet matlab.
Prikrepil risynok s rezyltatom matlab, i kak mne kagetsya naibolle vernym v realnosti.
Миниатюры
Решить дифференциальное уравнение методом Рунге-Кутта 4 порядка (ode45)  
0
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
23.01.2014, 16:06  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Ничего подобного!
dq = V/R; это есть q'(t) = V/R

*Номера производных слева на единицу больше чем справа, т.е. dq(1)->q'(t), dq(2)->q''(t), dq(3)->q'''(t) и q(1)->q(t), q(2)->q'(t), q(3)->q''(t) и т.д.
Na etom risynke polychaetsya vernyi rezyltat, no togda eto nikak ne vyagetsya s toi teoriei kotoryyu Vy predlagaete (ya prosto podobral nygnyi rezyltat).
Миниатюры
Решить дифференциальное уравнение методом Рунге-Кутта 4 порядка (ode45)  
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
23.01.2014, 16:22
Так, спокойно!

Если ты пишешь:
function dq=loreq(t, q)
R=2; V=4;
dq = V/R ;
end

это значит, что ДУ имеет вид: q'(t)=V/R, а в результате:
[T, Q] = ode45(@loreq, [0, 3], [0]);
ты получаешь не первую производную, а саму функцию - q(t) !!!
Если решать вручную: q(t) = V/R * t - ростущая прямая.

на бумажке все верно и в программе все верно
просто ты никак не можешь сообразить что мы получаем в результате
1
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
23.01.2014, 17:06  [ТС]
Xorosho, kak togda zapisat funkciyu - q'(t) v programmnom kode, dlya togoge yravnenuya?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
23.01.2014, 17:15
Имеешь ввиду так?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
function temp
[T, Q] = ode45(@loreq, [0, 3],[0]); 
dq = loreq(T,Q); % считаем первую производную
plot(T,Q,'b', T,dq,'.r')
legend('q(t)','dq/dt')
end
 
 
function dq=loreq(t, q) 
R=2; V=4; 
dq = V/R; 
end
1
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
23.01.2014, 17:20  [ТС]
Ny, nakonecto ))) My ponyali dryg dryga!!! A to ya yge nachal s yma sxodit Bolshoe spasibo, za terpenie!!! Poshel kovyryatsya dalshe v matlabe.
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
23.01.2014, 17:31
Фуф!
0
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
27.01.2014, 20:34  [ТС]
Yravnenie y'(x)=x+3
V matlabe bydet imet takoi vid?A to opyat "25" polychaetsya
Matlab M
1
2
3
function dx=loreq(t, x) 
dx=x+3;
end
risynok
Миниатюры
Решить дифференциальное уравнение методом Рунге-Кутта 4 порядка (ode45)  
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
28.01.2014, 12:02
Цитата Сообщение от Moro1 Посмотреть сообщение
Yravnenie y'(x)=x+3
V matlabe bydet imet takoi vid?
не совсем
Matlab M
1
2
3
function dx=loreq(t, x) 
dx = t + 3;
end
В данном случае t - это переменная, аналогичная х, а функция x аналогична y.
Т.е. y(x) в данной программе записан как x(t)

*Откуда взялось х(t)? отсюда: ...loreq(t, x) Ясненько?
0
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
28.01.2014, 18:53  [ТС]
Dlya zakrepleniya.Proidennogo materiala.
Est yravnenie y''(x)+y'(x)+x+1=0
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
function tempq 
[ T , Y ]=ode45(@loreq , [0,3] , [0 1] ) ; 
ds=loreq(T,Y)
plot (T,Y,Y,ds) 
legend ('funkciya y(x)', 'y''(x)') 
end 
 
function dy=loreq(t , y, x) 
x=5;
dy=zeros(2,1)
dy(1)=y(2);
dy(2)=y(1)+x+1;
end
Добавлено через 47 минут
I vot ewe chto.
Tak proschityvaetsya pervaya proizvodnaya
Matlab M
1
ds=loreq(T,Y)
- eto iz programmy vyshe. A kak bydet vtoraya?

Добавлено через 1 час 48 минут
Vot tak ya stroyu funkciyu y''(x)?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
function tempq 
[ X , Y]=ode45(@loreq , [0,3] , [0 1] ) ; 
ds=loreq(Y,X);
dq=loreq(Y,ds);
plot (Y,dq);
legend ('funkciya y(x)') 
end 
 
function dy=loreq(x , y) 
dy=[y(2); 5]
end
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
28.01.2014, 20:59
не совсем
должно быть так (обрати внимание на строки 12 и 4-6)
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function tempq
[T, Y] = ode45(@loreq, [0,3], [0 1] ) ;
 
for i = 1:length(T) % считаем производные
    DY(i,:) = loreq(T(i),Y(i,:));
end
 
plot(T,Y(:,1),T,DY)
legend('y(x)','dy/dx','d^2y/dx^2')
end
 
function dy = loreq(x, y)
dy = zeros(2,1);
dy(1) = y(2);
dy(2) = y(1)+x+1;
end
1
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
04.02.2014, 16:05  [ТС]
Dryzya, opyat beda priklyuchilas, kazalos by chto moget byt neponyatno, kogda vse razgevano. A n-net...
Prikrepil kartinky.
Reshayu yravneniya vtorogo poryadka: L*d2q/dt2+R*dq/dt=V(t) Na chto Matlab vyvodit dalekie ot realnosti funkcii. Chego tyt to ne tak, ya v otchayanii.

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
function tempqwertru
[T, Q] = ode45(@zod, [0,5.7*10^-12],[1 0]);
 
for i = 1:length(T)
    DQ(i,:) = zod(T(i),Q(i,:));
end
subplot(4,1,1); plot(T,Q(:,1));
legend('q(t)')
subplot(4,1,4); plot(T, V(T));
legend('I(V)')
subplot(4,1,2); plot(T,DQ(:,1));
legend('dqdt(t)')
subplot(4,1,3); plot(T,DQ(:,2));
legend('d2qdt2(t)')
end
 
function dq = zod(t,q)
L=1*10^-7; 
R=1*10^6;
dq=zeros(2,1);
dq(1)=q(2);
dq(2)=1/L*(V(t)-R*q(1));
end
 
function y = V(t) 
V=1*10^-6;
y = V*t;
end
Миниатюры
Решить дифференциальное уравнение методом Рунге-Кутта 4 порядка (ode45)  
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
04.02.2014, 18:08
А если увеличить диапазон времени до 5*10^-6 получим:


оно, нет?
0
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
04.02.2014, 21:40  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
А если увеличить диапазон времени до 5*10^-6 получим:
Вложение 362345

оно, нет?
К сожалению нет, если напряжение линейно растет по времени, то не откуда взяться периодической зависимости по времени всех связанных величин: заряда и тока.
Масшаб должен быть: 1Е-13(12)
0
0 / 0 / 0
Регистрация: 31.12.2013
Сообщений: 48
04.02.2014, 21:47  [ТС]
Ток со временем должен возрастать, а он падает почему-то.
Миниатюры
Решить дифференциальное уравнение методом Рунге-Кутта 4 порядка (ode45)  
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
04.02.2014, 22:33
Цитата Сообщение от Moro1 Посмотреть сообщение
не откуда взяться периодической зависимости по времени
синус появляется из уравнения вида dq^2/dt2 = f( dq/dt, t );
*и если у тебя R*dq/dt то должно быть R*q(2) (я этого сразу не заметил )
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2014, 22:33

Нелинейное дифференциальное уравнение - метод Рунге-Кутта
Здравствуйте! Пожалуйста подскажите тут где может быт ощипка? Вот это уравнения \large...

Уравнение, метод Рунге-Кутта 4 порядка
Есть решение 18 задания: h=1; x=0:h:25; xi=0; yi=0; N=25/h; y=zeros(size(x)); y(1)=1; for i=1:N ...

Решение дифференциального уравнения методом Эйлера и методом Рунге-кутта 4 порядка
Помогите пожалуйста решить уравнение y''-4y'+5y=2x2ex , методом Эйлера и методом Рунге-кутта 4 порядка , буду очень благодари

Решить ОДУ методом Рунге-Кутта 4 степени
Добрый день, преподаватель дал курсовую работу, часть которой - решить ОДУ методом Рунге - Кутта 4-го порядка. Все бы ничего, но есть одно...

Решение системы ДУ 4-го порядка методом Рунге-Кутта
Необходимо решить данную систему методом Рунге-Кутта. Шаг по времени 0.001. Помогите, пожалуйста, реализовать в matlab. Уже который день...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru