Diese Datei stammt aus Wikimedia Commons und kann von anderen Projekten verwendet werden. Die Beschreibung von deren Dateibeschreibungsseite wird unten angezeigt.
English: Phase portrait of an undamped simple pendulum.
The latest revision of the image was created in python using the source code provided below.
The first revision of the image was plotted using with GNU Octave using gnuplot backend and saved as a standalone LaTeX file. The PDF generated was then converted to SVG using pdf2svg. The octave source file 'pendulumOde.m' is provided below for reference.
functionpendulumOde% main function to numerically solve the pendulum ODE and plot the phase portraitfigure;subplot(211);x=-pi:.1:3*pi;h=plot(x,-cos(x),'linewidth',2);set(gca,'yminortick','on','xtick',[-pi:pi/2:3*pi],'xticklabel',{'$-\\pi$';'$-\\frac{\\pi}{2}$';'$0$';'$\\frac{\\pi}{2}$';'$\\pi$';'$\\frac{3}{2}\\pi$';'$2\\pi$';'$\\frac{5}{2}\\pi$';'$3\\pi$'});xlim([-pi3*pi])xlabel('$\theta$');ylabel('$V(\theta)$');gridon;subplot(212);[x,y]=meshgrid(-pi:.4:3*pi,-3:.2:3);u=zeros(size(x));v=zeros(size(y));fori=1:numel(x)yy=ode_eq(0,[x(i),y(i)]);u(i)=yy(1);v(i)=yy(2);vmod=sqrt(u(i).^2+v(i).^2);u(i)=u(i)/vmod;v(i)=v(i)/vmod;endquiver(x,y,u,v,'r');xlabel('$\theta$');ylabel('$\frac{\mathrm{d}\theta}{\mathrm{d}t}$');xlim([-pi3*pi])ylim([-pipi])gridon;set(gca,'yminortick','on','xtick',[-pi:pi/2:3*pi],'xticklabel',{'$-\\pi$';'$-\\frac{\\pi}{2}$';'$0$';'$\\frac{\\pi}{2}$';'$\\pi$';'$\\frac{3}{2}\\pi$';'$2\\pi$';'$\\frac{5}{2}\\pi$';'$3\\pi$'});holdall;dT=.01;T=40;forc=0:.5:5[x,y]=rungeKutta([c;0],dT,T,@ode_eq);plot(y(1,:),y(2,:),'b','linewidth',2);plot(y(1,:),-y(2,:),'b','linewidth',2);[x,y]=rungeKutta([0;c],dT,T,@ode_eq);plot(y(1,:),y(2,:),'b','linewidth',2);plot(-y(1,:),y(2,:),'b','linewidth',2);plot(y(1,:),-y(2,:),'b','linewidth',2);plot(-y(1,:),-y(2,:),'b','linewidth',2);[x,y]=rungeKutta([c;pi*2],dT,T,@ode_eq);plot(y(1,:),y(2,:),'b','linewidth',2);plot(y(1,:),-y(2,:),'b','linewidth',2);[x,y]=rungeKutta([pi*2;c],dT,T,@ode_eq);plot(y(1,:),y(2,:),'b','linewidth',2);plot(-y(1,:),y(2,:),'b','linewidth',2);plot(y(1,:),-y(2,:),'b','linewidth',2);plot(-y(1,:),-y(2,:),'b','linewidth',2);endprint-depslatexstandalone"-S512,512""pendulum.tex";endfunctiondy=ode_eq(x,y)% function that defines an n-dimensional ODE. % In this case, the two linear ODEs of pendulumdy=[0;0];dy(1)=y(2);dy(2)=-sin(y(1));endfunction[x, y]=rungeKutta(y0, dT, T, dyFun, x0)% A generalized Runge-Kutta algorithm to solve 'n' number of linear ODE% obtained from an 'n'th degree ODEn=length(y0);ifn>1&&size(y0,2)==ny0=y0';endifnargin<5x0=0;endN=round(T/dT);x=zeros(1,N);y=zeros(n,N);x(1)=x0;y(:,1)=y0;fornn=1:N-1k1=feval(dyFun,x(nn),y(:,nn));k2=feval(dyFun,x(nn)+.5*dT,y(:,nn)+.5*k1*dT);k3=feval(dyFun,x(nn)+.5*dT,y(:,nn)+.5*k2*dT);k4=feval(dyFun,x(nn)+dT,y(:,nn)+k3*dT);y(:,nn+1)=y(:,nn)+(dT/6)*(k1+2*k2+2*k3+k4);x(nn+1)=x(nn)+dT;endend
Lizenz
Ich, der Urheber dieses Werkes, veröffentliche es unter der folgenden Lizenz:
verbreitet werden – vervielfältigt, verbreitet und öffentlich zugänglich gemacht werden
neu zusammengestellt werden – abgewandelt und bearbeitet werden
Zu den folgenden Bedingungen:
Namensnennung – Du musst angemessene Urheber- und Rechteangaben machen, einen Link zur Lizenz beifügen und angeben, ob Änderungen vorgenommen wurden. Diese Angaben dürfen in jeder angemessenen Art und Weise gemacht werden, allerdings nicht so, dass der Eindruck entsteht, der Lizenzgeber unterstütze gerade dich oder deine Nutzung besonders.
Diese Datei enthält weitere Informationen, die in der Regel von der Digitalkamera oder dem verwendeten Scanner stammen. Durch nachträgliche Bearbeitung der Originaldatei können einige Details verändert worden sein.