Example #1
0
import numpy as np
from time import time

import sys
sys.path.append('../')

from density_sdsos import compute_reach_picos, compute_reach_mosek

from plot_2d import *

# Initialize symbolic variables
t, x1, x2, d = sp.symbols('t,x1,x2,d')

tmax = 1
data = {'t_var': [t],
		'x_vars': [x1, x2],
		'd_vars': [],
		'maxdeg_rho' : 8, 
		'rho_0': 0.5 - x1**2 - x2**2,
		'vector_field': [t*x2, -x1], 
		'domain': [2-x1**2, 2-x2**2,t*(tmax-t)],
		'tol': 1e-5,
		'r': 0}

# (rho, error) = compute_reach_picos(data, solver = 'mosek')
(rho, error) = compute_reach_mosek(data)

print "Density found: rho(t,x1,x2) = ", rho
print "Error:", error

animate([t,x1,x2], [t*x2, -x1], rho, error, 1.1*tmax)
Example #2
0
	    }

plt.figure()

max_deg = 16
min_deg = 6
step = 2

for (i, maxdeg) in enumerate(range(min_deg,max_deg,step)):

	print "Solving for degree ", maxdeg

	data['maxdeg_rho'] = maxdeg

	t0 = time()
	(sol, error) = compute_reach_mosek(data)
	t1 = time()

	print "Solved in ", t1-t0, ", error is ", error

	sol_fcn = lambdify([t,x1], sol)

	sol_fcn_lower = lambdify([t,x1], sol-t*error)
	sol_fcn_upper = lambdify([t,x1], sol+t*error)

	T, X = np.mgrid[-0:1:1000j, -1.2:1.2:1000j]
	plt.contour(X, T, sol_fcn_upper(T,X), levels=[0.], colors=[plt.get_cmap('autumn', (max_deg-min_deg)/step)(i)] )
	plt.contour(X, T, sol_fcn_lower(T,X), levels=[0.], colors=[plt.get_cmap('autumn', (max_deg-min_deg)/step)(i)] )

# plot DE solution
vf = lambdify([t,x1], data['vector_field'])