Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Views: 1794
Image: ubuntu2004
1
def generator():
2
t = var("t")
3
4
def trig_ivp(y,yp,ypp):
5
# pick a for D^2+a^2
6
a = randrange(2,11)
7
# pick particular solution
8
k1 = randrange(-5,6)
9
k2 = k1
10
while k2==k1:
11
k2 = randrange(-5,6)
12
ode = shuffled_equation(ypp,a^2*y)
13
ivp_sol = (y == k1*sin(a*t)+k2*cos(a*t))
14
iv1 = k2
15
iv2 = a*k1
16
return {
17
"ode": ode,
18
"iv1": iv1,
19
"iv2": iv2,
20
"ivp_sol": ivp_sol,
21
"var": y,
22
}
23
24
def exp_ivp(y,yp,ypp):
25
# pick a,b for (D-a)(D-b)
26
a = randrange(1,6)*choice([-1,1])
27
b=a
28
while a==b:
29
b = randrange(1,6)*choice([-1,1])
30
# pick particular solution
31
k1 = randrange(-5,6)
32
k2 = k1
33
while k2==k1:
34
k2 = randrange(-5,6)
35
ode = shuffled_equation(ypp,-(a+b)*yp,a*b*y)
36
ivp_sol = (y == k1*exp(a*t)+k2*exp(b*t))
37
iv1 = k1+k2
38
iv2 = a*k1+b*k2
39
return {
40
"ode": ode,
41
"iv1": iv1,
42
"iv2": iv2,
43
"ivp_sol": ivp_sol,
44
"var": y,
45
}
46
47
x,xp,xpp = mi_vars("x", "x'", "x''")
48
y,yp,ypp = mi_vars("y", "y'", "y''")
49
ivps = choice([
50
[trig_ivp(x,xp,xpp),exp_ivp(y,yp,ypp)],
51
[exp_ivp(x,xp,xpp),trig_ivp(y,yp,ypp)],
52
])
53
54
return {"ivps": ivps}
55
56
57