高校数学10分プログラミング(数学Ⅱ編 1.複素数と方程式)5日目「解と係数の関係の問題1」解説
マガジンリスト > 数学Ⅱ編 1.複素数と方程式 > 5日目 解説
本日の課題、おつかれさまでした。
解と係数の関係が成り立っていることが確認できたでしょうか。
解答例
課題の式の値を計算するプログラムはソースコード2のようになります。
// 解と係数の関係1
void setup(){
// 2次方程式の係数
float a = 2.0;
float b = -2.0;
float c = 1.0;
// 2次方程式 2x^2-2x+1=0の解
float x_r = -b/2.0/a;
float x_i = abs(sqrt(abs(b*b-4.0*a*c))/2.0/a);
PVector alpha = new PVector(x_r, x_i);
PVector beta = new PVector(x_r, -x_i);
// (1) a1 = alpha^2 beta + alpha beta^2
PVector a1 = c_sum(c_prod(c_prod(alpha,alpha),beta),c_prod(alpha,c_prod(beta,beta)));
println("(1)"+ a1.x + "+" + a1.y + "i" );
// (2) a2 = alpha^2 + beta^2
PVector a2 = c_sum(c_prod(alpha,alpha),c_prod(beta,beta));
println("(2)"+ a2.x + "+" + a2.y + "i" );
// (3) a3 = (alpha - beta)^2
PVector a3 = c_prod(c_sub(alpha,beta),c_sub(alpha,beta));
println("(3)"+ a3.x + "+" + a3.y + "i" );
// (4) a4 = (1 + alpha)(1 + beta)
PVector unit = new PVector(1.0,0.0);
PVector a4 = c_prod(c_sum(unit,alpha),c_sum(unit,beta));
println("(4)"+ a4.x + "+" + a4.y + "i" );
// (5) a5 = alpha^3 + beta^3
PVector a5 = c_sum(c_prod(c_prod(alpha,alpha),alpha),c_prod(beta,c_prod(beta,beta)));
println("(5)"+ a5.x + "+" + a5.y + "i" );
// (6) a6 = beta^2/alpha + alpha^2/beta
PVector a6 = c_sum(c_div(c_prod(beta,beta),alpha), c_div(c_prod(alpha,alpha),beta));
println("(6)"+ a6.x + "+" + a6.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 課題の式の値を計算するプログラム(完成版)
開発環境ウィンドウを開いて(スケッチ名を「Vietas_formulas1」としています)、ソースコード2をそのテキストエディタ部分に記述して、実行してみると、コンソールに
(1)0.5+0.0i
(2)0.0+0.0i
(3)-1.0+0.0i
(4)2.5+0.0i
(5)-0.5+0.0i
(6)-1.0+0.0i
と出力されます(図1)。
一方、解と係数の関係から$${\alpha + \beta = -(-2)/2=1, \alpha \beta = 1/2}$$が得られるので、
(1) $${\alpha^2 \beta + \alpha \beta^2 = \alpha \beta(\alpha + \beta) = 1/2 \cdot 1 = 1/2}$$
(2) $${\alpha^2+\beta^2 = (\alpha + \beta)^2 - 2 \alpha \beta = 1^2-2\cdot(1/2) = 0 }$$
(3) $${(\alpha - \beta)^2 = (\alpha + \beta)^2 - 4 \alpha \beta = 1^2 - 4 \cdot (1/2) = -1}$$
(4) $${(1+\alpha)(1+\beta) = 1 + (\alpha+\beta) + \alpha \beta = 1+1+1/2= 5/2}$$
(5) $${\alpha^3+\beta^3 = (\alpha + \beta)^3-3\alpha \beta (\alpha+\beta) = 1^3 -3 \cdot (1/2) \cdot 1 = -1/2}$$
(6) $${\frac{\beta^2}{\alpha}+\frac{\alpha^2}{\beta} = \frac{ \alpha^3+\beta^3}{\alpha \beta} = (-1/2)/(1/2) = -1}$$
と得られます。
これら手計算の結果とプログラムで計算した結果が一致しており、解と係数の関係が成り立っていることがわかります。
本日は以上です。
次回も、解と係数の関係に関する問題を考えます。
次回もよろしくお願いします。
※今回の課題とその解答例について質問や疑問がある方は、本記事の下部にあるコメント欄からお願いします。
MK’s papa
この記事が気に入ったらサポートをしてみませんか?