پرونده:Pendulum phase portrait.svg - ویکی‌پدیا، دانشنامهٔ آزاد

پروندهٔ اصلی (پروندهٔ اس‌وی‌جی، با ابعاد ۴۷۹ × ۴۸۴ پیکسل، اندازهٔ پرونده: ۳۵۲ کیلوبایت)

خلاصه

توضیح
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.
تاریخ
منبع اثر شخصی
پدیدآور Krishnavedala
SVG genesis
InfoField
 
کد مبدأ این پروندهٔ گرافیک برداری مقیاس‌پذیر، معتبر.
 
این گرافیک با Matplotlib ساخته شده است
کد منبع
InfoField

Python code

Python source code
from numpy import * from scipy import * from scipy.integrate import odeint from matplotlib.pyplot import * from mpl_toolkits.axes_grid.axislines import SubplotZero   def myFun(u,t=0.,mu=.5):     x = u[0]     v = u[1]     dx = v     dv = -sin(x)     return (dx,dv)  if __name__ == "__main__":     fig = figure(figsize=(5.5,7))     ax = SubplotZero(fig,211)     x = linspace(-3*pi,3*pi,100)     ax.plot(x,-cos(x),'b',lw=1.5)     fig.add_subplot(ax)     ax.grid(True,which='major')     ax.minorticks_on()     ax.axis('tight')     ax.axis([-3*pi,3*pi, -1,1])     ax.set_xticks(arange(-3*pi,3.1*pi,pi))     ax.set_xticklabels(         [r'$-3\pi$',r'$-2\pi$',         r'$-\pi$',r'$0$',r'$\pi$',         r'$2\pi$',r'$3\pi$'])     ax.set_xlabel(r'$\theta$')     ax.set_ylabel(r'$V(\theta)$')     ax = SubplotZero(fig,212)     fig.add_subplot(ax)     t = linspace(0,50,200)     for m in range(0,60,5):         u = odeint(myFun,[m/10.,0.],t)         ax.plot(u[:,0],u[:,1],'b',lw=1.5)         ax.plot(-u[:,0],u[:,1],'b',lw=1.5)         u = odeint(myFun,[0,m/10.],t)         ax.plot(ma.masked_outside(u[:,0],-3*pi,3*pi),             ma.masked_outside(u[:,1],-3,3),'b',lw=1.5)         ax.plot(ma.masked_outside(-u[:,0],-3*pi,3*pi),             ma.masked_outside(u[:,1],-3,3),'b',lw=1.5)         ax.plot(ma.masked_outside(u[:,0],-3*pi,3*pi),             ma.masked_outside(-u[:,1],-3,3),'b',lw=1.5)         ax.plot(ma.masked_outside(-u[:,0],-3*pi,3*pi),             ma.masked_outside(-u[:,1],-3,3),'b',lw=1.5)     x = linspace(-3*pi,3*pi,20)     y = linspace(-3,3,15)     x,y = meshgrid(x,y)     X,Y = myFun([x,y])     M = (hypot(X,Y))     M[M==0]=1.     X,Y = X/M, Y/M     ax.quiver(x,y,ma.masked_outside(X,-3*pi+.1,3*pi-.1),Y,M,pivot='mid',color='r')     ax.minorticks_on()     ax.axis('scaled')     ax.axis([-3*pi,3*pi, -3,3])     ax.set_yticks(arange(-3,3.1,1.5))     ax.set_xticks(arange(-3*pi,3.1*pi,pi))     ax.set_xticklabels(         [r'$-3\pi$',r'$-2\pi$',         r'$-\pi$',r'$0$',r'$\pi$',         r'$2\pi$',r'$3\pi$'])     ax.set_xlabel(r'$\theta$')     ax.set_ylabel(r'$\frac{\mathrm{d}\theta}{\mathrm{d}t}$')     ax.grid(True)     subplots_adjust(wspace=.1,hspace=-.1)     fig.show()     fig.savefig("pendulum.svg", bbox_inches="tight",\         pad_inches=.15, transparent=False) 

Data

Matlab source code
function pendulumOde % main function to numerically solve the pendulum ODE and plot the phase portrait   figure;   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([-pi 3*pi])   xlabel('$\theta$');   ylabel('$V(\theta)$');   grid on;   subplot(212);   [x,y] = meshgrid(-pi:.4:3*pi,-3:.2:3);   u = zeros(size(x));   v = zeros(size(y));   for i = 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;   end   quiver(x,y,u,v,'r');   xlabel('$\theta$');   ylabel('$\frac{\mathrm{d}\theta}{\mathrm{d}t}$');   xlim([-pi 3*pi])   ylim([-pi pi])   grid on;   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$'});   hold all;      dT = .01;   T = 40;   for c = 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);   end   print -depslatexstandalone "-S512,512" "pendulum.tex"; end  function dy = ode_eq(x,y) % function that defines an n-dimensional ODE.  % In this case, the two linear ODEs of pendulum   dy = [0;0];   dy(1) = y(2);   dy(2) = -sin(y(1)); end  function [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 ODE   n = length(y0);   if n > 1 && size(y0,2) == n     y0 = y0';   end   if nargin < 5     x0 = 0;   end   N = round(T/dT);   x = zeros(1,N);   y = zeros(n,N);   x(1) = x0;   y(:,1) = y0;   for nn = 1:N-1     k1 = 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;   end end 

اجازه‌نامه

من، صاحب حقوق قانونی این اثر، به این وسیله این اثر را تحث اجازه‌نامهٔ ذیل منتشر می‌کنم:
w:fa:کرییتیو کامنز
انتساب انتشار مشابه
این پرونده تحت پروانهٔ Creative Commons Attribution-Share Alike 4.0 International منتشر شده است.
شما اجازه دارید:
  • برای به اشتراک گذاشتن – برای کپی، توزیع و انتقال اثر
  • تلفیق کردن – برای انطباق اثر
تحت شرایط زیر:
  • انتساب – شما باید اعتبار مربوطه را به دست آورید، پیوندی به مجوز ارائه دهید و نشان دهید که آیا تغییرات ایجاد شده‌اند یا خیر. شما ممکن است این کار را به هر روش منطقی انجام دهید، اما نه به هر شیوه‌ای که پیشنهاد می‌کند که مجوزدهنده از شما یا استفاده‌تان حمایت کند.
  • انتشار مشابه – اگر این اثر را تلفیق یا تبدیل می‌کنید، یا بر پایه‌ آن اثری دیگر خلق می‌کنید، می‌‌بایست مشارکت‌های خود را تحت مجوز same or compatible license|یکسان یا مشابه با اصل آن توزیع کنید.

عنوان

شرحی یک‌خطی از محتوای این فایل اضافه کنید

آیتم‌هایی که در این پرونده نمایش داده شده‌اند

توصیف‌ها

source of file انگلیسی

تاریخچهٔ پرونده

روی تاریخ/زمان‌ها کلیک کنید تا نسخهٔ مربوط به آن هنگام را ببینید.

تاریخ/زمانبندانگشتیابعادکاربرتوضیح
کنونی۱۳ نوامبر ۲۰۱۷، ساعت ۱۵:۲۰تصویر بندانگشتی از نسخهٔ مورخ ۱۳ نوامبر ۲۰۱۷، ساعت ۱۵:۲۰۴۷۹ در ۴۸۴ (۳۵۲ کیلوبایت)Krishnavedalarecompiled image using python code given in the description. No SVG errors
۲۹ نوامبر ۲۰۱۴، ساعت ۲۰:۳۰تصویر بندانگشتی از نسخهٔ مورخ ۲۹ نوامبر ۲۰۱۴، ساعت ۲۰:۳۰۴۸۳ در ۵۰۳ (۳۰۶ کیلوبایت)Krishnavedalafixed svg by a bug of matplotlib while saving to svg and data going beyond graphical display
۲۹ نوامبر ۲۰۱۴، ساعت ۱۹:۴۷تصویر بندانگشتی از نسخهٔ مورخ ۲۹ نوامبر ۲۰۱۴، ساعت ۱۹:۴۷۴۸۳ در ۵۰۳ (۳۸۲ کیلوبایت)KrishnavedalaRecreated, better and smaller image using python and matplotlib. Source code included
۲۹ نوامبر ۲۰۱۴، ساعت ۱۶:۵۸تصویر بندانگشتی از نسخهٔ مورخ ۲۹ نوامبر ۲۰۱۴، ساعت ۱۶:۵۸۶۴۰ در ۶۴۰ (۳٫۷۹ مگابایت)KrishnavedalaUser created page with UploadWizard

صفحهٔ زیر از این تصویر استفاده می‌کند:

کاربرد سراسری پرونده

ویکی‌های دیگر زیر از این پرونده استفاده می‌کنند:

فراداده