تصور جاذبي غريب في بلوتلي هو تحفة

الشعر عبارة عن مقطع لفظي جميل جدًا ومدروس في كثير من الأحيان لا نستخدمه في الحياة اليومية ، ولكننا نحب الاستمتاع بهذا الشكل. يمكن قول الشيء نفسه عن الرياضيات. في فيلم "Pi" ، يطلق بطل الرواية على الرياضيات "لغة الطبيعة" ، وفي فيلم "ألعاب العقل" يتحدث بطل الرواية عنه على أنه "نوع خاص من الفن". في الحياة اليومية ، يمكننا أن ننسى ذلك تماما.

ظهور جاذبي غريب غير عادي وجذاب حتى في البعد ثنائي الأبعاد. يسمح لك Plotly ببناءها في ثلاثة أبعاد ، مما يجعل من السهل للغاية الحصول على نموذج ثلاثي الأبعاد يمكنك "تحريفه" ومن خلاله يمكنك "الطيران" - الإحساس "باللمس".

صورة



كيف بدأ كل شيء


بدأ كل شيء منذ فترة طويلة ، في مكان ما في عام 2007 في الجامعة ، تعرفت على نظرية التنظيم الذاتي ولأول مرة رأيت جاذب لورنز ، وهو الرسم التوضيحي بالأبيض والأسود في كتاب. ثم بدا لي غريباً للغاية أن يتحرك شيء ما على هذا المسار غير العادي. حتى الغريب بالنسبة لي بدا فكرة أن كل شيء في العالم تقريبا يمكن وصفها من خلال نظرية واحدة.

بشكل عام ، كل شيء على النحو المعتاد - نظرتي للعالم قد تغيرت ، واستمرت الحياة ، مر الوقت. والآن ، في الآونة الأخيرة ، صادفت رابطًا وأرى هذا:

صورة من chaoticatmospheres.com
الصورة مأخوذة من chaoticatmospheres.com

"جميلة". اعتقدت. فكرة أن كل هذا يمكن أن يبنى في Matplotlib تومض أيضا ، لكنني سبق أن عرفت مسبقا أنه لن يكون هناك شيء رائع. ومؤخراً ، قبل أسبوعين فقط ، قابلت بلوتلي وأدركت على الفور أن هناك شيئًا ما يمكن أن يتحقق.

فشلت المحاولة الأولى للبناء على الفور. اتضح أن الصيغ الموجودة في بعض صور "معرض الجاذبين الغريبين" تحتوي على أخطاء. ومع ذلك ، يحذر مؤلف المعرض بصدق أنه ليس عالم رياضيات ، مثل مؤلف هذا المقال.

مكّنت عبارة "google" القصيرة من العثور على هذا الكود ، والذي اتضح أنه مفيد للغاية ، وتم إنشاؤه بواسطة Michael Tyka. صنع هذا الشخص الرائع مكونًا إضافيًا بالكامل لـ Blender ، مما يسمح لك ببناء طرازات (!) من 60 جاذبية. في الواقع ، يمكن طباعتها على طابعة ثلاثية الأبعاد ، ونظرًا لوجود تقنيات طباعة الشمع ، من السهل جدًا الحصول على قالب لتصميم البرونز.

رمز التصور


حسنًا ، بالإضافة إلى كونه عالم رياضيات هواة ، فأنا أيضًا مبرمج هواة. لذلك لا تحكم بدقة على جودة الكود.
################################ ###   ### ################################ import numpy as np from scipy.integrate import odeint import plotly.graph_objects as go ################################## ###    ### ################################## #  : def LorenzMod1(XYZ, t, alpha, beta, xi, delta): x, y, z = XYZ x_dt = -alpha*x + y*y - z*z + alpha*xi y_dt = x*(y - beta*z) + delta z_dt = -z + x*(beta*y + z) return x_dt, y_dt, z_dt #     : alpha = 0.1 beta = 4 xi = 14 delta = 0.08 x_0, y_0, z_0 = 0, 1, 0 #      #  : tmax, n = 100, 50000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(LorenzMod1, (x_0, y_0, z_0), t, args=(alpha, beta, xi, delta)) X, Y, Z = fT ####################### ###  ### ####################### # ,    : c = np.linspace(0, 1, n) #    : DATA = go.Scatter3d(x=X, y=Y, z=Z, line=dict(color= c, width=3, #   : # Greys,YlGnBu,Greens,YlOrRd,Bluered,RdBu, # Reds,Blues,Picnic,Rainbow,Portland,Jet, # Hot,Blackbody,Earth,Electric,Viridis,Cividis. colorscale="Cividis"), #   : mode='lines') fig = go.Figure(data=DATA) #   : fig.update_layout(width=1000, height=1000, margin=dict(r=10, l=10, b=10, t=10), #   : paper_bgcolor='rgb(0,0,0)', scene=dict(camera=dict(up=dict(x=0, y=0, z=1), eye=dict(x=0, y=1, z=1)), #   #     : aspectratio = dict(x=1, y=1, z=1), # ,    "aspectratio" aspectmode = 'manual', #  : xaxis=dict(visible=False), yaxis=dict(visible=False), zaxis=dict(visible=False) ) ) ###################### #!!  !!# ###################### fig.show() 

نتيجة لذلك ، يجب أن يظهر نموذج ثلاثي الأبعاد لجاذب غريب يسمى Lorenz Mod 1 :
صورة

تجدر الإشارة إلى أنه على الفور لحل أنظمة المعادلات التفاضلية ، تم اختيار وظيفة odeint من وحدة SciPy ، والتي بدت لي الطريقة الأسهل والأسرع لإنشاء كود عمل. ومع ذلك ، يمكن حل جميع المعادلات باستخدام طريقة Euler المعتادة.

للإشارة إلى المعاملات في الشفرة ، اعتدت على استخدام هذه الحروف اليونانية في LaTeX. عند العمل مع دفاتر Jupyter ، يكون ذلك مفيدًا في بعض الأحيان ، نظرًا لأن الصيغ يمكن أن تصبح رمزًا بسرعة ، ويمكن أن تتحول الشفرة بسرعة إلى صيغ.

إذا كنت جديدًا على نظام Python البيئي ، لكنك تريد أن يتم ضمان تشغيل الشفرة ، فمن الأفضل تثبيت أحدث إصدار من توزيع Python Anaconda ، وحزمة Plotly خلال conda هي مدير حزمة التوزيع المدمج.

بالنظر إلى العدد الهائل من الجاذبين الغريبين ، يبدو من المستحيل بناءهم جميعًا. لذلك ، في هذه المقالة سأقدم فقط أكثر الأشياء إثارة للاهتمام التي تمكنت من بنائها.

تشن لي جذاب


 #  : def ChenLee(XYZ, t, alpha, beta, delta): x, y, z = XYZ x_dt = alpha*x - y*z y_dt = beta*y + x*z z_dt = delta*z + x*y/3 return x_dt, y_dt, z_dt #     : alpha = 5 beta = -10 delta = -0.38 x_0, y_0, z_0 = 1, 1, 1 #      #  : tmax, n = 200, 30000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(ChenLee, (x_0, y_0, z_0), t, args=(alpha, beta, delta)) 

صورة

جذاب تشوا


 #  : def ChuaAttractor(XYZ, t, alpha, beta, zeta, delta): x, y, z = XYZ h = zeta*x + (0.5*(delta - zeta))*(np.abs(x + 1) - np.abs(x - 1)) x_dt = alpha*(-x + y - h) y_dt = x - y + z z_dt = -beta*y return x_dt, y_dt, z_dt #     : alpha = 15.6 beta = 25.58 zeta = -5/7 delta = -8/7 x_0, y_0, z_0 = 1.8, -0.7, -2.85 #      #  : tmax, n = 200, 10000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(ChuaAttractor, (x_0, y_0, z_0), t, args=(alpha, beta, zeta, delta)) 

صورة

كوليت جذابة


 #  : def Coullet(XYZ, t, alpha, beta, zeta, delta): x, y, z = XYZ x_dt = y y_dt = z z_dt = alpha*x + beta*y + zeta*z + delta*x**3 return x_dt, y_dt, z_dt #     : alpha = 0.8 beta = -1.1 zeta = -0.4 delta = -1 x_0, y_0, z_0 = 0.1, 0, 0 #      #  : tmax, n = 200, 20000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(Coullet, (x_0, y_0, z_0), t, args=(alpha, beta, zeta, delta)) 

صورة

جاد دادرس


 #  : def DadrasAttractor(XYZ, t, rho, sigma, tau, zeta, epsilon): x, y, z = XYZ x_dt = y - rho*x + sigma*y*z y_dt = tau*y - x*z + z z_dt = zeta*x*y - epsilon*z return x_dt, y_dt, z_dt #     : rho = 3 sigma = 2.7 tau = 1.7 zeta = 2 epsilon = 9 x_0, y_0, z_0 = 0.1, 0.03, 0 #      #  : tmax, n = 220, 40000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(DadrasAttractor, (x_0, y_0, z_0), t, args=(rho, sigma, tau, zeta, epsilon)) 

صورة

Dequan لى جذاب


 #  : def DequanLi(XYZ, t, alpha, beta, delta, epsilon, rho, xi): x, y, z = XYZ x_dt = alpha*(y - x) + delta*x*z y_dt = rho*x + xi*y -x*z z_dt = beta*z + x*y - epsilon*x*x return x_dt, y_dt, z_dt #     : alpha = 40 beta = 1.833 delta = 0.16 epsilon = 0.65 rho = 55 xi = 20 x_0, y_0, z_0 = 0.01, 0, 0 #      #  : tmax, n = 50, 40000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(DequanLi, (x_0, y_0, z_0), t, args=(alpha, beta, delta, epsilon, rho, xi)) 

صورة

المالية جذابة


 #  : def FinanceAttractor(XYZ, t, alpha, beta, zeta): x, y, z = XYZ x_dt = (1/beta - alpha)*x + x*y + z y_dt = -beta*y - x**2 z_dt = -x - zeta*z return x_dt, y_dt, z_dt #     : alpha = 0.001 beta = 0.2 zeta = 1.1 x_0, y_0, z_0 = 0.1, 0, 0 #      #  : tmax, n = 300, 40000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(FinanceAttractor, (x_0, y_0, z_0), t, args=(alpha, beta, zeta)) 

صورة

جاذبية أربعة الجناحين


 #  : def FourWing(XYZ, t, alpha, beta, zeta): x, y, z = XYZ x_dt = alpha*x + y + y*z y_dt = -x*z + y*z z_dt = -z - zeta*x*y + beta return x_dt, y_dt, z_dt #     : alpha = 5 beta = 16 zeta = 2 x_0, y_0, z_0 = 1, -1, 1 #      #  : tmax, n = 100, 60000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(FourWing, (x_0, y_0, z_0), t, args=(alpha, beta, zeta)) 

صورة

جذاب هادلي


 #  : def HadleyAttractor(XYZ, t, alpha, beta, xi, delta): x, y, z = XYZ x_dt = -y*y - z*z - alpha*x + alpha*xi y_dt = x*y - beta*x*z - y + delta z_dt = beta*x*y + x*zz return x_dt, y_dt, z_dt #     : alpha = 0.2 beta = 4 xi = 8 delta = 1 x_0, y_0, z_0 = 0.39, -1, 0 #      #  : tmax, n = 100, 10000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(HadleyAttractor, (x_0, y_0, z_0), t, args=(alpha, beta, xi, delta)) 

صورة

جاذبية هالفورسن


 #  : def HalvorsenAttractor(XYZ, t, alpha): x, y, z = XYZ x_dt = -alpha*x - 4*y - 4*z - y*y y_dt = -alpha*y - 4*z - 4*x - z*z z_dt = -alpha*z - 4*x - 4*y - x*x return x_dt, y_dt, z_dt #     : alpha = 1.4 x_0, y_0, z_0 = -5, 0, 0 #      #  : tmax, n = 100, 10000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(HalvorsenAttractor, (x_0, y_0, z_0), t, args=(alpha,)) 

صورة

يجذب ليو تشن


 #  : def LiuChen(XYZ, t, alpha, beta, sigma, delta, epsilon, xi): x, y, z = XYZ x_dt = alpha*y + beta*x + sigma*y*z y_dt = delta*y - z + epsilon*x*z z_dt = xi*z - x*y return x_dt, y_dt, z_dt #     : alpha = 2.4 beta = -3.75 sigma = 14 delta = -11 epsilon = 4 xi = 5.58 x_0, y_0, z_0 = 1, 3, 5 #      #  : tmax, n = 55, 50000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(LiuChen, (x_0, y_0, z_0), t, args=(alpha, beta, sigma, delta, epsilon, xi)) 

صورة

لورينز وزارة الدفاع 2 جذاب


 #  : def LorenzMod2(XYZ, t, alpha, beta, xi, delta): x, y, z = XYZ x_dt = -alpha*x + y**2 -z**2 + alpha*xi y_dt = x*(y - beta*z) + delta z_dt = -z + x*(beta*y + z) return x_dt, y_dt, z_dt #     : alpha = 0.9 beta = 5 xi = 9.9 delta = 1 x_0, y_0, z_0 = 5, 5, 5 #      #  : tmax, n = 50, 50000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(LorenzMod2, (x_0, y_0, z_0), t, args=(alpha, beta, xi, delta)) 

صورة

تعديل تشوا جذاب الفوضى


 #  : def ChuaModified(XYZ, t, alpha, beta, gamma, delta, zeta): x, y, z = XYZ h = -delta*np.sin((np.pi*x)/(2*gamma)) x_dt = alpha*(y - h) y_dt = x - y + z z_dt = -beta*y return x_dt, y_dt, z_dt #     : alpha = 10.82 beta = 14.286 gamma = 1.3 delta = 0.11 zeta = 7 x_0, y_0, z_0 = 1, 1, 0 #      #  : tmax, n = 200, 10000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(ChuaModified, (x_0, y_0, z_0), t, args=(alpha, beta, gamma, delta, zeta)) 

صورة

جاذب نيوتن ليبنيك


 #  : def NewtonLeipnik(XYZ, t, alpha, beta): x, y, z = XYZ x_dt = -alpha*x + y + 10*y*z y_dt = -x - 0.4*y + 5*x*z z_dt = beta*z - 5*x*y return x_dt, y_dt, z_dt #     : alpha = 0.4 beta = 0.175 x_0, y_0, z_0 = 0.349, 0, -0.16 #      #  : tmax, n = 300, 50000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(NewtonLeipnik, (x_0, y_0, z_0), t, args=(alpha, beta)) 

صورة

جاذبية الأنف هوفر


 #  : def NoseHoover(XYZ, t, alpha): x, y, z = XYZ x_dt = y y_dt = -x + y*z z_dt = alpha - y*y return x_dt, y_dt, z_dt #     : alpha = 1.5 x_0, y_0, z_0 = 1, 0, 0 #      #  : tmax, n = 150, 10000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(NoseHoover, (x_0, y_0, z_0), t, args=(alpha,)) 

صورة

جذاب رويسلر


 #  : def Roessler(XYZ, t, alpha, beta, sigma): x, y, z = XYZ x_dt = -(y + z) y_dt = x + alpha*y z_dt = beta + z*(x - sigma) return x_dt, y_dt, z_dt #     : alpha = 0.2 beta = 0.2 sigma = 5.7 x_0, y_0, z_0 = 1, 1, 1 #      #  : tmax, n = 300, 50000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(Roessler, (x_0, y_0, z_0), t, args=(alpha, beta, sigma)) 

صورة

جذابة ساكاريا


 #  : def SakaryaAttractor(XYZ, t, alpha, beta): x, y, z = XYZ x_dt = -x + y + y*z y_dt = -x - y + alpha*x*z z_dt = z - beta*x*y return x_dt, y_dt, z_dt #     : alpha = 0.4 beta = 0.3 x_0, y_0, z_0 = 1, -1, 1 #      #  : tmax, n = 100, 10000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(SakaryaAttractor, (x_0, y_0, z_0), t, args=(alpha, beta)) 

صورة

توماس جذاب


 #  : def Thomas(XYZ, t, beta): x, y, z = XYZ x_dt = -beta*x + np.sin(y) y_dt = -beta*y + np.sin(z) z_dt = -beta*z + np.sin(x) return x_dt, y_dt, z_dt #     : beta = 0.19 x_0, y_0, z_0 = 0.1, 0, 0 #      #  : tmax, n = 185, 10000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(Thomas, (x_0, y_0, z_0), t, args=(beta,)) 

صورة

نظام التمرير الموحد الفوضوي ثلاثي التمرير (TSUCS1)


 #  : def TSUCS1(XYZ, t, alpha, beta, delta, epsilon, xi): x, y, z = XYZ x_dt = alpha*(y - x) + delta*x*z y_dt = xi*y - x*z z_dt = beta*z + x*y - epsilon*x*x return x_dt, y_dt, z_dt #     : alpha = 40 beta = 0.833 delta = 0.5 epsilon = 0.65 xi = 20 x_0, y_0, z_0 = 0.01, 0, 0 #      #  : tmax, n = 70, 50000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(TSUCS1, (x_0, y_0, z_0), t, args=(alpha, beta, delta, epsilon, xi)) 

صورة

جاذبية وانغ صن


 #  : def WangSunAttractor(XYZ, t, alpha, beta, zeta, delta, epsilon, xi): x, y, z = XYZ x_dt = alpha*x + zeta*y*z y_dt = beta*x + delta*y - x*z z_dt = epsilon*z + xi*x*y return x_dt, y_dt, z_dt #     : alpha = 0.2 beta = -0.01 zeta = 1 delta = -0.4 epsilon = -1 xi = -1 x_0, y_0, z_0 = 0.5, 0.1, 0.1 #      #  : tmax, n = 500, 30000 #       #   t: t = np.linspace(0, tmax, n) f = odeint(WangSunAttractor, (x_0, y_0, z_0), t, args=(alpha, beta, zeta, delta, epsilon, xi)) 

صورة

في الختام


النار والماء والأرض والسماء والشمس والقمر والنجوم - كل هذه هي الجواهر الشعرية الأقدم. في كثير من الأحيان أتمكن من العثور على شيء جميل بنفس القدر في الرياضيات. لكن في كثير من الأحيان لا أفهم حتى كيف أتحدث عن كل هذا في اللغة الرياضية واللغة العادية. أنا لا أفهم ، لكنني أريد أن أتعلم.

لكن ما أدركته 100 ٪ هو أن أدوات التصور الحديثة توفر فرصة رائعة للتعبير عن موقفك من ما تقوم به الآن ، وفرصة لإظهار مدى أهميته بالنسبة لك ومدى اهتمامك. افعل كل شيء بدون كلمات.

Source: https://habr.com/ru/post/ar480660/


All Articles