有理化

 投稿者:しばっち  投稿日:2014年11月26日(水)18時08分17秒
  数式処理ソフト使ってみた

https://www.wolframalpha.com/input/?i=1%2F%28%28sqrt%282%29%2Bsqrt%283%29%2B5%5E%281%2F2%29%29


using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (a.k.a. GCL)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) display2d:false;
(%o1) false
(%i2) algebraic: ture;
(%o2) ture
(%i3) ratsimp(1/(sqrt(a)+sqrt(b)+sqrt(c)));
(%o3) (sqrt(c)*(c-b+2*sqrt(a)*sqrt(b)-a)+sqrt(b)*(-c+b-a)+sqrt(a)
                                                          *(-c-b+a))
/(c^2+(-2*b-2*a)*c+b^2-2*a*b+a^2)
(%i4) ratsimp(1/(sqrt(a)+sqrt(b)+sqrt(c)+sqrt(d)));
(%o4) (sqrt(d)*(d^3+sqrt(c)*(sqrt(a)*(2*d^2+(-4*c+4*b-4*a)*d+2*c^2
                                           +(4*b-4*a)*c-6*b^2+4*a*b
                                           +2*a^2)
                            +sqrt(b)*(2*d^2+(-4*c-4*b+4*a)*d+2*c^2
                                           +(4*a-4*b)*c+2*b^2+4*a*b
                                           -6*a^2))
                   +sqrt(a)*sqrt(b)
                           *(2*d^2+(4*c-4*b-4*a)*d-6*c^2+(4*b+4*a)*c
                                  +2*b^2-4*a*b+2*a^2)+(-3*c-3*b-3*a)*d^2
                   +(3*c^2+(2*b+2*a)*c+3*b^2+2*a*b+3*a^2)*d-c^3+(b+a)*c^2
                   +(b^2-10*a*b+a^2)*c-b^3+a*b^2+a^2*b-a^3)
+sqrt(c)*(-d^3+(3*c+b+a)*d^2
               +sqrt(a)*sqrt(b)
                       *(-6*d^2+(4*c+4*b+4*a)*d+2*c^2+(-4*b-4*a)*c+2*b^2
                               -4*a*b+2*a^2)
               +(-3*c^2+(2*b+2*a)*c+b^2-10*a*b+a^2)*d+c^3+(-3*b-3*a)*c^2
               +(3*b^2+2*a*b+3*a^2)*c-b^3+a*b^2+a^2*b-a^3)
+sqrt(b)*(-d^3+(c+3*b+a)*d^2+(c^2+(2*b-10*a)*c-3*b^2+2*a*b+a^2)*d-c^3
               +(3*b+a)*c^2+(-3*b^2+2*a*b+a^2)*c+b^3-3*a*b^2+3*a^2*b-a^3)
+sqrt(a)*(-d^3+(c+b+3*a)*d^2+(c^2+(2*a-10*b)*c+b^2+2*a*b-3*a^2)*d-c^3
               +(b+3*a)*c^2+(b^2+2*a*b-3*a^2)*c-b^3+3*a*b^2-3*a^2*b+a^3))
/(d^4+(-4*c-4*b-4*a)*d^3+(6*c^2+(4*b+4*a)*c+6*b^2+4*a*b+6*a^2)*d^2
      +(-4*c^3+(4*b+4*a)*c^2+(4*b^2-40*a*b+4*a^2)*c-4*b^3+4*a*b^2+4*a^2*b
              -4*a^3)
       *d+c^4+(-4*b-4*a)*c^3+(6*b^2+4*a*b+6*a^2)*c^2
      +(-4*b^3+4*a*b^2+4*a^2*b-4*a^3)*c+b^4-4*a*b^3+6*a^2*b^2-4*a^3*b
      +a^4)
(%i5) ratsimp(1/(a^(1/2)+b^(1/3)));
(%o5) -(b^(1/3)*(sqrt(a)*b-a^2)-a*b+(a^(3/2)-b)*b^(2/3)+a^(5/2))/(b^2
                                                                 -a^3)
(%i6) ratsimp(1/(a^(1/3)+b^(1/3)));
(%o6) (b^(2/3)-a^(1/3)*b^(1/3)+a^(2/3))/(b+a)
(%i7) ratsimp(1/(a^(1/3)+b^(1/3)+c^(1/3)));
(%o7) -(c^(1/3)*(b^(1/3)*(c^2+(2*b-a)*c+b^2-a*b-2*a^2)
                +a^(1/3)*(c^2+(2*a-b)*c-2*b^2-a*b+a^2)
                +a^(2/3)*b^(2/3)*(-6*c+3*b+3*a))
+c^(2/3)*(-c^2+a^(1/3)*b^(2/3)*(3*c+3*b-6*a)
               +a^(2/3)*b^(1/3)*(3*c-6*b+3*a)+(-2*b-2*a)*c-b^2+7*a*b-a^2)
+a^(2/3)*(-c^2+(7*b-2*a)*c-b^2-2*a*b-a^2)
+b^(2/3)*(-c^2+(7*a-2*b)*c-b^2-2*a*b-a^2)
+a^(1/3)*b^(1/3)*(-2*c^2+(-b-a)*c+b^2+2*a*b+a^2))
/(c^3+(3*b+3*a)*c^2+(3*b^2-21*a*b+3*a^2)*c+b^3+3*a*b^2+3*a^2*b+a^3)


LET A=2
LET B=3
LET SS=SGN(A-B)
PRINT "1/(SQR(";A;")+SQR(";B;"))"
PRINT "=(";SIGN$(SS);"SQR(";A;")";SIGN$(-SS);"SQR(";B;"))/";ABS(A-B)
PRINT
LET A=2
LET B=3
LET C=5
PRINT "1/(SQR(";A;")+SQR(";B;")+SQR(";C;"))"
LET SS=SGN((A+B-C)^2-4*A*B)
PRINT "=(";SS*(A-B-C);"*SQR(";A;")";SIGN$(SS*(-A+B-C));"*SQR(";B;")";SIGN$(SS*(A+B-C));"*SQR(";C;")";SIGN$(SS);"2*SQR(";A*B*C;"))/";ABS((A+B-C)^2-4*A*B)
END

EXTERNAL  FUNCTION SIGN$(X)
IF ABS(X)=1 THEN
   IF X<0 THEN LET SIGN$="-" ELSE LET SIGN$="+"
ELSE
   IF X<0 THEN LET SIGN$="-"&STR$(-X) ELSE LET SIGN$="+"&STR$(X)
END IF
END FUNCTION

 

Re: 有理化

 投稿者:GAI  投稿日:2014年11月27日(木)07時32分56秒
  > No.3555[元記事へ]

しばっちさんへのお返事です。

> LET A=2
> LET B=3
> LET C=5
> PRINT "1/(SQR(";A;")+SQR(";B;")+SQR(";C;"))"
> LET SS=SGN((A+B-C)^2-4*A*B)
> PRINT "=(";SS*(A-B-C);"*SQR(";A;")";SIGN$(SS*(-A+B-C));"*SQR(";B;")";SIGN$(SS*(A+B-C));"*SQR(";C;")";SIGN$(SS);"2*SQR(";A*B*C;"))/";ABS((A+B-C)^2-4*A*B)
> END
>
> EXTERNAL  FUNCTION SIGN$(X)
> IF ABS(X)=1 THEN
>    IF X<0 THEN LET SIGN$="-" ELSE LET SIGN$="+"
> ELSE
>    IF X<0 THEN LET SIGN$="-"&STR$(-X) ELSE LET SIGN$="+"&STR$(X)
> END IF
> END FUNCTION
>

A=2,B=3,C=5 では結果はOKですが
A=2,B=3,C=11
A=7,B=11,C=13 とかでは一カ所符号が逆になる部分があるようです。
 

Re: 有理化

 投稿者:しばっち  投稿日:2014年11月27日(木)20時02分9秒
  > No.3558[元記事へ]

GAIさんへのお返事です。


> A=2,B=3,C=5 では結果はOKですが
> A=2,B=3,C=11
> A=7,B=11,C=13 とかでは一カ所符号が逆になる部分があるようです。

大変失礼いたしました。
とりあえず修正しておきました。

LET A=7
LET B=11
LET C=13
PRINT "1/(SQR(";A;")+SQR(";B;")+SQR(";C;"))"
LET SS=SGN((A+B-C)^2-4*A*B)
IF MOD(A-B-C,2)=0 AND MOD(-A+B-C,2)=0 AND MOD(C-A-B,2)=0 AND MOD((A+B-C)^2-4*A*B,2)=0 THEN LET S=2 ELSE LET S=1
PRINT "(";SIGN$(SS*(A-B-C)/S);"SQR(";A;")";SIGN$(SS*(-A+B-C)/S);"SQR(";B;")";SIGN$(SS*(C-A-B)/S);"SQR(";C;")";SIGN$(SS*2/S);"SQR(";A*B*C;"))/";ABS((A+B-C)^2-4*A*B)/S
END

EXTERNAL  FUNCTION SIGN$(X)
IF ABS(X)=1 THEN
   IF X<0 THEN LET SIGN$="-" ELSE LET SIGN$="+"
ELSE
   IF X<0 THEN LET SIGN$="-"&STR$(-X)&"*" ELSE LET SIGN$="+"&STR$(X)&"*"
END IF
END FUNCTION
 

戻る