Graphing Software for Teaching

645 Views Asked by At

I'm working on building some notes/slides for a high school calculus class I'm teaching. My reference is James Stewart's Calculus. I'd like to make my own graphs and I'm wondering if anyone knows what software is used to construct the graphs in this book. I've included a screenshot of one. I'm pretty fluent in $\LaTeX$ and Python, so I was thinking of using TikZ or Matplolib, but I'm wondering if anyone knows exactly what was used to create the graphs in Calculus.enter image description here

2

There are 2 best solutions below

4
On

Here's what I did in exactly three minutes in Mathematica

enter image description here

And this took 10 seconds:

Plot3D[Sin[x y], {x, -2, 2}, {y, -2, 2}]

enter image description here

Take a look at this.

Because someone asked about labelling:

Plot[{x, -x^2 + 5}, 
{x, 0, 3}, 
Epilog -> Text[Style["f(x) = g(x)", 16, Italic], {1.8, 2.2}]]

enter image description here

0
On

You can also consider the Asymptote, which is deeply integrated with LaTeX.

For example, this figure

enter image description here

was coded as

//
// fig6.asy
//
settings.tex="pdflatex";

import graph;

real pagew=7cm,pageh=0.618*pagew;
size(pagew,pageh);

import fontsize;defaultpen(fontsize(7.5pt));
texpreamble("\usepackage{lmodern}");

arrowbar arr=Arrow(HookHead,size=2);

real xmin=-3,xmax=25;
real ymin=-3,ymax=19;

xaxis("$x$",xmin,xmax,above=true,arr);
yaxis("$y$",ymin,ymax,above=true,arr);


pair f(real x){
  real a2 = -0.12, a1 = 3.4, a0 = -11;
  return (x, a2*x^2+a1*x+a0);
}

pair fsec(real x){
  real a1 = 0.6, a0 = 3.7;
  return (x,a1*x+a0);
}

guide gfsec=graph(fsec,-1,22);
guide gf=graph(f,5,17);

real penw=0.8bp;

pen fPen=rgb(0.12,0.12,0.12)+penw;
pen secPen= rgb(0,0.68,0.94)+penw;
pen tanPen= rgb(0.93,0,0.55)+penw;
pen mPen=  rgb(0.4,0.78,0.5)+penw;
pen dashPen=gray(0.1)+0.5bp+linetype(new real[]{16,5})+linecap(0); //squarecap =linecap(0)
pen bracePen=darkblue+0.4bp;

real[][] tPQ=intersections(gfsec,gf);

pair P=point(gf,tPQ[0][1]);
pair Q=point(gf,tPQ[1][1]);
pair C=(Q.x,P.y);

pair tanDir=dir(gf,tPQ[0][1]);

guide gtan=(P-8*tanDir)--(P+12*tanDir);

real a=P.x, x=Q.x;

draw(gfsec,secPen);
draw(gf,fPen);
draw(gtan,tanPen);
draw(P--(P.x,0),dashPen);
draw(C--(C.x,0),dashPen);
draw(P--C--Q,mPen);

bracedefaultratio=0.12;
braceinnerangle=radians(88);
braceouterangle=radians(88);

path braceX(pair a, pair b, real offset=0, real amplitude=bracedefaultratio*length(b-a)){
  pair c=a+rotate( 45)*(unit(b-a)*offset);
  pair d=b+rotate(-45)*(unit(a-b)*offset);
  return brace(c,d,amplitude);
}

draw(braceX(C,P,0.35),bracePen);
draw(braceX(Q,C,0.35),bracePen);

dot(P--Q,UnFill);

label("$a$",(a,0),2*plain.S);
label("$x$",(x,0),2*plain.S);
label("$0$",(0,0),2*plain.SW);

label("$P(a,f(a))$",f(a),3*plain.W);
label("$Q(x,f(x))$",f(x),3*plain.E);

label("$x-a$",(P+C)/2,3*plain.S);
label("$f(x)-f(a)$",(Q+C)/2,3*plain.E);
label("$t$",relpoint(gtan,0.85),plain.NW);