Group Abstract Group Abstract

Message Boards Message Boards

[WSG25] Daily Study Group: Introduction to Calculus

A Wolfram U Daily Study Group on "Introduction to Calculus" begins on Monday, August 11, 2025.

Join a cohort of fellow mathematics enthusiasts to learn about the fundamentals of calculus from the Introduction to Calculus ebook by John Clark and myself.

enter image description here

Our topics will include functions and limits, differential and integral calculus, and practical applications of calculus.

The study group will be led by expert Wolfram U instructors @Luke Titus and @Shenghui Yang, and I will stop by occasionally to check in with the group. You will have a lot of fun learning with us!

No prior Wolfram Language experience is required.

Please feel free to use this thread to collaborate and share ideas, materials and links to other resources with fellow learners.

Dates

August 11-August 29, 2025, 11am-12pm CT (4-5pm GMT)

REGISTER HERE

enter image description here

POSTED BY: Devendra Kapadia
16 Replies

please discard.

POSTED BY: Shenghui Yang

Having said that, here's a Lissajous code. Replace the first two lines in my original code with the following:

lj = {Sin[5 t + Pi/2], Sin[2 t]} // TrigToExp // ReplaceAll[t -> I*Log[z]];
f[x_, y_] = First@GroebnerBasis[{x, y} - lj, {x, y}, {z}]; 
boundsArray = {{-1, 1}, {-1, 1}};

You can replace {Sin[5 t + Pi/2], Sin[2 t]} with your favorite Lissajous parametrization — unless Mathematica chokes on it. In the above example, you see no tangents of slope 0. It's one of those problems I alluded to that I don't have time for; you have to put in checks and fixes for the various issues that might arise.

POSTED BY: Michael Rogers

Hi Gerald,

It's not entirely straightforward to me. I was rather surprised that Mathematica found Shenghui's example so easy to solve. In general, you have to worry about unbounded curves, curves with multiple loops, self-intersecting curves (like Lissajous) and other singularities, and so on. Parametric has to be treated differently than implicit, and converting from one form to the other is not always easy.

In general, each example needs to be worked on and tweaked. One might try to simplify some step, like fixing the bounding rectangle. Then one has to find examples that can be shown in the chosen rectangle. It's more work than I can put into it right now.

Plus, for me, figuring out how to do the mathematics and how to express the mathematics in WL is the interesting bit. If that's how you feel, I suggest you take one of your examples and try to work it up. If you get stuck, post a question on the main community site so others will see it. Then I or someone else might be able to give you help. That way, you build your own knowledge.

POSTED BY: Michael Rogers
Posted 1 day ago

Michael, Thank you so much! That is great! I was thinking that something else that would be nice to have is a parameterization of the curve with a second slider to move a point around it, perhaps showing the tangent line at that point in red with all the other parallel tangents in black. (Your slider determines all tangents with a given slope. That would need to be turned off when using the second slider.)

Can you extend your program to handle the seven examples with tangents that Shenghui used during the lesson, perhaps using a selection feature to choose among those eight functions (or others)? [I tried just replacing the definition of f with the code for some of those examples (replacing "==" with "-"), and it crashed with error messages.]

Can you extend your program to handle the Lissajou curves that I asked about in the original post? Those might need sliders (with just a few selected values) that are constructed to limit the complexity of the curves, so that you wouldn't end up with a multitude of parallel tangents.

POSTED BY: Gerald Oberg
POSTED BY: Devendra Kapadia

Here's an applet that builds on @Shenghui Yang's example. It finds all the tangents with a given slope. I also used an exact solver instead of a numerical one, for variety's sake. I'm quite familiar with Wolfram Language, and I apologize if some of the functions I used are a little further along your personal learning curve for WL.

f[x_, y_] := x^2 + x*Sin[4*y] + 3 y^2 - 7 + Cos[3*x];
(* there are powerful algorithms for solving transcendental equations
   over bounded domains, so we'll help Solve[] out with the following *)
boundsArray = RegionBounds[ImplicitRegion[f[x, y] == 0, {x, y}]];
boundsArray = boundsArray /. x_Real :> Sign[x] Ceiling[Abs[x] + 0.01, 1/128]; (* pad bounds a bit *)
boundsIneqs = Replace[boundsArray,
  {{x1_, x2_}, {y1_, y2_}} :> x1 < x < x2 && y1 < y < y2];
(* pre-compute plot to speed up Manipulate[] *)
curvePlot = Replace[boundsArray,
   {{x1_, x2_}, {y1_, y2_}} :> ContourPlot[f[x, y] == 0, {x, x1, x2}, {y, y1, y2}]];
(* Find all tangents of a given slope *)
Manipulate[
 With[{sols = Solve[(* Solve or NSolve *)
     {f[x, y] == 0, slope == ImplicitD[f[x, y] == 0, y, x], 
      boundsIneqs},
     {x, y}]},
  Show[curvePlot,
   Graphics[{
     Replace[sols, sol_ :> InfiniteLine[{x, y} /. sol, {1, slope}], 1]
     }],
   PlotRange -> Max@Abs@boundsArray
   ]
  ],
 {{slope, 0}, -5, 5, 1/128}]
POSTED BY: Michael Rogers

If I change the Plotrange to {0,6} or higher, the tops of the "volcanoes" get jagged around the edges. Do you happen to know why?

enter image description here

POSTED BY: Carl Hahn

Here is an more involved example demonstrating that the parallel tangents can be found using numeric equation solving function:

f[x_, y_] := x^2 + x*Sin[4*y] + 3 y^2 - 7 + Cos[3*x];
pt = With[{x = RandomReal[{-2, 2}]}, {x, y /. FindRoot[f[x, y] == 0, {y, 1}]}];
slope = ImplicitD[f[x, y] == 0, y, x];
m = slope /. Thread[{x, y} -> pt];
pt2 = {x, y} /. FindRoot[{f[x, y] == 0, slope == m}, {x, -2}, {y, -1}];
m2 = slope /. Thread[{x, y} -> pt2];
ContourPlot[f[x,y]==0,{x,-4,4},{y,-4,4},Epilog->{InfiniteLine[pt,{1,m}],
    InfiniteLine[pt2,{1,m2}],
    {PointSize[0.02],Point[pt]},
    {PointSize[0.02],Point[pt2]}
}]

enter image description here

POSTED BY: Shenghui Yang
Posted 4 days ago
POSTED BY: Gerald Oberg

Thank you for the nice question! Here is the code for generating the plot shown on the book cover:

RemoveBackground[
 Rasterize[
  Plot3D[{Re[Sqrt[1/(Cos[5 x] Sin[5 y] - 1/2)]], 
    Im[Sqrt[1/(Cos[5 x] Sin[5 y] - 1/2)]], 
    Style[.01, White, Lighting -> {{"Ambient", White}}]}, {x, -1/3, 
    1.33}, {y, -1/3, 1.6}, Axes -> False, Boxed -> False, 
   BoundaryStyle -> None, Exclusions -> All, Mesh -> None, 
   PlotPoints -> 35, PlotRange -> {Automatic, Automatic, {0, 4}}, 
   ViewPoint -> {1.75, 2.25, 1.85}]]]
POSTED BY: Devendra Kapadia
Posted 4 days ago
POSTED BY: Gerald Oberg
POSTED BY: Luke Titus
Posted 7 days ago

Also entering set theory symbols from the keyboard-how to do? It is abstract sets whose elements are not given and sentences like "A is a subset of B", "element a belongs to B". I want to repeat the whole school math, but how is it better to do it - just solving tasks is pointless after all. But how to make a step by step solution knit, from which to start!?

POSTED BY: Jaan Kapp

Looking forward to this Daily Study Group with great instructors and an energetic group of learners! See everyone online on Monday, 11am CT. Preview the daily schedule of topics and sign up here.

POSTED BY: Jamie Peterson
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard