def generator():1t = var("t")2y,yp,ypp = mi_vars("y","y'","y''")34# pick a,b for (D-a)(D-b)5a = randrange(1,5)*choice([-1,1])6b=a7while a==b:8b = randrange(1,5)*choice([-1,1])9# pick particular solution10c=a11while c in [a,b]:12c = choice([2,3,5])13d = randrange(1,4)*choice([-1,1])14ypart = choice([15d*t*exp(c*t),16d*sin(c*t),17d*cos(c*t),18])19k1 = var("k_1")20k2 = var("k_2")21ode = shuffled_equation(ypp-(a+b)*yp,a*b*y,-ypart.diff().diff()+(a+b)*ypart.diff()-a*b*ypart)22ode_sol = (y==k1*exp(a*t)+k2*exp(b*t)+ypart)2324return {25"ode": ode,26"ode_sol": ode_sol,27}2829