・(2025-05-05) FEniCSをインストールしていません。
(本日の)ChatGPT先生へ
質問リスト
# 質問リスト
1. FEniCS と sympy の違いを教えて下さい。
2. 同じ問題を FEniCS と SymPy でどう扱うかの比較例も作成できますか?
3. 私の質問をMarkdown形式でリスト化して出力して。Markdown形式でリストからアスタリスクは削除して。1行目に、# 質問リスト の文字を出力して。最後の質問も追加して下さい。追番を追加して下さい。Markdown形式で。
(回答抜粋)
...
では、簡単な偏微分方程式を題材に、SymPy と FEniCS でどのように扱い方が異なるかを比較してみましょう。
題材: ポアソン方程式
1. SymPy による厳密解の計算
from sympy import symbols, Eq, sin, pi, dsolve, Function, diff
x = symbols('x')
u = Function('u')
f = pi**2 * sin(pi * x)
# -u''(x) = f(x) という微分方程式
ode = Eq(-diff(u(x), x, x), f)
# 境界条件を含めて解く
sol = dsolve(ode, u(x), ics={u(0): 0, u(1): 0})
print(sol)
2. FEniCS による数値解
from fenics import *
import numpy as np
import matplotlib.pyplot as plt
# メッシュ生成
mesh = UnitIntervalMesh(32)
# 関数空間の定義
V = FunctionSpace(mesh, 'P', 1)
# 境界条件 u=0
u_D = Constant(0)
def boundary(x, on_boundary):
return on_boundary
bc = DirichletBC(V, u_D, boundary)
# 試験関数と未知関数
u = TrialFunction(V)
v = TestFunction(V)
# 右辺と弱形式
f = Expression('pow(pi,2)*sin(pi*x[0])', degree=4)
a = dot(grad(u), grad(v)) * dx
L = f * v * dx
# 解を求める
u_sol = Function(V)
solve(a == L, u_sol, bc)
# 結果を可視化
plot(u_sol)
plt.show()
どちらも「ポアソン方程式を解く」という点では同じですが、目的と解の形式がまったく違うことが分かります。
他の方程式や2次元の例なども見てみたいですか?
難しくなってきたので、中断します。
Gemini先生へ
copilot先生へ
いつもの? sympyの実行環境と 参考のおすすめです。
いつもと違うおすすめです。
Qiita内
wikipedia