DilyaraL

4Физика3 задание

Dec 1st, 2020
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. import pylab as plb
  2. import math
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. import matplotlib.colors as mcolors
  6.  
  7. a = np.pi
  8. b = 1
  9. T = 3
  10.  
  11. Nt = 50
  12. Nx = 100
  13. Ny = 100
  14.  
  15. hx = a / Nx
  16. ht = T / Nt
  17. hy = b / Ny
  18.  
  19.  
  20. u = np.empty((Nt+1, Nx+1, Ny+1))
  21.  
  22. def U0(x, y):
  23. return 0
  24.  
  25. def mu1(y, t):
  26. return 1
  27.  
  28. def mu2(y, t):
  29. return 1
  30.  
  31. def v1(x, t):
  32. return np.cos(2*x)
  33.  
  34. def v2(x, t):
  35. return np.cos(2*x)
  36.  
  37. def f(x, y, t):
  38. return 0.5* np.power(t, 2/5)*np.exp(-t)
  39.  
  40.  
  41.  
  42. for i in range(Nx+1): # H. y.
  43. for k in range(Ny+1):
  44. u[0][i][k] = U0(i * hx, k * hy)
  45.  
  46.  
  47. for j in range(Nt+1):# Г. у.
  48. for k in range(Ny+1):
  49. u[j][0][k] = mu1(k * hy, j * ht)
  50. u[j][Nx][k] = mu2(k * hy, j * ht)
  51.  
  52. for j in range(Nt+1):# Г. у.
  53. for i in range(Nx+1):
  54. u[j][i][0] = v1(i * hx, j * ht)
  55. u[j][i][Ny] = v2(i * hx, j * ht)
  56.  
  57. for j in range(1, Nt+1):
  58. for i in range(1, Nx):
  59. for k in range(1 ,Ny):
  60. u[j][i][k] = ht *( (u[j-1][i-1][k] - 2*u[j-1][i][k] + u[j-1][i+1][k])/(hx *hx) + (u[j-1][i][k-1] - 2*u[j-1][i][k] + u[j-1][i][k+1])/(hy *hy) + f(i * hx, k * hy, (j-1)*ht)) + u[j-1][i][k]
  61.  
  62. x = np.linspace(0, a, Nx+1)
  63. y = np.linspace(0, b, Ny+1)
  64.  
  65. xgrid, ygrid = np.meshgrid(x, y)# для изолинии оси
  66.  
  67. zgrid=u[14]# допустим, возьмем 15 по счету время
  68. #изолинии
  69. cs = plb.contour(xgrid, ygrid, zgrid)
  70. plb.contour(cs)
  71. plb.show()
  72.  
  73.  
Advertisement
Add Comment
Please, Sign In to add comment