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.
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.
Nobody/Anonymous
2010-02-02
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
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
2010-03-15
Oops. Maxima should be able to solve 1.5^x=34 (or equivalently (3/2)^x=34).
Aleksas Domarkas
2010-03-28
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]