規格や標準において各種強度の許容応力値を設定するにあたり,強度実験で得られたサンプルデータに基づいて決定することが求められることがある。この場合,許容応力は目標とする信頼度や信頼水準を満足するように,サンプルサイズを加味した上で確率論的に決定する必要がでてくる。近年,許容応力を確率論的に決定することの必要性が高まっている。確率論的評価に資するためのパッケージを提供する。なお,確率分布は正規分布であるものとしている。ただし,対数正規分布の場合にも,応用できるので,最後にその利用法を示している。
ターミナルモードで次のコマンドにより,パッケージUtilityをGitHubからインストールしておく。
pip install git+https://github.com/ShinsukeSakai0321/Utility
次に,Pythonプログラム内で,パッケージUtilityの中のAllowableStressをインポートする。
from Utility import AllowableStress as Astress
AllowableStress内のクラス,メソッドの詳細は下記コマンドで確認できる。
help(AStress)
この中のクラスPAStressが,許容応力管理のクラスである。まず,最初に,プログラム内でこのクラスのインスタンスを生成しておく。
pas=Astress.PAStress()
pas.LowerLimit(mu=400, sigm=30, P=0.01)
#330.2095637787748
#例題2
pas.SetParam(param='n',val=5)
pas.SetParam(param='mu',val=400)
pas.SetParam(param='sigm',val=20)
pas.Bbasis2()
#359.6569505975057
#例題3
pas.SetParam(param='n',val=5)
pas.SetParam(param='mu',val=400)
pas.SetParam(param='sigm',val=20)
pas.Bbasis()
#331.867335129965
(例題4)5本の引張試験(サンプルサイズ\(n\)=5)の結果,引張強さ[408.4, 374.0, 395.9, 405.8, 412.3](単位:MPa)が得られた。この材料の\(\mu\),\(\sigma\)ともに未知であるとするとき,A許容値,B許容値を決定せよ。
#例題4
data=[408.4, 374.0, 395.9, 405.8,412.3]
pas.SetData(data)
SaA=pas.Abasis()
SaB=pas.Bbasis()
SaA,SaB
#311.00403498262483 346.8989842383104
import numpy as np
sigm=np.log(1.1)
mu=np.log(400)
n=10
s=np.random.lognormal(mu,sigm,n)
slog=np.log(s)
from Utility import AllowableStress as Astress
pas=Astress.PAStress()
mu=slog.mean()
pas.SetParam(param='n',val=10)
pas.SetParam(param='mu',val=mu)
pas.SetParam(param='sigm',val=sigm)
Abasis=np.exp(pas.Abasis2())
Bbasis=np.exp(pas.Bbasis2())
print('Absis=',Abasis,':Bbasis=',Bbasis)
#Absis= 291.2633407447084 :Bbasis= 321.76051705594955
from Utility import AllowableStress as Astress
pas=Astress.PAStress()
sigm=slog.std()
mu=slog.mean()
pas.SetParam(param='n',val=10)
pas.SetParam(param='mu',val=mu)
pas.SetParam(param='sigm',val=sigm)
Abasis=np.exp(pas.Abasis())
Bbasis=np.exp(pas.Bbasis())
print('Absis=',Abasis,':Bbasis=',Bbasis)
# Absis= 246.67391288011243 :Bbasis= 294.9455976839429
import numpy as np
### 例題 ###
#### 二母数ワイブル分布の乱数発生 ###
#alpha 形状母数 beta 尺度母数 n 個数
alpha=8.0
beta=400.0
n=10
dd=np.random.weibull(alpha,n)*beta
from Utility import AllowableStress as AlS
# 形状母数は既知であるとして、A許容値、B許容値を評価する #
ps=AlS.PAStressW()
ps.SetData(dd,alpha)
print('Abasis=',ps.Abasis(),'Bbasis=',ps.Bbasis())
#Abasis= 205.56913798387714 Bbasis= 275.7528938820833