Help with differential equation Kolmogorov in queuing theory
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi everybody,
I have a problem with differential equation Kolmogorov in queuing theory. Now I need to write a code to solve the equation system (1) with the condition (2) and (3) according to Euler method. I wrote the code but the output didn't seem right (please see images). Any one can see my code and give me some advices. Thanks so much![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/323578/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/323578/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/323581/image.png)
clear all
tspan = [0:0.01:5];
n=6;
ic=zeros(1,n+1);
for ii=1:n+1
ic(1,1)=1;
end
[t, p] = ode45(@odeFun, tspan, ic);
figure ('name','xac suat theo time')
plot(t, p)
legend({'p7'})
function dpdt = odeFun(t, p)
lambda = 4.8;
mu = 2;
A=[-1 0 0 0 0 0 0;
1 -1 0 0 0 0 0;
0 1 -1 0 0 0 0;
0 0 1 -1 0 0 0;
0 0 0 1 -1 0 0;
0 0 0 0 1 -1 0;
0 0 0 0 0 1 0];
B=[0 1 0 0 0 0 0;
0 -1 0 0 0 0 0;
0 0 -2 2 0 0 0;
0 0 0 -2 2 0 0;
0 0 0 0 -2 2 0;
0 0 0 0 0 -2 2;
0 0 0 0 0 0 -2];
dpdt = (lambda.*A + mu.*B)*p;
end
.
댓글 수: 0
채택된 답변
Alan Stevens
2020년 6월 29일
Your code doesn't maintain condition (2) for all times. You should eliminate p6 from equations (1) using condition (2), then use the ode solver to solve for the others. You can subsequently calculate p6 for each timestep.
댓글 수: 8
Alan Stevens
2020년 6월 29일
Try this:
tspan = 0:0.01:5;
n=6;
ic=zeros(1,n);
for ii=1:n
ic(1,1)=1;
end
[t, p] = ode45(@odeFun, tspan, ic);
p6 = (1 - sum(p,2));
figure ('name','xac suat theo time')
plot(t, p)
legend('p0','p1','p2','p3','p4','p5')
function dpdt = odeFun(~, p)
lambda = 4.8;
mu = 2;
A=[-1 0 0 0 0 0 ;
1 -1 0 0 0 0 ;
0 1 -1 0 0 0 ;
0 0 1 -1 0 0 ;
0 0 0 1 -1 0 ;
0 0 0 0 1 -1 ];
B=[0 1 0 0 0 0 ;
0 -1 2 0 0 0 ;
0 0 -2 2 0 0 ;
0 0 0 -2 2 0 ;
0 0 0 0 -2 2 ;
-2 -2 -2 -2 -2 -4] ;
v = [0 0 0 0 0 2]';
dpdt = (lambda.*A + mu.*B + mu*v)*p;
end
Notice that the book plots only p0 to p5. It's still not identical to the book! I don't know if this is because the book used a simple Euler method (as you mentioned in your original post) and MATLAB is using a more accurate Runge-Kutta method, or not. I'll leave you to investigate!
추가 답변 (0개)
참고 항목
카테고리
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!