Subject: Complicated functions fail to keep plotting
From: Richard Hennessy
Date: Sun, 13 Apr 2008 23:18:11 -0400
The eval_string does not work. To many points probably. The stringout send the output to text files which I plotted using my own program. (Not Lisp).
Does anyone know how to do this?
load(draw);
fpprec:32;
for e:0 thru 600 do
block(En:e*50/600,k:2/3,m:2,hbar:1,c[-2,e]:0,c[-4,e]:0,c[0,e]:1,
for n : 2 thru 400 step 2
do c[n,e]:bfloat((c[n-6,e]*k^2*m^2-2*c[n-2,e]*En*m)/(n*(n-1)*hbar^2)),
f[e](x):=min(2.5, block([p,i,xf],xf:bfloat(1),p:c[0,e], for i : 1 thru 200 do (xf:xf*x*x, p:p+c[2*i,e]*xf), p)^2));
str:concat("explicit(f[",string(0),"]","(x),x,-4,4,y,0,0)");
for i: 1 thru 20 do str:concat(str,",explicit(f[",string(i),"](x),x,-4,4,y,",string(i/600*50),",",string(i/600*50),")");
str1:concat("draw3d(", str, ",yrange=[0,50]," ,
"user_preamble = \"set title 'Anharmonic Potential m k^2 x^4 (600 by 600) First 100 Terms'; set xlabel 'Psi^2'; set ylabel 'Energy';set pm3d;set pm3d map;unset surf\")$")$
showtime:true;
'eval_string(str1);
for e : 0 thru 600 do stringout(concat("c:/rich/plist", string(e), ".txt"), makelist([(x-300)/300*4,e/600*50,f[e]((x-300)/300*4)], x, 1, 600));