A tool for learning calculus

Nanami Kosugi

Undergraduate Student, 
School of Information Environment,
Tokyo Denki University

Abstract

I will introduce a tool for students who learn calculus for the first time. This tool has three features, and it make use of the dynamic interactive functions of Version 6 of Mathematica. 

   First, the calculation process is visualized in this tool: expressions are printed in different colors  according to different roles as shown in the following window.

Secondly, some of the expressions between inputs and outputs are displayed. I think this function is important for a learning tool, although is not supported by the present Mathematica. 

   Finally, the calculation process can be interactively learned by the students. This feature is possible according to the new commands Input and Create Dialog in Version 6. For instance, the user inputs the expressions that the tool demands through the following window.

The answer is obtained by repeating this procedure and the procedure is the same as the actual calculation by hand.
Therefore, I suppose the student would learn how to calculate themselves by using this tool.

Introduction

This tool is suitable for students who learn calculus for the first time.

For the following three features:
1.The calculation process is visualized in this tool.
2.Some of the expressions involved in the process of inputs and outputs are displayed.
3.The calculation process can be learned by the students through interactive dialogs with the program.

Outline

・Function - input support palette

・Tool of differentiation
　　・Differentiation of Product
　　・Differentiation of Quotient 
　　・Differentiation of Composite function

・Tool of integration
　　・Integration by Substitution
　　・Integration by Parts

Function - input support palette

The purpose of using the palette is to assist the student who is not accustomed to Mathematica so that a basic function can be easily input by the students.

Source

CreatePalette[Row[{PasteButton[\[Placeholder]^\[Placeholder]],PasteButton[Sin[\[Placeholder]]],PasteButton[Cos[\[Placeholder]]],PasteButton[Tan[\[Placeholder]]],PasteButton[ArcSin[\[Placeholder]]],PasteButton[ArcCos[\[Placeholder]]],PasteButton[ArcTan[\[Placeholder]]],PasteButton[Log[\[Placeholder]]],PasteButton[Exp[\[Placeholder]]],PasteButton[Pi]}],WindowTitle->"Function Input Palette"];

Tool of differentiation

Tool of differntiation consist of three tools. 
　・Differentiation of Product
　・Differentiation of Quotient
　・Differentiation of Composite function

Differentiation of Product

Source

ClearAll[f1,g1,f11,g11,fg]

t[string_]:=TraditionalForm[Style[string,18]];
tred[string_]:=TraditionalForm[Style[string,18,Red]];
tblue[string_]:=TraditionalForm[Style[string,18,Blue]];
tred2[string_]:=TraditionalForm[Style[string,18,RGBColor[.75,0,0]]];
tblue2[string_]:=TraditionalForm[Style[string,18,RGBColor[0,0,.75]]];
tgreen[string_]:=TraditionalForm[Style[string,18,Green]];

f1=Input["Input example：x^2,Sin[x],Cos[x],Tan[x],Log[x]",WindowTitle->"Input f(x)"];
g1=Input["Input example：x^2,Sin[x],Cos[x],Tan[x],Log[x]",WindowTitle->"Input g(x)"];
range=Input["Input example：‘Input to π’  means -π≤range≤π",WindowTitle->"Input the range where the graphs are to be displayed"];

f11=D[f1,x];
g11=D[g1,x];
fg=D[{f1*g1},x];

CreateDialog[
Manipulate[Pane[Column[{Text@Grid[{{t["{"],tblue[f[x]],tred[g[x]],t["}' =" ], tred[g[x]],t["・"],tblue2[D[f[x],x]],t[" + "],tblue[f[x]],t["・"],tred2[D[g[x],x]]},{"","","",t[" = "] ,tred[{g1}],t["・"],tblue2[{D[f1,x]}],t[" + "],tblue[{f1}],t["・"],tred2[{D[g1,x]}]},
 {"","","",t[" = "],tgreen[D[f1*g1,x]//Simplify]}}],

   {Plot[{f1},{x,-range,range},PlotStyle->{Blue},AxesLabel->{"x","f(x)"},PlotLabel->Style[f1,Blue,Italic,12]],Plot[{g1},{x,-range,range},PlotStyle->{Red},AxesLabel->{"x","g(x)"},PlotLabel->Style[g1,Red,Italic,12]],Plot[{f1/g1},{x,-range,range},PlotStyle->{Green},AxesLabel->{"x","f(x)*g(x)"},PlotLabel->Style[f1*g1//Simplify,Green,Italic,12]]},

  {Plot[{f11},{x,-range,range},PlotStyle->RGBColor[0,0,.75],AxesLabel->{"x","f'(x)"},PlotLabel->Style[f11,RGBColor[0,0,.75],Italic,12],PlotLabel->Style[D[f1,x],Blue,Italic,12]],
Plot[{g11},{x,-range,range},PlotStyle->RGBColor[.75,0,0],AxesLabel->{"x","g'(x)"},PlotLabel->Style[D[g1,x],RGBColor[.75,0,0],Italic,12]],Plot[{fg},{x,-range,range},PlotStyle->RGBColor[0,0.75,0],AxesLabel->{"x","D{f(x)*g(x)}"},
PlotLabel->Style[  D[f1*g1,x]//Simplify,RGBColor[0,0.75,0],Italic,12]]}

}]],SaveDefinitions->True],WindowTitle->"Differentiation of product"];

Differentiation of Quotient

Source

ClearAll[f1,g1,f11,g11,fg]

t[string_]:=TraditionalForm[Style[string,18]];
tred[string_]:=TraditionalForm[Style[string,18,Red]];
tblue[string_]:=TraditionalForm[Style[string,18,Blue]];
tred2[string_]:=TraditionalForm[Style[string,18,RGBColor[.75,0,0]]];
tblue2[string_]:=TraditionalForm[Style[string,18,RGBColor[0,0,.65]]];
tgreen[string_]:=TraditionalForm[Style[string,18,Green]];

f1=Input["Input Example：x^2,Sin[x],Cos[x],Tan[x],Log[x]",WindowTitle->"Input f(x)"];
g1=Input["Input Example：x^2,Sin[x],Cos[x],Tan[x],Log[x]",WindowTitle->"Input g(x)"];
range=Input["Input example：'Input to π'  means -π≤range≤π",WindowTitle->"Input the range where graph is to be displayed"];

f11=D[f1,x];
g11=D[g1,x];
fg=D[{f1/g1},x];
CreateDialog[
Manipulate[Pane[Column[{Text@Grid[{{t["{"],tblue[f[x]]/tred[g[x]],t["}' = "], (Row[{tred[g[x]],tblue2[D[f[x],x]],t[" - "],tblue[f[x]]*tred[D[g[x],x]]}])/tred[g[x]^2]},{"","",t[" = "] ,Row[{tred[{g1}]*tblue2[{D[f1,x]}],t[" - "],tred[{D[g1,x]}]*tblue[{f1}]}]/tred[g1^2]}, 
{"","",t[" = "],tgreen[D[f1/g1,x]]//Simplify}}],

   {Plot[{f1},{x,-range,range},PlotStyle->{Blue},AxesLabel->{"x","f(x)"},PlotLabel->Style[f1,Blue,Italic,12]],Plot[{g1},{x,-range,range},PlotStyle->{Red},AxesLabel->{"x","g(x)"},PlotLabel->Style[g1,Red,Italic,12]],Plot[{f1/g1},{x,-range,range},PlotStyle->{Green},AxesLabel->{"x","((f (x))/(g (x)))"},PlotLabel->Style[f1/g1//Simplify,Green,Italic,12]]},

  {Plot[{f11},{x,-range,range},PlotStyle->RGBColor[0,0,.75],AxesLabel->{"x","f'(x)"},PlotLabel->Style[f11,RGBColor[0,0,.65],Italic,12],PlotLabel->Style[D[f1,x],Blue,Italic,12]],
Plot[{g11},{x,-range,range},PlotStyle->RGBColor[.75,0,0],AxesLabel->{"x","g'(x)"},PlotLabel->Style[D[g1,x],RGBColor[.75,0,0],Italic,12]],Plot[{fg},{x,-range,range},PlotStyle->RGBColor[0,0.75,0],AxesLabel->{"x","D{((f (x))/(g (x)))}"},
PlotLabel->Style[  D[f1/g1,x]//Simplify,RGBColor[0,0.75,0],Italic,12]]}
}]],
SaveDefinitions->True],WindowTitle->"Differentiation of quotient"];

Differentiation of Composite function

Source

Clear[x,u,f1,g1,h1]

t[string_]:=TraditionalForm[Style[string,18]];
ts[string_]:=TraditionalForm[Style[string,14]];
tl[string_]:=TraditionalForm[Style[string,22]];
tred[string_]:=TraditionalForm[Style[string,18,Red]];
tredl[string_]:=TraditionalForm[Style[string,22,Red]];
tblue[string_]:=TraditionalForm[Style[string,18,Blue]];
tgreen[string_]:=TraditionalForm[Style[string,18,Green]];

f1=Input["Input Example：x^2,Sin[x],Cos[x],Tan[x],Log[x]",WindowTitle->"Input the differentiating fuction"];
g1=Input[f1"Input Example：x^2,Sin[x],Cos[x],Tan[x],Log[x] Differentiating funcion f(x)=",WindowTitle->"Input the part that wants to be replaced with u"];
h1=Input[f1"Input Example：u^2,Sin[u],Cos[u],Tan[u],Log[u] Differentiating funcion f(x)=",WindowTitle->"Input function f (u) after the replacement"];

CreateDialog[
Manipulate[Pane[Column[{Text@Grid[{{t["Function to be differentiated"],t[" y="],tblue[f1]},
{},
{t["If we put u="],tred[g1],t[", then y="],tblue[h1]},
{},
{tl["y' = (dy/dx) = (dy/du)・(du/dx)"]},
{},
{t["={"],tred[g1],t["}'"],t["{"],tblue[h1],t["}'"]},
{},
{t["="],tred[D[g1,x]],t["・"],tblue[D[h1,u]]},
{},
{tl["Answer"],tredl[D[f1,x]]//Simplify}
}]}]],
 SaveDefinitions->True],WindowTitle->"Differentiation of composite function"];

Tool of integration

Tool of integration consist of two tools. 
　・Integration by Substitution
　・Integration by Parts

Integration by Substitution

Source

ClearAll[f1,g1,f2,h1]

t[string_]:=TraditionalForm[Style[string,18]];
ts[string_]:=TraditionalForm[Style[string,14]];
tred[string_]:=TraditionalForm[Style[string,18,Red]];
tblue[string_]:=TraditionalForm[Style[string,18,Blue]];
tred2[string_]:=TraditionalForm[Style[string,18,RGBColor[.75,0,0]]];
tblue2[string_]:=TraditionalForm[Style[string,18,RGBColor[0,0,.65]]];
tgreen[string_]:=TraditionalForm[Style[string,18,Green]];
tblue3[string_]:=TraditionalForm[Style[string,18,RGBColor[0,0,.85]]];

f1=Input["Input Example：x^2,Sin[x],Cos[x],Tan[x],Log[x]",WindowTitle->"Input the integrating function"];
g1=Input[f1"Input Example：x^2,Sin[x],Cos[x],Tan[x],Log[x] Integrating funcion f(x)=",WindowTitle->"Input the part that wants to be replaced with t"];
h1=Input[g1"Input Example：x^2,Sin[x],Cos[x],Tan[x],Log[x]  t=" ,WindowTitle->"Express x in terms of t"];
f2=Input[f1"Input Example：t^2,Sin[t],Cos[t],Tan[t],Log[t] Integrating funcion f(x)=",WindowTitle->"Input f(t) after the replacement"];
CreateDialog[
Manipulate[
Pane[
Column[{Text@Grid[{{t["Function to be integrated" ],tblue[f1]},
{},
{t["If"],t["t　= "],tred[g1],t[",then"],t["x　= "],tred2[h1],t["((\[DifferentialD]x)/(\[DifferentialD]t)) = "],tgreen[D[h1,t]]},
{},
{t["Therefore,"],t["I = ∫"],tblue2[f2],t["・"],tgreen[D[h1,t]],t["\[DifferentialD]t"]},
{},
{t["="],tblue2[Integrate[f2*D[h1,t],t]],t["+C  (Integration Constant)"]},
{},
{t["="],tblue3[Integrate[f1,x]],t["+C  (Integration Constant)"]}

}]}]],
 SaveDefinitions->True],WindowTitle->"Integration by Substitution"];

Integration by Parts

Source

ClearAll[f3,g3]

t[string_]:=TraditionalForm[Style[string,18]];
tred[string_]:=TraditionalForm[Style[string,18,Red]];
tblue[string_]:=TraditionalForm[Style[string,18,Blue]];
tred2[string_]:=TraditionalForm[Style[string,18,RGBColor[.75,0,0]]];
tblue2[string_]:=TraditionalForm[Style[string,18,RGBColor[0,0,.65]]];
tgreen[string_]:=TraditionalForm[Style[string,18,RGBColor[0,.5,0]]];

f3=Input["Input to f(x)　Input example：x^2,Sin[x],Cos[x],Tan[x],Log[x]",WindowTitle->"Input f(x)"];
g3=Input["Input to g'(x)　Input example：x^2,Sin[x],Cos[x],Tan[x],Log[x]",WindowTitle->"Input g'(x)"];

CreateDialog[
Manipulate[Pane[Column[{Text@Grid[{{t[""],t["∫f(x)・g'(x) \[DifferentialD]x"],t["=f(x)・g(x)-∫f'(x)・g(x) \[DifferentialD]x"]},
{t["∫"],tblue[f3],t["・"],tred[g3],t["\[DifferentialD]x"]},
{t["="],tblue[f3],t["・"],tred2[Integrate[g3,x]],t["- ∫"],tblue2[D[f3,x]],t["・"],tred2[Integrate[g3,x]],t["\[DifferentialD]x"]},
{t["="],tgreen[Integrate[f3*g3,x]],t["+C (Integration Constant)"]}
}]}]],
 SaveDefinitions->True],WindowTitle->"Integration by Parts"];

Conclusion

I think that student can learn like a demonstration a little while ago.
And, students can experience the learning process as if they were working on it on their own by hand.
As a result, I believe that study with this system is more effective than existing study in the textbook, but further experimental and theoretical work is needed.

Finally, I'm hoping to continue my present study further at graduate school level.

Appendix (Manual of this tool)

・Tool of differentiation
　　・Differentiation of Product 
　　・Differentiation of Quotient 
　　・Differentiation of Composite function

・Tool of integration
　　・Integration by Substitution
　　・Integration by Parts

Differentiation of Product (Manual)

Taking an example of differentiating (x^3)*Sin[x], if you execute the source of the tool Differentiation of Product, the following window will appear.

Then,  input (x^3) for f(x) as the follwing window.

The follwing input screen of  g(x) will appear after you input and push the OK button of the screen or the enter-key.

And, then input g(x) in the same way.
Then, another window will open to input for the range of the following graph.

If you want  to display a graph ranged from -π to π ,  π is to be input.

The following window will appear after completing the inputs.

The calculation process given in the upper part of the window has been visualized in five different colors. 
Each functional part and its corresponding curve is shown in the same color. 
The upper left blue curve ((x^3)) corresponds with f(x), and the other blue curve (3(x^2)) with f'(x),which is result from differentiating f(x).
And, the red curves in the middle follow the same rule.
Finally, the upper green curve is  {f(x)* g(x)}  that wants to be differentiated, and the resulted differentiated function becomes the bottom green curve.

Differentiation of Quotient (Manual)

Differentiation of Quotient involves a similar process applied to Differentiation of Product.
Therefore I skip the explanation.

Differentiation of Composite function (Manual)

The prime function of Differentiation of composite function is a learning function. 
In this system, students can experience almost the same process as if the students work on problems by themselves.
Specifically, students can think on their own and input expression into Mathematica interactively.

For instance, assume Cos((x^2)+1) is to be differentiated.
First of all, the following window will appear when the source is executed. 




We input the function that wants to be differentiated in accordance with the instructions given in the window. 
Next, to make the calculation easier, input the replaceable part.



If u=1+(x^2), you should input Cos(u) into the following window.



When all information has been input, a new window will appear in which calculation results are displayed.



In this system, students can experience the learning process as if they were working on it on their own.

Integration by Substitution (Manual)

Taking an example of integrating (e^(2x+1)).
When you execute the source of Integration by Substitution,the following window will appear. 
And input the function which wants to be integrated.



Then, to make the calculation easier, input its replaceable part. 



Next, solve the equation t=1+2x for x



If t=1+2x, you should input (e^t) into the following window. 

. 

If all information has been input, a new window will appear in which calculation results are displayed.

Integration by Parts (Manual)

The calculation results can be obtained by inputting f (x) and g (x), similar to the case of Dfferentiation of Product.
If the result indicated by the second line is more complex than the given expression, it means f(x) and g'(x) have been mistaken put.
In other words, the expressions stated in the following window are wrong.



As a result, students can learn how to put f(x) and g'(x) correctly. 
At this stage, however, it is not possible to repeat Integration by parts more than two times.