How to solve and plot system of nonlinear differential equations?
조회 수: 66 (최근 30일)
이전 댓글 표시
I'm trying to recreate graphs from a modeling paper by plotting a system of differential equations in MatLab. Unfortunately, I don't have much MatLab experience if any. I've found other questions on systems of nonlinear equations asked in MatLab answers and have managed to produce a plot for my own system, but this plot is not the same as the one in the paper I'm using.
https://imgur.com/a/hBQ3z This should show the differential equations I'm using, the parameter values, the graph I'm trying to recreate, and the plot I ended up with.
Here is the code I used to set up my system and plot the equations.
syms p(t) m(t) l(t) T Y
Eqns = [diff(p(t),t) == (3*p(t)*(1-p(t)))-(30*(p(t)*m(t))); diff(m(t),t) == ((25*p(t)+l(t))*m(t)*(1-m(t)))-m(t); diff(l(t),t) == (15*(1+tanh(2*m(t)-2)))-l(t)]
[DEsys,Subs] = odeToVectorField(Eqns);
DEFcn = matlabFunction(DEsys, 'Vars',{T,Y});
tspan = [0,25];
y0 = [0.01 0.05 0.539];
[T,Y] = ode45(DEFcn, tspan, y0);
figure(1)
plot(T,Y)
legend('p(t)','m(t)','l(t)')
grid
These are the same equations shown in the imgur album which I tried to recreate through diff(p(t),t), diff(m(t),t), and diff(l(t),t)
Here are the parameter values and graph I'm trying to recreate
And this is the graph I ended up with
I based my code off of a response provided to a question asked here (https://www.mathworks.com/matlabcentral/answers/365203-how-to-solve-a-system-of-nonlinear-differential-equations), but I would really appreciate anyone that could help me solve my plotting problems and show me what I did incorrectly and how to get the right plot.
Thanks.
댓글 수: 1
Rahiti Arapari Hargous
2018년 7월 31일
이동: Dyuman Joshi
2024년 4월 4일
Hi everyone,
I have a similar problem with the next governing equation, with y(t) and x(t). The system of equation is the next one:
ay''' - b*x*y' + w*cos(y) = 0
x' - w*L*sin(y)=0
If anyone can help thanks
채택된 답변
추가 답변 (1개)
thanos tria
2019년 3월 26일
편집: Walter Roberson
2019년 3월 26일
Hello, i am trying to solve a non linear system but when i plot the solutions only a straight line in one of the variables appears on the graph, and all the variables just can't get away from the initial conditions. That's my code:
syms c1(t) c2(t) c3(t) c4(t) T Y
Eqns = [diff(c1(t),t) == -0.015*c1+1.8*10^(-14)*c2*c4;
diff(c2(t),t) == 0.015*c1-1.8*10^(-14)*c2*c4;
diff(c3(t),t) == -6*10^(-34)*c3*0.051765*10^(20)*0.2465*10^(20)+0.015*c1;
diff(c4(t),t) == 6*10^(-34)*c3*0.051765*10^(20)*0.2465*10^(20)-1.8*10^(-14)*c2*c4];
[DEsys,Subs] = odeToVectorField(Eqns);
DEFcn = matlabFunction(DEsys, 'Vars',{T,Y});
tspan = [0,50000];
y0 = [0.040923*10^(12) 0 0 0];
[T,Y] = ode45(DEFcn, tspan, y0);
plot(T,Y)
And that's my graph:
It sould have had some curves because it describes how ozon is formulated in the atmosphere. Any suggestions??
댓글 수: 2
Walter Roberson
2019년 3월 26일
I agree that when I use those equations with Maple's numeric ODE solver, that I get distinct curves for each of the functions, for all of Maple's numeric methods that I have tried.
I also find in Maple that using stiff methods improves performance a lot without changing the solution. That would correspond to using routines such as ode23s() in MATLAB --- which produces the same (not so good) result as ode45 except faster.
참고 항목
카테고리
Help Center 및 File Exchange에서 Numerical Integration and Differential Equations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!