Complicated functions fail to keep plotting



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));