16. Lagrange多項式
2019/07/27オープンCAE勉強会@関西16
計算したLagrange基底多項式ℓ𝑖(𝑥)と物理量𝑓𝑖の線形
結合を計算
𝐿 𝑥 = ∑ 𝑓𝑖ℓ𝑖(𝑥)𝑛
𝑖=0
def LagrangePoly(x,xSet,fSet):
if len(xSet) != len(fSet):
raise ValueError(
"The number of elements of xSet({:d}) and fSet({:d}) does not match."¥
.format(len(xSet),len(fSet)))
return
numDataSet = len(xSet)
degreeOfPolynomial = numDataSet-1
return sum([LagrangeBasis(x,degreeOfPolynomial,i,xSet)*fSet[i]
for i in range(numDataSet)])
17. Lagrange多項式を作る関数の説明
2019/07/27オープンCAE勉強会@関西17
引数
x :物理量を補間したい座標
xSet :物理量が定義された座標の集合
(差分法でいうステンシル)
fSet :物理量の集合
def LagrangePoly(x,xSet,fSet):
if len(xSet) != len(fSet):
raise ValueError(
"The number of elements of xSet({:d}) and fSet({:d}) does not match."¥
.format(len(xSet),len(fSet)))
return
numDataSet = len(xSet)
degreeOfPolynomial = numDataSet-1
return sum([LagrangeBasis(x,degreeOfPolynomial,i,xSet)*fSet[i]
for i in range(numDataSet)])
18. Lagrange多項式を作る関数の説明
2019/07/27オープンCAE勉強会@関西18
エラー処理
物理量が定義された座標と物理量の要素数が異なれば
ValueErrorを発生させる
Lagrange多項式の作成
基底多項式ℓ𝑖(𝑥)と物理量𝑓𝑖の積の線形結合をreturn
if len(xSet) != len(fSet):
raise ValueError(
"The number of elements of xSet({:d}) and fSet({:d}) do not match."¥
.format(len(xSet),len(fSet)))
return
numDataSet = len(xSet)
degreeOfPolynomial = numDataSet-1
return sum([LagrangeBasis(x,degreeOfPolynomial,i,xSet)*fSet[i]
for i in range(numDataSet)])