summaryrefslogtreecommitdiff
path: root/FSF-2020/calculus-of-several-variables/integrals-of-multivariable-functions/double-integrals/non_rect_region.py
diff options
context:
space:
mode:
Diffstat (limited to 'FSF-2020/calculus-of-several-variables/integrals-of-multivariable-functions/double-integrals/non_rect_region.py')
-rw-r--r--FSF-2020/calculus-of-several-variables/integrals-of-multivariable-functions/double-integrals/non_rect_region.py154
1 files changed, 154 insertions, 0 deletions
diff --git a/FSF-2020/calculus-of-several-variables/integrals-of-multivariable-functions/double-integrals/non_rect_region.py b/FSF-2020/calculus-of-several-variables/integrals-of-multivariable-functions/double-integrals/non_rect_region.py
new file mode 100644
index 0000000..793a000
--- /dev/null
+++ b/FSF-2020/calculus-of-several-variables/integrals-of-multivariable-functions/double-integrals/non_rect_region.py
@@ -0,0 +1,154 @@
+from manimlib.imports import *
+
+class AreaUnderCurve(GraphScene):
+ CONFIG = {
+ "x_min" : -1,
+ "x_max" : 8,
+ "y_min" : -1,
+ "y_max" : 5,
+ "y_axis_label": "$y$",
+ "x_tick_frequency" : 1,
+ "y_tick_frequency" : 1,
+ "x_labeled_nums": list(np.arange(-1, 9)),
+ "y_labeled_nums": list(np.arange(-1, 6)),
+ "y_axis_height":5.5,
+ "graph_origin": ORIGIN+4*LEFT+2.5*DOWN,
+ }
+
+ def construct(self):
+ X = RIGHT*self.x_axis_width/(self.x_max- self.x_min)
+ Y = UP*self.y_axis_height/(self.y_max- self.y_min)
+
+ sofar_text=TextMobject(r"So far we have integrated over \\ rectangular regions")
+ self.play(Write(sofar_text))
+ self.play(sofar_text.to_edge,UP)
+
+ self.setup_axes(animate=False)
+
+ rect= self.get_graph(
+ lambda x : 3,
+ x_min = 0,
+ x_max = 5,
+ color = GREEN)
+
+ rect_region = self.get_riemann_rectangles(
+ rect,
+ x_min = 0,
+ x_max = 5,
+ dx =.01,
+ start_color = GREEN,
+ end_color = GREEN,
+ fill_opacity = 0.75,
+ stroke_width = 0,
+ )
+
+ self.play(ShowCreation(rect_region))
+ self.wait(.5)
+
+ rect_int=TextMobject(r"Here the integration limits are set as").to_edge(UP)
+ rect_lim=TextMobject(r"$$\int_{x=0}^{5}\int_{y=0}^{3}$$").next_to(rect_int,DOWN)
+ const_text=TextMobject(r"$\longleftarrow $ \textsf the limits are\\ constant values").next_to(rect_lim,RIGHT)
+
+ self.play(ReplacementTransform(sofar_text,rect_int))
+ self.wait(1.5)
+ self.play(FadeIn(rect_lim))
+ self.wait(2)
+ self.play(Write(const_text))
+ self.wait(2)
+ self.play(FadeOut(rect_int), FadeOut(rect_lim),FadeOut(const_text))
+
+
+ non_rect_text=TextMobject(r"Now we see how to integrate over \\ non-rectangular regions")
+ non_rect_text.to_edge(UP)
+ self.play(Write(non_rect_text))
+ self.wait(1.5)
+ self.play(FadeOut(rect_region))
+
+ c1= self.get_graph(
+ lambda x : x**2/4,
+ x_min = 0,
+ x_max = 4,
+ color = RED)
+
+ c1_region = self.get_riemann_rectangles(
+ c1,
+ x_min = 0,
+ x_max = 4,
+ dx =.01,
+ start_color = BLUE,
+ end_color = BLUE,
+ fill_opacity = 0.75,
+ stroke_width = 0,
+ )
+ self.add(c1,c1_region)
+ # self.wait(2)
+
+ c2= self.get_graph(
+ lambda x :12-2*x,
+ x_min = 4,
+ x_max = 6,
+ color = RED)
+
+ c2_region = self.get_riemann_rectangles(
+ c2,
+ x_min = 4,
+ x_max = 6,
+ dx =.01,
+ start_color = BLUE,
+ end_color = BLUE,
+ fill_opacity = .75,
+ stroke_width = 0,
+ )
+ self.add(c2_region,c2)
+ self.wait(1.5)
+ c=VGroup(*[c1,c2])
+
+ no_func_text=TextMobject(r"The whole region can't be expressed as\\ bounded by a single $f(x)$").next_to(c2,UP,buff=LARGE_BUFF)
+
+ self.play(ReplacementTransform(non_rect_text,no_func_text))
+ self.wait(1)
+ self.play(Indicate(c))
+ self.wait(2)
+
+ div_region_text=TextMobject(r"So the region is divided into two").next_to(c2,UP,buff=MED_LARGE_BUFF)
+ self.play(ReplacementTransform(no_func_text,div_region_text))
+
+ c2.set_color(YELLOW)
+ self.play(c2_region.set_color,YELLOW)
+ c1_text=TextMobject("$\dfrac{x^2}{4}$").next_to(c1,IN)
+ c2_text=TextMobject("$12-2x$").next_to(c2,IN+2*X)
+ c_text=VGroup(*[c1_text,c2_text])
+
+ self.play(FadeIn(c_text))
+ self.wait(.4)
+ self.play(Indicate(c1),Indicate(c1_text))
+ self.play(Indicate(c2),Indicate(c2_text))
+
+ easy_text=TextMobject(r"Now the limis can be set easily").next_to(c2,UP,buff=.5)
+ self.play(ReplacementTransform(div_region_text,easy_text))
+
+ c1_int=TextMobject(r"$$\int_{x=0}^{4}\int_{y=0}^{\dfrac{x^2}{4}}$$").next_to(c1,IN).shift(.5*(-X+1.3*Y))
+ c2_int=TextMobject(r"$$\int_{x=4}^{6}\int_{y=0}^{12-2x}$$").next_to(c2,IN+X)
+
+ self.play(ReplacementTransform(c1_text,c1_int),ReplacementTransform(c2_text,c2_int))
+ self.wait(2)
+
+ total_int=TextMobject(r"The total integraton= ").to_edge(UP)
+ plus=TextMobject("$$+$$").move_to(self.graph_origin+4*X+4.8*Y)
+ self.play(ReplacementTransform(easy_text,total_int))
+ self.play(c2_region.set_color,BLUE)
+ self.play(c1_int.next_to,c1,.1*UP, c2_int.next_to,plus,RIGHT, FadeIn(plus))
+
+ region=VGroup(*[c1_region,c2_region])
+ region.set_color(GREEN)
+ self.play(ShowCreation(region))
+ self.wait(3)
+
+
+
+#uploaded by Somnath Pandit.FSF2020_Double_Integral
+
+
+
+
+