%y

w-nullcline

w-nullcline

x

y

step = 1 (slider from 1 to 5, step 1)
showannulus: step ≥ 5
A_sub = (0.45164532250582384, -0.537937154300257)
Ipt_sub = (0.04161426087844835, -0.45687775516156726)
threshold = 0.03
a: 0.1
c: 1.4
I: 0.19
ymax = 2.558531892797691
ymin = -2.078065737935362
yscale: ymax - ymin
threshold_y: (threshold * yscale)
Ipt = DynamicCoordinates(Ipt_sub, 0, If[abs(y(Ipt_sub) - I)  <  threshold_y, Max[ymin, Min[ymax, I]], Max[ymin, Min[ymax, y(Ipt_sub)]]])
cubicnull(x) = (((c * x) * (x - a)) * (1 - x)) + y(Ipt)
Pvn2_sub = (1.5555751038102963, 0.013266759842833261)
Pvn1_sub = (0.6408904278723049, -0.002945119984904688)
xmax = 3.1956993503197983
xmin = -2.870657638372398
xscale: xmax - xmin
threshold_x: (threshold * xscale)
alpha: 0.9
wnull(x) = (x * alpha)
Pvn2 = DynamicCoordinates(Pvn2_sub, Max[xmin, Min[xmax, x(Pvn2_sub)]], If[abs(y(Pvn2_sub) - wnull(x(Pvn2_sub)))  <  threshold_y, Max[ymin, Min[ymax, wnull(x(Pvn2_sub))]], Max[ymin, Min[ymax, y(Pvn2_sub)]]])
Pvn1 = DynamicCoordinates(Pvn1_sub, Max[xmin, Min[xmax, x(Pvn1_sub)]], If[abs(y(Pvn1_sub) - wnull(x(Pvn1_sub)))  <  threshold_y, Max[ymin, Min[ymax, wnull(x(Pvn1_sub))]], Max[ymin, Min[ymax, y(Pvn1_sub)]]])
nullline = Line(Pvn1, Pvn2)
E = Intersect(cubicnull, nullline, 1)
A = DynamicCoordinates(A_sub, If[Distance[A_sub, E]  <  sqrt(threshold_x^(2) + threshold_y)^(2), x(E), Min[xmax, Max[xmin, x(A_sub)]]], If[Distance[A_sub, E]  <  sqrt(threshold_x^(2) + threshold_y)^(2), y(E), Min[ymax, Max[ymin, y(A_sub)]]])
E3_sub = (-0.8415295641651297, -0.554149034127995)
E2_sub = (0.5778087260834779, 0.24023307743116457)
E1_sub = (-0.42098488557294966, -0.6352084332666847)
B_sub = PointIn(Circle[A, 5])
P4_sub = (-0.3263623328897092, -0.7973272315440643)
P3_sub = (-0.3263623328897092, -1.153988587754299)
P2_sub = (-0.7574206284466937, -1.153988587754299)
P1_sub = (-0.7574206284466937, -0.7973272315440643)
LL = Corner(1)
UR = Corner(3)
xlabeldisplayed: "" + (LaTeX[xlabel]) + ""
ylabeldisplayed: "" + (LaTeX[ylabel]) + ""
eps: 0.05
P1 = DynamicCoordinates(P1_sub, Max[xmin, Min[xmax, x(P1_sub)]], Max[ymin, Min[ymax, y(P1_sub)]])
P2 = DynamicCoordinates(P2_sub, Max[xmin, Min[xmax, x(P2_sub)]], Max[ymin, Min[ymax, y(P2_sub)]])
P3 = DynamicCoordinates(P3_sub, Max[xmin, Min[xmax, x(P3_sub)]], Max[ymin, Min[ymax, y(P3_sub)]])
P4 = DynamicCoordinates(P4_sub, Max[xmin, Min[xmax, x(P4_sub)]], Max[ymin, Min[ymax, y(P4_sub)]])
poly1, a_1, b, c_1, d = Polygon(P1, P2, P3, P4)
B = DynamicCoordinates(B_sub, Max[xmin, Min[xmax, x(B_sub)]], Max[ymin, Min[ymax, y(B_sub)]])
e = Circle(A, B)
rectr = Max(x(P1), x(P3))
rectl = Min(x(P1), x(P3))
rectt = Max(y(P1), y(P3))
rectb = Min(y(P1), y(P3))
circr = Distance(A, B)
h(x, y) = (x  <  rectr) ∧ (x > rectl) ∧ (y  <  rectt) ∧ (y > rectb) ∧ ((x - x(A))^(2) + (y - y(A))^(2) > circr^(2))
middlecorrect: A ≟ E ∧ showannulus
cubic_vnull = false
line_wnull = true
vnull(x) = (((c * x) * (x - a)) * (1 - x)) + I
determinenullclines: step ≟ 1
vecmult: 3
vecdirs: (vecmult * {(threshold_x, 0), (0, threshold_y), ((-threshold_x), 0), (0, (-threshold_y)), (threshold_x / sqrt(2), threshold_y / sqrt(2)), (threshold_x / sqrt(2), ((-threshold_y)) / sqrt(2)), (((-threshold_x)) / sqrt(2), ((-threshold_y)) / sqrt(2)), (((-threshold_x)) / sqrt(2), threshold_y / sqrt(2))})
cubicnullvisible(x) = If[x(Root[cubicnull(x) - ymax]) ≤ x ≤ x(Root[cubicnull(x) - ymin]), cubicnull]
P1onVN = Point(cubicnullvisible)
P2onVN = Point(cubicnullvisible)
visibleregion, f, g, i, j = Polygon((xmin, ymin), (xmin, ymax), (xmax, ymax), (xmax, ymin))
nulllineendpoints: {Intersect[nullline, visibleregion]}
nulllinesegment = Segment(Element[nulllineendpoints, 1], Element[nulllineendpoints, 2])
P1onWN = Point(nulllinesegment)
P2onWN = Point(nulllinesegment)
P1onVN_h = Point(P1onVN + vecdirs)
P2onVN_h = Point(P2onVN + vecdirs)
P2onWN_h = Point(P2onWN + vecdirs)
P1onWN_h = Point(P1onWN + vecdirs)
v1onVN = Vector(P1onVN, P1onVN_h)
v2onVN = Vector(P2onVN, P2onVN_h)
v2onWN = Vector(P2onWN, P2onWN_h)
v1onWN = Vector(P1onWN, P1onWN_h)
A1 = PointIn(visibleregion)
A2 = PointIn(visibleregion)
A3 = PointIn(visibleregion)
A4 = PointIn(visibleregion)
A1_h = Point(A1 + vecdirs)
A2_h = Point(A2 + vecdirs)
A3_h = Point(A3 + vecdirs)
A4_h = Point(A4 + vecdirs)
v1 = Vector(A1, A1_h)
v2 = Vector(A2, A2_h)
v3 = Vector(A3, A3_h)
v4 = Vector(A4, A4_h)
n_e = 0 (slider from 0 to 3, step 1)
determineequilibria: step ≟ 2
E1 = DynamicCoordinates(E1_sub, If[Distance[E1_sub, E]  <  sqrt(threshold_x^(2) + threshold_y)^(2), x(E), Min[xmax, Max[xmin, x(E1_sub)]]], If[Distance[E1_sub, E]  <  sqrt(threshold_x^(2) + threshold_y)^(2), y(E), Min[ymax, Max[ymin, y(E1_sub)]]])
E1shadow: E1
E2 = DynamicCoordinates(E2_sub, If[Distance[E2_sub, E]  <  sqrt(threshold_x^(2) + threshold_y)^(2), x(E), Min[xmax, Max[xmin, x(E2_sub)]]], If[Distance[E2_sub, E]  <  sqrt(threshold_x^(2) + threshold_y)^(2), y(E), Min[ymax, Max[ymin, y(E2_sub)]]])
E2shadow: E2
E3 = DynamicCoordinates(E3_sub, If[Distance[E3_sub, E]  <  sqrt(threshold_x^(2) + threshold_y)^(2), x(E), Min[xmax, Max[xmin, x(E3_sub)]]], If[Distance[E3_sub, E]  <  sqrt(threshold_x^(2) + threshold_y)^(2), y(E), Min[ymax, Max[ymin, y(E3_sub)]]])
E3shadow: E3
showequilibria: step ≥ 2
moveregionvecs: step ≟ 3
showregionvecs: step ≥ 3
movenullvectors: step ≟ 4
shownullvectors: step ≥ 4
vector1VNcorrectangle: shownullvectors ∧ x(P1onVN) ≟ x(P1onVN_h) ∧ (((y(P1onVN_h) - y(P1onVN)) * (x(P1onVN) - x(E))) > 0)
vector2VNcorrectangle: shownullvectors ∧ x(P2onVN) ≟ x(P2onVN_h) ∧ (((y(P2onVN_h) - y(P2onVN)) * (x(P2onVN) - x(E))) > 0)
vector1correctangle: showregionvecs ∧ ((y(A1) > vnull(x(A1))) ∧ (x(A1_h)  <  x(A1)) ∨ (y(A1)  <  vnull(x(A1))) ∧ (x(A1_h) > x(A1))) ∧ ((y(A1) > wnull(x(A1))) ∧ (y(A1_h)  <  y(A1)) ∨ (y(A1)  <  wnull(x(A1))) ∧ (y(A1_h) > y(A1)))
vector2correctangle: showregionvecs ∧ ((y(A2) > vnull(x(A2))) ∧ (x(A2_h)  <  x(A2)) ∨ (y(A2)  <  vnull(x(A2))) ∧ (x(A2_h) > x(A2))) ∧ ((y(A2) > wnull(x(A2))) ∧ (y(A2_h)  <  y(A2)) ∨ (y(A2)  <  wnull(x(A2))) ∧ (y(A2_h) > y(A2)))
vector3correctangle: showregionvecs ∧ ((y(A3) > vnull(x(A3))) ∧ (x(A3_h)  <  x(A3)) ∨ (y(A3)  <  vnull(x(A3))) ∧ (x(A3_h) > x(A3))) ∧ ((y(A3) > wnull(x(A3))) ∧ (y(A3_h)  <  y(A3)) ∨ (y(A3)  <  wnull(x(A3))) ∧ (y(A3_h) > y(A3)))
vector4correctangle: showregionvecs ∧ ((y(A4) > vnull(x(A4))) ∧ (x(A4_h)  <  x(A4)) ∨ (y(A4)  <  vnull(x(A4))) ∧ (x(A4_h) > x(A4))) ∧ ((y(A4) > wnull(x(A4))) ∧ (y(A4_h)  <  y(A4)) ∨ (y(A4)  <  wnull(x(A4))) ∧ (y(A4_h) > y(A4)))
vector1WNcorrectangle: shownullvectors ∧ y(P1onWN) ≟ y(P1onWN_h) ∧ (((x(P1onWN_h) - x(P1onWN)) * (y(P1onWN) - y(E)))  <  0)
vector2WNcorrectangle: shownullvectors ∧ y(P2onWN) ≟ y(P2onWN_h) ∧ (((x(P2onWN_h) - x(P2onWN)) * (y(P2onWN) - y(E)))  <  0)
vectorsVNcorrectlocations: shownullvectors ∧ (((x(P1onVN) - x(E)) * (x(P2onVN) - x(E)))  <  0)
vectorsWNcorrectlocations: shownullvectors ∧ (((x(P1onWN) - x(E)) * (x(P2onWN) - x(E)))  <  0)
region1(x, y) = (y > vnull(x)) ∧ (y  <  wnull(x))
region2(x, y) = (y > vnull(x)) ∧ (y > wnull(x))
region3(x, y) = (y  <  vnull(x)) ∧ (y > wnull(x))
region4(x, y) = (y  <  vnull(x)) ∧ (y  <  wnull(x))
regionA1 = If(IsInRegion[A1, region1], 1, If[IsInRegion[A1, region2], 2, If[IsInRegion[A1, region3], 3, If[IsInRegion[A1, region4], 4, 0]]])
regionA2 = If(IsInRegion[A2, region1], 1, If[IsInRegion[A2, region2], 2, If[IsInRegion[A2, region3], 3, If[IsInRegion[A2, region4], 4, 0]]])
regionA3 = If(IsInRegion[A3, region1], 1, If[IsInRegion[A3, region2], 2, If[IsInRegion[A3, region3], 3, If[IsInRegion[A3, region4], 4, 0]]])
regionA4 = If(IsInRegion[A4, region1], 1, If[IsInRegion[A4, region2], 2, If[IsInRegion[A4, region3], 3, If[IsInRegion[A4, region4], 4, 0]]])
A2indifferentregion: showregionvecs ∧ (regionA2 ≠ regionA1)
A3indifferentregion: showregionvecs ∧ (regionA3 ≠ regionA1) ∧ (regionA3 ≠ regionA2)
A4indifferentregion: showregionvecs ∧ (regionA4 ≠ regionA1) ∧ (regionA4 ≠ regionA2) ∧ (regionA4 ≠ regionA3)
nulllinecorrect: nullline ≟ (y = wnull(x))
nullcubiccorrect: y(Ipt) ≟ I
nEscorrect: showequilibria ∧ n_e ≟ 1
Ecorrect: E1 ≟ E ∧ showequilibria
E1type = 0
E2type = 2
E3type = 3
E1stable = false
E2stable = true
E3stable = false
E1label = If(E1type ≟ 1, "SN", If[E1type ≟ 2, "SS", If[E1type ≟ 3, "C", If[E1type ≟ 4, "US", If[E1type ≟ 5, "UN", "SD"]]]])
E2label = If(E2type ≟ 1, "SN", If[E2type ≟ 2, "SS", If[E2type ≟ 3, "C", If[E2type ≟ 4, "US", If[E2type ≟ 5, "UN", "SD"]]]])
E3label = If(E3type ≟ 1, "SN", If[E3type ≟ 2, "SS", If[E3type ≟ 3, "C", If[E3type ≟ 4, "US", If[E3type ≟ 5, "UN", "SD"]]]])
Etype: 5
Ecorrecttype: showequilibria ∧ n_e ≟ 1 ∧ E1type ≟ Etype
middlesmall: showannulus ∧ (circr  <  (2 * sqrt(threshold_x^(2) + threshold_y^(2)))) ∧ middlecorrect
rectbotcorrect: showannulus ∧ ((rectl * alpha) - rectb > 0) ∧ ((rectr * alpha) - rectb > 0)
rectleftcorrect: showannulus ∧ ((((c * rectl) * (rectl - a)) * (1 - rectl)) + I - rectb > 0) ∧ ((((c * rectl) * (rectl - a)) * (1 - rectl)) + I - rectt > 0)
rectrightcorrect: showannulus ∧ ((((c * rectr) * (rectr - a)) * (1 - rectr)) + I - rectb  <  0) ∧ ((((c * rectr) * (rectr - a)) * (1 - rectr)) + I - rectt  <  0)
recttopcorrect: showannulus ∧ ((rectl * alpha) - rectt  <  0) ∧ ((rectr * alpha) - rectt  <  0)
show_correct = false