• Home
  • Profil
    • Profil Departemen
    • Ketua Departemen
    • Visi Misi
    • Struktur Organisasi
    • Tri Darma
    • Dosen Fisika
    • DTPS Fisika
    • Staff dan Tendik
  • Program Studi
    • S1 Pendidikan Fisika
    • S1 Fisika
    • S2 Pendidikan Fisika
    • S2 Fisika
    • S3 Pendidikan Fisika
    • P3G
  • Akademik
    • Kemahasiswaan
    • Data Publikasi Dosen
    • Data Penelitian Dosen
    • Bahan Ajar Online
    • Karya Ilmiah
    • Akreditasi Jurusan
    • SK Pendirian Prodi
    • SOP Jurusan
    • Skripsi Daring
    • Jadwal Ujian Skripsi
    • Katalog Departemen Fisika
  • Fasilitas
    • Sarana Fisika
    • Lab Fisika UM
    • Alat Peraga Fisika
    • Layanan Kunjungan Lab
    • Lab Sentral
    • Video Praktikum
  • Tracer Study
  • Other
    • Direktori UM
    • Dokumen UM
      • Kalender Akademik
      • Pedoman Pendidikan
      • Panduan Brand UM
      • Katalog UM
      • Panduan Lambang UM
      • Perjanjian Kinerja Dosen Fisika
      • Download Page
      • Daftar Pustaka Pendidikan Fisika
    • Jurnal
      • Foton
      • JPSE
      • JRPF
    • Event
      • Seminar Nasional
      • Seminar Internasional
      • Kuliah Tamu
    • Catatan Kerja
English EN Indonesian ID
Departemen Fisika FMIPA UM
  • Home
  • Profil
    • Profil Departemen
    • Ketua Departemen
    • Visi Misi
    • Struktur Organisasi
    • Tri Darma
    • Dosen Fisika
    • DTPS Fisika
    • Staff dan Tendik
  • Program Studi
    • S1 Pendidikan Fisika
    • S1 Fisika
    • S2 Pendidikan Fisika
    • S2 Fisika
    • S3 Pendidikan Fisika
    • P3G
  • Akademik
    • Kemahasiswaan
    • Data Publikasi Dosen
    • Data Penelitian Dosen
    • Bahan Ajar Online
    • Karya Ilmiah
    • Akreditasi Jurusan
    • SK Pendirian Prodi
    • SOP Jurusan
    • Skripsi Daring
    • Jadwal Ujian Skripsi
    • Katalog Departemen Fisika
  • Fasilitas
    • Sarana Fisika
    • Lab Fisika UM
    • Alat Peraga Fisika
    • Layanan Kunjungan Lab
    • Lab Sentral
    • Video Praktikum
  • Tracer Study
  • Other
    • Direktori UM
    • Dokumen UM
      • Kalender Akademik
      • Pedoman Pendidikan
      • Panduan Brand UM
      • Katalog UM
      • Panduan Lambang UM
      • Perjanjian Kinerja Dosen Fisika
      • Download Page
      • Daftar Pustaka Pendidikan Fisika
    • Jurnal
      • Foton
      • JPSE
      • JRPF
    • Event
      • Seminar Nasional
      • Seminar Internasional
      • Kuliah Tamu
    • Catatan Kerja

Blog Fisika UM

  • Home
  • Blog Fisika UM
  • Berlatih dengan Python

Berlatih dengan Python

  • Posted by Nugroho
  • Categories Blog Fisika UM
  • Date March 20, 2009
  • Tags fisika, Graphics, nugroho, phyton, PyLab
Berlatih dengan Python
Setelah  pendahuluan tentang Python , maka sekarang kita akan membuat program pertama sekaligus belajar tentang perintah-perintah Python, cara pengkodean dan, secara umum, algoritma pemrograman.

1. Buka IDLE, IDLE adalah teks/code editor untuk visual python, tentu saja anda bis membuat hidup lebih susah dengan menggunakan editor lain, semacam notepad, tetapi itu cerita lain, di sini kita menggunakan IDLE.

maka akan terbuka jendela seperti dibawah.
From Aravir
 jendela IDLE di atas masih kosong tentu saja, kita tidak bisa berharap yang lain kan? Maka mari kita mulai ber-code-code ria. 
 
2. Di IDLE, ketikkan kode berikut:
 #tanda # memberitahu Python agar tidak membaca baris setelah tanda tersebut
#########################################
# Import the library(s)
#########################################
from visual import *                          #agar dapat menggunakan obyek tiga dimensi
from random import uniform         #agar dapat menggunakan random jenis uniform
from visual.graph import *              #agar dapat membuat grafik/tabel
 
scene.x=800                                      #ukuran jendela                       
 
#buat tembok
thk = 0.1                          #ketebalan
side = 7.0                        #lebar
s2 = 2*side – thk
s3 = 2*side + thk
#wallR=tembok kanan; wallL=tembok kiri; …dst
#box(…) artinya tembok yang kita buat berupa kotak dengan posisi (x,y,z), panjang length #…
 
wallR = box (pos=vector( side, 0, 0), length=thk, height=s2, width=s3, color = color.red)
wallL = box (pos=vector(-side, 0, 0), length=thk, height=s2, width=s3, color = color.red)
wallB = box (pos=vector(0, -side, 0), length=s3, height=thk, width=s3, color = color.blue)
wallT = box (pos=vector(0, side, 0), length=s3, height=thk, width=s3, color = color.blue)
wallBK = box(pos=vector(0, 0, -side), length=s2, height=s2, width=thk, color = (0.7,0.7,0.7))

##########################################
# Buat Bola

##########################################
no_particles=37
ball_radius=1.
maxpos=side-.5*thk-ball_radius
maxv=7.0

 #ball_list=[] adalah perintah membuat list (semacam array di delphi) bernama #ball_list, berfungsi untuk menampung objek bernama ball yang terbuat dari object #bernama sphere

ball_list=[]
#perintah di bawah adalah untuk mengulang pembuatan bola sebanyak no_particles kali
# ingat setelah perintah for, harus menjorok ke dalam, hal ini semacam begin di delphi   
for i in arange(no_particles):            
    jari =ball_radius
    ball=sphere(color=color.green,radius=jari)
    ball.pos=maxpos*vector(uniform(-1,1),uniform(-1,1),uniform(-1,1))
    ball.velocity=maxv*vector(uniform(-1,1),uniform(-1,1),uniform(-1,1))
    #ball.velocity=vector(0,0,0)
    #ball.mass=jari
    ball_list.append(ball)

#ball_list[0].velocity=vector(14,0,0)
###########################################
# Setup Histogram Plot/buat grafik
###########################################
graphwindow=gdisplay(xtitle=’v’,ytitle=’N’,ymax=no_particles/2)
velocity_dist=ghistogram(bins=arange(0,2*maxv,maxv/5),accumulate=1,average=1)
expected_distribution=gcurve(color=color.green)
for vx in arange(0,2*maxv,maxv/20):
       expected_distribution.plot(pos = (vx,.27*no_particles*exp(-vx**2/maxv**2*3/2)))

##########################################
# Time loop for moving Ball(s)
###########################################
timestep = 0.05

while (1==1):
    rate(100)

    ######################################
    # Loop over list of particles
    # Move and check wall collisions
    ######################################
    for ball in ball_list:
        suhu=mag(ball.velocity)/maxv
        ball.color=(suhu/2,1-suhu/2,0)
        #move ball
        ball.pos = ball.pos + ball.velocity*timestep

        #check right wall collisions
        if ball.x > maxpos:
            #reflect velocity
            ball.velocity.x = -ball.velocity.x
            #reflect position
            ball.x=2*maxpos-ball.x
        #left wall
        if ball.x < -maxpos:
            ball.velocity.x = -ball.velocity.x
            ball.x=-2*maxpos-ball.x
        # roof
        if ball.y > maxpos:
            ball.velocity.y = -ball.velocity.y
            ball.y=2*maxpos-ball.y
        #floor
        if ball.y < -maxpos:
            ball.velocity.y = -ball.velocity.y
            ball.y=-2*maxpos-ball.y
        #back wall
        if ball.z > maxpos:
            ball.velocity.z = -ball.velocity.z
            ball.z=2*maxpos-ball.z
        #front wall
        if ball.z < -maxpos:
            ball.velocity.z = -ball.velocity.z
            ball.z=-2*maxpos-ball.z

    ######################################
    # Ball Collision Detection
    ######################################
    #loop through all pairs
    for i in range(no_particles):
        for j in range(i+1,no_particles):
            distance=mag(ball_list[i].pos-ball_list[j].pos)
            #check collision
            if distance<(ball_list[i].radius+ball_list[j].radius):
                #unit vector in collision direction
                direction=norm(ball_list[j].pos-ball_list[i].pos)
                vi=dot(ball_list[i].velocity,direction)
                vj=dot(ball_list[j].velocity,direction)
                #mi=ball_list[i].radius
                #mj=ball_list[j].radius
                #impact velocity
                exchange=vj-vi
                ##v2’=1/(m1+m2)*(2m1v1+(m2-m1)v2)
                ##v1’=1/(m1+m2)*(2m2v2+(m2-m1)v1)
                #vii=((mi-mj)*vi+2.*mj*vj)/(mi+mj)
                #vjj=((mi-mj)*vj+2.*mi*vi)/(mi+mj)
                ##exchange momentum
                ball_list[i].velocity=ball_list[i].velocity + exchange*direction
                ball_list[j].velocity=ball_list[j].velocity – exchange*direction
                #ball_list[i].velocity=vii*direction
                #ball_list[j].velocity=vjj*direction
                ##adjust position
                #overlap=2*ball_radius-distance
                overlap=ball_list[i].radius+ball_list[j].radius-distance
                ball_list[i].pos=ball_list[i].pos – overlap*direction
                ball_list[j].pos=ball_list[j].pos + overlap*direction

    #######################################
    # Plot the x velocity histogram
    #######################################
    v_list=[]
    for ball in ball_list:
        v_list.append(mag(ball.velocity))
    velocity_dist.plot(data=v_list)
 ###########################################

 
From Aravir
3. Jalankan dengan tombol F5
 
From Aravir
4. Zoom dengan scrool-mouse atau klik-kiri-kanan, putar dengan klik-kanan-tahan-geser 
From Aravir
 

Tag:fisika, Graphics, nugroho, phyton, PyLab

  • Share:
author avatar
Nugroho

Previous post

Upload gambar ke joomla
March 20, 2009

Next post

Download Film Youtube
March 20, 2009

You may also like

Jurusan Fisika yang Semakin Cantik
Jurusan Fisika yang Semakin Cantik
23 November, 2017
The 2nd Particle Physics School in South-East Asia
The 2nd Particle Physics School in South-East Asia
22 February, 2012
Peserta Seleksi Olimpiade Fisika/Sains Mahasiswa 2012
20 February, 2012

Berikut daftar mahasiswa yang ikut seleksi olimpiade fisika/sains mahasiswa tingkat nasional tahun 2012. Nama-nama mahasiswa tersebut diharap untuk hadir dalam rangka seleksi yang akan dilaksanakan besok pada Hari : Sabtu, 25 Februari 2012 pukul 08.00 sd 10.00 Wib. Lokasi : …

Leave A Reply Cancel reply

Your email address will not be published. Required fields are marked *

Link

  • Akademik
  • Direktori UM
  • Karya Ilmiah Dosen
  • Bahan Ajar Online
  • Download Page
  • Skripsi Daring
  • Fisika News
  • Pengumuman
  • Blog Fisika UM
  • Abstrak Skripsi Mahasiswa

Jl. Semarang 5, Malang 65145 Indonesia
Telp. 0341-552125
Fax : 0341-559577

  • Facebook
  • Twitter
  • Google Plus
  • Dribbble
  • Instagram

Fakultas

  • Fakultas Ilmu Pendidikan
  • Fakultas Sastra
  • Fakultas Ekonomi
  • Fakultas Teknik
  • Fakultas Ilmu Keolahragaan
  • Fakultas Ilmu Sosial
  • Pascasarjana

Jurusan

  • Matematika
  • Fisika
  • Kimia
  • Biologi
  • Prodi IPA

Jurusan Fisika UM | 2020 | http://fisika.fmipa.um.ac.id. - Host by UM