物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

meviyの切削プレートで円筒部品を発注してみる

FAメカニカル部品の切削プレートでは、円筒部品の見積もりを取ろうとすると、 f:id:onsanai:20210803150731p:plain 「対象外形状が含まれています」と出る。切削プレートでは旋盤加工が必要な円筒形は作れない。

だが、真円に近くなくていいケースは多々ある。多角形にすると発注できるのだろうか?

ということで、中心から角までの距離が75mmの正多角形を作って見積もりを取ってみた。(以下、記事作成時の見積もり)

正20角形

f:id:onsanai:20210803145539p:plain 材質SS400、表面処理なしで9062円

正200角形

f:id:onsanai:20210803145715p:plain 材質SS400、表面処理なしで9374円

正1000角形

ここまで来ると、meviyの形状認識もかなりの時間を要した。そして... f:id:onsanai:20210803152721p:plain 読み込みでタイムアウトになってしまったからか、サービス対象外と言われてしまった。ツリービューで確認すると「ファイルの読み込みに失敗しました。」とのこと。

正200角形までは作れそうなので、見積もり依頼するときの参考にしてください。

meviy.misumi-ec.com

Microsoft ExchangeのメールをAndroidのGmailアプリから認証できないバグ

解決しました。Microsoft Exchange (Microsoft 365)の設定で携帯電話向けのExchange ActiveSyncが無効になっていたことが原因だそうです。

この記事は問題提起なので、解決はできていません。

Microsoft ExchangeのOutlookメールをAndroidGmailアプリの「アカウント追加」から追加しようとした。

アカウント認証に外部ツール(Microsoft以外のウェブサイト)が使われているケースで、外部ツールで認証後、もしくは一度認証した場合は

Finish setting up your email
「Next」

と出たあと、

「メールアドレス」
アカウント情報を取得しています ... 

と表示され、ぐるぐる回ったあと

サーバーにアクセスできません
しばらくしてからもう一度お試しになるか、IT管理者にお問い合わせください
「取り消し」

と表示されてしまう。原因がさっぱり分からない。Gmailアプリのせいなのか、Exchangeのせいなのか、認証用外部ツールのせいなのか。

検索用: Office

ラプラス変換、ラプラス逆変換をPythonで計算してみる

DiracDelta はディラックデルタ関数またはインパルス関数

Heaviside は階段関数またはステップ関数と呼ばれるものです。

>>> import sympy as sp
>>> s, t = sp.symbols('s, t')
>>> a = sp.symbols('a', real=True)

>>> sp.laplace_transform(sp.DiracDelta(t), t, s)
(1 - Heaviside(0), -oo, True)
>>> sp.inverse_laplace_transform(1, s, t)
DiracDelta(t)

>>> sp.laplace_transform(sp.Heaviside(t), t, s)
(1/s, 0, True)
>>> sp.inverse_laplace_transform(1/s, s, t)
Heaviside(t)

>>> sp.laplace_transform(sp.exp(-t*a)*sp.Heaviside(t), t, s)
(1/(a + s), 0, Abs(arg(a)) <= pi/2)
>>> sp.inverse_laplace_transform(1/(s+a), s, t)
exp(-a*t)*Heaviside(t)

Python で数値を科学的表記にする方法

科学的な表記のため、あまりにも長い桁数を丸める必要がある。ざっくりそういう需要のための関数を作った。

やり方は、指数表記にして指数部の大きさで判定させているだけである。自分で作ったほうが早いと思うので参考にしつつ作ってみてはどうだろうか。

def align_digit(f, digit=None,shift=3):
    if digit==None:
        digit = int("{:e}".format(f).split("e")[1])-shift
    if digit<=0: s = str("{:."+str(-digit)+"f}").format(f)
    else: s = str("{:.3e}").format(f)
    return s, digit

print(align_digit(0.00001))
print(align_digit(0.0000100123))

print(align_digit(0.0001))
print(align_digit(0.000100123))

print(align_digit(0.001))
print(align_digit(0.00100123))

print(align_digit(0.01))
print(align_digit(0.0100123))

print(align_digit(0.1))
print(align_digit(0.100123))

print(align_digit(1))
print(align_digit(1.00123))

print(align_digit(10))
print(align_digit(10.0123))

print(align_digit(100))
print(align_digit(100.123))

print(align_digit(1000))
print(align_digit(1001.23))

print(align_digit(10000))
print(align_digit(10012.3))

print(align_digit(100000))
print(align_digit(100123))

shift=3 桁分余分に表示するという感じ。結果は以下の通り

('0.00001000', -8)
('0.00001001', -8)
('0.0001000', -7)
('0.0001001', -7)
('0.001000', -6)
('0.001001', -6)
('0.01000', -5)
('0.01001', -5)
('0.1000', -4)
('0.1001', -4)
('1.000', -3)
('1.001', -3)
('10.00', -2)
('10.01', -2)
('100.0', -1)
('100.1', -1)
('1000', 0)
('1001', 0)
('1.000e+04', 1)
('1.001e+04', 1)
('1.000e+05', 2)
('1.001e+05', 2)

戻り値のtupleの2つめを再利用してdigit=に入れると、同じ桁数の表記が得られる。

Python scipyのfsolveで任意の方程式の解を求める

任意の方程式の解、つまり func(x) = 0 になる x を探させる。解が複数ある場合も初期値から探索したときに最も近い解を返す。

from scipy.optimize import fsolve
import numpy as np

# 変数
beta = 0.6955076793404303
ionpair = 4886

# 方程式
func = lambda delE : np.sqrt(delE/(np.log(ionpair*beta**2)-np.log(1-beta**2)-beta**2))*beta-92

# 初期値
initial_guess = 1000

# 解く
solution = fsolve(func, initial_guess)

# 解
print(solution[0])

139021.52385380902 と出てくるはず。確認のためにグラフを作っておく

x = np.linspace(0,200000)
y = func(x)
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.grid(True)
plt.xlabel("x")
plt.ylabel("y")
plt.show()