ビオ-サバールの法則

ビオ-サバールの法則

ビオ-サバールの法則は、流体力学における揚力の基本原理を表す式です。

簡単に説明すると、以下のようになります。

揚力は、流れの速度の2乗に比例し、空気密度、物体の受風面積、揚力係数に比例する。

数式で表すと:

$$
L = (1/2) * ρ * v^2 * A * CL
$$

  • $L$: 揚力
  • $ρ$: 流体(空気)の密度
  • $v$: 流れの速度
  • $A$: 物体の受風面積
  • $CL$: 揚力係数(物体の形状による係数)

つまり、速度が速いほど、密度が高いほど、受風面積が大きいほど、形状による揚力係数が大きいほど、揚力は大きくなります。

この法則は、飛行機の翼自動車のスポイラーなどの空力設計に広く利用されています。
流れの速度を制御することで、必要な揚力を得ることができます。

物体の形状による揚力係数 $CL$を適切に設計することも重要です。
翼の形状を最適化して揚力を最大化するなどが行われています。

このようにビオ-サバールの法則は、空力設計において基礎となる重要な原理となっています。

ソースコード

ビオ-サバールの法則を、Pythonで解きグラフ化します。

まず、必要なライブラリをインポートします。

1
2
import numpy as np
import matplotlib.pyplot as plt

次に、ビオ-サバールの法則を計算する関数を定義します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def lift_force(rho, v, A, CL):
"""
ビオ-サバールの法則で揚力を計算する関数

Parameters:
rho (float): 空気密度 [kg/m^3]
v (float): 流れの速度 [m/s]
A (float): 翼の面積 [m^2]
CL (float): 揚力係数 [-]

Returns:
float: 揚力 [N]
"""
return 0.5 * rho * v**2 * A * CL

次に、グラフ化のための配列を作成します。

1
2
3
4
5
6
rho = 1.225  # 空気密度 [kg/m^3]
A = 0.5 # 翼の面積 [m^2]
CL = 0.3 # 揚力係数 [-]

v = np.linspace(0, 100, 100) # 流れの速度の範囲 [m/s]
L = [lift_force(rho, v_val, A, CL) for v_val in v]

最後に、グラフを描画します。

1
2
3
4
5
6
7
plt.figure(figsize=(8, 6))
plt.plot(v, L)
plt.xlabel('Flow Speed [m/s]')
plt.ylabel('Lift Force [N]')
plt.title('Lift Force by Biot-Savart Law')
plt.grid()
plt.show()

この例では、空気密度 $ρ=1.225 kg/m^3$、翼の面積 $A=0.5 m^2$、揚力係数 $CL=0.3$の条件で、流れの速度 $v$を$0$から$100 m/s$まで変化させて揚力 $L$を計算し、グラフ化しています。

出力されるグラフは、流れの速度の2乗に比例して揚力が増加する様子を表しています。
これは、ビオ-サバールの法則の式から予想される結果と一致しています。

このように、Pythonを使えば、ビオ-サバールの法則に基づいて揚力を計算し、グラフ化することができます。

[実行結果]

ソースコード解説

このソースコードを詳しく説明します。

1. ライブラリのインポート

1
2
import numpy as np
import matplotlib.pyplot as plt
  • NumPyMatplotlibライブラリをインポートしています。
  • NumPyは数値計算ライブラリ、Matplotlibはデータのプロットやグラフ化を行うライブラリです。

2. 揚力計算関数の定義

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def lift_force(rho, v, A, CL):
"""
ビオ-サバールの法則で揚力を計算する関数

Parameters:
rho (float): 空気密度 [kg/m^3]
v (float): 流れの速度 [m/s]
A (float): 翼の面積 [m^2]
CL (float): 揚力係数 [-]

Returns:
float: 揚力 [N]
"""
return 0.5 * rho * v**2 * A * CL
  • lift_force関数を定義しています。
  • この関数はビオ-サバールの法則に基づいて揚力を計算します。
  • 引数として空気密度rho、流れの速度v、翼の面積A、揚力係数CLを取ります。
  • 返り値は計算された揚力[N]です。
  • 関数のドキュメンテーション文字列で、関数の説明、引数、返り値が記述されています。

3. 定数の設定

1
2
3
rho = 1.225  # 空気密度 [kg/m^3]
A = 0.5 # 翼の面積 [m^2]
CL = 0.3 # 揚力係数 [-]
  • 計算に使用する定数を設定しています。
  • rhoは空気密度で$1.225 kg/m^3$
  • Aは翼の面積で$0.5 m^2$
  • CLは揚力係数で$0.3$

4. 流れの速度の範囲設定と揚力計算

1
2
v = np.linspace(0, 100, 100)  # 流れの速度の範囲 [m/s]
L = [lift_force(rho, v_val, A, CL) for v_val in v]
  • np.linspaceを使って、$0$から$100 m/s$までの$100$点の流れの速度vを生成しています。
  • リスト内包表記を使って、lift_force関数を各流速v_valに対して呼び出し、揚力Lのリストを作成しています。

5. グラフのプロット

1
2
3
4
5
6
7
plt.figure(figsize=(8, 6))
plt.plot(v, L)
plt.xlabel('Flow Speed [m/s]')
plt.ylabel('Lift Force [N]')
plt.title('Lift Force by Biot-Savart Law')
plt.grid()
plt.show()
  • plt.figureでグラフの大きさを設定しています。
  • plt.plotで流れの速度vと揚力Lのデータをプロットしています。
  • plt.xlabelplt.ylabelで軸ラベルを設定しています。
  • plt.titleでグラフのタイトルを設定しています。
  • plt.gridで gridを表示するようにしています。
  • plt.showでグラフを表示しています。

このコードは、ビオ-サバールの法則に基づいて、流れの速度を$0$から$100 m/s$まで変化させたときの揚力を計算し、その関係をグラフにプロットしています。

定数は一般的な値が設定されています。

結果解説

[実行結果]

出力されたグラフでは、以下の内容が表示されています。

x軸: 流れの速度 [$m/s$]

  • 範囲は$0 m/s$から$100 m/s$までです。

y軸: 揚力 [$N$]

  • ビオ-サバールの法則に基づいて計算された値です。

グラフの形状:

  • 原点$(0, 0)$を通る放物線のような曲線になっています。
  • 流れの速度が大きくなるにつれて、揚力が非線形的に増加していく様子がわかります。

グラフの傾き:

  • 流れの速度が小さい領域($0~20 m/s$程度)では、傾きが緩やかです。
  • 流れの速度が大きくなるにつれて、曲線の傾きが急になっていきます。

これらの特徴は、ビオ-サバールの法則の式から予想される挙動と一致しています。

式を見ると、揚力Lは流れの速度$v$の2乗に比例することがわかります。
つまり、速度が$2$倍になれば揚力は$4$倍になります。
このため、高速領域ではわずかな速度の変化でも揚力が大きく変わります。

一方、低速領域では速度の変化に対する揚力の変化は小さくなります。
このように、グラフの形状はビオ-サバールの法則の非線形性を視覚的に表現しています。

また、揚力の値自体も式から計算された値と一致しており、数値的な精度も確保されています。

このようにグラフを詳細に解析することで、ビオ-サバールの法則の本質的な性質を理解することができます。