Advertisement
evenmm

1c

Mar 28th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. import math
  2. import numpy as np
  3. from matplotlib import pyplot as plt
  4. ##Constants
  5. alpha = 1
  6. m = 1
  7. Vwater = np.array([1,1])
  8. #Vwater(X)
  9.  
  10. def eq2(X):
  11. x=X[0]
  12. y=X[1]
  13. R=math.sqrt(x**2+y**2)
  14. T=24*60*60 #setter perioden til 1 døgn i sekunder
  15. factor=2*math.pi/T
  16. Y=[x,y]
  17. Y[0]+=factor*(-y)
  18. Y[1]+=factor*x
  19. return Y
  20.  
  21. def eq1(alpha,m,X,Xdot):
  22. Ydot = trapezoid()
  23. Y = trapezoid()
  24.  
  25. def trapezoid(X,Xdot,h):
  26. Wip1euler = euler(X,Xdot,h)
  27. Wip1 = np.array([0,0])
  28. Wip1 = X + h/2*()
  29. #Y[0] = X[0] + h/2*(deriv i pkt + deriv i neste pkt)
  30. #Y[1] =
  31. return 0
  32.  
  33. X = np.array([100,0])
  34. Xdot = np.array([0,0])
  35. h = 0.1
  36.  
  37. def f1dummy(X):
  38. alpha/m
  39. return np.array([1,1])
  40. ##
  41. def XdotEuler(X,Xdot,h):
  42. return Xdot + h*alpha/m*(Vwater-Xdot) #Vwater som funksjon av X (ved rett tid)
  43.  
  44. def euler(X,Xdot,h):
  45. Wip1 = X + h*XdotEuler(X,Xdot,h)
  46. return Wip1
  47.  
  48. def XdotTrapezoid(X,Xdot,h): #deriv her #deriv ved neste steg fra euler
  49. return Xdot + h/2*(alpha/m*(Vwater-Xdot) + alpha/m*(Vwater-XdotEuler(X,Xdot,h)))
  50. #Vwater(euler(X,Xdot,h)) for å finne farten ved t(i+1)
  51.  
  52. def trapezoid(X,Xdot,h):
  53. return X + h/2*(XdotTrapezoid(X,Xdot,h) + XdotTrapezoid(euler(X,Xdot,h),XdotEuler(euler(X,Xdot,h),Xdot,h),h)
  54. ##
  55. ##
  56. ##
  57. def euler(X,Xdot,h): #gir neste posisjon
  58. Wip1 = X + h*Xdot
  59. return Wip1
  60. #def nextXdot():
  61. Xdot + h*alpha/m*(Vwater-Xdot) #Vwater som funksjon av X (ved rett tid)
  62.  
  63. def XdotTrapezoid(X,Xdot,h): #deriv her #deriv ved neste steg fra euler
  64. return Xdot + h/2*(alpha/m*(Vwater-Xdot) + alpha/m*(Vwater-(Xdot + h*alpha/m*(Vwater-Xdot))))
  65. return Xdot + h/2*(alpha/m*(Vwater-Xdot) + alpha/m*(Vwater-(Xdot + h*alpha/m*(Vwater-Xdot))))
  66. return Xdot + h/2*(alpha/m*(Vwater-Xdot) + alpha/m*(Vwater-(Xdot + h*alpha/m*(Vwater-Xdot))))
  67.  
  68. def trapezoid(X,Xdot,h): #derivert i neste punkt vi får fra Euler (DET er trapes!)
  69. return X + h/2*(Xdot + (Xdot + h/2*(alpha/m*(Vwater-Xdot) + alpha/m*(Vwater-(Xdot + h*alpha/m*(Vwater-Xdot))))))
  70.  
  71. #alt i det siste leddet skal skje i neste posisjon som beregnet via euler
  72. def dummy():
  73. Wip1 = np.array([1,2,3,4])
  74. print(Wip1)
  75. Wip1 = Wip1 + Wip1*2
  76. print(Wip1)
  77.  
  78. def main():
  79. #print(X)
  80. #print(Xdot)
  81. #print(euler(X,Xdot,h))
  82. #dummy()
  83. #print(euler(X,Xdot,h))
  84. return 0
  85.  
  86. main()
  87. #fjern factor og T fra loopen
  88. #Lag en syntaksfil. X = xvector i og Y er xvector i+1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement