{VERSION 5 0 "IBM INTEL LINUX" "5.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 256 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 257 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 258 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 259 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 260 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 261 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 262 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 263 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 267 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 268 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 269 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 270 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 271 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 272 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 273 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 274 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 275 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 276 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 277 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 278 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 279 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 280 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 281 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 282 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 283 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 284 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 285 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 286 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 287 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 288 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 289 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 290 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 291 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 292 "" 1 14 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 293 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 294 "" 1 14 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 295 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 296 "" 1 14 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 297 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 298 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 299 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 300 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 301 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 302 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 303 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 304 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 305 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 306 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 307 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 308 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 309 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 310 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 311 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 312 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 313 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 314 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 315 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 316 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 317 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 318 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 319 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 320 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 321 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 322 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 323 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 324 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 325 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 326 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 327 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 328 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 329 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 330 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 331 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 332 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 333 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 334 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 335 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 336 "" 1 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Tim es" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 } {PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }1 0 0 0 8 4 0 0 0 0 0 0 -1 0 }{PSTYLE "Normal" -1 256 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Normal" -1 257 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }} {SECT 0 {EXCHG {PARA 256 "" 0 "" {TEXT -1 0 "" }{TEXT 336 26 "Calculus II -- worksheet 2" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 256 "" 0 " " {TEXT 256 61 "Inverse functions, their tangent lines, and their deri vatives" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 257 "" 0 "" {TEXT -1 42 "Author: Carl Devore " }}{PARA 0 "" 0 "" {TEXT -1 16 "13 February 2002" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 263 9 "Audience:" }}{PARA 0 "" 0 "" {TEXT -1 34 "Second-semester calculus students." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 257 11 "Objective s:" }}{PARA 0 "" 0 "" {TEXT -1 89 " 1. Learn how to restrict the d omain of a function so that an inverse can be defined." }}{PARA 0 "" 0 "" {TEXT -1 59 " 2. Explore graphical properties of inverse fun ctions." }}{PARA 0 "" 0 "" {TEXT -1 44 " 3. Verify the Inverse Fun ction Theorem." }}{PARA 0 "" 0 "" {TEXT -1 53 " 4. Learn how to pu t together a complicated plot." }}{PARA 0 "" 0 "" {TEXT -1 75 " 5. \+ Show how Maple can be used to prove a simple, yet general, theorem." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 258 0 "" } {TEXT 259 33 "New Maple Commands/Concepts used:" }}{PARA 0 "" 0 "" {TEXT -1 3 " " }{TEXT 260 146 "restart, solve, D, diff, evalf, simpl ify, unapply, is, limit, \{\}, [], %, #, ||, '', if, map, seq, zip, ev al, subs, min, max, with, display, RootOf" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 261 0 "" }{TEXT 262 25 "Th e problem (in general):" }}{PARA 0 "" 0 "" {TEXT -1 167 "Take a functi on and over each interval of increase or decrease define an inverse. \+ Plot the function, the inverses, their derivatives, and some selected \+ tangent lines." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 190 "It is a good idea to sta rt most worksheets with the 'restart' command. This clears the values of previously defined variables, which is not automatically done when you open a new worksheet." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 57 "Maple does not pro vide any response to a restart command." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 42 "The function that I want to start wi th is " }{XPPEDIT 18 0 "x/(x^2+1);" "6#*&%\"xG\"\"\",&*$F$\"\"#F%F%F%! \"\"" }{TEXT -1 1 "." }}}{SECT 1 {PARA 3 "" 0 "" {TEXT 279 43 "Find th e intervals of increase and decrease" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 213 "First define the function as a Maple operator, rather than as \+ an expression. (What we ordinarily call functions, Maple calls operat ors, whereas the word function itself has a slightly different meaning to Maple.)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "f:= x-> x/(x ^2+1);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 93 "To get some idea of wha t we are working with, I'll plot the function over an arbitrary range. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "plot(f, -10..10);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 148 "So, there are three intervals of \+ increase or decrease. Let's get the critical points. First, I'll get the derivative and call it Df. The command " }{TEXT 280 1 "D" } {TEXT -1 57 " takes the derivative of a operator (whereas the command \+ " }{TEXT 281 5 "diff " }{TEXT -1 39 "takes the derivative of an expres sion)." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "Df:= D(f);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 87 "Clearly, that expression could be \+ and should be simplified. Df is a operator, and the " }{TEXT 282 8 "s implify" }{TEXT -1 161 " command won't work on it. I'll have to work \+ with an expression and then convert it to a function. Note that if f \+ is an operator, then f(x) is an expression. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "f(x);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 39 "And I take the derivative of that with " }{TEXT 283 5 "diff." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "Df:= diff(f(x), x);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 10 "Note that " }{TEXT 284 5 "diff " }{TEXT -1 112 " requires a second argument: The final x tells it to take the derivative with respect to x. Let's simplify it." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "Df:= simplify(Df);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 151 "Note that I reused the name Df (because I have no in terest in saving the unsimplified form). Let's find the critical poin ts. The second argument to " }{TEXT 285 6 "solve " }{TEXT -1 29 "is t he variable to solve for." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "CritPts:= solve(Df=0, x);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 118 "Now if we combine that information with the plot, it is clear that f \+ is one-to-one (injective) on each of the domains " }{XPPEDIT 18 0 "``( -infinity,-1),[-1, 1],``(1,infinity);" "6%-%!G6$,$%)infinityG!\"\",$\" \"\"F(7$,$F*F(F*-F$6$F*F'" }{TEXT -1 153 ". (Henceforth, I will use t he word \"injective\" rather than the abomination \"one-to-one\".) Fu rthermore, f is still injective on the two-interval domain " } {XPPEDIT 18 0 "`union`(``(-infinity,-1),``(1,infinity));" "6#-%&unionG 6$-%!G6$,$%)infinityG!\"\",$\"\"\"F+-F'6$F-F*" }{TEXT -1 2 ". " }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 106 "As I am \+ writing this, -1 is the answer on the left. However, I cannot know if that will be true for you; " }{TEXT 288 5 "solve" }{TEXT -1 67 " does not necessarily give the answers in numerical order. I want " } {TEXT 286 1 "a" }{TEXT -1 37 " to be the lesser critical point and " } {TEXT 287 1 "b" }{TEXT -1 54 " the greater. The following command wil l ensure that." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "a:= min(C ritPts); b:= max(CritPts);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 10 "Not e that " }{TEXT 289 3 "min" }{TEXT -1 5 " and " }{TEXT 290 3 "max" } {TEXT -1 129 " just find the smallest and largest values in a finite s equence. This is not the same as finding minima or maxima of a functi on." }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT 291 51 "Find the inverse functi ons by solving the equation " }{TEXT 292 6 "y=f(x)" }{TEXT 293 5 " for " }{TEXT 294 1 "x" }{TEXT 295 18 " as a function of " }{TEXT 296 1 "y " }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 298 0 "" }{TEXT -1 7 " We use " }{TEXT 305 5 "solve" }{TEXT -1 105 ". If you do the algebra \+ on paper (you should do it!), you will see that you get a quadratic eq uation in " }{TEXT 299 1 "x" }{TEXT -1 32 ". Therefore, you should ex pect " }{TEXT 306 5 "solve" }{TEXT -1 237 " to give two answers. Also , the number of answers should be the maximal number of times that any horizontal line crosses the graph of f, which is also the minimal nu mber of domain restrictions needed to divide f into injective pieces. \+ " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "solve(y=f(x), x);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 282 "Now I want to manipulate those an swers individually. I have to save those answers as a set and give th e set a name. Anything can be made into a set by enclosing it in \{\} . The result of the last computation is accessed by %. (This is like using the ans key on a TI calculator). " }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 15 "inverses:= \{%\};" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 307 8 "Warning:" }{TEXT -1 254 " % refers to the most \+ recent result that you actually computed. That is not necessarily the same thing as the result that appears immediately above your current \+ position on the screen. It is very common for new users to make mist akes because of this." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 59 "You can \+ extract the members of a set or a list by using []:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "inverses[1];" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 12 "inverses[2];" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 56 "I want to make the inverses into operators. The command " }{TEXT 304 7 "unapply" }{TEXT -1 180 " converts an expression into an operato r. The second argument to unapply is the variable that appears in the expression that you want to make into the parameter of the operator. \+ " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "g1:= unapply(inverses[ 1], y);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "g2:= unapply(inv erses[2], y);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 100 "The two command s above are essentially the same, and I hate having to repeat the same command. The " }{TEXT 308 4 "map " }{TEXT -1 71 "command will take a command and apply to every member of a set or list." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "g:= map(unapply, inverses, y);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 32 "Separate the individual members:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "g1:= g[1]; g2:= g[2];" }} }{EXCHG {PARA 0 "" 0 "" {TEXT -1 55 "The separation can also be done w ith the single command" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "g 1,g2:= g[];" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 176 "Now we need to fi gure out which inverse goes with which domain. How could such a thing be determined? The range of an inverse is the domain the original f unction. The line " }{XPPEDIT 18 0 "y = 1/4;" "6#/%\"yG*&\"\"\"F&\"\" %!\"\"" }{TEXT -1 67 " crosses the graph of f twice, so we evaluate \+ the inverses there." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "g1(1 /4); g2(1/4);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 43 "Note that those \+ commands can be combined as" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "[g1, g2](1/4);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 66 "It is not c lear which intervals each of those is in. The command " }{TEXT 309 5 "evalf" }{TEXT -1 48 " converts numeric expressions into decimal form. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "evalf(%); " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 51 "Note that evalf automatically mapped over the list." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 322 "As I am writing th is, I got g1(1/4)=3.73... and g2(1/4)=0.26.... The definitions of g1 \+ and g2 might be reversed for you. You cannot guarantee the order that solve will return things. The following command will ensure that we \+ are talking about the same order. Briefly, the command below says tha t if g1(1/4) is between " }{XPPEDIT 18 0 "a;" "6#%\"aG" }{TEXT -1 5 " \+ and " }{XPPEDIT 18 0 "b;" "6#%\"bG" }{TEXT -1 79 " (-1 and 1), then g1 and g2 should be swapped. Note that lines beginning with " }{TEXT 317 1 "#" }{TEXT -1 56 " are comments rather than commands. The reaso n for the " }{TEXT 310 4 "eval" }{TEXT -1 90 "'s is that operator name s are not automatically expanded to their definitions. Note that " } {TEXT 312 2 "fi" }{TEXT -1 11 " (which is " }{TEXT 314 2 "if" }{TEXT -1 43 " spelled backwards) denotes the end of the " }{TEXT 313 2 "if" }{TEXT -1 28 " command. You can also say " }{TEXT 315 7 "end if " } {TEXT -1 10 "or simply " }{TEXT 316 3 "end" }{TEXT -1 36 ", but I pref er the briefer notation." }{TEXT 311 1 " " }{TEXT -1 2 " " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 122 "if is(a <= g1(1/4)) and is(g1(1/4) <= b) then\n # Swap g1 and g2\n temp:= eval(g1); g1:= eval(g2); g 2:= eval(temp)\nfi; " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 108 "At this point, I am sure that g2 corresponds to the f domain [-1,1], and g1 c orresponds to the other domain." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "g2(x);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 10 "Note that " } {TEXT 302 3 "g2 " }{TEXT -1 88 "is not defined at 0, yet 0 is in the c orresponding f domain [-1,1]. That is because if " }{TEXT 303 1 "y" } {TEXT -1 17 "=0, the equation " }{XPPEDIT 18 0 "y = f(x);" "6#/%\"yG-% \"fG6#%\"xG" }{TEXT -1 250 " is not a true quadratic equation (try it \+ by hand and see for yourself), and hence the quadratic formula that th e solve command used is not valid for that point. But the Inverse Fun ction Theorem says that g2 must be continuous. However, if we just " }{TEXT 297 8 "define g" }{TEXT -1 51 "2(0) to be 0, everything will be okay. This makes " }{TEXT 300 2 "g2" }{TEXT -1 53 " continuous, as y ou can see from the following limit:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "limit(g2(x), x= 0);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 72 "Note that in Maple's limit command the word \"limit\" is spelle d out, and " }{XPPEDIT 18 0 "proc (x) options operator, arrow; 0 end p roc;" "6#f*6#%\"xG7\"6$%)operatorG%&arrowG6\"\"\"!F*F*F*" }{TEXT -1 28 " is indicated by the x= 0. " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 57 "There is no real need in this prob lem to tell Maple that " }{TEXT 301 7 "g2(0)=0" }{TEXT -1 71 ", but I \+ might as well show you how it's done anyway. It's very simple:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "g2(0):= 0;" }}}{PARA 3 "" 0 "" {TEXT -1 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT 318 66 "Compute the \+ tangent lines to f at selected points in each interval" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 319 0 "" }{TEXT -1 35 "I'll use t he points -3/2, 1/2, 3/2." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "X:= [-3/2, 1/2, 3/2]:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 67 "The tangent line at 1/2 can be expressed \+ as an operator as follows:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "Tf:= D(f)(1/2)*(x-1/2)+f(1/2);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 164 "We can generalize the procedure for finding tangent lines. Wr ite an operator that takes a function and a specific point and returns the tangent line at that point." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "tangent_line:= (h,x0)-> D(h)(x0)*('x'-x0) + h(x0);" } }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 230 "Note that for an operator with \+ two or more parameters, the parameters are put in parentheses before t he arrow. The forward quotes on the x ensure that the above will work even if the variable x has already been assigned a value." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 5 "Test." }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "Tf:= tangent_line(f,1/2);" } }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 22 "That's what we wanted." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 120 "Note that the \+ expression D(h)(x0) means to evaluate the function D(h) at the point x 0. That's not the same as D(h(x0))." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 67 "Now I want the tangent lines for all th ree values of x0. Remember " }{TEXT 320 3 "map" }{TEXT -1 48 " from a bove? Its first argument is an operator." }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 37 "Tf:= map(x0-> tangent_line(f,x0), X);" }}}{PARA 3 " " 0 "" {TEXT -1 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT 321 120 "Find th e corresponding tangent lines to the inverses. Verify the derivatives predicted by the Inverse Function Theorem." }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 322 0 "" }{TEXT -1 166 "Now that I have given a g eneral tangent_line procedure, this is easy. The points X[1] = -3/2 a nd X[3]= 3/2 are in the range of g1, and X[2]=1/2 is in the range of g 2" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "Tg:= tangent_line(g1,f (X[1]));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 53 "That's not what I exp ected. I'll try to simplify it." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "simplify(Tg);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 81 "That's better. You can see that the slopes of the tangent lines are \+ reciprocals." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 164 "The fact that I needed to simplify indicates that I should hav e simplified right in the definition of the procedure tangent_line. S o, I will redefine tangent_line:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 60 "tangent_line:= (h,x0)-> simplify(D(h)(x0)*('x'-x0) + \+ h(x0));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 30 "Better test the new pr ocedure:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "tangent_line(f, X[1]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "Tg:= tangent_line (g1,f(X[1]));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 9 "It works." }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 184 "By the I nverse Function Theorem, we should have g1'(y) = 1/f '(g1(y)). That' s clearly the case for our chosen point y = f(-3/2), but I'll have Map le verify it for arbitrary points. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "D(g1)(y);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "1/D(f)(g1(y));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 187 "Are they t he same? It's hard to tell. One way to get Maple to verify that two \+ things are equal is to subtract the two things, simplify the resulting expression, and see if you get zero." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "simplify( % - %% );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 29 "So they're equal. Note that " }{TEXT 323 2 "%%" }{TEXT -1 71 " refers to the second-most-recently-computed expression. There's also " }{TEXT 324 3 "%%%" }{TEXT -1 44 ", but you can't go back four or mo re levels." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 56 "Let's get all three corresponding inverse tangent lines." }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 87 "Tg:= [tangent_line(g1, f(X[1 ])), tangent_line(g2, f(X[2])), tangent_line(g1, f(X[3]))];" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 56 "Once again, I'd like to avoid need less repetition. The " }{TEXT 325 4 "zip " }{TEXT -1 16 "command is l ike " }{TEXT 326 3 "map" }{TEXT -1 42 ", but is used for two-argument \+ operators. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "Tg:= zip(tan gent_line, [g1,g2,g1], map(f,X));" }}}{PARA 3 "" 0 "" {TEXT -1 0 "" }} }{SECT 1 {PARA 3 "" 0 "" {TEXT 327 11 "Plot it all" }}{EXCHG {PARA 0 " " 0 "" {TEXT -1 0 "" }{TEXT 328 0 "" }{TEXT -1 336 "First I'll plot th e parts corresponding to the central interval [-1,1]. Note that the o rder of colors in the colorlist corresponds to the order of the expres sions in the expression list. In a list (things that are in square br ackets), the order is significant. Any item in a list can be repeated any number of times by using the '$'." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "colorlist:= [red, blue, grey, green$2, plum$2]:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 130 "plot([f(x), g2(x), x, Df, D (g2)(x), Tf[2], Tg[2]]\n ,x= a..b, y= -1..2\n ,scaling=constra ined\n ,color= colorlist\n );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 327 "So the blue is f, red is the inverse, the lower green is f ', upper green is the derivative of the inverse, and the plums are \+ the tangent lines. I want to save that plot in a variable so I can co mbine with other plots later. Note that I extended the y-range of the plot to 2 in order to include the derivative of the inverse." }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "Plot1:= %:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 74 "Now let's do the same for the left interval. I 'll restrict it to [-2,-1]." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 122 "plot([f(x), g1(x), x, Df, D(g1)(x), Tf[1], Tg[1]]\n ,x= -2..0, y= -2..0\n ,scaling=constrained\n ,color= colorlist);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 89 "Note that I have to extend the plo tting range in order to get the inverse in the picture." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "Plot2:= %:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 22 "Do the right interval." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 122 "plot([f(x), g1(x), x, Df, D(g1)(x), Tf[3], Tg[3]]\n \+ ,x= 0..2, y= 0..2\n ,scaling= constrained\n ,color= colorlist ); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "Plot3:= %:" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 69 "Now I want to put the three plots \+ together. The command for that is " }{TEXT 329 7 "display" }{TEXT -1 165 ". Maple has many thousands of commands, and they are not all imm ediately available when Maple is started. They are grouped into sets \+ called packages. The package " }{TEXT 330 5 "plots" }{TEXT -1 10 " co ntains " }{TEXT 331 7 "display" }{TEXT -1 7 ". The " }{TEXT 332 4 "wi th" }{TEXT -1 81 " command \"loads\" a package so that all of the pack age's commands are available. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "with(plots);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 136 "The abov e list shows the new commands that are now available. In the next com mand, Plot||(1..3) is a shorthand for Plot1, Plot2, Plot3." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 74 "display(Plot||(1..3), title= `Graph ical properties of inverse functions`);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 421 "The blue parts should be connected, but Maple has some d ifficulty plotting parts of a curve where there is a vertical tangent. I could correct this, but that is a little too complicated to go int o right now. Note the reciprocal relationhip of the two derivatives. \+ The negative parts the of derivative of the inverse are so far into t he negative range that it would distort the plot too much if I tried t o include them." }}}{PARA 3 "" 0 "" {TEXT -1 0 "" }}}{SECT 1 {PARA 3 " " 0 "" {TEXT 333 56 "Find a point where corresponding tangent lines in tersect" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "ans:= solve(Tf[1] =Tg[1], x);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 84 "We can get y-value of the point of intersection by evaluating either line at that x." }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "eval(Tf[1], x= ans);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 148 "So these tangent lines intersect \+ on the line y=x. Intuition suggests that this will always be the case . Let's see if we can prove that with Maple." }}}{PARA 3 "" 0 "" {TEXT -1 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT 270 47 "Prove a simple, yet general, theorem with Maple" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 271 10 "Theorem: " }{TEXT -1 5 "Let " }{TEXT 272 1 "f" } {TEXT -1 80 " be a function which is injective on an interval and dif ferentiable at a point " }{XPPEDIT 18 0 "x[0];" "6#&%\"xG6#\"\"!" } {TEXT -1 24 " in that interval. Let " }{TEXT 273 1 "g" }{TEXT -1 20 " be the inverse of " }{TEXT 274 1 "f" }{TEXT -1 7 ". Let " } {XPPEDIT 18 0 "L[1];" "6#&%\"LG6#\"\"\"" }{TEXT -1 24 " be the tangent line to " }{TEXT 275 1 "f" }{TEXT -1 4 " at " }{XPPEDIT 18 0 "x[0];" "6#&%\"xG6#\"\"!" }{TEXT -1 9 " and let " }{XPPEDIT 18 0 "L[2];" "6#&% \"LG6#\"\"#" }{TEXT -1 24 " be the tangent line to " }{XPPEDIT 18 0 "g ;" "6#%\"gG" }{TEXT -1 4 " at " }{XPPEDIT 18 0 "x = f(x[0]);" "6#/%\"x G-%\"fG6#&F$6#\"\"!" }{TEXT -1 15 ". Then either " }{XPPEDIT 18 0 "L[ 1];" "6#&%\"LG6#\"\"\"" }{TEXT -1 5 " and " }{XPPEDIT 18 0 "L[2];" "6# &%\"LG6#\"\"#" }{TEXT -1 23 " intersect on the line " }{XPPEDIT 18 0 " y = x;" "6#/%\"yG%\"xG" }{TEXT -1 5 ", or " }{XPPEDIT 18 0 "`f '`(x[0] ) = 1;" "6#/-%$f~'G6#&%\"xG6#\"\"!\"\"\"" }{TEXT -1 5 ", or " } {XPPEDIT 18 0 "`f '`(x[0]);" "6#-%$f~'G6#&%\"xG6#\"\"!" }{TEXT -1 5 " \+ = 0." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 276 6 "Proof:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "rest art;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 51 "Now all previous variable definitions are erased. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 73 "We take f as a completely arbitrary function and \+ define g as its inverse:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "g:= unapply(solve(y=f(x), x), y);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 277 6 "RootOf" }{TEXT -1 96 " is Maple's way of express ing the solution to an equation that it does not know how to solve. ( " }{TEXT 278 6 "RootOf" }{TEXT -1 60 " can mean some other things also .) Of course, the equation " }{XPPEDIT 18 0 "y = f(x);" "6#/%\"yG-%\" fG6#%\"xG" }{TEXT -1 52 " cannot be explicitly solved if you don't kno w what " }{XPPEDIT 18 0 "f;" "6#%\"fG" }{TEXT -1 119 " is. However, e ven if Maple cannot not explicitly solve an equation, it can still kno w some things about the solution:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "D(g);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 57 "That sho ws that Maple knows the Inverse Function Theorem." }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 42 "tangent_line:= (h,a)-> D(h)(a)*(x-a)+h(a):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "L[1]:= tangent_line(f, x0 );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "L[2]:= tangent_line(g , f(x0));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 3 "If " }{XPPEDIT 18 0 " f;" "6#%\"fG" }{TEXT -1 45 " is injective, the only root of the equati on " }{XPPEDIT 18 0 "f(_Z)-f(x[0]);" "6#,&-%\"fG6#%#_ZG\"\"\"-F%6#&%\" xG6#\"\"!!\"\"" }{TEXT -1 8 " = 0 is " }{XPPEDIT 18 0 "_Z = x[0];" "6# /%#_ZG&%\"xG6#\"\"!" }{TEXT -1 37 ". (Recall that injective means tha t " }{XPPEDIT 18 0 "f;" "6#%\"fG" }{TEXT -1 36 " can be cancelled from the equation " }{XPPEDIT 18 0 "f(x) = f(y);" "6#/-%\"fG6#%\"xG-F%6#% \"yG" }{TEXT -1 7 ".) If " }{XPPEDIT 18 0 "`f '`(x[0]);" "6#-%$f~'G6# &%\"xG6#\"\"!" }{TEXT -1 57 " = 0, then of course the above tangent li ne is invalid. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "RootOf( f(_Z)-f(x0)):= x0:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 57 "Get the x-c oordinate of the intersection of the tangents." }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 28 "x_int:= solve(L[1]=L[2], x);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 4 "If " }{XPPEDIT 18 0 "`f '`(x[0]) = 1;" "6#/-%$f ~'G6#&%\"xG6#\"\"!\"\"\"" }{TEXT -1 45 ", then the above is invalid. \+ But the cases " }{XPPEDIT 18 0 "`f '`(x[0]) = 0;" "6#/-%$f~'G6#&%\"xG 6#\"\"!F*" }{TEXT -1 5 " and " }{XPPEDIT 18 0 "`f '`(x[0]) = 1;" "6#/- %$f~'G6#&%\"xG6#\"\"!\"\"\"" }{TEXT -1 91 " are excluded in the conclu sion of the theorem. Get the y-coordinate of the intersection. " }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "y_int:= subs(x= x_int, L[1]) ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "simplify(x_int - y_int );" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 83 "Therefore, x_int = y_int; i n other words, the point of intersection is on the line " }{XPPEDIT 18 0 "y = x;" "6#/%\"yG%\"xG" }{TEXT -1 1 "." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 80 "Note again the technique of pro ving equality by simplifying the difference to 0." }}}{PARA 3 "" 0 "" {TEXT -1 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT 334 40 "Generalize inve rse selection with RootOf" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 29 "After we solved the equation " }{XPPEDIT 18 0 "y = x/(x^2+1);" "6#/%\"yG*&% \"xG\"\"\",&*$F&\"\"#F'F'F'!\"\"" }{TEXT -1 5 " for " }{TEXT 267 1 "x " }{TEXT -1 121 ", there were still some complicated steps involved to select the inverse. This selection process can be simplified with " }{TEXT 268 7 "RootOf " }{TEXT -1 76 "at the expense of a more complica ted representation of the inverse. Often, " }{TEXT 335 5 "solve" } {TEXT -1 58 " is only able to express the solutions is terms of RootOf ." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "f:= x-> x/(x^2+1);" }} }{EXCHG {PARA 0 "" 0 "" {TEXT -1 70 "We can specify the branch of the \+ inverse with range [-1,1] as follows:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "g:= unapply(RootOf(y=f(x), x, -1..1), y);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 88 "Since Maple knows how to take derivatives of RootOfs, we can still get the tangent line." }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 23 "tangent_line(g,f(1/2));" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 45 "But the roots are not computed until you use " } {TEXT 269 10 "allvalues." }{TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "allvalues(%);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 27 "Evalf also works on RootOf:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "g(1/2);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "evalf(%);" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 164 "plot([f(x),g(x),x,tangent _line(f,1/2),allvalues(tangent_line(g,f(1/2)))]\n ,x= -1..1, y= -1. .1\n ,scaling= constrained\n ,color= [red$2, grey, green$2]\n \+ );" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{MARK "0 3 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }