A problem about numerical precision
- To: mathgroup at smc.vnet.net
- Subject: [mg52609] A problem about numerical precision
- From: Guofeng Zhang <guofengzhang at gmail.com>
- Date: Sat, 4 Dec 2004 04:07:48 -0500 (EST)
- Reply-to: Guofeng Zhang <guofengzhang at gmail.com>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, I met one problem when I do some iteration: By increasing numerical precision, the results are so different from the original one! I don't know what went wrong, and hope to get some answers. The code is delta = 1/100; a = 9/10; b = -3*1.4142135623730950/10; A = { {1,0}, {b,a} }; B= { {-1,1}, {-b,b} }; f[v_,x_] := If[ Abs[ (10^20)*v-(10^20)*x]>(10^20)*delta, 1, 0 ]; M = 3000; it = Table[0, {i,M}, {j,2} ]; it[ [1] ] = { -delta/2, (a+b)*(-delta/2) }; For[ i=1, i<M, it[ [i+1]] = A.it[[i]]+f[ it[ [i,1] ], it[ [i,2] ] ]*B.it[ [i] ]; i++ ]; temp = Take[it, -1000]; ListPlot[ temp ]; By evaluating this, I got an oscillating orbit. I got the same using another program. However, if I increase the numerical precision by using b = -3*1.4142135623730950``200/10; to substitute the original b, the trajectory would converge to a fixed point instead of wandering around! I don't know why. I am hoping for suggestions. Thanks a lot. Guofeng
- Follow-Ups:
- Re: A problem about numerical precision
- From: DrBob <drbob@bigfoot.com>
- Re: A problem about numerical precision