```source("http://macosa.dima.unige.it/r.R")    # If I have not already loaded the library
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
# To evaluate the derivative of a piecewise-defined function we must derive every
# "sub-function".
#
f = function(x) ifelse( x<1, x, ifelse(x<3, (x-2)^2, 4-x) )
BF=4; HF=2.75
Plane(0,5, -2,2)
graph2(f, 0,5, "brown")
text(4.2,0.2,"f",font=2,col="brown")
# It is a continuous function. We want to study the derivative and the integral function.
# The derivative df(x) is not defined for x=1 and x=3. deriv(f,"x")
# Error: 'Ifelse' not present in the derivative tables
# We must derive the sub-function f1, f2, f3:
f1=function(x) x; f2=function(x) (x-2)^2; f3=function(x) 4-x
df1 = function(x) eval(deriv(f1,"x"))
df2 = function(x) eval(deriv(f2,"x"))
df3 = function(x) eval(deriv(f3,"x"))
df = function(x) ifelse(x<1, df1(x), ifelse(x<3, df2(x), df3(x) ) )
Plane(0,5, -2,2); graph(f, 0,5, "brown"); text(4.2,0.2,"f",font=2,col="brown")
graph(df, 0,5, "red"); text(1.5,-1.5,"df",font=2,col="red")
# To graphically represent the integral function ∫[0,x]f we use Gintegral (see)
Gintegra(f, 0,5, "blue")
# Error: extremely bad integrand behaviour
# We use GintegraA:
GintegraA(f, 0,5, "blue")
# Error: extremely bad integrand behaviour
GintegraB(f, 0,5, "blue")           # OK
text(4.35,1.3,"Int f",font=2,col="blue") # The integral function has derivative 0 where f = 0
POINT(4,integral(f,0,4), "red")
integral(f,0,4); fraction(last())
#  1.666667       5/3                                       Int f has a maximun here
# It has a rising point of inflection where his derivative (f) has a local maximum.
POINT(c(1,3), c(integral(f,0,1),integral(f,0,3)), "green")
integral(f,0,1); fraction(last())
#   0.5           1/2
integral(f,0,3); fraction(last())
#   1.166667      7/6
# At x=2 f (derivative of Int f) has a local minimum and f(x)=0:
# this is (for Int f) a failing point of inflection and a stationary point
POINT(2, integral(f,0,2), "magenta")
integral(f,0,2); fraction(last())
#   0.8333333     5/6

Other examples of use

```