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)
Exemple #4
0
    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)