# my interpolation linf, l2 = [], [] linf_g, l2_g = [], [] xall = [] for line in file('quasi-random/niederreiter_2d.txt').readlines(): xall.append(map(float, line.strip().split())) xall = numpy.array(xall) * 2 - 1 # xall = 2./3 * (xall + 0.5*xall**3) xall *= 2 for n in n_list: x = xall[:n,:] fx, fpx = func(x) fz, sig = interp_nd(z, x, fx, compute_dfz=True) fz_g, sig_g = interp_nd(z, x, fx, None, x, fpx, compute_dfz=True) # no grad pylab.figure(figsize=(5,5)) pylab.plot(x[:,0], x[:,1], 'ok', mfc=None, markersize=3) pylab.contour(z1d, z1d, fz.reshape([nz,nz]), cc) pylab.axis('scaled'); pylab.axis([-2.1, 2.1, -2.1, 2.1]); pylab.xlabel('x'); pylab.ylabel('y') pylab.savefig('output/%s/random_%s_1d_%03d.png' % (CASE, CASE, n)) pylab.figure(figsize=(5,5)) pylab.plot(x[:,0], x[:,1], 'ok', mfc=None, markersize=3) pylab.clabel(pylab.contour(z1d, z1d, abs(fz-fze).reshape([nz,nz]), 10)) pylab.axis('scaled'); pylab.axis([-2.1, 2.1, -2.1, 2.1]); pylab.xlabel('x'); pylab.ylabel('y') pylab.savefig('output/%s/error_random_%s_1d_%03d.png' % (CASE, CASE, n)) # grad
pylab.savefig('output/%s/%s_exact.png' % (CASE, CASE)) # my interpolation linf, l2 = [], [] xall = [] for line in file('quasi-random/niederreiter_2d.txt').readlines(): xall.append(map(float, line.strip().split())) xall = numpy.array(xall) * 2 - 1 # xall = 2./3 * (xall + 0.5*xall**3) xall *= 2 for n in n_list: x = xall[:n,:] fx = func(x) fz, sig = interp_nd(z, x, fx, compute_dfz=True) pylab.figure(figsize=(5,5)) pylab.plot(x[:,0], x[:,1], 'ok', mfc=None) pylab.contour(z1d, z1d, fz.reshape([nz,nz]), cc) pylab.axis('scaled'); pylab.axis([-2.1, 2.1, -2.1, 2.1]); pylab.savefig('output/%s/random_%s_1d_%03d.png' % (CASE, CASE, n)) linf.append(abs(fz-fze).max()) l2.append(sqrt(((fz-fze)**2).sum() / z.size)) print n, linf[-1], l2[-1] pylab.figure(figsize=(5,3)) pylab.semilogy(n_list, linf, ':ok') pylab.semilogy(n_list, l2, '-ok') pylab.savefig('output/%s/%s_convergence_random.png' % (CASE, CASE))
n_list = range(8, 128, 8) y = linspace(-5, 5, 250).reshape([250,1]) fye = func(y).reshape([250]) pylab.figure(figsize=(5,3)) pylab.plot(y, fye, '-k') pylab.ylim([fye.min()-0.2*(fye.max()-fye.min()), \ fye.max()+0.2*(fye.max()-fye.min())]) pylab.savefig('output/%s/%s_exact.png' % (CASE, CASE)) # my interpolation linf, l2 = [], [] for n in n_list: x = linspace(-5, 5, n).reshape([n,1]) fx = func(x).reshape([n]) fy, sig = interp_nd(y, x, fx, compute_dfz=True) fy = fy.reshape([fy.size]) pylab.figure(figsize=(5,3)) pylab.plot(y, fye, '--k') pylab.plot(y, fy, 'k') # pylab.plot(y, fy + sig, ':b') # pylab.plot(y, fy - sig, ':b') # pylab.plot(y, fy_l, '-.g') pylab.plot(x, fx, 'ok') pylab.ylim([fye.min()-0.2*(fye.max()-fye.min()), \ fye.max()+0.2*(fye.max()-fye.min())]) pylab.savefig('output/%s/uniform_%s_nd1d_%03d.png' % (CASE, CASE, n)) linf.append(abs(fy-fye).max()) l2.append(sqrt(((fy-fye)**2).sum() / y.size)) print n, linf[-1], l2[-1]