spatimpoddict.update(dict(nu=cnu)) apprxl.append(comp_spatimepodgal(**spatimpoddict)) Kapprxl.append(apprxl) leglist.append('$K={0}$'.format(K)) fctdct = dict(abscissa=nutestlist.tolist(), datalist=Kapprxl, leglist=leglist) f = open(datastr, 'w') f.write(json.dumps(fctdct)) print 'results dumped into json:', datastr f.close() cpu.para_plot(**fctdct) if factest: f0, fe, nfs = .2, .8, 7 datastr = 'results/factest{0}{1}{2}K30'.format(f0, fe, nfs) faclist = np.linspace(f0, fe, nfs) if nfs == 7: # TODO: softcode the adaptivity towards fac=.5 faclist = np.array([.2, .35, .425, .5, .575, .65, .8]) K = 30 nuapprxl, leglist = [], [] for cnu in smallnutestlist: spatimpoddict.update(dict(nu=cnu)) apprxl = [] for cfac in faclist: hq = np.floor(cfac * K)
tmesh=tmesh, zini=inival, fbd=fbd, ftd=ftd, retaslist=True) outlist.append(sysout) return outlist # Riccati solution fbdict, ftdict = fop.solve_opt_ric(A=tA, B=tB, C=tC, tmesh=tmesh, gamma=gamma, beta=bzero, fpri=fpri, fdua=fdua, bt=tB.T) outlist = inivinipcheck(inilist, fbd=fbdict, ftd=ftdict, bmo=1./bzero) ylims = [0., 3.5] cpu.para_plot(tmesh, outlist, leglist=leglist, fignum=44, xlabel='time $t~[s]$', ylabel='trajectory $x_1~[m]$', ylims=ylims, tikzfile='{0}car_inivpert_Riccati.tikz'.format(ncar), title=None, legloc='lower right') # 'Trajektorie') # # direct solution outlist = inivinipcheck(inilist, fbd=None, ftd=forcefunc, bmo=1.) cpu.para_plot(tmesh, outlist, leglist=leglist, fignum=43, xlabel='time $t~[s]$', ylabel='trajectory $x_1~[m]$', ylims=ylims, tikzfile='{0}car_inivpert_direct.tikz'.format(ncar), title=None, legloc='lower right') # 'Trajektorie') if opticheck: def fone(t): return f[0]
tmeshl.append(tmesh[1:]) verrl.append(verr[1:]) perrl.append(perr[1:]) nswtchstr = 'N' + ''.join(str(e) for e in nswtchshortlist) legl.append('$\\mathsf{{Nts}}={0}$ (index-{1})'. format(Nts, method)) logger.info(nswtchstr + ': Nts={0}, m={1}, veint={2}, peint={3}'. format(Nts, method, verrint, perrint)) curptkl = [] for k in np.arange(1, len(nswtchshortlist)): jumpindx = k*(len(tmesh)-1)/len(nswtchshortlist) # an int !! curptkl.extend([jumpindx-1, jumpindx]) keeppointslist.append(curptkl) # markerl = ['s', '^', '.', '*', 'o', '+'] xticks = np.linspace(t0, tE, 5) ppltdict = dict(leglist=legl, xlabel='t', xticks=xticks, logscaley=2, usedefaultmarkers=True) cpu.para_plot(None, perrl, abscissal=tmeshl, fignum=11, title='pointwise error in $p$', tikzfile='p-pointwiseerror.tex', xlims=[t0, tE], downsample=50, keeppointslist=keeppointslist, **ppltdict) cpu.para_plot(None, verrl, abscissal=tmeshl, fignum=22, title='pointwise error in $q$', tikzfile='vel-pointwiseerror.tex', xlims=[t0, tE], downsample=50, **ppltdict)
except IOError: allersl, alllegsl = [], [] for nsnaps in nsnapsl: gpderr, pderr = [], [] for poddim in poddiml: # distance between and the indices of the snapshots ssdist = Nts/nsnaps ssinds = np.arange(0, Nts, ssdist).astype(int) gYappr = solve_podapprx(M, A, Ycheck, f, B, poddim, nsnaps, tmesh, genpod=True) Yappr = solve_podapprx(M, A, Ycheck[:, ssinds], f, B, poddim, nsnaps, tmesh, genpod=False) gerrM = pdu.timespace_diff_norm(tmesh, Y, gYappr, M) errM = pdu.timespace_diff_norm(tmesh, Y, Yappr, M) gpderr.append(gerrM) pderr.append(errM) allersl.extend([pderr, gpderr]) alllegsl.extend(['pod, $k={0}$'.format(nsnaps), 'genpod, $k={0}$'.format(nsnaps)]) jsfile = open(datajsn, mode='w') jsfile.write(json.dumps(dict(alllegsl=alllegsl, allersl=allersl))) jsfile.close() print 'saved pod genpod convdata to ' + datajsn cpu.para_plot(poddiml, allersl, leglist=alllegsl, logscaley=10, tikzfile='ksnpoddimgpdpd.tikz')
import json import matlibplots.conv_plot_utils as cpu # factest f0, fe, nfs = .2, .8, 7 datastr = 'results/factest{0}{1}{2}K30'.format(f0, fe, nfs) fjs = open(datastr) fctdct = json.load(fjs) fjs.close() cpu.para_plot(xlabel='% \\cfac', ylabel='% \\apprxer', title='(a)', logscaley=10, tikzfile='errvsfac.tikz', fignum=123, **fctdct) # nutest datastr = 'results/nutest0.01258925411790.0007943282347249K203040' fjs = open(datastr) fctdct = json.load(fjs) fjs.close() cpu.para_plot(xlabel='\\mu', ylabel='\\apprxer', title='(b)', logscaley=10, tikzfile='errvsnu.tikz', fignum=124, **fctdct)