ode45 3D-Plot
조회 수: 5 (최근 30일)
이전 댓글 표시
Hi
Can sb help me please?
I should draw 3D-Plot for a first order differential system, but I could find just one example which was very complicated for me to learn!
a=1; b=2; c=a*(b^2-1/(b^2));
f = @(t,x)[x(2)*x(3)-a*x(1)
x(1)*(x(3)-c)-a*x(2)
1-x(1)*x(2)];
t=linspace(0,50);
[t,x]=ode45(f,t,[1 0 1]);
now I should draw the 3D trajectory (x1-x2-x3 diagram) and also indicate them in the course of time !
can someone help with it?
Thank you very much in advance
댓글 수: 4
채택된 답변
Star Strider
2019년 4월 6일
In our universe, there are three large dimensions (although string theory posits 11 in all). That means that you can only plot three spatial coordinates, and if you want to plot time as well, the only way is to add colour to the various regions.
This slight variation on your code does that:
a=1; b=2; c=a*(b^2-1/(b^2));
f = @(t,x)[x(2)*x(3)-a*x(1)
x(1)*(x(3)-c)-a*x(2)
1-x(1)*x(2)];
t=linspace(0,50,1000);
[t,x]=ode45(f,t,[1 0 1]);
cm = jet(numel(t));
figure
hold all
for k = 1:size(x,1)-1
hl = plot3([x(k,1),x(k+1,1)], [x(k,2),x(k+1,2)], [x(k,3),x(k+1,3)]);
set(hl, 'LineStyle','-.', 'Color',cm(k,:));
end
hold off
grid on
view(50, 30)
The jet (link) colormap (link) (that some object to using) colours the times here from earliest (blue) to latest (red). You can use any map (link) you want. Substitute that name into the ‘cm’ assignment to change it. I am not aware of any other way to depict time in a 3D plot that does not include time as an independent variable on one of the axes.
댓글 수: 3
추가 답변 (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!