Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Vuotava pallosäiliö
- # Juhani Kaukoranta 11.1.2024
- import numpy as np
- from numpy import pi,sqrt,arange
- from scipy.integrate import odeint
- import matplotlib.pyplot as plt
- # Miten säiliö pinta alee ?
- # funktio palauttaa korkeuden derivaatan dh/dt
- def model(h,t):
- A = 0.0001 # reikä m² = 1.0 cm²
- R = 0.30 # pallon säde 30 cm = 0.30 m
- g = 9.81 # putouskiihtyvyys m/s^2
- dhdt = -A*sqrt(2*g)/pi*sqrt(h)/(2*R*h - h**2)
- return dhdt
- h0 = 0.55 # pinnan alkukorkeus m hetkellä t=0
- h1 = 0.30 # loppukorkeus
- @np.vectorize
- def alkupinta(t):
- return h0 # pinnan loppukorkeus m
- @np.vectorize
- def loppupinta(t):
- return h1 # pinnan loppukorkeus m
- t = arange(0,240,1) # aikaväli 0 - 240 s = 0-4 min
- # ratkaistaan ODE eli differentiaaliyhtälö
- h = odeint(model,h0,t) # ratkaisee vedenpinnankorkeuden diffyhtälön
- # plottaa korkeuden h riippuvuus ajasta t
- plt.plot(t,h,t,alkupinta(t),t,loppupinta(t))
- plt.xlabel('aika t (s)')
- plt.ylabel('vedenpinnan korkeus h (m)')
- plt.title("Vuotavan pallosäiliön vedenpinnan korkeus")
- plt.text(60, .50, r'$alkukorkeus, loppukorkeus=55cm,30cm$')
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement