第1回 演習解答:多変数関数の微分 | Portfolio第1回 演習解答:多変数関数の微分
NOTE-019f2779更新: 2026-07-03物理
一般相対性理論の学び直し数学多変数関数の微分偏微分全微分連鎖律ヤコビアン
第1回 演習解答:多変数関数の微分
「一般相対性理論の学び直し」シリーズ第1回の演習解答です。問題文は本編を参照してください。記号・用語は本編に従い、上付き添字は成分番号を表します。
演習 1
問題 f(x,y)=x2+y()について、原点での両偏微分が であること、および が原点で連続でないことを示せ。
2
xy
∂x∂f(0,0)=h→0limhf(h,0)−f(0,0). f(h,0)=h2+02h⋅0=0、f(0,0)=0 なので、この極限は limh→0h0=0。
∂y∂f(0,0)=h→0limhf(0,h)−0,f(0,h)=0+h20⋅h=0 より 0。ゆえに両偏微分は存在し、ともに 0 です。
連続性. 原点での極限が近づく経路に依存することを示します。直線 y=mx(x→0)に沿うと、x=0 で
f(x,mx)=x2+m2x2x⋅mx=(1+m2)x2mx2=1+m2m. これは x に依らず一定で、傾き m に依存します(m=0 で 0、m=1 で 21)。したがって (x,y)→(0,0) の極限は方向によって異なり、一意には定まりません。ゆえに f は原点で連続ではありません(f(0,0)=0 に一致する極限が存在しない)。
補足(極座標での確認). x=rcosθ, y=rsinθ とおくと、(x,y)=(0,0) で
f=r2(rcosθ)(rsinθ)=cosθsinθ=21sin2θ. r に依らず θ だけで決まるので、原点へどの方向から近づくかで値が変わり、極限は存在しません。
演習 2
問題 3次元球座標のヤコビアンが r2sinθ であることを、ヤコビ行列の行列式を計算して示せ。
設定. x=rsinθcosϕ, y=rsinθsinϕ, z=rcosθ。列を (r,θ,ϕ) の順にとると、ヤコビ行列は
Dφ=∂r∂x 各成分は x,y,z を (r,θ,ϕ) で偏微分して求めます。
計算. 第3行 (cosθ, −rsinθ, 0) で余因子展開します(第3成分が 0 なので2項で済みます)。
detDφ=(cosθ)C31+(−rsinθ)C32+(0)C33=cosθ⋅C31+(−rsinθ)C32. ここで Cij=(−1)i+jMij は余因子、Mij は i 行 j 列を除いた小行列式です。第3行の展開に必要なのは M31,M32 だけなので、
M31=rcosθcosϕrcosθsinϕ−rsinθsinθcosϕsinθsinϕ−rsinθsinϕ 符号は (−1)3+1=+1、(−1)3+2=−1 より C31=+M31、C32=−M32。ゆえに
detDφ=cosθ⋅C31+(−rsinθ)⋅C32. 次に M31,M32 を計算して代入します。
M31=r2cosθsinθcos2ϕ+r2cosθsinθsin2ϕ=r2sinθcosθ, M32=rsin2θcos2ϕ+rsin2θsin2ϕ=rsin2θ. detDφ=cosθ(r2sinθcosθ)+(−rsinθ)(−rsin2θ)=r2sinθcos2θ+r2sin3θ=r2sinθ(cos2θ+sin2θ)=r2sinθ. 0<θ<π で sinθ>0 ゆえ絶対値は不要で、体積要素は dV=r2sinθdrdθdϕ です。
演習 3
問題 2次元で、極座標とデカルト座標の相互の変換係数を求め、逆行列関係 a∑∂x′a∂xi∂xj∂x′a=δij を成分ごとに確かめよ。
変換係数. x′1=r, x′2=θ、x1=x, x2=y とします。
デカルトを極で表すと x=rcosθ, y=rsinθ。行列 A=(∂xi/∂x′a) は
A=(∂x/∂r∂y/∂r∂x/∂θ∂y/∂θ)=(cosθsinθ−rsinθrcosθ). 逆に極をデカルトで表すと r=x2+y2, θ=atan2(y,x)。行列 B=(∂x′a/∂xj) の各成分は
∂x∂r=x2+y2x=cosθ,∂y∂r=x2+y2ysinθ, ∂x∂θ=x2+y2−y=−rsinθ,∂y∂θ=x2+y2x=rcosθ, B=(cosθ−sinθ/rsinθcosθ/r). 積. a∑(∂xi/∂x′a)(∂x′a/∂xj) は行列積 AB の (i,j) 成分です。
AB=(cosθsinθ−rsinθrcosθ)(cosθ−sinθ/rsinθcosθ/r). (AB)xx=cos2θ+(−rsinθ)(−rsinθ)=cos2θ+sin2θ=1, (AB)xy=cosθsinθ+(−rsinθ)(rcosθ)=cosθsinθ−sinθcosθ=0, (AB)yx=sinθcosθ+(rcosθ)(−rsinθ)=sinθcosθ−cosθsinθ=0, (AB)yy=sinθsinθ+(rcosθ)(rcosθ)=sin2θ+cos2θ=1. ゆえに AB=I、すなわち ∑a(∂xi/∂x′a)(∂x′a/∂xj)=δij が成分ごとに確かめられました。
行列式による確認. detA=cosθ⋅rcosθ−(−rsinθ)sinθ=r、detB=cosθ⋅(cosθ/r)−sinθ⋅(−sin。積は detA⋅detB=r⋅(1/r)=1=detI で整合します。
発展演習
問題 極座標グリッドで、微小セルの面積が中心からの距離 r に比例する(rΔrΔθ)ことを数値的に確かめよ。
import numpy as np
import matplotlib.pyplot as plt
# 等間隔の r, θ による極座標グリッド
r_lines = np.linspace(0.2, 1.0, 5) # 半径方向のグリッド線
theta_lines = np.linspace(0, 2*np.pi, 25) # 角度方向のグリッド線
fig, ax = plt.subplots(figsize=(6, 6))
# 等 r 円
th = np.linspace(0, 2*np.pi, 400)
for ri in r_lines:
ax.plot(ri*np.cos(th), ri*np.sin(th), color='0.7', lw=0.8)
# 等 θ 半直線
rr = np.linspace(0.2, 1.0, 400)
for tj in theta_lines:
ax.plot(rr*np.cos(tj), rr*np.sin(tj), color='0.7', lw=0.8)
# 微小セル面積 ≈ r・Δr・Δθ を、同じ角度の各セル中心に注記
dr = r_lines[1] - r_lines[0]
dth = theta_lines[1] - theta_lines[0]
tc = np.pi/4
centers = 0.5*(r_lines[:-1] + r_lines[1:])
areas = [ri*dr*dth for ri in centers]
for ri, area in zip(centers, areas):
xc, yc = ri*np.cos(tc), ri*np.sin(tc)
ax.annotate(f"{area:.3f}", (xc, yc), fontsize=8, ha='center')
# 数値確認
print(f"Δr={dr}, Δθ={dth:.6f}")
for ri, area in zip(centers, areas):
print(f"r={ri:.1f}, area={area:.6f}, area/(ΔrΔθ)={area/(dr*dth):.3f}, ratio={area/areas[0]:.2f}")
ax.set_aspect('equal')
ax.set_title("polar grid: cell area ≈ r·Δr·Δθ")
plt.show()
using Plots
# 等間隔の r, θ による極座標グリッド
r_lines = range(0.2, 1.0, length=5)
theta_lines = range(0, 2π, length=25)
default(size=(600, 600), legend=false)
p = plot(
aspect_ratio=:equal,
title="polar grid: cell area ≈ r·Δr·Δθ",
xlims=(-1.05, 1.05),
ylims=(-1.05, 1.05),
)
# 等 r 円
θ = range(0, 2π, length=400)
for ri in r_lines
plot!(p, ri .* cos.(θ), ri .* sin.(θ), color=:gray, lw=0.8, label="")
end
# 等 θ 半直線
rr = range(0.2, 1.0, length=400)
for tj in theta_lines
plot!(p, rr .* cos(tj), rr .* sin(tj), color=:gray, lw=0.8, label="")
end
# 微小セル面積 ≈ r·Δr·Δθ を、同じ角度の各セル中心に注記
dr = r_lines[2] - r_lines[1]
dth = theta_lines[2] - theta_lines[1]
tc = π / 4
centers = 0.5 .* (collect(r_lines[1:end-1]) .+ collect(r_lines[2:end]))
areas = [ri * dr * dth for ri in centers]
for (ri, area) in zip(centers, areas)
xc, yc = ri * cos(tc), ri * sin(tc)
annotate!(p, xc, yc, text(string(round(area, digits=3)), 8, :center))
end
# 数値確認
for (ri, area) in zip(centers, areas)
println("r=", round(ri, digits=1), ", area=", round(area, digits=6),
", area/(ΔrΔθ)=", round(area / (dr * dth), digits=3),
", ratio=", round(area / areas[1], digits=2))
end
savefig(p, "polar_grid_julia.png")
図中の数値は、θ=π/4 方向の各リング中心に置いた rΔrΔθ の近似値です。Δr, Δθ は全セル共通なのに、外側ほど面積が大きくなっています。
数値確認. 上記コードを実行すると、各リング中心での ri * dr * dth が標準出力に出ます(Python の実行例を以下に示します)。
Δr=0.2, Δθ=0.261799
r_center area area/(ΔrΔθ) area/area_inner
0.3 0.015708 0.300 1.00
0.5 0.026180 0.500 1.67
0.7 0.036652 0.700 2.33
0.9 0.047124 0.900 3.00
この出力を表に整理します。第3列はコード出力を ΔrΔθ で割った値、第4列は最内リング(r=0.3)に対する面積比です。
| セル中心 r | コード出力(面積) | 面積/(ΔrΔθ) | 面積比(r=0.3 を 1 とする) |
|---|
| 0.3 | 0.015708 | 0.300 | 1.00 |
| 0.5 | 0.026180 | 0.500 | 1.67 |
| 0.7 | 0.036652 | 0.700 | 2.33 |
| 0.9 | 0.047124 | 0.900 | 3.00 |
第3列はいずれもセル中心 r と一致し、第4列は r の比(0.5/0.3=1.67、0.9/0.3=3.00 など)と一致します。すなわち、同じ ΔrΔθ でも面積は中心半径 r に比例し、比例定数はヤコビアン detDφ=r そのものであることが、数値計算から確認できます。
確認できること. 同じ Δr, Δθ でも、外側(大きい r)のセルは内側(小さい r)のセルより面積が大きく、その値は r に比例します。これはヤコビアン detDφ=r が「微小面積の拡大率」であることの、視覚的・数値的な確認になっています。
∂r∂y
∂r∂z
∂θ∂x∂θ∂y∂θ∂z
∂ϕ∂x∂ϕ∂y∂ϕ∂z
=
sinθcosϕsinθsinϕcosθrcosθcosϕrcosθsinϕ−rsinθ−rsinθsinϕ rsinθcosϕ0.
sin
ϕ
rsinθcosϕ
,
M32
=
rsinθcosϕ
.
=
θ
/
r
)
=
1/r