高校数学10分プログラミング(数学Ⅱ編 1.複素数と方程式)2日目「複素数の四則演算を利用する」解説
マガジンリスト > 数学Ⅱ編 1.複素数と方程式 > 2日目 解説
本日の課題、おつかれさまでした。
2つの複素数の四則演算を利用するプログラムを作成することができたでしょうか。
解答例
複素数の四則演算を利用するプログラムはソースコード2のようになります。
// 複素数の計算2
void setup(){
// x = -2 + 3i
PVector x = new PVector(-2.0, 3.0);
// y = -2 - 3i
PVector y = new PVector(-2.0, -3.0);
// a1 = x^2 + y^2
PVector a1 = c_sum(c_prod(x,x), c_prod(y,y));
println("(1)"+ a1.x + "+" + a1.y + "i" );
// a2 = x^3 + y^3
PVector a2 = c_sum(c_prod(c_prod(x,x),x), c_prod(c_prod(y,y),y));
println("(2)"+ a2.x + "+" + a2.y + "i" );
// a3 = y/x + x/y
PVector a3 = c_sum(c_div(y,x), c_div(x,y));
println("(3)"+ a3.x + "+" + a3.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
){
PVector sub = c1.copy().sub(c2);
return sub;
}
// 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
){
PVector div = new PVector();
div.x = (c1.x * c2.x + c1.y * c2.y)/(c2.x*c2.x+c2.y*c2.y);
div.y = (-c1.x * c2.y + c1.y * c2.x)/(c2.x*c2.x+c2.y*c2.y);
return div;
}
ソースコード2 複素数の四則演算を利用するプログラム(完成版)
開発環境ウィンドウを開いて(スケッチ名を「complex_number2」としています)、ソースコード2をそのテキストエディタ部分に記述して、実行してみると、コンソールに
(1)-10.0+0.0i
(2)92.0+0.0i
(3)-0.7692308+0.0i
と出力されます(図1)。
結果の確認
今回の課題は$${x+y=-4, xy = 13}$$となるので、各問題の式を変形して
(1) $${x^2+y^2=(x+y)^2-2xy=(-4)^2-2\cdot13=-10}$$
(2) $${x^3+y^3=(x+y)^3-3xy(x+y)=(-4)^3-3\cdot13\cdot(-4)=92}$$
(3) $${\frac{y}{x}+\frac{x}{y}=\frac{x^2+y^2}{xy} = -\frac{10}{13} =-0.76923076\cdots }$$
と解くことができます。したがって、コンソールに出力された結果が正しいことがわかります。
本日は以上です。
明日は、2次方程式の解の個数を数えるプログラムを考えます。
明日もよろしくお願いします。
※今回の課題とその解答例について質問や疑問がある方は、本記事の下部にあるコメント欄からお願いします。
MK’s papa