Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
3774 views
ubuntu2004
1
def generator():
2
t = var("t")
3
s = var("s")
4
x = var("x")
5
y,yp,ypp = mi_vars("y","y'","y''")
6
d = dirac_delta
7
u = unit_step
8
9
def gen_delta():
10
"""
11
Generates a nice IVP involving delta(t-a)
12
"""
13
a = randrange(1,4)
14
b = randrange(1,4)
15
m = choice([-1,1])*randrange(1,5)
16
n=m
17
while n==m:
18
n = choice([-1,1])*randrange(1,5)
19
k=m*b^2
20
y_0=choice([-1,1])*randrange(1,6)
21
if randrange(0,2)==0:
22
y_0=0
23
else:
24
n=0
25
yp_0 = n*b
26
ode = shuffled_equation(ypp,b^2*y,-k*u(t-a))*randrange(2,4)
27
ly = (y_0*s+yp_0)/(s^2+b^2)+k*exp(-a*s)/(s*(s^2+b^2))
28
ly_simp = y_0*s/(s^2+b^2)+yp_0/(s^2+b^2)+m*exp(-a*s)/s-m*s*exp(-a*s)/(s^2+b^2)
29
partial_fractions = (1/(x^3+x*b^2)==(m/k)/x-(m*x/k)/(x^2+b^2))
30
sol = (y==y_0*cos(b*t)+n*sin(b*t)+m*u(t-a)-m*cos(b*(t-a))*u(t-a))
31
32
return {
33
"ode": ode,
34
"y0": y_0,
35
"yp0": yp_0,
36
"ly": ly,
37
"ly_simp": ly_simp,
38
"sol": sol,
39
"partial_fractions": partial_fractions
40
}
41
42
def gen_u():
43
"""
44
Generates a nice IVP involving u(t-a)
45
"""
46
a = randrange(1,4)
47
m = choice([-1,1])*randrange(1,5)
48
n=m
49
while n==m:
50
n = choice([-1,1])*randrange(1,5)
51
alpha = choice([-1,1])*randrange(1,5)
52
beta = choice([-1,1])*randrange(1,5)
53
k=alpha*(m-n)
54
yp_0 = beta*(m-n)
55
y_0=0
56
b=-m-n
57
c=m*n
58
ode = shuffled_equation(ypp,b*yp+c*y,-k*d(t-a))*randrange(2,4)
59
ly = (y_0*s+yp_0)/(s^2+b*s+c)+k*exp(-a*s)/(s^2+b*s+c)
60
ly_simp = beta/(s-m)-beta/(s-n)+exp(-a*s)*alpha/(s-m)-exp(-a*s)*alpha/(s-n)
61
partial_fractions = (1/(x^2+b*x+c)==(alpha/k)/(x-m)-(alpha/k)/(x-n))
62
sol = (y==beta*exp(m*t)-beta*exp(n*t)+alpha*exp(m*(t-a))*u(t-a)\
63
-alpha*exp(n*(t-a))*u(t-a))
64
65
return {
66
"ode": ode,
67
"y0": y_0,
68
"yp0": yp_0,
69
"ly": ly,
70
"ly_simp": ly_simp,
71
"sol": sol,
72
"partial_fractions": partial_fractions
73
}
74
75
return choice([gen_delta(),gen_u()])
76