SlideShare a Scribd company logo
1 of 26
Download to read offline
差分法の重み係数を出してくれる
超ありがたいPythonコード
出川智啓
いきなりですが
2019/07/27オープンCAE勉強会@関西2
微分の差分近似式
何個暗記してますか?
1階微分の差分近似式
2019/07/27オープンCAE勉強会@関西3
 𝑓𝑖
′
=
𝑓 𝑖+1−𝑓 𝑖
Δ𝑥
+ 𝑂 Δ𝑥
 𝑓𝑖
′
=
𝑓 𝑖−𝑓 𝑖−1
Δ𝑥
+ 𝑂 Δ𝑥
 𝑓𝑖
′
=
𝑓 𝑖+1−𝑓 𝑖−1
2Δ𝑥
+ 𝑂 Δ𝑥2
 𝑓𝑖
′
=
3𝑓 𝑖−4𝑓 𝑖−1+𝑓 𝑖−2
2Δ𝑥
+ 𝑂 Δ𝑥2
 𝑓𝑖
′
=
−3𝑓 𝑖+4𝑓 𝑖+1−𝑓𝑖+2
2Δ𝑥
+ 𝑂 Δ𝑥2
 𝑓𝑖
′
=
−𝑓 𝑖+2+8?𝑓 𝑖+1−8?𝑓 𝑖−1+𝑓 𝑖−2
12?Δ𝑥
+ 𝑂 Δ𝑥4
2階微分の差分近似式
2019/07/27オープンCAE勉強会@関西4
 𝑓𝑖
′′
=
𝑓 𝑖+1−2𝑓 𝑖+𝑓𝑖−1
Δ𝑥2 + 𝑂 Δ𝑥2
 𝑓𝑖
′′
=
𝑓 𝑖−2𝑓 𝑖+1+𝑓𝑖+2
Δ𝑥2 + 𝑂 Δ𝑥
 𝑓𝑖
′′
=
𝑓 𝑖−2𝑓 𝑖−1+𝑓𝑖−2
Δ𝑥2 + 𝑂 Δ𝑥
 𝑓𝑖
′′
=
2?𝑓 𝑖−5?𝑓 𝑖+1+4?𝑓 𝑖+2−?𝑓 𝑖+3
Δ𝑥2 + 𝑂 Δ𝑥2
 𝑓𝑖
′′
=
2?𝑓 𝑖−5?𝑓 𝑖−1+4?𝑓 𝑖−2−?𝑓 𝑖−3
Δ𝑥2 + 𝑂 Δ𝑥2
重み係数の情報源
2019/07/27オープンCAE勉強会@関西5
 手作業で導出
 4次精度が精一杯
 ネット
 中心差分
 https://en.wikipedia.org/wiki/Finite_difference_coefficient#Central_finite_difference
 片側差分
 https://en.wikipedia.org/wiki/Finite_difference_coefficient#Forward_finite_difference
 https://en.wikipedia.org/wiki/Finite_difference_coefficient#Backward_finite_difference
 任意階数,任意精度の式はない
 それに近いWebアプリはある
 http://web.media.mit.edu/~crtaylor/calculator.html
 自分に都合のよい導出プログラムを作ってみよう
差分法の公式の導出
2019/07/27オープンCAE勉強会@関西6
 Taylor展開
 微分の公式を直接導出
 ステンシルと精度の関係がわかりやすい
 連立方程式を解く必要が生じる
 Lagrange多項式
 補間多項式を経由して間接的に導出
 ステンシルと精度の関係は明示されない
 1階微分は打切精度=ステンシル幅-1という関係を暗喩
 記号的に微分ができれば非常に楽
戦略
2019/07/27オープンCAE勉強会@関西7
1. Lagrange基底多項式を作る
2. 物理量と基底多項式をかけてLagrange多項式を作る
3. Lagrange多項式を記号的に微分する
Lagrange多項式(補間多項式)
2019/07/27オープンCAE勉強会@関西8
 重複のないn+1個の座標値と物理量の組 𝑥𝑖, 𝑓𝑖
 n+1点全てを通るn次多項式を作る
 n次式多項式𝑃 𝑥 = 𝑎0 + 𝑎1 𝑥 + 𝑎2 𝑥2
+ ⋯ + 𝑎 𝑛 𝑥 𝑛
の係数
𝑎0, 𝑎𝑖, … , 𝑎 𝑛を求めるのはよい手段ではない
 𝑓𝑖 = 𝑃 𝑥𝑖 = 𝑎0 + 𝑎1 𝑥𝑖 + 𝑎2 𝑥𝑖
2
+ ⋯ + 𝑎 𝑛 𝑥𝑖
𝑛
𝑖 = 0,1, … , 𝑛
 連立方程式を解く必要がある
 nが大きいときは悪条件になりやすい
 直接的な方法が望ましい
 Lagrange(補間)多項式
Lagrange多項式(補間多項式)
2019/07/27オープンCAE勉強会@関西9
 Lagrange(補間)多項式
=Lagrange基底多項式の線形結合
 𝐿 𝑥 = ∑ 𝑓𝑖ℓ𝑖(𝑥)𝑛
𝑖=0
 ℓ𝑖(𝑥) Lagrange基底多項式
 ℓ𝑖 𝑥 = ∏
𝑥−𝑥 𝑗
𝑥 𝑖−𝑥 𝑗
0≤𝑗≤𝑛
𝑖≠𝑗
=
𝑥−𝑥0
𝑥 𝑖−𝑥0
⋯
𝑥−𝑥 𝑖−1
𝑥 𝑖−𝑥𝑖−1
𝑥−𝑥 𝑖+1
𝑥 𝑖−𝑥 𝑖+1
⋯
𝑥−𝑥 𝑛
𝑥 𝑖−𝑥 𝑛
例題
2019/07/27オープンCAE勉強会@関西10
 (-0.5, 1.5625),(0, 1.0625),(0.5, 1.0625)が
与えられているとき,x=0.25におけるfを求めよ
 ℓ0 0.25 =
0.25−0
−0.5−0
0.25−0.5
−0.5−0.5
= −
0.0625
0.5
= −0.125
 ℓ1 0.25 =
0.25− −0.5
0− −0.5
0.25−0.5
0−0.5
= −
0.1875
−0.25
= 0.75
 ℓ2 0.25 =
0.25− −0.5
0.5− −0.5
0.25−0
0.5−0
=
0.1875
0.5
= 0.375

𝑓 0.25 = 𝐿 0.25
= 𝑓0ℓ0 0.25 + 𝑓1ℓ1 0.25 + 𝑓2ℓ2 0.25
= −0.125 ⋅ 1.5625 + 0.75 ⋅ 1.0625 + 0.375 ⋅ 1.0625
= 1
Lagrange基底多項式を作る関数
2019/07/27オープンCAE勉強会@関西11
 Sympyを使ってシンボリックに表現
import sympy as sp
def LagrangeBasis(x,degreeOfPolynomial,pointAt,xSet=None):
import sympy as sp
numDataSet = degreeOfPolynomial+1
if xSet==None:
xSet = sp.symbols('x0:{:d}'.format(numDataSet))
index = list(range(numDataSet))
index.remove(pointAt)
return sp.prod([(x-xSet[j])/(xSet[pointAt]-xSet[j])
for j in index])
Lagrange基底多項式を作る関数
2019/07/27オープンCAE勉強会@関西12
 Sympyを使ってシンボリックに表現
x=sp.symbols('x')
LagrangeBasis(x,degreeOfPolynomial=5,pointAt=0)
Lagrange基底多項式を作る関数の説明
2019/07/27オープンCAE勉強会@関西13
 引数
 x :物理量を補間したい座標
 degreeOfPolynomial :補間多項式の次数(=データ数-1)
 pointAt :基底多項式
 xSet :物理量が定義された座標の集合
(差分法でいうステンシル)
def LagrangeBasis(x,degreeOfPolynomial,pointAt,xSet=None):
import sympy as sp
numDataSet = degreeOfPolynomial+1
if xSet==None:
xSet = sp.symbols('x0:{:d}'.format(numDataSet))
index = list(range(numDataSet))
index.remove(pointAt)
return sp.prod([(x-xSet[j])/(xSet[pointAt]-xSet[j])
for j in index])
Lagrange基底多項式を作る関数の説明
2019/07/27オープンCAE勉強会@関西14
 補間多項式の次数とデータ数の対応付け
 ステンシルの準備
 引数として与えられていないときは作成
 Sympyシンボルの一括作成
numDataSet = degreeOfPolynomial+1
if xSet==None:
xSet = sp.symbols('x0:{:d}'.format(numDataSet))
'x0:{:d}'.format(6)
'x0:6'
xSet=sp.symbols('x0:{:d}'.format(6))
xSet
(x0, x1, x2, x3, x4, x5)
Lagrange基底多項式を作る関数の説明
2019/07/27オープンCAE勉強会@関西15
 配列添字を参照するインデックスの作成
 listとして作成
 Lagrange基底多項式を作る点はremoveで取り除く
 Lagrange多項式の仮定を満たすため
 インデックスに基づいて座標値を参照し,基底多項式を
作成
index = list(range(numDataSet))
index.remove(pointAt)
return sp.prod([(x-xSet[j])/(xSet[pointAt]-xSet[j])
for j in index])
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)])
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)])
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)])
Lagrange多項式を作ってみる
2019/07/27オープンCAE勉強会@関西19
 座標値
 -Δx, 0, Δxの3点を通るLagrange多項式
 微分を計算したい点を0とした相対座標系とみなせる
 物理量の集合
 Sympyシンボルとして作成
 Lagrange多項式の作成
x=sp.symbols('x')
Δx=sp.symbols('Δx')
xi=[-Δx,0,Δx]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
LagrangePoly(x,xi,fi)
Lagrange多項式の微分
2019/07/27オープンCAE勉強会@関西20
 sympy.diff(式, 微分変数[,階数])
 1階微分
 2階微分
sp.diff(LagrangePoly(x,xi,fi),x)
sp.diff(LagrangePoly(x,xi,fi),x,2)
Lagrange多項式の微分
2019/07/27オープンCAE勉強会@関西21
 xの設定
 -Δx, 0, Δxの3点を通るLagrange多項式
 微分を計算したい点を0とした相対座標系とみなせる
 Lagrange多項式を微分して得られた式のxに0を代入
 subsメソッドによるSympyシンボルへの値の代入
 (ついでに)simplify関数で整理
sp.diff(LagrangePoly(x,xi,fi),x).subs([(x,0)])
sp.simplify(sp.diff(LagrangePoly(x,xi,fi),x).subs([(x,0)]))
Lagrange多項式の微分
2019/07/27オープンCAE勉強会@関西22
 一連の作業をまとめて関数化
 function :微分する式
LagrangePoly()の戻り値を与える
 x :微分する記号
 orderOfDifference :微分の階数
def Derivative(function,x,orderOfDifference=1):
import sympy as sp
return sp.simplify(
sp.diff(function,x,orderOfDifference).subs([(x,0)]))
xi=[-Δx,0,Δx]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
Derivative(LagrangePoly(x,xi,fi), x, orderOfDifference=1)
高次精度差分にも対応
2019/07/27オープンCAE勉強会@関西23
xi=[-5*Δx, -4*Δx, -3*Δx, -2*Δx, -Δx, 0, Δx, 2*Δx, 3*Δx, 4*Δx, 5*Δx]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
Derivative(LagrangePoly(x,xi,fi), x, orderOfDifference=1)
xi=[-5*Δx, -4*Δx, -3*Δx, -2*Δx, -Δx, 0, Δx, 2*Δx, 3*Δx, 4*Δx, 5*Δx]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
Derivative(LagrangePoly(x,xi,fi), x, orderOfDifference=2)
xi=[-5*Δx, -4*Δx, -3*Δx, -2*Δx, -Δx, 0, Δx, 2*Δx, 3*Δx, 4*Δx, 5*Δx]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
Derivative(LagrangePoly(x,xi,fi), x, orderOfDifference=10)
片側に重みを付けた差分にも対応
2019/07/27オープンCAE勉強会@関西24
xi=[0, Δx, 2*Δx]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
Derivative(LagrangePoly(x,xi,fi), x, orderOfDifference=1)
xi=[-Δx, 0, Δx, 2*Δx]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
Derivative(LagrangePoly(x,xi,fi), x, orderOfDifference=1)
xi=[-3*Δx, -2*Δx, -Δx, 0, Δx]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
Derivative(LagrangePoly(x,xi,fi), x, orderOfDifference=2)
スタガード格子もいけるっぽいけど要検証
2019/07/27オープンCAE勉強会@関西25
xi=[-Δx/2, Δx/2]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
Derivative(LagrangePoly(x,xi,fi), x, orderOfDifference=1)
xi=[-5*Δx/2,-3*Δx/2,-Δx/2]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
Derivative(LagrangePoly(x,xi,fi), x, orderOfDifference=1)
xi=[-5*Δx/2,-3*Δx/2,-Δx/2,Δx/2]
fi=sp.symbols('f0:{:d}'.format(len(xi)))
Derivative(LagrangePoly(x,xi,fi), x, orderOfDifference=2)
プログラムの改善点
2019/07/27オープンCAE勉強会@関西26
 座標値を数字だけで指定したい
 [-3*Δx,-2*Δx,-Δx,0,Δx]->[-3,-2,-1,0,1]
 これは簡単にできそう
 だがスタガード格子との親和性に難あり
 差分を計算する点をf0としたい
 今は数直線上の一番左が0
 ついでに数字を下付きにしたい
 [-3*Δx,-2*Δx,-Δx,0,Δx]に対応する物理量は
(f0,f1,f2,f3,f4)->(f-3,f-2,f-1,f0,f1)
 関数をもう少しわかりやすく
 微分記号のxと値を計算する座標値xの区別とか

More Related Content

What's hot

HttpClient詳解、或いは非同期の落とし穴について
HttpClient詳解、或いは非同期の落とし穴についてHttpClient詳解、或いは非同期の落とし穴について
HttpClient詳解、或いは非同期の落とし穴について
Yoshifumi Kawai
 

What's hot (20)

Hopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないことHopper アーキテクチャで、変わること、変わらないこと
Hopper アーキテクチャで、変わること、変わらないこと
 
Gitの便利ワザ
Gitの便利ワザGitの便利ワザ
Gitの便利ワザ
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
 
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
TensorRT Inference Serverではじめる、 高性能な推論サーバ構築
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
 
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
HttpClient詳解、或いは非同期の落とし穴について
HttpClient詳解、或いは非同期の落とし穴についてHttpClient詳解、或いは非同期の落とし穴について
HttpClient詳解、或いは非同期の落とし穴について
 
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
 
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
モデル検査入門 #wacate
モデル検査入門 #wacateモデル検査入門 #wacate
モデル検査入門 #wacate
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
 

Similar to Very helpful python code to find coefficients of the finite difference method

Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料
Toshio Ehara
 
kagami_comput2015_7
kagami_comput2015_7kagami_comput2015_7
kagami_comput2015_7
swkagami
 
2015年度GPGPU実践プログラミング 第12回 偏微分方程式の差分計算
2015年度GPGPU実践プログラミング 第12回 偏微分方程式の差分計算2015年度GPGPU実践プログラミング 第12回 偏微分方程式の差分計算
2015年度GPGPU実践プログラミング 第12回 偏微分方程式の差分計算
智啓 出川
 

Similar to Very helpful python code to find coefficients of the finite difference method (20)

確率的グラフィカルモデルと離散構造
確率的グラフィカルモデルと離散構造確率的グラフィカルモデルと離散構造
確率的グラフィカルモデルと離散構造
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こう
 
Casual learning machine learning with_excel_no5
Casual learning machine learning with_excel_no5Casual learning machine learning with_excel_no5
Casual learning machine learning with_excel_no5
 
プログラマーSeの数学
プログラマーSeの数学プログラマーSeの数学
プログラマーSeの数学
 
Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料
 
演習II.第1章 ベイズ推論の考え方 Part 3.スライド
演習II.第1章 ベイズ推論の考え方 Part 3.スライド演習II.第1章 ベイズ推論の考え方 Part 3.スライド
演習II.第1章 ベイズ推論の考え方 Part 3.スライド
 
各言語の k-means 比較
各言語の k-means 比較各言語の k-means 比較
各言語の k-means 比較
 
「トピックモデルによる統計的潜在意味解析」読書会 2章前半
「トピックモデルによる統計的潜在意味解析」読書会 2章前半「トピックモデルによる統計的潜在意味解析」読書会 2章前半
「トピックモデルによる統計的潜在意味解析」読書会 2章前半
 
物理ベースレンダラedupt解説
物理ベースレンダラedupt解説物理ベースレンダラedupt解説
物理ベースレンダラedupt解説
 
データ解析13 線形判別分析
データ解析13 線形判別分析データ解析13 線形判別分析
データ解析13 線形判別分析
 
kagami_comput2015_7
kagami_comput2015_7kagami_comput2015_7
kagami_comput2015_7
 
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類
 
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』
 
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
 
2015年度GPGPU実践プログラミング 第12回 偏微分方程式の差分計算
2015年度GPGPU実践プログラミング 第12回 偏微分方程式の差分計算2015年度GPGPU実践プログラミング 第12回 偏微分方程式の差分計算
2015年度GPGPU実践プログラミング 第12回 偏微分方程式の差分計算
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
diffの真髄
diffの真髄diffの真髄
diffの真髄
 
データ解析8 主成分分析の応用
データ解析8 主成分分析の応用データ解析8 主成分分析の応用
データ解析8 主成分分析の応用
 
Coqチュートリアル
CoqチュートリアルCoqチュートリアル
Coqチュートリアル
 

More from 智啓 出川

GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust) GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
智啓 出川
 
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE) GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
智啓 出川
 
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS) GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
智啓 出川
 
GPGPU Seminar (GPGPU and CUDA Fortran)
GPGPU Seminar (GPGPU and CUDA Fortran)GPGPU Seminar (GPGPU and CUDA Fortran)
GPGPU Seminar (GPGPU and CUDA Fortran)
智啓 出川
 
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
智啓 出川
 
GPGPU Seminar (PyCUDA)
GPGPU Seminar (PyCUDA)GPGPU Seminar (PyCUDA)
GPGPU Seminar (PyCUDA)
智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用 (支配方程式,CPUプログラム)
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用(支配方程式,CPUプログラム)2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用(支配方程式,CPUプログラム)
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用 (支配方程式,CPUプログラム)
智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第10回 Poisson方程式の求解 (線形連立一次方程式)
2015年度先端GPGPUシミュレーション工学特論 第10回 Poisson方程式の求解(線形連立一次方程式)2015年度先端GPGPUシミュレーション工学特論 第10回 Poisson方程式の求解(線形連立一次方程式)
2015年度先端GPGPUシミュレーション工学特論 第10回 Poisson方程式の求解 (線形連立一次方程式)
智啓 出川
 

More from 智啓 出川 (20)

Why do we confuse String and Array of Characters in Fortran?
Why do we confuse String and Array of Characters in Fortran?Why do we confuse String and Array of Characters in Fortran?
Why do we confuse String and Array of Characters in Fortran?
 
Pythonによる累乗近似
Pythonによる累乗近似Pythonによる累乗近似
Pythonによる累乗近似
 
数値計算結果のPythonによる後処理について(1次元データのピーク値およびその位置の推定)
数値計算結果のPythonによる後処理について(1次元データのピーク値およびその位置の推定)数値計算結果のPythonによる後処理について(1次元データのピーク値およびその位置の推定)
数値計算結果のPythonによる後処理について(1次元データのピーク値およびその位置の推定)
 
オブジェクト指向Fortranが拓く(はずだった)新しい世界
オブジェクト指向Fortranが拓く(はずだった)新しい世界オブジェクト指向Fortranが拓く(はずだった)新しい世界
オブジェクト指向Fortranが拓く(はずだった)新しい世界
 
Schematic diagrams of GPUs' architecture and Time evolution of theoretical FL...
Schematic diagrams of GPUs' architecture and Time evolution of theoretical FL...Schematic diagrams of GPUs' architecture and Time evolution of theoretical FL...
Schematic diagrams of GPUs' architecture and Time evolution of theoretical FL...
 
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust) GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
 
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE) GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
 
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS) GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
 
GPGPU Education at Nagaoka University of Technology: A Trial Run
GPGPU Education at Nagaoka University of Technology: A Trial RunGPGPU Education at Nagaoka University of Technology: A Trial Run
GPGPU Education at Nagaoka University of Technology: A Trial Run
 
Cuda fortranの利便性を高めるfortran言語の機能
Cuda fortranの利便性を高めるfortran言語の機能Cuda fortranの利便性を高めるfortran言語の機能
Cuda fortranの利便性を高めるfortran言語の機能
 
PGI CUDA FortranとGPU最適化ライブラリの一連携法
PGI CUDA FortranとGPU最適化ライブラリの一連携法PGI CUDA FortranとGPU最適化ライブラリの一連携法
PGI CUDA FortranとGPU最適化ライブラリの一連携法
 
教育機関でのJetsonの活用の可能性
教育機関でのJetsonの活用の可能性教育機関でのJetsonの活用の可能性
教育機関でのJetsonの活用の可能性
 
GPGPU Seminar (GPGPU and CUDA Fortran)
GPGPU Seminar (GPGPU and CUDA Fortran)GPGPU Seminar (GPGPU and CUDA Fortran)
GPGPU Seminar (GPGPU and CUDA Fortran)
 
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
 
GPGPU Seminar (PyCUDA)
GPGPU Seminar (PyCUDA)GPGPU Seminar (PyCUDA)
GPGPU Seminar (PyCUDA)
 
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
 
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
 
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
 
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用 (支配方程式,CPUプログラム)
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用(支配方程式,CPUプログラム)2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用(支配方程式,CPUプログラム)
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用 (支配方程式,CPUプログラム)
 
2015年度先端GPGPUシミュレーション工学特論 第10回 Poisson方程式の求解 (線形連立一次方程式)
2015年度先端GPGPUシミュレーション工学特論 第10回 Poisson方程式の求解(線形連立一次方程式)2015年度先端GPGPUシミュレーション工学特論 第10回 Poisson方程式の求解(線形連立一次方程式)
2015年度先端GPGPUシミュレーション工学特論 第10回 Poisson方程式の求解 (線形連立一次方程式)
 

Very helpful python code to find coefficients of the finite difference method