num4mechaequ 0.0.3 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/lib/num4mechaequ.rb +63 -15
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa1f15732e36a08d7b119cc9d638d27ea13182fd1f4a36bac3b4e823996fcffd
4
- data.tar.gz: 486c9ee96ffdf6db1a83e23f68bc146b7ea7af7b7298ec13215b71f06078cb91
3
+ metadata.gz: 77ffa279b2f10648a0cc852d08f6cf23db176f385bc31b8809540a38a2f316ad
4
+ data.tar.gz: 59f69ea0ee861cc39067f4863191205d756e552d35d8af0f039ce94628a33166
5
5
  SHA512:
6
- metadata.gz: 4e6936f8107a121a98a2d3f010a99219b8a09bb1f1d769b748300953a42a9d4a6f9780f68a33a838122a88e94a0e962c25d96b87675b15abcf025f3385e09af1
7
- data.tar.gz: d1886b86214b6670ce2c5698b1ca4f639a59f5d7cc884be83385b302425d40da6640e57637a47dbe35edaa1a126cdc23da6cb59bcb697ee2499d705d4bd9c88b
6
+ metadata.gz: aaf91e9df68349bd5c20708a54d0e9d97e312fc904b03ed37076b864d93dc55ec3477e34c872005808df46f176c0988c7421aa54e86879bb27772ef79fc5afcb
7
+ data.tar.gz: 4a0ef2f3a5ff4fe31a52af87aceba3c593416d881346b3b087bf6a92c75f45f832d9a792aa5d02c2ae6d3a1292491e152892a7217e4cf9e2816020e307812d9e
data/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.1.1] - 2022-07-10
6
+
7
+ ### Changed
8
+ - change of function name
9
+ * motiEqu4freeFallEqu -> freeFallMotion
10
+ * springFreqEqu -> SHM
11
+
12
+ ### Fixed
13
+ - fix appointed time. (from 0 to n)
14
+
15
+ ### Added
16
+ - add function of projectileMotion
17
+
5
18
  ## [0.0.3] - 2022-07-03
6
19
 
7
20
  ### Changed
data/lib/num4mechaequ.rb CHANGED
@@ -4,39 +4,55 @@ require 'num4simdiff'
4
4
  # 数値計算による力学方程式の解法するライブラリ
5
5
  #
6
6
  module Num4MechaEquLib
7
- @g = 9.80665 # 重力加速度
8
- @t = 0.001 # 時間刻み
7
+ @g = 9.80665 # 重力加速度(m/s2)
8
+ @dt = 0.001 # 時間刻み
9
9
  @w = 0.0
10
+ # 単振動
10
11
  @springFunc = Proc.new do | n, yi |
11
12
  f = []
12
13
  f[0] = yi[1] # hの傾き値
13
- f[1] = @w * yi[0] - @g# vの傾き値
14
+ f[1] = - @w * @w * yi[0] # vの傾き値
14
15
  next f
15
16
  end
17
+ # 自由落下運動
16
18
  @motionFunc = Proc.new do | n, yi |
17
19
  f = []
18
20
  f[0] = yi[1] # hの傾き値
19
- f[1] = - @g # vの傾き値
21
+ f[1] = - @g + @w * yi[1] # vの傾き値
22
+ next f
23
+ end
24
+ # 放物運動
25
+ @projectileXFunc = Proc.new do | n, yi |
26
+ f = []
27
+ f[0] = yi[1] # hの傾き値
28
+ f[1] = 0 # vの傾き値
29
+ next f
30
+ end
31
+ @projectileYFunc = Proc.new do | n, yi |
32
+ f = []
33
+ f[0] = yi[1] # hの傾き値
34
+ f[1] = - @g # vの傾き値
20
35
  next f
21
36
  end
22
37
  class << self
23
38
 
24
39
  #
25
- # バネの固有振動
26
- # @overload springFreqEqu(k, m, h0, v0)
40
+ # 単振動(simple harmonic motion)
41
+ # @overload SHM(k, m, t, h0, v0)
27
42
  # @param [double] k バネ定数
28
43
  # @param [double] m 重りの重さ
44
+ # @param [double] t 時間
29
45
  # @param [double] h0 初期位置値
30
46
  # @param [double] v0 初期速度
31
- # @return [hash[]] 0秒から1秒までの位置(h)と速度(v)の値
47
+ # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
32
48
  #
33
- def springFreqEqu(k, m, h0, v0)
49
+ def SHM(k, m, t, h0, v0)
34
50
  @w = Math.sqrt((k / m))
35
51
  hvt = []
36
52
  yi_1 = []
37
53
  yi = [h0, v0]
38
- 0.step(1, @t) { |x|
39
- yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @t, @springFunc)
54
+ 0.step(t, @dt) { |x|
55
+ yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @dt, @springFunc)
40
56
  hvt.push({"t" => x,
41
57
  "h" => yi_1[0], "v" => m * yi_1[1]})
42
58
  yi = yi_1
@@ -45,18 +61,21 @@ module Num4MechaEquLib
45
61
  end
46
62
  #
47
63
  # 自由落下による運動方程式(空気抵抗有り)
48
- # @overload motiEqu4freeFallEqu(m, h0, v0)
64
+ # @overload freeFallMotion(m, c, t, h0, v0)
49
65
  # @param [double] m 重りの重さ
66
+ # @param [double] c 空気抵抗
67
+ # @param [double] t 時間
50
68
  # @param [double] h0 初期位置値
51
69
  # @param [double] v0 初期速度
52
- # @return [hash[]] 0秒から1秒までの位置(h)と速度(v)の値
70
+ # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
53
71
  #
54
- def motiEqu4freeFallEqu(m, h0, v0)
72
+ def freeFallMotion(m, c, t, h0, v0)
73
+ @w = c / m
55
74
  hvt = []
56
75
  yi_1 = []
57
76
  yi = [h0, v0]
58
- 0.step(1, @t) { |x|
59
- yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @t, @motionFunc)
77
+ 0.step(t, @dt) { |x|
78
+ yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @dt, @motionFunc)
60
79
  hvt.push({"t" => x,
61
80
  "h" => yi_1[0], "v" => m * yi_1[1]})
62
81
  yi = yi_1
@@ -64,6 +83,35 @@ module Num4MechaEquLib
64
83
  return hvt
65
84
 
66
85
  end
86
+ #
87
+ # 放物運動
88
+ # @overload projectileMotion(m, theta, t, h0, v0)
89
+ # @param [double] m 重りの重さ
90
+ # @param [double] theta 角度(ラジアン指定)
91
+ # @param [double] t 時間
92
+ # @param [double] h0 初期位置値
93
+ # @param [double] v0 初期速度
94
+ # @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
95
+ #
96
+ def projectileMotion(m, theta, t, h0, v0)
97
+ hvt = []
98
+ yxi_1 = []
99
+ yyi_1 = []
100
+ yxi = [h0, v0 * Math.cos(theta)]
101
+ yyi = [h0, v0 * Math.sin(theta)]
102
+ 0.step(t, @dt) { |x|
103
+ yxi_1 = Num4SimDiffLib.rungeKuttaMethod(yxi, @dt, @projectileXFunc)
104
+ yyi_1 = Num4SimDiffLib.rungeKuttaMethod(yyi, @dt, @projectileYFunc)
105
+ hvt.push({"t" => x,
106
+ "x" => {"h" => yxi_1[0], "v" => m * yxi_1[1]},
107
+ "y" => {"h" => yyi_1[0], "v" => m * yyi_1[1]},
108
+ }
109
+ )
110
+ yxi = yxi_1
111
+ yyi = yyi_1
112
+ }
113
+ return hvt
114
+ end
67
115
  end
68
116
  end
69
117
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: num4mechaequ
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - siranovel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-03 00:00:00.000000000 Z
11
+ date: 2023-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: num4simdiff
@@ -45,7 +45,7 @@ licenses:
45
45
  - MIT
46
46
  metadata:
47
47
  changelog_uri: http://github.com/siranovel/num4mechaequation/blob/main/CHANGELOG.md
48
- documentation_uri: https://rubydoc.info/gems/num4mechaequ/0.0.3
48
+ documentation_uri: https://rubydoc.info/gems/num4mechaequ/0.1.1
49
49
  homepage_uri: http://github.com/siranovel/num4mechaequation
50
50
  wiki_uri: https://github.com/siranovel/mydocs/tree/main/num4phyequation/num4mechaequation
51
51
  post_install_message: