Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F88833238
interpolate_for_time.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sun, Oct 20, 22:06
Size
2 KB
Mime Type
text/x-python
Expires
Tue, Oct 22, 22:06 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
21758668
Attached To
R11910 Additive Manufacturing Work
interpolate_for_time.py
View Options
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Feb 8 12:33:39 2022
@author: ekinkubilay
"""
import
numpy
as
np
import
matplotlib.pyplot
as
plt
def
interpolate_for_time
(
u_maximum
,
v
,
alpha
):
def
function
(
w
):
return
np
.
exp
(
-
u
**
2
/
(
4
*
alpha
*
w
)
-
w
*
v
**
2
/
(
4
*
alpha
))
/
w
**
1.5
u_range
=
np
.
linspace
(
0.000001
,
u_maximum
)
maximums
=
[]
minimums
=
[]
u_maxs
=
[]
u_mins
=
[]
for
u
in
u_range
:
w
=
np
.
linspace
(
0.000001
,
0.05
,
10000
)
values
=
function
(
w
)
limit
=
0.001
*
function
(
w
[
np
.
argmax
(
values
)])
*
np
.
ones
(
len
(
w
))
ids
=
np
.
argwhere
(
np
.
diff
(
np
.
diff
(
np
.
sign
(
values
-
limit
))))
"""
plt.plot(w, values, marker='.')
plt.scatter(w[np.argmax(values)], function(w[np.argmax(values)]), color='r', s=50)
plt.scatter(w[ids], values[ids], color='g', s=50)
plt.show()
"""
if
len
(
ids
)
==
1
:
maximums
.
append
(
w
[
ids
[
0
]])
u_maxs
.
append
(
u
)
else
:
minimums
.
append
(
w
[
ids
[
0
]])
maximums
.
append
(
w
[
ids
[
-
1
]])
u_maxs
.
append
(
u
)
u_mins
.
append
(
u
)
A
=
np
.
array
([[
np
.
sum
(
np
.
power
(
u_maxs
,
2
)),
np
.
sum
(
u_maxs
)],[
np
.
sum
(
u_maxs
),
len
(
u_maxs
)]])
B
=
np
.
array
([
np
.
asarray
(
u_maxs
)
.
dot
(
np
.
asarray
(
maximums
))[
0
],
np
.
sum
(
maximums
)
])
A_max
,
B_max
=
np
.
linalg
.
inv
(
A
)
.
dot
(
B
)
A
=
np
.
array
([[
np
.
sum
(
np
.
power
(
u_mins
,
2
)),
np
.
sum
(
u_mins
)],[
np
.
sum
(
u_mins
),
len
(
u_mins
)]])
B
=
np
.
array
([
np
.
asarray
(
u_mins
)
.
dot
(
np
.
asarray
(
minimums
))[
0
],
np
.
sum
(
minimums
)
])
A_min
,
B_min
=
np
.
linalg
.
inv
(
A
)
.
dot
(
B
)
plt
.
plot
(
u_maxs
,
maximums
)
plt
.
plot
(
u_mins
,
minimums
)
plt
.
plot
(
u_range
,
1.05
*
(
A_max
*
u_range
+
B_max
))
plt
.
plot
(
u_range
,
0.95
*
(
A_min
*
u_range
+
B_min
))
return
[
A_min
,
B_min
],
[
A_max
,
B_max
]
def
get_interpolation_limits
(
max_dist
,
v
,
alpha
):
min_limits
,
max_limits
=
interpolate_for_time
(
max_dist
,
v
,
alpha
)
return
min_limits
[
0
],
min_limits
[
1
],
max_limits
[
0
],
max_limits
[
1
]
v
=
0.8
alpha
=
8e-6
global
A_min
,
B_min
,
A_max
,
B_max
A_min
,
B_min
,
A_max
,
B_max
=
get_interpolation_limits
(
0.00377
/
2
,
v
,
alpha
)
Event Timeline
Log In to Comment