বিষয়বস্তুতে চলুন

চিত্র:Heat.gif

পাতাটির বিষয়বস্তু অন্যান্য ভাষায় নেই।
এই ফাইলটি উইকিমিডিয়া কমন্স থেকে নেওয়া। মূল পাতাটি দেখতে ক্লিক করুন।
উইকিপিডিয়া, মুক্ত বিশ্বকোষ থেকে

পূর্ণ রেজোলিউশন(১,২০০ × ৯৫৪ পিক্সেল, ফাইলের আকার: ২.৬৬ মেগাবাইট, এমআইএমই ধরন: image/gif, লুপকৃত, ৩০ ফ্রেম, ৩.০ সে)

এই ফাইলটি উইকিমিডিয়া কমন্স থেকে নেওয়া। সেখানের বর্ণনা পাতার বিস্তারিত নিম্নে দেখানো হলো। (সম্পাদনা)
উইকিমিডিয়া কমন্স, মুক্ত লাইসেন্সযুক্ত মিডিয়ার একটি ভান্ডার। আপনি সাহায্য করতে পারেন

সারাংশ

 
এই GIF গ্রাফিক্সটি Python দিয়ে তৈরি করা হয়েছে।
বিবরণ
English: Illustration of the Heat equation.
তারিখ
উৎস নিজের কাজ
লেখক Nicoguaro. Based on File:Heat eqn.gif by en:User:Oleg Alexandrov
অন্যান্য সংস্করণ
উৎস কোড
InfoField

Python code

"""
Illustration of the heat equation

Solve the heat equation using finite differences and Forward Euler.

Based on: https://commons.wikimedia.org/wiki/File:Heat_eqn.gif
"""

from __future__ import division, print_function
import numpy as np
from mayavi import mlab
import subprocess

path_to_convert = "C:\Program Files\ImageMagick-6.9.3\convert.exe"

def step_function(N, scale, X, Y, shape="crescent"):
    """Function that is 1 on a set and 0 outside of it"""
    shapes = ["crescent", "cylinder", "hexagon", "superquadric", "smiley"]
    
    if shape not in shapes:
        shape = "crescent"

    if shape == "cylinder":
        Z = np.ones_like(X)
        Z[X**2 + Y**2 < 0.5] = 0
        Z[X**2 + Y**2 > 2] = 0

    if shape == "superquadric":
        Z = np.ones_like(X)
        Z[np.abs(X)**0.5 + np.abs(Y)**0.5 > 1.5] = 0

    if shape == "hexagon":
        Z = np.ones_like(X)
        hexa = 2*np.abs(X) + np.abs(X - Y*np.sqrt(3)) +\
            np.abs(X + Y*np.sqrt(3))
        Z[hexa > 6] = 0

    if shape == "crescent":
        c = 2
        d = -1
        e = 1
        f = 0.5
        k = 1.2
        shift = 10        
        Z = (c**2 - (X/e - d)**2 - (Y/f)**2)**2 + k*(c + d - X/e)**3 - shift
        Z = 1 - np.maximum(np.sign(Z), 0)
        
    if shape == "smiley":
        Z = np.ones_like(X)
        fac = 1.2
        x_eye = 0.5
        y_eye = 0.4
        bicorn = fac**2*(Y + 0.3)**2*(1 - fac**2*X**2) -\
                (fac**2*X**2 - 2*fac*(Y + 0.3) - 1)**2
        left_eye = (X + x_eye)**2/0.1 + (Y - y_eye)**2/0.4 - 1
        right_eye = (X - x_eye)**2/0.1 + (Y - y_eye)**2/0.4 - 1
        Z[X**2 + Y**2 > 2] = 0
        Z[bicorn > 0] = 0
        Z[left_eye < 0] = 0
        Z[right_eye < 0] = 0

    Z = scale * Z
    return Z

def data_gen(num):
    # Solve the heat equation with zero boundary conditions
    for cont in range(ntime_anim):
        Z[1:N-1, 1:N-1] = Z[1:N-1, 1:N-1] + dt*(Z[2:N, 1:N-1] +
                             Z[0:N-2, 1:N-1] + Z[1:N-1, 0:N-2] +
                             Z[1:N-1, 2:N] - 4*Z[1:N-1, 1:N-1])/dx**2

    surf = mlab.surf(X, Y, Z, colormap='autumn', warp_scale=1)
    # Change the visualization parameters.
    surf.actor.property.interpolation = 'phong'
    surf.actor.property.specular = 0.3
    surf.actor.property.specular_power = 20
    surf.module_manager.scalar_lut_manager.reverse_lut = True
    surf.module_manager.scalar_lut_manager.data_range = np.array([ 0.,  scale])

    return surf

N = 500  # Grid points
L = 2.5  # Box size
X, Y = np.mgrid[-L:L:N*1j, -L:L:N*1j]
scale = 2
Z = step_function(N, scale, X, Y, shape="crescent")
CFL = 0.125
dx = X[1, 0] - X[0, 0]
dy = dx
dt = CFL*dx**2
end_time = 0.05
time = np.arange(0, end_time, dt)
nframes = 50
ntime = time.shape[0]
ntime_anim = int(ntime/nframes)

#%% Plot frames
fname = "heat"
bgcolor = (1, 1, 1)
fig = mlab.figure(size=(1200, 1000), bgcolor=bgcolor)
fig.scene.camera.azimuth(180)
mlab.get_engine()
engine = mlab.get_engine()
scene = engine.scenes[0]
for cont in range(nframes):
    mlab.clf()
    surf = data_gen(cont)
    scene.scene.camera.position = [-8, -8,  7]
    scene.scene.camera.clipping_range = [7, 22]
    scene.scene.camera.focal_point = [0, 0, 1]
    print(cont)
    mlab.savefig("{}_{n:02d}.png".format(fname, n=cont))

#%% Generate video
args = [path_to_convert, "-delay", "10", "-loop" , "0", fname + "_*.png",
        fname + ".gif"]
subprocess.call(args, shell=True)
subprocess.call(["del", "/Q", fname + "*.png"], shell=True)
print("Done!")

লাইসেন্স প্রদান

আমি, এই কাজের স্বত্বাধিকারী, এতদ্দ্বারা আমি এই কাজকে নিম্ন বর্ণিত লাইসেন্সের আওতায় প্রকাশ করলাম:
w:bn:ক্রিয়েটিভ কমন্স
স্বীকৃতিপ্রদান
এই ফাইলটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ৪.০ আন্তর্জাতিক লাইসেন্সের আওতায় লাইসেন্সকৃত।
আপনি স্বাধীনভাবে:
  • বণ্টন করতে পারেন – এ কাজটি অনুলিপি, বিতরণ এবং প্রেরণ করতে পারেন
  • পুনঃমিশ্রণ করতে পারেন – কাজটি অভিযোজন করতে পারেন
নিম্নের শর্তাবলীর ভিত্তিতে:
  • স্বীকৃতিপ্রদান – আপনাকে অবশ্যই যথাযথ স্বীকৃতি প্রদান করতে হবে, লাইসেন্সের একটি লিঙ্ক সরবরাহ করতে হবে এবং কোনো পরিবর্তন হয়েছে কিনা তা নির্দেশ করতে হবে। আপনি যেকোনো যুক্তিসঙ্গত পদ্ধতিতে এটি করতে পারেন। কিন্তু এমন ভাবে নয়, যাতে প্রকাশ পায় যে লাইসেন্সধারী আপনাকে বা আপনার এই ব্যবহারের জন্য অনুমোদন দিয়েছে।

ক্যাপশন

এই ফাইল কি প্রতিনিধিত্ব করছে তার এক লাইন ব্যাখ্যা যোগ করুন

এই ফাইলে চিত্রিত আইটেমগুলি

যা চিত্রিত করে

ফাইলের ইতিহাস

যেকোনো তারিখ/সময়ে ক্লিক করে দেখুন ফাইলটি তখন কী অবস্থায় ছিল।

তারিখ/সময়সংক্ষেপচিত্রমাত্রাব্যবহারকারীমন্তব্য
বর্তমান০৩:১২, ২০ মে ২০১৭০৩:১২, ২০ মে ২০১৭-এর সংস্করণের সংক্ষেপচিত্র১,২০০ × ৯৫৪ (২.৬৬ মেগাবাইট)NicoguaroUser created page with UploadWizard

নিচের পৃষ্ঠা(গুলো) থেকে এই ছবিতে সংযোগ আছে:

ফাইলের বৈশ্বিক ব্যবহার

নিচের অন্যান্য উইকিগুলো এই ফাইলটি ব্যবহার করে: