Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

#1893 0.0007s^1.874

open
nobody
5
2012-12-04
2010-02-02
Anonymous
No

Hi,

I have the following Problem (from a German math book for K12):
Given the following function f(x):=0.0007*s^1.874.
1. It is not possible to solve(f(x)=500,x)
Given t(x):=(f(x)-f(500))/(x-500)
2. It is not possible to calculate limit(t(x),x,500) or to approximate by t(499.99999999999999999). From a certain number of 9s, the result is wrong.
Given 1.5^x=34
3. It is not possible to solve the equation.

Discussion

  • Raymond Toy
    Raymond Toy
    2010-02-02

    1. Maxima converts the float number to rationals and is trying to solve 7/10000*s^(937/500). It seems that maxima did find the roots, but is taking a very long time to sort all 937 roots. This is a bug. If you want numerical results, then perhaps find_root is what you're looking for.

    2. That is due to the finite precision available with floating point. If you want to be able to do this with arbitrary precision use bfloats with enough digits. This is not a bug.

    3. Yes, maxima cannot solve this equation. That is a bug. But for numerical answers, maybe find_root is what you're looking for.

     
  • Thanks rtoy, but the bugs are causing problems. I, as a teacher, started to replace the TI Voyage 200, by maxima. The TI Voyage is very simply. You type solve and (almost) every equation will be solve. So maxima is one step back for my students. Ok, they are forced to think before they decide to solve an equation because they have to choose a function which is able to solve the equation, but, in my opinion, K12-stuff should be solved in a very simply way.
    Maybe this post helps to fix the bugs.
    To the programmers: Thanks for maxima

     
  • Raymond Toy
    Raymond Toy
    2010-03-15

    1. find_root(f(x)=500,x,0,10000) -> 1329.63
    2. limit(t(x),x,500) -> infinity. This is a bug. But t(499.99999999999999) is not a bug. 499.999999999999999 rounds to 500.0 so we get a division by zero error.
    3. find_root(1.5^x=34,x,1,10) -> 8.697...

    You wanted numerical results, so solve is not really what you want to use. find_root is better suited. The limit is problem. But note that if you replace the floating point numbers with rationals, maxima can evaluate the limit:

    f1(x) := 7*10^(-4)*x^(1874/1000)$
    t1(x):=(f1(x)-f1(500))/(x-500)$
    limit(t1(x),x,500) -> 6559/(5*2^(1063/250)*125^(563/500))

    I don't think there's anything wrong with maxima in any of these items.

     
  • Raymond Toy
    Raymond Toy
    2010-03-15

    Oops. Maxima should be able to solve 1.5^x=34 (or equivalently (3/2)^x=34).

     
  • 1.
    (%i1) solve(7/10000*x^(1+874/1000)=500,x),simp=false;
    (%o1) [x=(5000000/7)^(937/500)^(-1)]
    (%i2) ratsimp(%);
    (%o2) [x=5000000^(500/937)/7^(500/937)]
    (%i3) float(%), numer;
    (%o3) [x=1329.63071069307]
    2.
    (%i4) f(x):=7/10000*x^(1+874/1000);
    (%o4) f(x):=7/10000*x^(1+874/1000)
    (%i5) t(x):=(f(x)-f(500))/(x-500);
    (%o5) t(x):=(f(x)-f(500))/(x-500)
    (%i6) limit(t(x),x,500);
    (%o6) 6559/(5*2^(1063/250)*125^(563/500))
    (%i7) float(%), numer;
    (%o7) 0.29975567251994
    3.
    (%i8) eq:1.5^x=34;
    (%o8) 1.5^x=34
    (%i9) ratsimp(%);
    rat: replaced 1.5 by 3/2 = 1.5
    (%o9) 3^x/2^x=34
    (%i10) solve(eq,x),simp=false;
    rat: replaced 1.5 by 3/2 = 1.5
    (%o10) [x=log(34)/log(3/2)]
    (%i11) float(%),numer;
    (%o11) [x=8.697075171448409]