2017-03-10 12 views
0
(%i2) x : expand(cosh(1)*sqrt(3+5*t)); 
(%o2)      cosh(1) sqrt(5 t + 3) 
(%i3) expand(float(x)); 
                0.5 
(%o3)     1.543080634815244 (5.0 t + 3.0) 

어떻게 맥시마가 프리 팩터를 급진적으로 통합 할 수 있습니까? ,이 경우 이것은 큰 문제가되지 않습니다이 작게 번호는어떻게 Maxima에서 급진적 인 숫자로 된 prefactor를 통합 할 수 있습니까?

            0.5 
(%o3)     (11.90548922 t + 7.143293537) 

같은 것을 얻을 수 뭔가를 찾고 있어요,하지만 수치 평가를 위해 맥시마는 매우 큰 분모를 포함 할 수있다 합리적인 근사치를 대체하는 경향이있다 그래서 prefactor가 아주 작은 숫자 (예 : 6.35324353 × 1-23)이고 제곱근의 숫자가 매우 큰 숫자 (예 : 5212548545863256475196584785455844385452665612552468) 인 표현으로 끝납니다. 결과의 크기 순서는 다음과 같습니다.

답변

0

다음은 패턴 일치를 사용하는 솔루션입니다.

(%i1) matchdeclare (cc, numberp, [bb, aa], all) $ 
(%i2) defrule (r1f, cc*bb^0.5, foof(cc,bb)); 
           0.5 
(%o2)     r1f : bb cc -> foof(cc, bb) 
(%i3) defrule (r2f, aa*cc*bb^0.5, aa*foof(cc,bb)); 
           0.5 
(%o3)    r2f : aa bb cc -> aa foof(cc, bb) 
(%i4) foof(a,b):= (expand(a^2*b))^0.5 $ 
(%i5) apply1 (1.543080634815244*(5.0*t + 3.0)^0.5, r1f, r2f); 
                  0.5 
(%o5)   (11.90548922770908 t + 7.143293536625449) 
(%i6) apply1 (1.543080634815244*x*y*(5.0*t + 3.0)^0.5, r1f, r2f); 
                 0.5 
(%o6)   (11.90548922770908 t + 7.143293536625449) x y 
(%i7) apply1 (1/(1 + 345.43*(2.23e-2*u + 8.3e-4)^0.5), r1f, r2f); 
             1 
(%o7)   -------------------------------------------- 
                 0.5 
       (2660.87803327 u + 99.03716446700001) + 1 

그것은 적절한 규칙 r1fr2f을 알아 내기 위해 몇 가지 실험을했다. 이 규칙은 ...^0.5과 일치하지만 sqrt(...)이 아님 (즉, 지수 대신 0.5 대신 지수). 물론 sqrt(...)과 일치 시키려면 추가 규칙을 만들 수 있습니다.

작동하지 않을 수도 있습니다 - 규칙이 너무 많거나 적게 일치 할 수 있습니다. 어쨌든 시도해 볼 가치가 있습니다.