高校数学10分プログラミング(数学Ⅱ編 1.複素数と方程式)1日目「複素数の四則演算を行う」
マガジンリスト > 数学Ⅱ編 1.複素数と方程式 > 1日目 課題
おはようございます。
本日は、高校数学10分プログラミング(数学II編 1.複素数と方程式)の1日目です。
本日の課題は、複素数の四則演算を行うプログラムを作成することです。
複素数
$${a, b, c, d}$$は実数とし、$${i^2=-1}$$とします。
定義 $${a+bi}$$ $${b=0}$$のとき実数、$${b \neq 0}$$のとき虚数。
相等 $${a+bi = c+di \Leftrightarrow a=c, b=d }$$ 特に$${a+bi = 0 \Leftrightarrow a=0, b=0}$$
四則演算
和:$${(a+bi)+(c+di) = (a+c)+(b+d)i}$$
差:$${(a+bi)-(c+di) = (a-c)+(b-d)i}$$
積:$${(a+bi) \cdot (c+di) = (ac-bd)+(ad+bc)i}$$
商:$${(a+bi) / (c+di) = \frac{ac+bd}{c^2+d^2}+\frac{-ad+bc}{c^2+d^2}i}$$
負の数の平方根 $${a>0}$$のとき、$${-a}$$の平方根は$${\sqrt{a}i}$$と$${-\sqrt{a}i}$$
課題
2つの複素数$${c_1 = 3+4i}$$と$${c_2 = 1+2i}$$との四則演算を行うプログラムを作成してください。
ヒント
プログラミング言語「Processing」では、残念ながら複素数を扱うための変数などは準備されていません。そこで、今回は複素数を扱う変数として PVector クラスを利用することにしました。つまり、複素数$${c=a+bi}$$を
PVector c = new PVector(a,b);
として利用することにします。
※ PVector クラスは本来ベクトルを扱うためのクラスです。PVector クラスの詳細については、記事『高校数学をプログラミングで解く(数学B編)「1-1 ベクトルの演算」』で解説していますので、そちらをご覧ください。
特に、今回のプログラムでは、PVector クラスの以下の性質をベクトルではなく、複素数として利用します。
PVector c1 = new PVector(a1,b1); // ベクトルの生成 -> 複素数c1として利用
PVector c2 = new PVector(a2,b2); // 複素数c2として利用
PVector sum = c1.copy().sum(c2); // ベクトルの和 -> 2つの複素数の和として利用
PVector sub = c1.copy().sub(c2); // ベクトルの差 -> 2つの複素数の差として利用
float a1 = c1.x; // ベクトルのx成分 -> 複素数の実部として利用
float b1 = c1.y; // ベクトルのy成分 -> 複素数の虚部として利用
これらを踏まえて、今回の複素数の四則演算を行うプログラムはソースコード1のようになります。
// 複素数の計算
void setup(){
// c1 = 3 + 4i
PVector c1 = new PVector(3.0, 4.0);
// c2 = 1 + 2i
PVector c2 = new PVector(1.0, 2.0);
// 複素数の和 c1 + c2
PVector sum = c_sum(c1, c2);
println("和:"+ sum.x + "+" + sum.y + "i" );
// 複素数の差 c1 - c2
PVector sub = c_sub(c1, c2);
println("差:"+ sub.x + "+" + sub.y + "i" );
// 複素数の積 c1 * c2
PVector prod = c_prod(c1, c2);
println("積:"+ prod.x + "+" + prod.y + "i" );
// 複素数の商 c1 / c2
PVector div = c_div(c1, c2);
println("商:"+ div.x + "+" + div.y + "i" );
}
// 2つの複素数の和を計算する関数
PVector c_sum(
PVector c1,
PVector c2
){
PVector sum = c1.copy().add(c2);
return sum;
}
// 2つの複素数の差を計算する関数
PVector c_sub(
PVector c1,
PVector c2
){
}
// 2つの複素数の積を計算する関数
PVector c_prod(
PVector c1,
PVector c2
){
PVector prod = new PVector();
prod.x = c1.x * c2.x - c1.y * c2.y;
prod.y = c1.x * c2.y + c1.y * c2.x;
return prod;
}
// 2つの複素数の商を計算する関数
PVector c_div(
PVector c1,
PVector c2
){
}
ソースコード1 2つの複素数の四則演算を行うプログラム(未完成)
ソースコード1では、2つの複素数の四則演算を行う関数を準備して利用する形にしています。2つの複素数の和を計算する関数 c_sum と積を計算する関数 c_prod を参考にして、2つの複素数の差を計算する関数 c_sub と商を計算する関数 c_div の中身を記述して、プログラムを完成させてください。
それでは、よろしくお願いします。
MK's papa
この記事が気に入ったらサポートをしてみませんか?