投稿者:山中和義
投稿日:2013年 7月15日(月)07時15分53秒
|
|
|
分母の有理化には、恒等式 a^2-b^2=(a+b)(a-b) を使う。
3項以内なら、何回か適用すれば求まるが、計算の手間も左右される。
簡略化されるパターン
a-b=kなら、1/(√a±√b)=(√a干√b)/k 例 1/(√2+√3)
(考察)
1/(√a±√b)
=(√a干√b)/{(√a±√b)(√a干√b)}
=(√a干√b)/(a-b)
=(√a干√b)/k
(終り)
参考
a^2+b^2=kなら、1/(a±bi)=(a干bi)/k
(考察)
1/(a±bi)
=(a干bi)/{(a±bi)(a干bi)}
=(a干bi)/(a^2+b^2)
=(a干bi)/k
(終り)
√a+√b+√(a+b)の型 例 1/(√2+√3+√5)
(考察)
{(√a+√b)+√(a+b)}{(√a+√b)-√(a+b)}
=(√a+√b)^2-{√(a+b)}^2
=2√(ab)
より、
1/{√a+√b+√(a+b)}=√(ab){√a+√b-√(a+b)}/(2ab)=(b√a+a√b-√{ab(a+b)})/(2ab)
(終り)
√a+√b+√c+√d、ab=cdの型 例 1/(1+√6+√2+√3)
(考察)
{(√a+√b)+(√c+√d)}{(√a+√b)-(√c+√d)}
=(√a+√b)^2-(√c+√d)^2
=a+b+2√(ab)-{c+d+2√(cd)}
=a+b-c-d
より、
1/(√a+√b+√c+√d)=(√a+√b-√c-√d)/(a+b-c-d)
(終り)
√a+√b+√c+√d、a+b=c+dの型 例 1/(√2+√5+2+√3)
(考察)
{(√a+√b)+(√c+√d)}{(√a+√b)-(√c+√d)}
=(√a+√b)^2-(√c+√d)^2
=a+b+2√(ab)-{c+d+2√(cd)}
=2{√(ab)-√(cd)}
より、
1/(√a+√b+√c+√d)
={√(ab)+√(cd)}(√a+√b-√c-√d)/{2(ab-cd)}
={a√b+b√a-√(abc)-√(abd) +√(acd)+√(bcd)-c√d-c√d}/{2(ab-cd)}
(終り)
一般的に、
1/(√5+√3)=(√5-√3)/{(√5+√3)(√5-√3)}=(√5-√3)/2
答え
(√3+√5)(A+B√3+C√5+D√15)=k(0以外の整数)と表されるなら、
1/(√3+√5)=(A+B√3+C√5+D√15)/kとなる。
(√3+√5)(A+B√3+C√5+D√15)
=(A√3+3B+C√15+3D√5) + (A√5+B√15+5C+5D√3)
=(3B+5C)+(A+5D)√3+(A+3D)√5+(B+C)√15
なので、連立方程式 3B+5C=k、A+5D=0、A+3D=0、B+C=0 を解く。
(終り)
OPTION ARITHMETIC RATIONAL !有理数モード
!LET N=2
!DATA 3,5 !√3+√5
!DATA 1,1 !係数部分
!LET N=3
!DATA 1,2,3 !1+√2+√3
!DATA 1,1,1 !係数部分
!LET N=3
!DATA 2,3,5 !-√2+√3+√5
!DATA -1,1,1 !係数部分
LET N=3
DATA 1,3,5 !2+√3+√5=2√1+√3+√5
DATA 2,1,1 !係数部分
!LET N=3
!DATA 9,5,7 !3-√5-√7
!DATA 1,-1,-1 !係数部分
!LET N=4
!DATA 1,6,2,3 !1+√6+√2+√3
!DATA 1,1,1,1 !係数部分
!LET N=4
!DATA 5,4,3,2 !√5+2+√3+√2=√5+√4+√3+√2
!DATA 1,1,1,1 !係数部分
DIM R(N),C(N) !√a、√b、√c、… のn個
MAT READ R
MAT READ C
DIM RR(2^N) !√a、√b、√c、√ab、√bc、√ca、√abc、…
MAT RR=ZER
LET S=0
FOR i=0 TO 2^N-1 !組合せ ※2進法N桁
LET t=i
LET w=1
FOR J=1 TO N
IF MOD(t,2)=1 THEN LET w=w*R(J)
LET t=INT(t/2)
NEXT J
CALL SqNormalize(w, p,q) !√wをp√qと変形する
FOR J=1 TO S !新しい値なら
IF q=RR(J) THEN EXIT FOR
NEXT J
IF J>S THEN !登録する
LET S=S+1
LET RR(S)=q
END IF
NEXT i
PRINT S !debug
MAT PRINT RR; !debug
!連立方程式Ax=bを立てる
! (√a+√b+√c)(A√1+B√a+C√b+D√c+E√ab+F√bc+G√ca+H√abc)
!=( A~Hの線形結合 )√1+( … )√a+( … )√b+( … )√c+( … )√ab+( … )√bc+( … )√ca+( … )√abc
!=k(整数)
!とする恒等式から、係数A~Hを求める。
DIM A(S,S),x(S),b(S)
MAT A=ZER
FOR i=1 TO N !左側の括弧
FOR J=1 TO S !右側の括弧
LET w=R(i)*RR(J) !展開する
CALL SqNormalize(w, p,q) !√wをp√qと変形する
FOR K=1 TO S !√qの位置を探す
IF q=RR(K) THEN EXIT FOR
NEXT K
IF K>S THEN
PRINT "論理エラー"; i;J; w; p;q
STOP
ELSE !見つかったなら
LET A(K,J)=A(K,J)+C(i)*p
END IF
NEXT J
NEXT i
MAT PRINT A; !debug
MAT b=ZER
LET b(1)=1 !( … )√1の係数を1と仮定する
DIM iA(S,S) !連立方程式を解く
MAT iA=INV(A)
MAT x=iA*b
MAT PRINT x; !debug
!結果を表示する
LET G=1
FOR i=1 TO S
IF x(i)<>0 THEN LET G=GCD(G,x(i))
NEXT i
PRINT G !分母
FOR i=1 TO S !√の項
IF x(i)<>0 THEN PRINT x(i)/G; "√";STR$(RR(i))
NEXT i
END
EXTERNAL SUB SqNormalize(n, p,q) !平方根の中をできるだけ小さな正の整数に直す
!※n=p^2*q、n,p,q≧0とすると、√n=p*√qと変形できる。
OPTION ARITHMETIC RATIONAL !有理数モード
LET q=1 !※√0=0*√1とする ※n=0なら、1行下のFOR文でp=0は設定される
FOR p=INTSQR(n) TO 1 STEP -1 !約数p^2の候補を大きい方から
LET q=n/p^2
IF q=INT(q) THEN EXIT FOR !qは自然数より
NEXT p
END SUB
|
|
|
投稿者:山中和義
投稿日:2013年 7月16日(火)11時42分38秒
|
|
|
> No.3096[元記事へ]
問題
1/(4^(1/3)+2^(1/3)-1) の分母を有理化して下さい。
前回の手法で解いてみると、
答え
x=2^(1/3)とおくと、x^3=2
与式=1/(x^2+x-1)=ax^2+bx+c、a,b,c∈Qの形に書ける。
∴(x^2+x-1)(ax^2+bx+c)=1
そこで、x^3=2に注意して左辺を展開すると、(-a+b+c)x^2+(2a-b+c)x+(2a+2b-c)=1
このとき、1,x,x^2はQ上1次独立だから、
-a +b+c=0
2a -b+c=0
2a+2b-c=1
この連立方程式を解いて、(a,b,c)=(2/11,3/11,-1/11)
よって、1/(4^(1/3)+2^(1/3)-1)=(2*4^(1/3)+3*2^(1/3)-1)/11
(終り)
この解答でのポイントは、
(x^2+x-1)(ax^2+bx+c)=1 となる2次式 ax^2+bx+c を求める
ということである。
この2次式を、別の方法(ユークリッドの互除法)で求めてみる。
まず、簡単なもので考察してみる。
問題
1/√2 の分母を有理化して下さい。
答え
x=√2とおくと、x^2=2
これより、1/x=x/2
(終り)
問題
1/(√2+1) の分母を有理化して下さい。
答え
x=√2とおくと、x^2-2=0
また、x^2-2=(x-1)(x+1)-1
これより、0=(x-1)(x+1)-1 ∴1/(x+1)=x-1
(終り)
整式の変形のポイントは、
g=x^2-2、f=x+1(1番目の問題ではxである)と考えると、g=Qf+R
これより、g=0なので、1/f=-Q/R
(終り)
一般的に、
整式f,gが互いに素のとき、af+bg=(f,g)となる整式a,bが存在する。
これより、g=0なので、1/f=a/(f,g)
以上より、解答は、
答え
x=2^(1/3)とおくと、x^3-2=0
x^3-2=(x^2+x-1)(x-1)+2x-3 ← 式1
x^2+x-1=(2x-3)(x/2+5/4)+11/4 ∴4(x^2+x-1)=(2x-3)(2x+5)+11 ← 式2
式1、式2より、2x-3 を消去して、
11=(2x^2+3x-1)(x^2+x-1)-(2x+5)(x^3-2)
∴与式=(2x^2+3x-1)/11
(終り)
!多項式に対する拡張ユークリッド互除法
!多項式f(x)=A[m]x^m+ … +A[1]x+A[0]、g(x)=B[n]x^n+ … +B[1]x+B[0]、m≧nとして、
!f(x)S(x)+g(x)T(x)=gcd(f(x),g(x))=C(x)となるS(x),T(x),C(x)を求める。
OPTION ARITHMETIC RATIONAL !有理数モード
PUBLIC NUMERIC MAX_DEGREE !最高次数
LET MAX_DEGREE=20
!DATA 3 !次数
!DATA -15,11,-5,1 !-15+11x-5x^2+x^3
!DATA 3 !次数
!DATA 5,3,-1,1 !5+3x-x^2+x^3
!DATA 4 !次数
!DATA 0,0,-9,-15,6 !6x^4-15x^3-9x^2=3x^2(x-3)(2x+1)
!DATA 3 !次数
!DATA 0,3,-4,1 !x^3-4x^2+3x=x(x-1)(x-3)
DATA 2 !次数
DATA -1,1,1 !f(x)=-1+x+x^2
DATA 3 !次数
DATA -2,0,0,1 !g(x)=-2+x^3
!DATA 0,17, 0,29 !12*17+(-7)*29=1
!DATA 2 !次数 1/(7+5*2^(1/3)+3*4^(1/3)) x=2^(1/3)とすると、7+5x+3x^2
!DATA 7,5,3
!DATA 3 !次数
!DATA -2,0,0,1 !g(x)=-2+x^3
!DATA 2 !次数 1/(5*3^(2/3)+2*3^(1/3)+1) x=2^(1/3)とすると、1+2x+5x^2
!DATA 1,2,5
!DATA 3 !次数
!DATA -3,0,0,1 !g(x)=-3+x^3
!DATA 2 !次数 1/(1+64^(1/5)-4^(1/5)) x=2^(1/5)とすると、1+2x-x^2
!DATA 1,2,-1
!DATA 5 !次数
!DATA -2,0,0,0,0,1 !g(x)=-2+x^5
READ M !次数
DIM A(0 TO M) !係数
MAT READ A
READ N !次数
DIM B(0 TO N) !係数
MAT READ B
DIM S(0 TO MAX_DEGREE),T(0 TO MAX_DEGREE),C(0 TO MAX_DEGREE)
CALL PolynomialExtendedGCD(M,A,N,B, ss,S,tt,T,cc,C) !拡張ユークリッド互除法
LET G=C(0) !既約
FOR i=1 TO cc
LET G=GCD(G,C(i))
NEXT i
LET G=G*SGN(C(cc)) !C(x)の最高次数の係数は正
MAT S=(1/G)*S
MAT T=(1/G)*T
MAT C=(1/G)*C
CALL PolynomialDisplay(ss,S) !結果を表示する
PRINT
CALL PolynomialDisplay(tt,T)
PRINT
CALL PolynomialDisplay(cc,C)
PRINT
END
!拡張ユークリッド互除法
! f(x)=A[m]x^m+ … +A[1]x+A[0]、g(x)=B[n]x^n+ … +B[1]x+B[0]、m≧nとして、
! f(x)S(x)+g(x)T(x)=k*gcd(f(x),g(x))=C(x)となるS(x),T(x),C(x)を求める。
EXTERNAL SUB PolynomialExtendedGCD(aa,A(),bb,B(), ss,S(),tt,T(),cc,C()) !拡張ユークリッド互除法
OPTION ARITHMETIC RATIONAL !有理数モード
IF bb=0 AND B(0)=0 THEN !!--- IF b=0 THEN
!!--- s=1 ※f(x)*1+0*0=f(x)とする
LET S(0)=1
LET ss=0
!!--- t=0
LET T(0)=0
LET tt=0
!!--- c=a
MAT C=A
LET cc=aa
ELSE
!!--- q=INT(a/b), r=MOD(a,b)
DIM Q(0 TO MAX_DEGREE),R(0 TO MAX_DEGREE)
IF aa=0 AND bb=0 THEN !定数項のみ
LET Q(0)=INT(A(0)/B(0))
LET qq=0
LET R(0)=MOD(A(0),B(0))
LET rr=0
ELSE
CALL PolynomialQuotientRemainder(aa,A,bb,B, qq,Q,rr,R)
END IF
!!--- CALL ExGCD(b,r, u,v,c) !k=n-1,…,3,2 まで続ける
!!--- s=v
CALL PolynomialExtendedGCD(bb,B,rr,R, tt,T,ss,S,cc,C)
!!--- t=u-v*q
DIM W(0 TO MAX_DEGREE)
CALL PolynomialMultiply(ss,S,qq,Q, ww,W)
MAT T=T-W
LET tt=ww
END IF
END SUB
!補助ルーチン
!演算関連
EXTERNAL SUB PolynomialMultiply(aa,A(),bb,B(), ss,S()) !乗算 S=A*B ※S≠A、S≠B
OPTION ARITHMETIC RATIONAL !有理数モード
MAT S=ZER
FOR i=aa TO 0 STEP -1
LET k=A(i)
IF k=0 THEN !係数が0以外なら
ELSE
FOR j=bb TO 0 STEP -1
LET S(i+j)=S(i+j)+k*B(j) !すべての係数をかける
NEXT j
END IF
NEXT i
LET ss=aa+bb!次数 ※その補正
END SUB
EXTERNAL SUB PolynomialQuotientRemainder(aa,A(),bb,B(), qq,Q(),rr,R()) !除算 ※被除数=商*除数+余り
OPTION ARITHMETIC RATIONAL !有理数モード
IF bb=0 AND B(0)=0 THEN !除数が0なら
PRINT "0で割ることはできません。"
STOP
ELSE
MAT Q=ZER !商
MAT R=A !余り
FOR t=aa TO bb STEP -1 !被除数の次数が除数のより大きいなら
IF R(t)=0 THEN !係数が0以外なら
ELSE
LET k=R(t)/B(bb) !商の係数、その次数
LET w=t-bb
LET Q(w)=k !商
FOR i=bb TO 0 STEP -1 !余り ※R=A-k*B
LET R(w+i)=R(w+i)-k*B(i)
NEXT i
END IF
NEXT t
LET qq=MAX(aa-bb,0) !次数
IF aa>=bb THEN LET i=MAX(bb-1,0) ELSE LET i=aa !次数
FOR rr=i TO 1 STEP -1 !※その補正
IF R(rr)<>0 THEN EXIT FOR
NEXT rr
END IF
END SUB
!表示関連
EXTERNAL SUB PolynomialDisplay(aa,A()) !多項式を表示する a(X)=ΣAkX^k=AnX^n+An-1X^n-1+…+A1X+A0
OPTION ARITHMETIC RATIONAL !有理数モード
CALL mono_disp(A(aa),aa) !最初の項
FOR i=aa-1 TO 0 STEP -1 !次項
LET w=A(i)
IF w>0 THEN PRINT "+";
IF w<>0 OR aa=0 THEN CALL mono_disp(w,i)
NEXT i
END SUB
EXTERNAL SUB mono_disp(ak,k) !単項式を表示する Ak*X^k
OPTION ARITHMETIC RATIONAL !有理数モード
IF k<>0 THEN !x^nで
IF ak=0 OR ak=1 THEN !係数が0,1なら
ELSEIF ak=-1 THEN !係数が-1なら
PRINT "-"; !符号
ELSE
PRINT STR$(ak);"*";
END IF
END IF
IF k=0 THEN !次数が0なら
PRINT STR$(ak);
ELSE
IF ak<>0 THEN !係数が0以外なら
PRINT "X";
IF k<>1 THEN PRINT "^";STR$(k); !次数が1以外なら
END IF
END IF
END SUB
実行結果
+2/11*X^2+3/11*X-1/11
-2/11*X-5/11
1
数値計算による検算
PRINT 1/(4^(1/3)+2^(1/3)-1)
LET X=2^(1/3)
PRINT (2*X^2+3*X-1)/11
END
|
|
|
投稿者:山中和義
投稿日:2013年 7月17日(水)11時12分36秒
|
|
|
> No.3097[元記事へ]
・√2の共役は、-√2
・x=3^(1/3)の共役は、x*(-1±√(-3))/2、すなわち、ωx,ω^2x
・√2+√3の共役は、√2-√3, -√2+√3, -√2-√3
・共役たちの和や積といった対称式は有理数である。
分母の有理化は共役たちを分母分子に掛ける方法がある。
●平方根の場合
1項のとき
x*(-x)=-x^2より、1/x=(-x)/(-x^2)
2項のとき
(x+y)(x-y)(-x+y)(-x-y)
=(x+y)(x-y)(-(x-y))(-(x+y))
=(x^2-y^2)^2
より、1/(x+y)=(x-y)(-x+y)(-x-y)/(x^2-y^2)^2
符号の決め方は2^2=4通りだが、重複を除けば、
(x+y)(x-y)
=(x+y)(x-y)
=(x^2-y^2)
より、1/(x+y)=(x-y)/(x^2-y^2)
3項のとき
符号の決め方は、
(x+y+z)(x+y-z)(x-y+z)(x-y-z)(-x+y+z)(-x+y-z)(-x-y+z)(-x-y-z)
の2^3=8通りだが、重複を除けば、4通り
!分母の有理化 - 共役たちを分母分子に掛ける方法
!例 1/(√2+√3+√5)
OPTION ARITHMETIC RATIONAL !有理数モード
!LET N=2 !項数
!DATA 3,5 !√3-√5
!DATA 1,-1 !係数部分
!LET N=3 !項数
!DATA 7,5,3 !√7+√5+√3
!DATA 1,1,1 !係数部分
!LET N=3 !項数
!DATA 3,2, 1 !√3+√2-1
!DATA 1,1,-1 !係数部分
LET N=3 !項数
DATA 2,3,5 !√2+√3+√5
DATA 1,1,1 !係数部分
!LET N=4 !項数
!DATA 5, 1,3,2 !√5-2+√3+√2
!DATA 1,-2,1,1 !係数部分
DIM R(N),C(N) !√a、√b、√c、… のn個
MAT READ R
MAT READ C
!分子の計算
DIM R1(2^N),C1(2^N) !√a、√b、√c、√ab、√bc、√ca、√abc、… の高々2^n個
LET R1(1)=1 !定数1
LET C1(1)=1
LET S1=1 !個数
LET F=0 !元の分母の符号パターン
FOR i=1 TO N
LET F=F*2+(SGN(C(i))+1)/2
NEXT i
PRINT F !debug
DIM P(N)
FOR i=0 TO 2^N-1 !符号パターン(共役な数)を発生させる
IF i=F THEN !同じならスキップする
ELSE
LET t=i
FOR J=N TO 1 STEP -1 !2進法n桁
LET P(J)=MOD(t,2)*2-1
LET t=INT(t/2)
NEXT J
!!!MAT PRINT P; !debug
DIM WW(2^N),W(2^N) !積 (+√a+√b+√c)(+√a+√b-√c)(+√a-√b+√c) …
DIM WC(N) !共役な数の係数
FOR J=1 TO N
LET WC(J)=ABS(C(J))*P(J)
NEXT J
CALL SqMultiply(S1,R1,C1,N,R,WC, M,WW,W) !乗算
MAT R1=WW !次へ
MAT C1=W
LET S1=M
END IF
NEXT i
PRINT S1 !debug
MAT PRINT R1; !debug
MAT PRINT C1; !debug
!分母の計算
DIM R2(2^N),C2(2^N) !√a、√b、√c、√ab、√bc、√ca、√abc、… の高々2^n個
MAT R2=R1 !分子の値
MAT C2=C1
LET S2=S1
CALL SqMultiply(S2,R2,C2,N,R,C, M,WW,W) !乗算
MAT R2=WW
MAT C2=W
LET S2=M
PRINT S2 !debug
MAT PRINT R2; !debug
MAT PRINT C2; !debug
!結果を表示する
LET G=C1(1) !分母
FOR i=2 TO S1
IF C1(i)<>0 THEN LET G=GCD(G,C1(i))
NEXT i
FOR i=1 TO N !√1の位置を探す
IF R2(i)=1 THEN EXIT FOR
NEXT i
LET G=GCD(G,C2(i))*SGN(C2(i)) !既約分数
PRINT C2(i)/G
FOR i=1 TO S1 !分子
IF C1(i)<>0 THEN PRINT C1(i)/G; "√";STR$(R1(i)) !√の項
NEXT i
END
!補助ルーチン
!演算関連
!積 (p√a+q√b+ … +r√c)(s√x+t√y+ … +u√z) を求める
! aa個の平方根、ar[]=a,b,…c、a[]=p,q,…r
! bb個の平方根、br[]=x,y,…z、b[]=s,t,…u
EXTERNAL SUB SqMultiply(aa,AR(),A(),bb,BR(),B(), cc,CR(),C()) !乗算 C=A*B ※A≠C、B≠C
OPTION ARITHMETIC RATIONAL !有理数モード
LET cc=0 !個数
FOR x=1 TO aa
FOR y=1 TO bb
LET K=A(x)*B(y) !係数の部分
CALL SqNormalize(AR(x)*BR(y), P,Q) !平方根の中の部分
FOR J=1 TO cc !新しい値なら
IF Q=CR(J) THEN EXIT FOR
NEXT J
IF J>cc THEN !リストに登録する
LET cc=cc+1
LET CR(cc)=Q !√q
LET C(cc)=P*K
ELSE !既出なら、和を求める(同類項をまとめる)
LET C(J)=C(J)+P*K
END IF
NEXT y
NEXT x
END SUB
EXTERNAL SUB SqNormalize(n, p,q) !平方根の中をできるだけ小さな正の整数に直す
!※n=p^2*q、n,p,q≧0とすると、√n=p*√qと変形できる。
OPTION ARITHMETIC RATIONAL !有理数モード
LET q=1 !※√0=0*√1とする ※n=0なら、1行下のFOR文でp=0は設定される
FOR p=INTSQR(n) TO 1 STEP -1 !約数p^2の候補を大きい方から
LET q=n/p^2
IF q=INT(q) THEN EXIT FOR !qは自然数より
NEXT p
END SUB
実行結果
7
4
2 3 5 30 0 0 0 0
144 96 0 -48 0 0 0 0
4
1 6 10 15 0 0 0 0
576 0 0 0 0 0 0 0
12
3 √2
2 √3
-1 √30
●立方根の場合
> 1/(4^(1/3)+2^(1/3)-1) の分母を有理化して下さい。
x=2^(1/3)とおくと、x^3=2
4^(1/3)+2^(1/3)-1=x^2+x-1(=f(x)とおく)
また、与式=1/f(x)=f(y)f(z)/(f(x)f(y)f(z))と変形できる。
対称式 f(x)f(y)f(z)=(x^2+x-1)(y^2+y-1)(z^2+z-1) は、
x,y,zの基本対称式 x+y+z,xy+yz+zx,xyz の多項式で表わせる。
今、y=ωx,z=ω^2xとすると、x,y,zはx^3-2=0の解だから、x+y+z=0,xy+yz+zx=0,xyz=2
これより、分母=f(x)f(y)f(z)=f(x)f(ωx)f(ω^2x)=定数
実際に計算すると、
f(ωx)f(ω^2x)=2x^2+3x-1
f(x)f(ωx)f(ω^2x)=11
∴1/f(x)=(2x^2+3x-1)/11
|
|
|
投稿者:山中和義
投稿日:2013年 7月18日(木)20時47分57秒
|
|
|
> No.3098[元記事へ]
Q上の最小多項式から求める方法
1/(√3+√5)
答え
x=√3+√5とおくと、x^4-16x^2+4=0 ∴最小多項式f(x)=x^4-16x^2+4
f(x)=xQ(x)+Rより、f(x)=0なので、1/x=-Q(x)/R
具体的に、R=4、Q(x)=x^3-16xとなる。
よって、与式=-Q(√3+√5)/R=-(2√3-2√5)/4=(-√3+√5)/2
(終り)
考察
n次式f(x)=(x-α[1])(x-α[2])(x-α[3])…(x-α[n])=xQ(x)+R=0として、
「共役たちを分母分子に掛ける方法」を考える。
x=0を代入 または 解と係数の関係 より、R=f(0)=α[1]α[2]α[3]…α[n]
これは分母に相当する。
xQ(x)+R=0より、R/x=-Q(x) ∴α[1]α[2]α[3]…α[n]/α[1]=α[2]α[3]…α[n]
これは分子に相当する。
(終り)
!分母の有理化 - Q上の最小多項式
OPTION ARITHMETIC RATIONAL !有理数モード
!LET N=2 !x=√3+√5
!DATA 3,5
!DATA 1,1
!DATA 4 !f(x)=4-16x^2+x^4
!DATA 4,0,-16,0,1
!LET N=2 !x=3+√2
!DATA 1,2
!DATA 3,1
!DATA 2 !f(x)=7-6x+x^2
!DATA 7,-6,1
!LET N=3 !x=√2+√3+√5
!DATA 2,3,5
!DATA 1,1,1
!DATA 8 !f(x)=576-960x^2+352x^4-40x^6+x^8
!DATA 576,0,-960,0,352,0,-40,0,1
LET N=4
DATA 2,3,5,6 !x=√2+√3+√5+√6
DATA 1,1,1,1
DATA 8 !f(x)=x^8-64x^6-96x^5+808x^4+1152x^3-2304x^2-1152x+144
DATA 144,-1152,-2304,1152,808,-96,-64,0,1
DIM R(N),C(N) !xを読み込む
MAT READ R
MAT READ C
READ M !f(x)の次数
READ B !分子Rを読み込む
DIM A(0 TO M-1) !分母Q(x)を読み込む
MAT READ A
DIM RR(2^N),CC(2^N) !高々2^n個
CALL SqValueOfFunction(N,R,C, M-1,A, S,RR,CC) !関数Q(x)の値
!結果を表示する
FOR i=1 TO S !√の項
IF CC(i)<>0 THEN PRINT -CC(i)/B; "√";STR$(RR(i)) !-Q(x)/R
NEXT i
END
!補助ルーチン
!演算関連
!x=αのとき、f(α)の値を求める
! x=p√a+q√b+ … +r√c ※n個の平方根、r[]=a,b,…c、c[]=p,q,…r
! f(x)=A[m]x^m+A[m-1]x^(m-1)+ … +A[2]x^2+A[1]x+A[0]
EXTERNAL SUB SqValueOfFunction(N,R(),C(), M,A(), S,RR(),CC())
OPTION ARITHMETIC RATIONAL !有理数モード
LET RR(1)=1 !f=a[m]
LET CC(1)=A(M)
LET S=1
DIM WW(2^N),W(2^N)
FOR i=M-1 TO 0 STEP -1 !ホーナー法
CALL SqMultiply(S,RR,CC,N,R,C, T,WW,W) !f=f*x+a[i]
FOR J=1 TO T !√1を探す
IF WW(J)=1 THEN EXIT FOR
NEXT J
IF J>T THEN LET T=T+1
LET W(J)=W(J)+A(i)
MAT RR=WW !次へ
MAT CC=W
LET S=T
NEXT i
END SUB
!積 (p√a+q√b+ … +r√c)(s√x+t√y+ … +u√z) を求める
! aa個の平方根、ar[]=a,b,…c、a[]=p,q,…r
! bb個の平方根、br[]=x,y,…z、b[]=s,t,…u
EXTERNAL SUB SqMultiply(aa,AR(),A(),bb,BR(),B(), cc,CR(),C()) !乗算 C=A*B ※A≠C、B≠C
OPTION ARITHMETIC RATIONAL !有理数モード
LET cc=0 !個数
FOR x=1 TO aa
IF A(x)=0 THEN !係数が0以外なら
ELSE
FOR y=1 TO bb
LET K=A(x)*B(y) !係数
CALL SqNormalize(AR(x)*BR(y), P,Q) !√wをp√qと変形する
FOR J=1 TO cc !新しい値なら
IF Q=CR(J) THEN EXIT FOR
NEXT J
IF J>cc THEN !リストに登録する
LET cc=cc+1
LET CR(cc)=Q !√q
LET C(cc)=P*K
ELSE !既出なら、和を求める(同類項をまとめる)
LET C(J)=C(J)+P*K
END IF
NEXT y
END IF
NEXT x
END SUB
EXTERNAL SUB SqNormalize(n, p,q) !平方根の中をできるだけ小さな正の整数に直す
!※n=p^2*q、n,p,q≧0とすると、√n=p*√qと変形できる。
OPTION ARITHMETIC RATIONAL !有理数モード
LET q=1 !※√0=0*√1とする ※n=0なら、1行下のFOR文でp=0は設定される
FOR p=INTSQR(n) TO 1 STEP -1 !約数p^2の候補を大きい方から
LET q=n/p^2
IF q=INT(q) THEN EXIT FOR !qは自然数より
NEXT p
END SUB
|
|
|
投稿者:山中和義
投稿日:2013年 7月21日(日)11時26分35秒
|
|
|
> No.3099[元記事へ]
最小多項式を求める方法
最小多項式 f(x)=(x-α[1])(x-α[2])(x-α[3])…(x-α[n]) なので、解と係数の関係より、
個数が少ない場合は、
LET a= SQR(3)+SQR(5)
LET b= SQR(3)-SQR(5)
LET c=-SQR(3)+SQR(5)
LET d=-SQR(3)-SQR(5)
PRINT 1 !x^4
PRINT -(a+b+c+d) !x^3
PRINT a*b+a*c+a*d +b*c+b*d +c*d !x^2
PRINT -(a*b*c+a*b*d+a*c*d +b*c*d) !x^1
PRINT a*b*c*d !x^0
END
とすればよいでしょう。
多い場合は、「解の積」を機械的に生成するように改良します。
!Q上の最小多項式を求める
!最小多項式 f(x)=(x-α[1])(x-α[2])(x-α[3])…(x-α[n]) なので、
!解と係数の関係より、展開式 f(x)=c[n]x^n+c[n-1]x^(n-1)+ … +c[1]x+c[0] を計算する。
!x=√2+√3+√5+√6の場合、f(x)=x^8-64x^6-96x^5+808x^4+1152x^3-2304x^2-1152x+144
LET M=3 !線形独立な平方根の個数 ∵√6=√2√3より、√6は除く
LET N=2^M !共役の個数
DIM A(N)
LET A(1)= SQR(2)+SQR(3)+SQR(5) +SQR(6) !√6の符号 ∵√6=√2√3より
LET A(2)= SQR(2)+SQR(3)-SQR(5) +SQR(6)
LET A(3)= SQR(2)-SQR(3)+SQR(5) -SQR(6)
LET A(4)= SQR(2)-SQR(3)-SQR(5) -SQR(6)
LET A(5)=-SQR(2)+SQR(3)+SQR(5) -SQR(6)
LET A(6)=-SQR(2)+SQR(3)-SQR(5) -SQR(6)
LET A(7)=-SQR(2)-SQR(3)+SQR(5) +SQR(6)
LET A(8)=-SQR(2)-SQR(3)-SQR(5) +SQR(6)
DIM c(0 TO N) !係数 ※基本対称式
MAT c=ZER
FOR p=0 TO 2^N-1 !組み合わせで「解の積」を機械的に生成する
LET t=p
LET r=0 !ビット列の1の個数
LET W=1 !r個の積、C(n,r)通り
LET K=1
DO WHILE t>0
IF MOD(t,2)=1 THEN
LET r=r+1
LET W=W*(-A(K))
END IF
LET t=INT(t/2)
LET K=K+1
LOOP
LET c(N-r)=c(N-r)+W !x^(N-r)の係数
NEXT p
MAT PRINT c; !1,x,…,x^(n-1),x^nの係数
END
実行結果
144 -1152 -2304.00000000003 1152 808.000000000003 -95.9999999999994 -64 .00000000000003 1
|
|
|
投稿者:山中和義
投稿日:2013年 7月26日(金)18時47分57秒
|
|
|
> No.3104[元記事へ]
最小多項式を求める方法のつづき
> 1/(4^(1/3)+2^(1/3)-1) の分母を有理化して下さい。
Q上の最小多項式から求める方法
x=4^(1/3)+2^(1/3)-1のとき、Q上の最小多項式を求めると、f(x)=x^3+3x^2-3x-11
よって、1/x=-(x^2+3x-3)/(-11)=(x^2+3x-3)/11
xを代入して、
分子
={4^(1/3)+2^(1/3)-1}^2 +3{4^(1/3)+2^(1/3)-1} -3
=2*2^(1/3)+4^(1/3)+1 +2*2-2*2^(1/3)-2*4^(1/3) +3*4^(1/3)+3*2^(1/3)-3 -3
=2*4^(1/3)+3*2^(1/3)-1
(終り)
!x=4^(1/3)+2^(1/3)-1の場合、f(x)=x^3+3x^2-3x-11
OPTION ARITHMETIC COMPLEX !複素数モード
LET i=COMPLEX(0,1) !虚数単位
DEF G(y)=y^2+y-1
LET y=2^(1/3)
LET w=EXP(2*PI*i/3) !y^3-1=0(y≠1)の解のひとつ
LET N=3 !共役の個数
DIM A(N)
LET A(1)=G(y)
LET A(2)=G(w*y)
LET A(3)=G(w^2*y)
DIM c(0 TO N) !係数 ※基本対称式
MAT c=ZER
FOR p=0 TO 2^N-1 !組み合わせで「解の積」を機械的に生成する
LET R=0 !ビット列の1の個数
LET S=1 !r個の積、C(n,r)通り
LET t=p !ビットパターン ※2進法n桁
LET K=1
DO WHILE t>0
IF MOD(t,2)=1 THEN !ビットが1なら
LET R=R+1
LET S=S*(-A(K))
END IF
LET t=INT(t/2) !次へ
LET K=K+1
LOOP
LET c(N-R)=c(N-R)+S !x^(n-r)の係数
NEXT p
MAT PRINT c; !1,x,…,x^(n-1),x^nの係数
END
実行結果
(-11 7.86122469204065E-15) (-3 -1.2583792514953E-15) ( 3 -1.55431223447522E-15) 1
> x=√2+√3+√5+√6の場合、f(x)=x^8-64x^6-96x^5+808x^4+1152x^3-2304x^2-1152x+144
前出の最小多項式を求める方法のプログラムは、上記のように記述すると、
!x=√2+√3+√5+√6の場合、f(x)=x^8-64x^6-96x^5+808x^4+1152x^3-2304x^2-1152x+144
OPTION ARITHMETIC COMPLEX !複素数モード
LET i=COMPLEX(0,1) !虚数単位
DEF G(x1,x2,x3)=x1+x2+x3+x1*x2 !∵√6=√2√3より、√6は除く
LET x1=SQR(2)
LET x2=SQR(3)
LET x3=SQR(5)
LET w=EXP(2*PI*i/2) !x^2-1=0(x≠1)の解のひとつ、すなわちω=-1
LET N=2^3 !共役の個数
DIM A(N)
LET A(1)=G( x1, x2, x3)
LET A(2)=G( x1, x2, w*x3)
LET A(3)=G( x1, w*x2, x3)
LET A(4)=G( x1, w*x2, w*x3)
LET A(5)=G(w*x1, x2, x3)
LET A(6)=G(w*x1, x2, w*x3)
LET A(7)=G(w*x1, w*x2, x3)
LET A(8)=G(w*x1, w*x2, w*x3)
DIM c(0 TO N) !係数 ※基本対称式
MAT c=ZER
FOR p=0 TO 2^N-1 !組み合わせで「解の積」を機械的に生成する
LET R=0 !ビット列の1の個数
LET S=1 !r個の積、C(n,r)通り
LET t=p !ビットパターン ※2進法n桁
LET K=1
DO WHILE t>0
IF MOD(t,2)=1 THEN !ビットが1なら
LET R=R+1
LET S=S*(-A(K))
END IF
LET t=INT(t/2) !次へ
LET K=K+1
LOOP
LET c(N-R)=c(N-R)+S !x^(n-r)の係数
NEXT p
MAT PRINT c; !1,x,…,x^(n-1),x^nの係数
END
実行結果
( 143.999999999999 4.55231300086593E-13) (-1152 2.87033774599169E-12) (-2304 -3.24149828525186E-14) ( 1152 -1.22630932501458E-12) ( 808 -4.23419558502279E-14) (-96 1.31570129478226E-13) (-64 7.00144567739066E-15) (-2.66453525910038E-15 -2.63649535642436E-15) 1
|
|
|
投稿者:山中和義
投稿日:2013年 7月27日(土)20時12分49秒
|
|
|
> No.3098[元記事へ]
> 分母の有理化は共役たちを分母分子に掛ける方法がある。
> ●立方根の場合
> > 1/(4^(1/3)+2^(1/3)-1) の分母を有理化して下さい。
>
> x=2^(1/3)とおくと、x^3=2
> 4^(1/3)+2^(1/3)-1=x^2+x-1(=f(x)とおく)
> また、与式=1/f(x)=f(y)f(z)/(f(x)f(y)f(z))と変形できる。
>
> 対称式 f(x)f(y)f(z)=(x^2+x-1)(y^2+y-1)(z^2+z-1) は、
> x,y,zの基本対称式 x+y+z,xy+yz+zx,xyz の多項式で表わせる。
> 今、y=ωx,z=ω^2xとすると、x,y,zはx^3-2=0の解だから、x+y+z=0,xy+yz+zx=0,xyz=2
>
> これより、分母=f(x)f(y)f(z)=f(x)f(ωx)f(ω^2x)=定数
>
> 実際に計算すると、
> f(ωx)f(ω^2x)=2x^2+3x-1
> f(x)f(ωx)f(ω^2x)=11
>
> ∴1/f(x)=(2x^2+3x-1)/11
考察
1/f(x)=(f(ωx)f(ω^2x))/(f(x)f(ωx)f(ω^2x)) と変形すると、分母が有理化される。
(終り)
OPTION ARITHMETIC COMPLEX !複素数モード
LET i=COMPLEX(0,1) !虚数単位
LET w=EXP(2*PI*i/3) !y^3-1=0(y≠1)の解のひとつ、すなわちω=(-1+(√3)i)/2
DATA 2 !f(x)=x^2+x-1
DATA -1,1,1
DATA 3 !g(x)=x^3-2
DATA -2,0,0,1
READ ff !f(x)を読み込む
DIM F(0 TO ff)
MAT READ F
READ gg !g(x)を読み込む
DIM G(0 TO gg)
MAT READ G
!分子 f(ωx)f(ω^2x) の計算
DIM A(0 TO ff),B(0 TO ff) !f(ωx)、f(ω^2x)
FOR k=0 TO ff
LET A(k)=F(k)*w^k
LET B(k)=F(k)*(w^2)^k
NEXT k
LET aa=ff
LET bb=ff
DIM S(0 TO 2*ff)
CALL PolynomialMultiply(aa,A,bb,B, ss,S)
PRINT ss
MAT PRINT S;
DIM Q(0 TO 2*ff),R(0 TO 2*ff)
CALL PolynomialQuotientRemainder(ss,S,gg,G, qq,Q,rr,R) !x=2^(1/3)を考慮する
PRINT rr !結果を表示する
MAT PRINT R;
!分母 f(x)f(ωx)f(ω^2x) の計算
CALL PolynomialMultiply(ff,F,rr,R, ss,S) !f(x)×分子
PRINT ss
MAT PRINT S;
CALL PolynomialQuotientRemainder(ss,S,gg,G, qq,Q,rr,R)
PRINT rr !結果を表示する
MAT PRINT R;
END
!補助ルーチン
!f(x)=A[aa]x^aa+ … +A[1]x+A[0]、g(x)=B[bb]x^bb+ … +B[1]x+B[0]
!演算関連
EXTERNAL SUB PolynomialMultiply(aa,A(),bb,B(), ss,S()) !乗算 S=A*B ※S≠A、S≠B
OPTION ARITHMETIC COMPLEX !複素数モード
MAT S=ZER
FOR i=aa TO 0 STEP -1
LET k=A(i)
FOR j=bb TO 0 STEP -1
LET S(i+j)=S(i+j)+k*B(j) !すべての係数をかける
NEXT j
NEXT i
LET ss=aa+bb!次数 ※その補正
END SUB
EXTERNAL SUB PolynomialQuotientRemainder(aa,A(),bb,B(), qq,Q(),rr,R()) !除算 ※被除数=商*除数+余り
OPTION ARITHMETIC COMPLEX !複素数モード
IF bb=0 AND ABS(B(0))<1E-12 THEN !除数が0なら ※※複素数による近似
PRINT "0で割ることはできません。"
STOP
ELSE
MAT Q=ZER !商
MAT R=A !余り
FOR t=aa TO bb STEP -1 !被除数の次数が除数のより大きいなら
IF ABS(R(t))<1E-12 THEN !係数が0以外なら ※※複素数による近似
ELSE
LET k=R(t)/B(bb) !商の係数、その次数
LET w=t-bb
LET Q(w)=k !商
FOR i=bb TO 0 STEP -1 !余り ※R=A-k*B
LET R(w+i)=R(w+i)-k*B(i)
NEXT i
END IF
NEXT t
LET qq=MAX(aa-bb,0) !次数
IF aa>=bb THEN LET t=MAX(bb-1,0) ELSE LET t=aa !次数
FOR rr=t TO 1 STEP -1 !※その補正
IF ABS(R(rr))>=1E-12 THEN EXIT FOR ! ※※複素数による近似
LET R(rr)=0 ! ※※複素数による近似
NEXT rr
END IF
END SUB
実行結果
4
1 ( 1 -3.33066907387547E-16) ( 2 -1.22124532708767E-15) (-1 9.99200722162641E-16) ( 1 -1.23905334777075E-15)
2
(-1 1.99840144432528E-15) ( 3 -2.81117360292904E-15) ( 2 -1.22124532708767E-15) 0 0
4
( 1 -1.99840144432528E-15) (-4 4.80957504725432E-15) ( 0 4.08473168483914E-16) ( 5 -4.03241893001671E-15) ( 2 -1.22124532708767E-15)
0
( 11 -1.00632393043587E-14) 0 0 0 0
|
|
|
投稿者:山中和義
投稿日:2013年10月21日(月)11時13分27秒
|
|
|
> No.3106[元記事へ]
> 分母の有理化は共役たちを分母分子に掛ける方法がある。
実質は、(a+b)(a-b)=a^2-b^2なのですが、
ペル方程式 A^2-K^2B=m より、(A+K√B)(A-K√B)=m ∴(A-K√B)/m=1/(A+K√B)
●ペル方程式 A^2-K^2B=m の図形的解釈
A,K,Bは正の数とする。
△OABは、辺の長さを OA=√m, AB=K√B, OB=A すなわち m+K^2B=A^2 となる 直角三角形とする。
(または、OA=√m, AB=A, OB=K√B すなわち m+A^2=K^2B となる直角三角形とする。)
AB=BCとなるように、OB上に点Cをとる。
OBをB側に延長して、AB=BDとなるように、延長した線上に点Dをとる。
△OAC∽△ODAより、OC/OA=OA/OD
よって、(A-K√B)/(√m)=(√m)/(A+K√B) ∴(A-K√B)/m=1/(A+K√B)
OPTION ARITHMETIC COMPLEX !複素平面
SET WINDOW -2,5,-1,6 !表示範囲 ※
DRAW grid !座標を描く
LET i=COMPLEX(0,1) !虚数単位
LET Oo=COMPLEX(0,0) !原点
LET A=2 !2+√5
LET K=1
LET B=5
LET m=A^2-K^2*B
PRINT m
IF m>0 THEN
LET OA=COMPLEX(SQR(m),0) !△OABは直角三角形
LET OB=COMPLEX(SQR(m),K*SQR(B))
LET OC=(A-K*SQR(B))*OB/ABS(OB) !AB=BC
LET OD=(A+K*SQR(B))*OB/ABS(OB) !AB=BD
ELSEIF m<0 THEN
LET OA=COMPLEX(SQR(-m),0) !△OABは直角三角形
LET OB=COMPLEX(SQR(-m),A)
LET OC=(-A+K*SQR(B))*OB/ABS(OB) !AB=BC
LET OD=( A+K*SQR(B))*OB/ABS(OB) !AB=BD
ELSE
PRINT "表示できません。"
STOP
END IF
PRINT OA;OB;OC;OD !debug
CALL gcDRAWPOINT(Oo,"o") !点O
CALL gcDRAWPOINT(OA,"A") !点A
CALL gcDRAWPOINT(OB,"B") !点B
CALL gcDRAWPOINT(OC,"C") !点C
CALL gcDRAWPOINT(OD,"D") !点D
PLOT LINES: OB; OA; OD; Oo; OA; OC !各三角形を描く
DRAW circle WITH SCALE(ABS(OA-OB))*SHIFT(OB) !点A,D,Cは点Bを中心とする同一円上にある
END
EXTERNAL SUB gcDRAWPOINT(OP,S$) !点を描く
OPTION ARITHMETIC COMPLEX
DRAW disk WITH SCALE(0.08)*SHIFT(OP)
PLOT TEXT ,AT OP: S$
END SUB
|
|
|
戻る