num4mechaequ 0.0.3 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/lib/num4mechaequ.rb +63 -15
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77ffa279b2f10648a0cc852d08f6cf23db176f385bc31b8809540a38a2f316ad
|
4
|
+
data.tar.gz: 59f69ea0ee861cc39067f4863191205d756e552d35d8af0f039ce94628a33166
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
@
|
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]
|
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
|
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
|
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秒から
|
47
|
+
# @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
|
32
48
|
#
|
33
|
-
def
|
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(
|
39
|
-
yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @
|
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
|
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秒から
|
70
|
+
# @return [hash[]] 0秒からt秒までの位置(h)と速度(v)の値
|
53
71
|
#
|
54
|
-
def
|
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(
|
59
|
-
yi_1 = Num4SimDiffLib.rungeKuttaMethod(yi, @
|
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.
|
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-
|
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.
|
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:
|