ویرگول
ورودثبت نام
احسان ترک
احسان ترکبرنامه‌نویس، توسعه‌دهنده وب| حامی نرم‌افزار آزاد و مقابله با انحصارطلبی. طرفدار محیط زیست، حقوق بشر و آزادی در انتخاب
احسان ترک
احسان ترک
خواندن ۲ دقیقه·۱۰ ماه پیش

نمایش بصری انبساط جهان با استفاده از پایتون

مقدمه

انبساط جهان یکی از مفاهیم کلیدی در کیهان‌شناسی است که به افزایش فاصله بین کهکشان‌ها و ساختارهای بزرگ‌تر در کیهان اشاره دارد. این انبساط به دلیل انفجار بزرگ (بیگ بنگ) آغاز شده و همچنان ادامه دارد. در این مقاله، ما به بررسی انبساط جهان و نحوه نمایش بصری آن با استفاده از زبان برنامه‌نویسی پایتون و کتابخانه‌های گرافیکی خواهیم پرداخت.

خروجی کد
خروجی کد


مفهوم انبساط جهان

انبساط جهان به این معناست که کهکشان‌ها به تدریج از یکدیگر دور می‌شوند. این پدیده به‌ویژه با استفاده از اثر دوپلر قابل مشاهده است، که در آن نور کهکشان‌های دوردست به سمت طول موج‌های قرمز تغییر می‌کند. این تغییر نشان‌دهنده این است که کهکشان‌ها در حال دور شدن از ما هستند. اندازه‌گیری سرعت انبساط جهان به ما کمک می‌کند تا درک بهتری از تاریخ و آینده کیهان داشته باشیم.

کد پایتون برای نمایش انبساط جهان

در این بخش، کدی را ارائه می‌دهیم که با استفاده از کتابخانه‌های matplotlib و numpy، انبساط جهان را به صورت بصری نمایش می‌دهد.

import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation # تنظیمات اولیه num_frames = 100 # تعداد فریم‌ها max_distance = 10 # حداکثر فاصله کهکشان‌ها speed_of_expansion = 0.1 # سرعت انبساط # ایجاد یک شکل و محور fig, ax = plt.subplots() ax.set_xlim(-max_distance, max_distance) ax.set_ylim(-max_distance, max_distance) ax.set_aspect('equal') ax.set_title('انبساط جهان') ax.set_xlabel('فاصله (مگا پارسک)') ax.set_ylabel('فاصله (مگا پارسک)') # ایجاد کهکشان‌ها به صورت تصادفی num_galaxies = 20 galaxies = np.random.rand(num_galaxies, 2) * max_distance * 2 - max_distance # تابع برای به‌روزرسانی فریم‌ها def update(frame): ax.clear() ax.set_xlim(-max_distance, max_distance) ax.set_ylim(-max_distance, max_distance) ax.set_title('انبساط جهان') ax.set_xlabel('فاصله (مگا پارسک)') ax.set_ylabel('فاصله (مگا پارسک)') # محاسبه فاصله جدید کهکشان‌ها distances = np.linalg.norm(galaxies, axis=1) expansion_factor = 1 + speed_of_expansion * frame / num_frames new_positions = galaxies * expansion_factor # رسم کهکشان‌ها ax.scatter(new_positions[:, 0], new_positions[:, 1], color='blue') # ایجاد انیمیشن ani = animation.FuncAnimation(fig, update, frames=num_frames, repeat=False) # نمایش انیمیشن plt.show()

توضیحات کد

  1. وارد کردن کتابخانه‌ها: در ابتدا، کتابخانه‌های numpy و matplotlib را وارد می‌کنیم. numpy برای محاسبات عددی و matplotlib برای رسم نمودارها و انیمیشن‌ها استفاده می‌شود.
  2. تنظیمات اولیه: متغیرهایی برای تعداد فریم‌ها، حداکثر فاصله کهکشان‌ها و سرعت انبساط تعریف می‌کنیم.
  3. ایجاد شکل و محور: یک شکل و محور برای رسم کهکشان‌ها ایجاد می‌کنیم و محدوده‌های محور را تنظیم می‌کنیم.
  4. ایجاد کهکشان‌ها: کهکشان‌ها به صورت تصادفی در یک محدوده مشخص ایجاد می‌شوند.
  5. تابع به‌روزرسانی: این تابع برای هر فریم انیمیشن فراخوانی می‌شود. در این تابع، موقعیت جدید کهکشان‌ها با توجه به سرعت انبساط محاسبه می‌شود و سپس کهکشان‌ها رسم می‌شوند.
  6. ایجاد انیمیشن: با استفاده از FuncAnimation، انیمیشن ایجاد می‌شود و در نهایت نمایش داده می‌شود.

نتیجه‌گیری

این کد به ما اجازه می‌دهد تا انبساط جهان را به صورت بصری مشاهده کنیم. با تغییر سرعت انبساط و تعداد کهکشان‌ها، می‌توانیم تأثیرات مختلف انبساط را بررسی کنیم. این نوع نمایش بصری می‌تواند به درک بهتر ما از این موضوع کمک کند.

برنامه نویسینجومپایتونعلم
۵
۰
احسان ترک
احسان ترک
برنامه‌نویس، توسعه‌دهنده وب| حامی نرم‌افزار آزاد و مقابله با انحصارطلبی. طرفدار محیط زیست، حقوق بشر و آزادی در انتخاب
شاید از این پست‌ها خوشتان بیاید