Форум программистов, компьютерный форум, киберфорум
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
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru