ode45 fail with pendulum

조회 수: 5 (최근 30일)
Bobby Fischer
Bobby Fischer 2021년 1월 13일
편집: Mischa Kim 2021년 1월 13일
Hello. I have proof that in my machine the pendulum goes all the way around, contradicting reality. Any thoughts?
-----------------------------------------------------------------------------------------------------
MATLAB Version: 9.8.0.1323502 (R2020a)
MATLAB License Number: 40875211
Operating System: Microsoft Windows 8.1 Version 6.3 (Build 9600)
Java Version: Java 1.8.0_202-b08 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
-----------------------------------------------------------------------------------------------------
MATLAB Version 9.8 (R2020a)
Simulink Version 10.1 (R2020a)
Optimization Toolbox Version 8.5 (R2020a)
Statistics and Machine Learning Toolbox Version 11.7 (R2020a)
Symbolic Math Toolbox
function pendule2
[~,y]=ode45(@fun,0:0.05:40,[pi-0.1,0]);
figure(1)
close(1)
figure(1)
[n,~]=size(y);
t1=0:0.05:2*pi;
x1=cos(t1);
y1=1+sin(t1);
for k=1:n
hold on
axis equal
axis([-1 1 0 2])
plot(x1,y1,'k--')
plot(sin(y(k,1)),1-cos(y(k,1)),...
'bo','MarkerSize',5,'MarkerFaceColor','b')
plot([0 sin(y(k,1))], [1 1-cos(y(k,1))],'b')
pause(0.01)
clf
end
hold on
axis equal
axis([-1 1 0 2])
plot(x1,y1,'k--')
plot(sin(y(n,1)),1-cos(y(n,1)),...
'bo','MarkerSize',5,'MarkerFaceColor','b')
plot([0 sin(y(n,1))], [1 1-cos(y(n,1))],'b')
text(0.85,0.1,'end')
function [dydt]=fun(~,y)
dydt=[y(2); -sin(y(1))];
end
end

채택된 답변

Mischa Kim
Mischa Kim 2021년 1월 13일
편집: Mischa Kim 2021년 1월 13일
Hi Bobby, this is the wonderful world of numerical (vs symbolic) computation. ode45 is a numerical integrator that approximates the actual solution. In essence this mean that with every integration step there will be a small error that adds up over time. You can fine-tune how well you would like to approximate the solution by setting tolerance levels. Try, e.g.
options = odeset('RelTol',1e-10);
[~,y] = ode45(@fun,0:0.05:40,[pi-0.1,0],options);

추가 답변 (0개)

카테고리

Help CenterFile 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!

Translated by