![見出し画像](https://assets.st-note.com/production/uploads/images/145590350/rectangle_large_type_2_c3fd934575bb55e6e88e34752f300510.jpeg?width=1200)
高校数学をプログラミングで解く(数学III編)「8-3 曲線の長さ、速度と道のり」
マガジンリスト > 数学Ⅲ編 8.積分法の応用 > 8-3 曲線の長さ、速度と道のり
はじめに
今回は、数学IIIで学ぶ「曲線の長さ、速度と道のり」について、曲線の長さを表す定積分をコンピュータで近似的に数値計算するプログラムを作成していきます。
曲線の長さ
① 曲線$${x=f(t), y=g(t)}$$($${\alpha \leq t \leq \beta}$$)の長さ$${L}$$は
$$
L = \int_{\alpha}^{\beta} \sqrt{ \left( \frac{dx}{dt} \right)^2 + \left( \frac{dy}{dt} \right)^2 } dt = \int_{\alpha}^{\beta} \sqrt{ \{f'(t)\}^2 + \{ g'(t) \}^2 } dt
$$
② 曲線$${y=f(x)}$$($${a \leq x \leq b}$$)の長さ$${L}$$は
$$
L = \int_a^b \sqrt{ 1 + \left( \frac{dy}{dx} \right)^2 } dx = \int_a^b \sqrt{ 1+\{f'(x)\}^2 } dx
$$
速度と道のり
① 数直線上の道のり
数直線上を運動する点$${\mathrm{P}}$$の速度を$${v=f(t)}$$とし、$${t=a}$$のときの$${\mathrm{P}}$$の座標を$${k}$$とする。
[1] $${t=b}$$における$${\mathrm{P}}$$の座標$${x}$$は
$$
x = k + \int_a^b f(t)dt
$$
[2] $${t=a}$$から$${t=b}$$までの$${\mathrm{P}}$$の位置の変化量$${s}$$は
$$
s = \int_a^b f(t)dt
$$
[3] $${t=a}$$から$${t=b}$$までの$${\mathrm{P}}$$の道のり$${l}$$は
$$
l = \int_a^b |f(t)| dt
$$
② 平面上の道のり
座標平面上を運動する点$${\mathrm{P}}$$の時刻$${t}$$における座標を$${(x,y)}$$、速度を$${\vec{v}}$$とすると、時刻$${t=\alpha}$$から時刻$${t=\beta}$$までの道のり$${l}$$は
$$
l = \int_{\alpha}^{\beta} | \vec{v} | dt = \int_{\alpha}^{\beta} \sqrt{ \left( \frac{dx}{dt} \right)^2 + \left( \frac{dy}{dt} \right)^2 } dt
$$
曲線の長さや道のりを数値計算する方法
曲線の長さや道のりを数値計算する方法の一つとして、記事『高校数学をプログラミングで解く(数学II編)「5-6 定積分(1)」』で解説した台形公式が利用できます。つまり、被積分関数を
$$
v(t) = \sqrt{ \left( \frac{dx}{dt} \right)^2 + \left( \frac{dy}{dt} \right)^2 }
$$
とおくと、曲線の長さや道のりの定積分は
$$
L= \int_{\alpha}^{\beta} v(t) dt = \sum_{i=0}^{n-1} \left[ \frac{1}{2} (v(t_i)+v(t_{i+1})) \right] \Delta t
$$
と、細長い台形の面積の和で表すことができます。ここで、$${n}$$を正の整数として、
$$
\Delta t = \frac{\beta - \alpha}{n}, \ \ t_i = \alpha + i \Delta t \ ( i = 0, 1, \cdots, n)
$$
で与えられます。
曲線の長さを計算する
今回は、以下の曲線の長さを表す定積分を台形公式を利用して近似的に数値計算するプログラムを作成します。
問題
次の曲線の長さを求めよ。
$$
x = 3t^2, \ \ y=3t-t^3 \ \ (0 \leq t \leq 2)
$$
解析的な計算
今回の問題の定積分は、解析的に計算することができます。つまり、
$$
\frac{dx}{dt} = 6t, \ \ \frac{dy}{dt} = 3-3t^2
$$
となるので、被積分関数は
$$
v(t) = \sqrt{ \left( \frac{dx}{dt} \right)^2 + \left( \frac{dy}{dt} \right)^2 } = 3(t^2+1)
$$
となり、曲線の長さの定積分は
$$
L = \int_0^2 v(t) dt = 3 \int_0^2 (t^2+1) dt = 14
$$
となります。これと、台形公式による近似計算と比較します。
プログラム
それでは、曲線の長さを表す定積分を台形公式を用いて近似的に数値計算するプログラムを作成します。
// 曲線の長さを台形公式を利用して計算するプログラム
void setup(){
float alpha = 0.0; // 積分の上限
float beta = 2.0; // 積分の下限
float res = trapezoidal_rule_length_of_curve(alpha, beta);
println("曲線の長さ:", res);
}
// x = f(t)の微分
float df(
float t
){
return 6.0 * t;
}
// y = g(t)の微分
float dg(
float t
){
return 3.0 - 3.0 * t * t;
}
// 曲線の長さを表す定積分の被積分関数
float v(
float t
){
return sqrt( df(t) * df(t) + dg(t) * dg(t) );
}
// 曲線の長さを表す定積分を台形公式で計算する関数
float trapezoidal_rule_length_of_curve(
float alpha, // 積分領域の下限
float beta // 積分領域の上限
){
int n = 1000;
float delta_t = (beta - alpha)/n;
float t, v1, v2;
float dintegral = 0.0;
for(int i=0; i<n; i++){
t = alpha + i * delta_t;
v1 = v(t);
v2 = v(t+delta_t);
dintegral = dintegral + (v1+v2)*delta_t/2.0;
}
return dintegral;
}
ソースコード1 曲線の長さを表す定積分を台形公式を用いて近似的に数値計算するプログラム
ソースコード1では、$${x=f(t)}$$の微分を表す関数 df 、$${y=g(t)}$$の微分を表す関数 dg を用いて、被積分関数 v を準備したうえで、曲線の長さを表す定積分を台形公式を用いて近似的に数値計算する関数 trapezoidal_rule_length_of_curve を準備して利用しました。
ソースコード1を、Processing の開発環境ウィンドウを開いて(スケッチ名を「calc_length_of_curve」としています)、テキストエディタ部分に書いて実行します。
![](https://assets.st-note.com/img/1719647845286-6stIHaAe7T.png?width=1200)
図1のように、問題の定積分の計算結果がコンソールに出力されます。
曲線の長さ: 13.999999
上記で求めた解析的計算の結果と比較すると、数値計算結果は丸め誤差程度の誤差で一致しているようです。
まとめ
今回は、数学IIIで学ぶ「曲線の長さ、速度と道のり」について、曲線の長さを表す定積分をコンピュータで近似的に数値計算するプログラムを作成しました。
曲線の長さを表す定積分の近似的な計算として、記事『高校数学をプログラミングで解く(数学II編)「5-6 定積分(1)」』で解説した台形公式を用いて数値計算を行いました。曲線の長さの場合、被積分関数を
$$
v(t) = \sqrt{ \left( \frac{dx}{dt} \right)^2 + \left( \frac{dy}{dt} \right)^2 }
$$
と設定することで、比較的簡単に台形公式を適用することができます。少しの工夫で応用することができますので、このような考え方に慣れていってください。
読んだ感想などをお寄せください
本記事を読んだ感想や質問などを以下のお問い合せフォームからお寄せください。感想、質問をいただいた方には本記事の演習問題の解答をプレゼントします。(お問合せフォームの本文に、本記事のタイトルを入れてください。)
参考文献
改訂版 教科書傍用 スタンダード・オリジナル 数学III(数研出版、ISBN9784410209567)
演習問題
次の曲線の長さを求めるプログラムを作成してください。そして、解析的な計算結果と比較してみてください。
$$
y = \log ( \cos x ) \ \ \left( 0 \leq x \leq \frac{\pi}{3} \right)
$$
演習問題の解答例
ここから先は
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?