直線が複数与えられた時、それらの交点を全て求めよ、ということと解釈しました。
Maxima
1eqSet:{y=3*x+1,y=1/2*x-1,y=-x+3,y=3*x-5};
こんな風にeqSetに直線の集合を設定します。そして、
Maxima
1map(lambda([eqpair],
2 if coeff(eqpair[1],x)#coeff(eqpair[2],x) then
3 solve(eqpair,[x,y])),
4 cartesian_product(eqSet,eqSet));
動作原理を簡単に説明すると、eqSetの要素の全てのペアをcartesian_product()という関数で作り出します。それらを全てsolve()で解けば交点は全ても止まります。ただし、直線同士が平行な場合には交点はないので、その場合にはsolve()を呼び出しません。平行かどうかはxの係数が等しいかどうかで判定しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/17 23:21 編集