Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
04.10.2014, 20:52  [ТС]
Студворк — интернет-сервис помощи студентам
S_el, Как у Вас такой график получился, у меня совсем другая.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.10.2014, 20:52
Ответы с готовыми решениями:

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

Решить дифференциальное уравнение методом Рунге-Кутта 4 порядка (ode45)
Добрый день! Необходимо решить дифференциальное уравнение методом Рунге-Кутта 4 порядка. Уравнение подготовил, а вот как реализовать...

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

114
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
05.10.2014, 20:35
эх у меня оно ругается:
??? Error using ==> bvp4c at 203
Unable to solve the collocation equations -- a singular Jacobian encountered

Error in ==> temp at 5
sol = bvp4c('RK','bc2',solinit,options);
Matlab M
1
2
3
4
5
6
7
8
9
clear, clc
L = 10;
solinit = bvpinit(linspace(0,L),[1200 0]); 
options = bvpset('RelTol', 1e-6);
sol = bvp4c('RK','bc2',solinit,options); 
plot(sol.x, sol.y(1,:)), 
grid on 
legend('T(x)','dT(x)') 
xlabel('x')
0
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
05.10.2014, 20:48  [ТС]
Зосима, Вроде все получается, но график ни то
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
05.10.2014, 21:40
У меня получился такой график:
Миниатюры
Нелинейное дифференциальное уравнение - метод Рунге-Кутта  
0
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
05.10.2014, 21:41  [ТС]
S_el, Код программу выложите пожалуйста? потому, что почти получился.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
05.10.2014, 21:42
Maikl2020,я брал код Зосима,так как не совсем понял условие задачи
Можно поискать специальные устойчивые методы.
0
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
05.10.2014, 21:44  [ТС]
S_el, Понятно, но я тоже тот код который Зосима вложил нарисовал, что то не то, поэтому Вам обращусь, что выложите код программу пожалуйста.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
05.10.2014, 21:48
Maikl2020, я брал решение Зосима, и оно строит такой график.
Поищите более устойчивый способ решения таких задач,так как мне не нравится прямая линия при t=4.
0
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
05.10.2014, 21:51  [ТС]
S_el, тут так код много набрали, что очень путаю, пожалуйста выложите тот код который вы получили последний график. Тут такой дело если подбирать u то па моему получается
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
05.10.2014, 21:54
Группирую код:

Основная программа:

Matlab M
1
2
3
4
5
6
7
8
9
clear, clc
L = 10;
solinit = bvpinit(linspace(0,L),[1200 0]); 
options = bvpset('RelTol', 1e-6);
sol = bvp4c('RK','bc2',solinit,options); 
plot(sol.x, sol.y(1,:)), 
grid on 
legend('T(x)','dT(x)') 
xlabel('x')
Функция RK:
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
33
function dTETA=RK(x,TETA)
dTETA=zeros(2,1);
Y = TETA(2); % производная
alw=50; 
Rw=0.05; 
R1=0.3; 
R2=1500;
c2=660; 
la2=4; 
la1=0.084; 
al1=0.5; 
al2=0.5;
et0=0.077; 
R=8.314;
cp=1000; 
Tv=315;
T0=300; 
E=12; 
Q=1513000;
k0=50000000000;
u=0.001;
v=0.5;
u0=v/u;
L=0.5;
Te=T0+(Q*et0)/(1+(R2*c2*u)/(R1*cp*(v+u)));
%TETA=(Tv-T0)/(Te-T0);
Al0=(2*alw)/Rw;
a1=(R1*(u0+1)*cp+R2*c2*u0)/(al1*la1+al2*la2);
a2=Al0/(al1*la1+al2*la2);
a3=(R1*Q*et0*k0)/(al1*la1+al2*la2);
dTETA(1)=Y; % первая производная dT/dx
dTETA(2)=L*u*a1*Y+L*L*a2*TETA(1)-((a3*L*L)/(T0+TETA(1)*(Te-T0)))*exp(-E/(R*(T0+TETA(1)*(Te-T0))));
end
Функция bc2:
Matlab M
1
2
3
4
5
6
7
8
function res=bc2(ua,ub) % граничные условия 
% T -> u_(1)
% dT -> u_(2)
% ua -- x==0
% ub -- x==L 
res = [ua(1)-1200; % T(0)=1200
   ub(1)-300]; % T(L)=300
end
3
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
05.10.2014, 22:01  [ТС]
S_el, спасибо за код.
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
05.10.2014, 22:45
на досуге мне стало интересно, решаема ли такая система вообще? тогда я поубирал все коэф-ты и сделал такую тестовую программку:
Функция системы:
Matlab M
1
2
3
4
5
6
function dTETA=RK2(x,TETA)
dTETA=zeros(2,1);
 
dTETA(1) = TETA(2); % первая производная dT/dx
dTETA(2) = TETA(2) + TETA(1) - 1/(TETA(1))*exp(-1/TETA(1));
end
Граничные условия:
Matlab M
1
2
3
4
function res=bc2(ua,ub) % граничные условия 
res = [ua(1)-1200; % T(0)=1200
       ub(1)-300]; % T(L)=300
end
Программа расчетов:
Matlab M
1
2
3
4
5
6
7
8
9
10
clear all
clc
L = 10;
solinit = bvpinit([0 L],[1200 0]); 
options = bvpset('RelTol', 1e-6,'NMax',5e4);
sol = bvp4c(@RK2,@bc2,solinit,options); 
plot(sol.x, sol.y(1,:)), 
grid on 
%legend('T(x)') 
xlabel('x')
и получил вот такую штуку


Отсюда можно сделать вывод, что вся загвоздка в коэфициентах
*кроме того в pdf файле в методе прогонки указаны граничные условия для производной dT/dx - она на концах должна равняться 0, однако bvp4c ругается, если граничных условий более двух (по числу уравнений в системе)
1
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
06.10.2014, 12:44  [ТС]
Зосима, S_el, Большой спасибо Вам, Вы очень мне помогли.

Добавлено через 5 часов 32 минуты
Зосима, Из интернета нашло уравнения теплопроводность который решена на MATLAB но тут Программа расчетов нету, поможешь мне в этом.
У меня такая задача - решить численным методом уравнение теплопроводности в MatLab и как-то его изобразить (графически). Даны граничные условия, начальная температура. То есть вот у меня есть стержень длины L при какой-то начальной температуре https://www.cyberforum.ru/cgi-bin/latex.cgi?T_0=T(x,0), в какой-то момент времени его начинают греть с двух концов с постоянными температурами https://www.cyberforum.ru/cgi-bin/latex.cgi?T_1=T(0,t) и https://www.cyberforum.ru/cgi-bin/latex.cgi?T_2=T(L,t). Собственно, нужно найти зависимость https://www.cyberforum.ru/cgi-bin/latex.cgi?T(x,t). Само уравнение такое:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\huge \frac{\partial T}{\partial t} = A \frac{\partial^2 T}{\partial x^2}
Если заменить производные на разностные отношения (как нам говорили, так нужно делать), то получается следующее:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\large \frac{T(x_{i},t_{j+1})-T(x_i,t_j)}{\tau} = \frac A {h^2}(T(x_{i+1},t_{j+1})-2T(x_{i},t_{j+1})+T(x_{i-1},t_{j+1}))
где h - интервал по https://www.cyberforum.ru/cgi-bin/latex.cgi?\large x, \tau - интервал по t.
И что с этим дальше делать? Как и что из этого нужно выразить? Подскажите, пожалуйста, хоть какой дальше план работы... С рисованием я как-нибудь справлюсь, но по решению чего-либо численными методами опыта пока нет.


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
function [  ] = Temp( T1,T2,T0,A,L )
 
s=figure;
step=0.1;
t=0;
h=1;
Ti=T0*ones(L,1);
Tk=T0*ones(L,1);
colormap(bone);
 
while ishandle(s)
    Ti(1)=T1;
    Ti(L)=T2;
    Tk(1)=T1;
    Tk(L)=T2;
    for x=2:h:(L-1)
        Tk(x)=(A*step/h^2)*(Ti(x-1)+Ti(x+1)-2*Ti(x)) + Ti(x);
    end
    image(Ti);
    Ti=Tk;
    t=t+step;
    pause(step);
end
 
end
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
06.10.2014, 17:15
Maikl2020, я тоже не силен в методе прогонки

мой тебе настоятельный совет: провeрь размерности констант! а то вдруг у тебя где-то калории, а где-то джоули, где-то килограмы, а где-то граммы, где-то метры, а где-то дюймы... а мы такие сидим и не можем понять, почему графики некрасивые
0
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
06.10.2014, 17:18  [ТС]
Зосима, Спасибо за советь. А где нибудь есть метод прогонка на MatLab для научения.
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
06.10.2014, 17:32
тут есть правильный рабочий пример: Уравнение теплопроводности в matlabe но я в нем не разбирался. Посмотри, может на YouTube что то есть с пояснениями
0
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
06.10.2014, 18:31  [ТС]
Зосима, S_el, Вот pdf (страница 122) такой уравнения по методу прогонки провели на
Pascal можно этот решит на MatLab. Посмотрите пожалуйста.

Зосима, Свою уравнению тут подгонял но все еще .....
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
>> N =10; % количество узлов в сетке;
t_end = 60; %окончание по времени;
L = 0.3; %длина толщены пластинки;
T0 = 300; %начальная температура;
T1 = 300; % температура на границе x=0);
Tr = 100; %температура на границе x=L ;
alw=50; 
Rw=0.05; 
R1=0.3; 
R2=1500;
c2=660; 
la2=4; 
la1=0.084; 
al1=0.5; 
al2=0.5;
et0=0.077; 
R=8.314;
cp=1000; 
Tv=315;
E=126000; 
Q=1513000;
k0=50000000000;
u=0.001;
v=0.5;
u0=v/u;
Al0=(2*alw)/Rw;
Fi=(R2*c2)/(R1*cp);
kap=(al1*la1+al2*la2)/(R2*c2+R1*cp);
a0=Al0/(R2*c2+R1*cp);
a1=(R1*T0*k0*Q*et0)/(R2*c2+R1*cp);
a2=v/(1+Fi);
T = zeros(1,N);
alfa = zeros(1,N);
beta = zeros(1,N);
 
h = L/(N-1); % определяем расчетный шаг сетки по пространственной координате
tau = t_end/100; %определяем расчетный шаг сетки по времени
for i=1:N
    T(i)= T0;
    time = 0;
    
    while time < t_end
        time = time + tau;
        alfa(1) = 0;
        beta(1) = 1;
        
        for j=2:N-1
            ai = kap/(h^2);
            bi = 1/tau+(2*kap)/(h^2)+a2/h;
            ci = a2/h+kap/(h^2);
            fi = -1/tau+a0*(T(i)-T0)-a1/(T(i))*exp(-E/R/T(i));
            alfa(j) = ai/(bi-ci*alfa(j-1)); % прогоночные коэффициенты
            beta(j) = (ci*beta(j-1)-fi)/(bi-ci*alfa(j-1));% прогоночные коэффициенты
        end
        
        T(N) = Tr; %определяем значение температуры на правой границе
        
        for k = N-1:-1:1
            T(k)= alfa(k)*T(k+1)+ beta(k);
        end
    end
end
plot(h*(0:N-1),T);
0
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
06.10.2014, 18:33  [ТС]
ТУТ
Вложения
Тип файла: pdf Метод прогонка.pdf (4.49 Мб, 5 просмотров)
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
06.10.2014, 18:53
Цитата Сообщение от Maikl2020 Посмотреть сообщение
такой уравнения по методу прогонки провели на
Pascal можно этот решит на MatLab.
Вам нужно перевести из Pascal в Matlab уравнение из методички,или вы хотите сделать своё по аналогии с примером?
0
Всегда онлайн
 Аватар для Maikl2020
49 / 49 / 10
Регистрация: 13.04.2014
Сообщений: 1,451
06.10.2014, 19:10  [ТС]
S_el, Я думаю с перво, перевести из Pascal в Matlab уравнение из методички
потом по аналогии свою уравнению пробовать. Потому, что мой уравнений тоже такая но чуть коэффициенты другие.

Поможете мне в этом, т.е. перевести из Pascal в Matlab уравнение из методички.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.10.2014, 19:10

Уравнение, метод Рунге-Кутта 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 ...

Нелинейное дифференциальное уравнение второго порядка
Привет всем! Помогите пожалуйста решить это уравнение. Из-за нелинейности ничего не получается( коэффициенты b и betta( зависит от cos(wt))...

Метод Рунге-Кутта
Здравствуйте, помогите пожалуйста решить проблему. Решаю простой дифур dy=-2*x*y Создаю m-файл function dy=fu(x,y) dy=-2*y*x^2; ...

Метод Рунге-Кутта
Необходимо решить дифф. уравнение методом Рунге-Кутта 4-го порядка. {y}^{'}={t}^{2}-y, y(0)=1, y(t)=-{e}^{-t}+{t}^{2}-2*t+2 function...

Метод Рунге-Кутта 4 порядка
Помогите исправить ошибки % моя функция для вычисления значений function res = myfunc (x, y) res = y + (1 + x) * y * y; end ...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
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) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru