#!/usr/bin/env python """ Created on Mon 2 Dec 2013 Modified on Thu 3o Jan 2104 Kort eksempelscript som viser hvordan en sinusboelge kan bli animert med matplotlib. Modifisert til ogsaa aa vise en sum av sinusboelger. @author Kristoffer Braekken @author Are Raklev """ from numpy import * from matplotlib.pyplot import * def wave( x, t , k, omega): ''' Funksjonen beskriver en sinusboelge ved tiden t og punktet x. omega er vinkelhastighet og k er boelgetall ''' return sin( k * x - omega * t ) def wave_sum( x, t , k): ''' Funksjonen beskriver en sum av sinusboelger ved tiden t og punktet x. omega er midlere vinkelhastighet og k er midlere boelgetall. Dispersjonsrelasjonen er valgt som \omega = k^2/2. ''' sum = 0 n = 50 for i in range(-n, n): ki = k + 0.001*i omega = 0.5*ki*ki sum += sin( ki * x - omega * t ) return sum/n n = 1e4 t = 0 T = 10 dt = 0.01 x = linspace( -20*pi, 20*pi, n ) ion() figure() #line, = plot( x, wave(x, t, 1, 10 ) ) # Plotter initialtilstand naar t = 0 line, = plot( x, wave_sum(x, t, 5 ) ) # superposisjon # Tekst langs x-aksen xlabel('$x$ [m]') # Tekst langs y-aksen ylabel('$\Psi (x, t)$') xlim([-20*pi, 20*pi]) # Setter x-aksen. ylim([-3, 3]) # Setter y-aksen. draw() while t < T: #line.set_ydata( wave( x, t, 1, 10 ) ) line.set_ydata( wave_sum(x, t, 5 ) ) draw() t += dt ioff() show()