・ChatGPT-3.5先生の長除法ステキです。(長除法?をgoogle検索)
・sympyに、div関数がありました。
・以下,私のページで、おすすめ?のゆうどうのです。
「整式の割り算」の勉強を始めました。xは実数? ChatGPT-3.5先生へ
オリジナル
(youtube 11:04) math karat 様より
上と同じです。大学入試数学問題集成 様>テキスト【1】
ChatGPT-3.5先生へ(できました)
入力文(一括入力です。)
(1)x^3 をx-1 で割ったときの余りを求めよ.
(2)x^12をx^4-1で割ったときの余りを求めよ.
(3)x^13をx^4-1で割ったときの余りを求めよ.
長除法ステキです。 省略です。お楽しみに。
(1) x^3 を x-1 で割るときの余りを求めるには、次のように長除法を使うことができます。
(2) ...再び長除法を使用できます。
(3) ...同様に長除法を使用して求めることができます。
WolframAlphaで
日本語で
(1)
(2)
(3)
PolynomialRemainderで
(1)
(2)
(3)
sympyのdiv関数で(1)(2)(3)
Division<Doc
https://docs.sympy.org/latest/modules/polys/basics.html#basic-functionality
from sympy import *
var('x',real=True)
def myDiv(myP,myS):
return div(myP,myS)[1],div(myP,myS)
print("#(1)",myDiv(x**3 ,x-1 ))
print("#(2)",myDiv(x**12,x**4-1))
print("#(3)",myDiv(x**13,x**4-1))
#(1) (1, (x**3 + x**2 + x + 1, 1))
#(2) (1, (x**8 + x**4 + 1, 1))
#(3) (x, (x**9 + x**5 + x, x))
sympyで(1)のみ(math karat 様の解法で)
from sympy import *
var('x')
var('Q,R')
(P,S)=(x**3,x-1)
eq1=Eq(P ,S*Q+R ) ;print("#eq1",eq1)
eq2=Eq(eq1.lhs,eq1.rhs).subs({x:1}) ;print("#eq2",eq2)
#eq1 Eq(x**3, Q*(x - 1) + R)
#eq2 Eq(1, R1)
sympyで(2)のみ(math karat 様の(解法1)で) 剰余の定理
from sympy import *
var('x')
var('Q,a,b,c,d')
(P,S) =(x**12,x**4-1)
R =a*x**3+b*x**2+c*x+d
ans =solve(S) ;print("#ans ",ans )
eq1 =Eq(P ,S*Q+R) ;print("#eq1 ",eq1 )
eq20 =Eq(eq1.lhs,eq1.rhs).subs({x:ans[0]}) ;print("#eq20",eq20)
eq21 =Eq(eq1.lhs,eq1.rhs).subs({x:ans[1]}) ;print("#eq21",eq21)
eq22 =Eq(eq1.lhs,eq1.rhs).subs({x:ans[2]}) ;print("#eq22",eq22)
eq23 =Eq(eq1.lhs,eq1.rhs).subs({x:ans[3]}) ;print("#eq23",eq23)
ans =solve([eq20,eq21,eq22,eq23],[a,b,c,d]) ;print("#ans ",ans )
print("#R ",R.subs({a:ans[a],b:ans[b],c:ans[c],d:ans[d]}))
#ans [-1, 1, -I, I]
#eq1 Eq(x**12, Q*(x**4 - 1) + a*x**3 + b*x**2 + c*x + d)
#eq20 Eq(1, -a + b - c + d)
#eq21 Eq(1, a + b + c + d)
#eq22 Eq(1, I*a - b - I*c + d)
#eq23 Eq(1, -I*a - b + I*c + d)
#ans {a: 0, b: 0, c: 0, d: 1}
#R 1
sympyで(2)のみ(math karat 様の(解法2)で)割り算の実行
・ChatGPT-3.5先生のような
フリーソフトがあれば、教えて下さい。
・div関数で十分ですか、私も,print文でもガンバれば?できそうな気もします。
sympyで(2)のみ(math karat 様の(解法3)で)因数分解の活用
・math karat 様の解法と違いますけど、安易にfactor関数にしました。
factor
factor() takes a polynomial and factors it into irreducible factors over the rational numbers.
https://docs.sympy.org/latest/tutorials/intro-tutorial/simplification.html#factor
from sympy import *
var('x')
(P,S)=(x**12,x**4-1)
eq1 =Eq(P ,factor(P-1)+1) ;print("#eq1 ",eq1 )
eq2 =Eq(S ,factor(S) ) ;print("#eq2 ",eq2 )
eq12 =Eq(eq1.lhs,eq1.rhs).subs({eq2.rhs:eq2.lhs}) ;print("#eq12",eq12)
#eq1 Eq(x**12, (x - 1)*(x + 1)*(x**2 + 1)*(x**2 - x + 1)*(x**2 + x + 1)*(x**4 - x**2 + 1) + 1)
#eq2 Eq(x**4 - 1, (x - 1)*(x + 1)*(x**2 + 1))
#eq12 Eq(x**12, (x**4 - 1)*(x**2 - x + 1)*(x**2 + x + 1)*(x**4 - x**2 + 1) + 1)
sympyで(3)のみ(math karat 様の解法で)
from sympy import *
var('x')
(P,S)=(x**13,x**4-1)
eq1 =Eq(P,factor(P-x)+x) ;print("#eq1 ",eq1 )
eq2 =Eq(S,factor(S) ) ;print("#eq1 ",eq2 )
eq12 =Eq(eq1.lhs,eq1.rhs).subs({eq2.rhs:eq2.lhs}) ;print("#eq12",eq12)
#eq1 Eq(x**13, x*(x - 1)*(x + 1)*(x**2 + 1)*(x**2 - x + 1)*(x**2 + x + 1)*(x**4 - x**2 + 1) + x)
#eq1 Eq(x**4 - 1, (x - 1)*(x + 1)*(x**2 + 1))
#eq12 Eq(x**13, x*(x**4 - 1)*(x**2 - x + 1)*(x**2 + x + 1)*(x**4 - x**2 + 1) + x)
sympyの実行環境
①私の環境は,pycharmです。
②よく聞くのは、Jupyterです。
③web上で、上記のソースを「SymPy Live shell」に、コピー貼り付けでもできました。
黒背景の右上に、マウスを移動すると、コピーマークが発生します。
??? タブレット環境で、コピー貼り付けが実行できませんでした。???
参考
以下、いつもの?おすすめです。