Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/39: Рейтинг темы: голосов - 39, средняя оценка - 4.85
 Аватар для heked93
6 / 6 / 0
Регистрация: 11.05.2013
Сообщений: 31

Решение системы дифференциальных уравнений решателем bvp4c

16.06.2013, 12:25. Показов 7475. Ответов 14

Студворк — интернет-сервис помощи студентам
Нужно решить систему дифференциальных уравнений x'=2*x+log(y) y'=2*x+1 начальные условия х(0)=2 у(0,3)=4 все это нужно решить решателем bvp4c. Пробовал по примеру,не получилось
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.06.2013, 12:25
Ответы с готовыми решениями:

Решение системы из n дифференциальных уравнений
Здравствуйте! Есть система дифур: dT1/dt=-eps*T1^2+eps(T2^2-T1^2)+k(T2-T1) ...

Решение системы дифференциальных уравнений
Доброго времени суто. Помогите пожалуйста решить систему \begin{cases} & \text{ } dh=-g*t-a*G/k \\ & \text{ } dG= ...

Решение системы дифференциальных уравнений
Возможно ли такое решить в Matlab: \begin{cases} & \text{ } \ddot{y}=-y+x-\dot{y}+\dot{x} \\ & \text{ }...

14
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
16.06.2013, 20:34
Любопытно, я с такими штуками еще не встречался
Пока нашел только статейку: http://www.exponenta.ru/educat... /index.asp
Если будет время постараюсь помочь
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
17.06.2013, 16:58
Хе! вроде получилось
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function reshenie
clc
solinit = bvpinit(linspace(0,0.3),[2 4]);
sol = bvp4c(@ode2,@bc2,solinit);
plot(sol.x, sol.y), grid on
legend('y(t)','x(t)')
xlabel('t')
end
 
function du = ode2(x,u)
% u(1) -> x
% u(2) -> y
% x'=2*x+log(y) 
% y'=2*x+1
du = [2*u(1) + log(u(2));
    2*u(1)+1];
end
 
function res=bc2(ya,yb)
res = [ya(1)-2
    yb(1)-4];
end
(это все - один файл!)
Вот график решений:



Как видишь, всего-лишь немного переделал пример из статейки
1
 Аватар для heked93
6 / 6 / 0
Регистрация: 11.05.2013
Сообщений: 31
17.06.2013, 17:39  [ТС]
Блин, действительно, почему-то я не подумал,что x и y надо переименовать.Спасибо)
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
17.06.2013, 17:44
да
в этой функции: function du = ode2(x,u) x обозначает время!
вообще для лучшего понимания можно написать: function du = ode2(t,u) (больше ничего не изменится)
1
 Аватар для heked93
6 / 6 / 0
Регистрация: 11.05.2013
Сообщений: 31
17.06.2013, 17:53  [ТС]
Ещё раз читаю пример и начинаю понимать.Теперь буду пользоваться функцией без проблем
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
17.06.2013, 19:05
О! Кажется ошибочку нашел:
Смотри, мы обозначали x(t) как первый столбец решения, а y(t) - второй. Поэтому в граничных условиях должно быть не ya(1),yb(1), а ya(2),yb(2)!
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
function reshenie
clc
solinit = bvpinit(linspace(0,0.3),[2 4]);
sol = bvp4c(@ode2,@bc2,solinit);
plot(sol.x, sol.y), grid on
legend('x(t)','y(t)')
xlabel('t')
end
 
function du = ode2(x,u)
% u(1) -> x
% u(2) -> y
% x'=2*x+log(y) 
% y'=2*x+1
du = [2*u(1) + log(u(2))
    2*u(1)+1];
end
 
function res=bc2(ua,ub)
% x -> u_(1)
% y -> u_(2)
res = [ua(2)-2
     ub(2)-4];
end
полезно в диффурах в комментах писать, что чему соответствует, чтоб не запутаться.

Выложи график!
2
 Аватар для heked93
6 / 6 / 0
Регистрация: 11.05.2013
Сообщений: 31
17.06.2013, 19:25  [ТС]
Вот график
Миниатюры
Решение системы дифференциальных уравнений решателем bvp4c  
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
17.06.2013, 19:38
Линии трудно различить сквозе телефон, но если y(t) начинается в 2 и кончается в 4, то все верно!
0
 Аватар для heked93
6 / 6 / 0
Регистрация: 11.05.2013
Сообщений: 31
17.06.2013, 19:42  [ТС]
Всё правильно
0
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 5
13.03.2014, 23:57
доброго времени суток..не совсем согласен с решением, точнее с результатом.
в соответствии с условием функция х должна начаться с 2, а функция у при значении аргумента 0,3 должна равняться 4. на графике же х начинается в 2 и при t=0,3 равна 4. график у начинается не в 2, но и заканчивается не в 4.

Добавлено через 24 минуты
а вот если заменить
res = [ua(2)-2
ub(2)-4];

на
res = [ua(1)-2
ub(2)-4];
то результат соответствует условию.
к сожалению уровня моего английского не хватило для грамотного перевода оригинальной статьи из хэлпа матлаба, но из примеров следует, что ua это начальное значение (если имеется), а ub граничное (конечное) значение; индекс в скобках указывает для какой функции указываются эти значения.
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
14.03.2014, 20:26
mityay, вполне возможно
это была первая тема с краевой задачей
0
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 14
26.11.2015, 19:42
Зосима, а вы не могли бы с численным решением ДУ?
никак не выходит, буду крайне благодарна
Решить ДУ y''+2y'=0 c учетом y(0)=0 y(1)=1. Сравнить численный метод с аналитическим.
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
27.11.2015, 11:38
Подобная тема была совсем недавно
Численное решение ДУ

Добавлено через 13 минут
Цитата Сообщение от Зосима Посмотреть сообщение
function res=bc2(ua,ub)
% x -> u_(1)
% y -> u_(2)
res = [ua(2)-2
ub(2)-4];
end
нужно
Matlab M
1
2
3
4
5
6
function res=bc2(ua,ub)
% x -> u_(1)
% y -> u_(2)
res = [ua(1)-2
     ub(2)-4];
end
1
0 / 0 / 0
Регистрация: 19.05.2017
Сообщений: 3
19.05.2017, 20:58
Здравствуйте! Помогите, пожалуйста разобраться с простым вопросом: в курсовой работе необходимо было решить краевую задачу средствами Матлаб. Задачу решил (решение приведу ниже) благодаря примеру из методички. Но не удалось понять по какому принципу задается вектор начального приближения Y0 = [? ?] в 9-ой строке последнего кода и что оно вообще тут означает. Значения элементов вектора вроде не влияют на результат решения, но какими их правильно задавать?

Задача:

https://www.cyberforum.ru/cgi-bin/latex.cgi?u''=u'\cdot (\frac{1}{x})+u\cdot (x-\frac{1}{4x})-x\cdot \sqrt{x}

https://www.cyberforum.ru/cgi-bin/latex.cgi?a=1.5; https://www.cyberforum.ru/cgi-bin/latex.cgi?b=2.5

https://www.cyberforum.ru/cgi-bin/latex.cgi?u(a)=1.3<br />
u(b)=-0.6

Необходимо решить краевую задачу для ОДУ средствами MATLAB, используя встроенные функции bvpinit и bvp4c.

Введем:

https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{1}=u
https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{2}=u'

тогда система:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases} & \text{ } {y'}_{1}={y}_{2} \\  & \text{ } {y'}_{2}={y}_{2}\cdot (\frac{1}{x})+{y}_{1}\cdot (x-\frac{1}{4x})-x\cdot \sqrt{x}  \end{cases}

и граничные условия для неё:

https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{1}(1.5)-1.3=0
https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{1}(2.5)+0.6=0

В матлаб введем векторы:

https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{1}\rightarrow y(1)
https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{2}\rightarrow y(2)
https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{1}(a)\rightarrow ya(1)
https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{1}(b)\rightarrow yb(1)

Напишем файл-функцию rside для правой части системы уравнений:
------------------------------------------------------------------------------------------------------------------------
Matlab M
1
2
function f = f_rside(x, y)
f = [y(2); (1./x).*y(2)+x.*y(1)-(1./(4*x)).*y(1)-x.*sqrt(x)];
------------------------------------------------------------------------------------------------------------------------
Напишем файл-функцию bound для правой части системы уравнений:
------------------------------------------------------------------------------------------------------------------------
Matlab M
1
2
function f = f_bound(ya, yb) 
f = [ya(1)-1.3; yb(1)+0.6];
------------------------------------------------------------------------------------------------------------------------
Зададим начальное приближение при помощи bvpinit и вызовем солвер bvp4c для получения приближенного решения, затем построим график приближенного решения в виде множества точек.
------------------------------------------------------------------------------------------------------------------------
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
% РЕШЕНИЕ КРАЕВОЙ ЗАДАЧИ 
clear all
clc
a = 1.5;
b = 2.5;
% ВВОДИМ СЕТКУ С ШАГОМ  0.1:
X0 = [a:0.1:b];
% ФОРМИРУЕМ НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ: 
Y0 = [0 0];
% ВЫЗЫВАЕМ СОЛВЕР BVP4C:
initsol = bvpinit(X0, Y0);
sol = bvp4c('f_rside', 'f_bound', initsol);
% CТРУКТУРА sol:  
% sol.x – ВЕКТОР, В КОТОРМ СОДЕРЖАТЬСЯ КООРДИНАТЫ УЗЛОВ СЕТКИ
% sol.y – МАТРИЦА, СОСТОЯЩАЯ ИЗ ДВУХ СТРОК,
% sol.y(1, :) – СООТВЕТСТВУЕТ ЗНАЧЕНИЯМ ФУНКЦИИ y1 
% sol.y(2, :) - СООТВЕТСТВУЕТ ЗНАЧЕНИЯМ ФУНКЦИИ y2 
plot(sol.x, sol.y(1,:), 'ko')
grid
xlabel('x')
ylabel('u(x)')
title('РЕШЕНИЕ КРАЕВОЙ ЗАДАЧИ СРЕДСТВАМИ MATLAB')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.05.2017, 20:58
Помогаю со студенческими работами здесь

Решение системы дифференциальных уравнений
В этой системе второй день.Помогите пожалуйста найти числовые значения системы(W5,W6,W7,W8). artel.m function x= artel(t,x) %y(1)=W5 ...

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

Решение системы дифференциальных уравнений
Помогите, пожалуйста, решить систему ду в Matlab. очень нужно. запуталась Правила: 5.18. Запрещено размещать задания и решения в виде...

Решение системы дифференциальных уравнений
Помогите, пожалуйста, с системой дифференциальных уравнений и построением графиков: ...

Решение системы дифференциальных уравнений
Помогите, пожалуйста, решить данные системы дифференциальных уравнений в матлабе. Буду премного благодарна.


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru