Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 1794
Image: ubuntu2004
1
def generator():
2
t = var("t")
3
y,yp,ypp = mi_vars("y","y'","y''")
4
5
# pick a,b for (D-a)(D-b)
6
a = randrange(1,5)*choice([-1,1])
7
b=a
8
while a==b:
9
b = randrange(1,5)*choice([-1,1])
10
# pick particular solution
11
c=a
12
while c in [a,b]:
13
c = choice([2,3,5])
14
d = randrange(1,4)*choice([-1,1])
15
ypart = choice([
16
d*t*exp(c*t),
17
d*sin(c*t),
18
d*cos(c*t),
19
])
20
k1 = var("k_1")
21
k2 = var("k_2")
22
ode = shuffled_equation(ypp-(a+b)*yp,a*b*y,-ypart.diff().diff()+(a+b)*ypart.diff()-a*b*ypart)
23
ode_sol = (y==k1*exp(a*t)+k2*exp(b*t)+ypart)
24
25
return {
26
"ode": ode,
27
"ode_sol": ode_sol,
28
}
29