2. vaja 
Funkcije

Definicija funkcije

V programu Mathematica so že definirane nekatere elementarne funkcije; te imajo praviloma ukaze, ki se začnejo z veliko začetnico kot npr. Sin[x], Exp[x], Log[x].
Navadno pa želimo definirati nekoliko bolj zapletene funkcije, katerih predpise podamo sami. Navadno te funkcije definiramo z imeni, ki imajo malo začetnico, da jih ločimo od tistih, ki so že vgrajene v programu Mathematica. Za definicijo uporabimo oglate oklepaje [], v katere vnesemo argumente. Ukaz x_ pomeni npr., da vnesemo en poljuben argument.

f[x_]:=(Sin[x]+1)/(x + Exp[x])

Vrednost  funkcije v neki točki izračunamo podobno kot pri vgrajenih funkcijah.

f[Pi]

Zgornji ukaz nam vrne natančno vrednost funkcije v dani točki. Če nas zanima približna numerična vrednost, uporabimo ukaz N.

N[%]

Definiramo lahko tudi funkcije z več argumenti.

g[x_,y_]:=x^2+y^2

g[3,4]

Z ukazom ??f sedaj dobimo tudi kratek opis funkcije, ki smo jo definirali sami.

??f

1.a) Izračunaj točno in približno vrednost funkcij f(x)=(e^x) ln x+ 5(ln^2)x v točkah x=1, x=e in x=e3.

f[x_]:=Exp[x] Log[x]+5Log[x]^2

f[1]
f[E]
f[E^3]

N[f[1]]
N[f[E]]
N[f[E^3]]

Z ukazom Map lahko sestavimo seznam z vrednostmi funkcije f v poljubnih točkah.

Map[f,{1,E,E^3}]

1.b) Poišči prvih 10 členov zaporedja (Subscript[a, n])= 2(n^2)-1 in jih nariši.

Z ukazom Table[f[x],{x,a,b,k}] lahko dobimo seznam z vrednostmi funkcije f v vseh točkah med a in b, ki so narazen za k.

a[n_]:=2n^2 - 1

s=Table[a[n],{n,1,10}]

Ukaz  ListPlot[s] nariše elemente seznama s.

ListPlot[s]

1.c) Z ukazom  Sum lahko izračunamo vsote členov danega zaporedja.

Sum[a[i],{i,1,10}]

1.d) Izračunaj oba kompozituma funkcij f(x)=(x^2) in g (x) = ((x -1)/x).

f[x_]:=x^2

g[x_]:=(x-1)/x

f[g[x]]
g[f[x]]

Že v prvi vaji smo spoznali ukaz Plot[f[x], {x,a,b}], ki nam nariše graf funkcije f na intervalu od a do b.

1.e) Nariši oba kompozituma funkcij f(x)=(x^2) in g(x)=((x-1)/x) na intervalu od (1,4).

Plot[{f[g[x]],g[f[x]]},{x,1,4},PlotStyle-> {RGBColor[1,0,0],RGBColor[0,0,1]}]

Zgoraj smo večkrat definirali funkcijo f, program pa ima trenutno shranjeno samo zadnjo definicijo.

??f

Če želimo ta zapis funkcije izbrisati iz spomina programa, to storimo z ukazom Clear.

Clear[f]

??f

Definicijsko območje in zaloga vrednosti

Definicijsko območje funkcije f je množica vseh števil x, za katere je funkcija f defininirana. Poznamo omejitve pri nekaterih elementarnih funkcijah:
(1/x); Df=R/{0}
(Sqrt[x]);  Df = [0,∞)
ln(x); Df = (0,∞)
arcsin(x); Df =[-1,1].

2.a) Določi definicijsko območje za funkcijo f(x)=(Sqrt[(x^2)-1]) in nariši njen graf.

<<Algebra`InequalitySolve`

InequalitySolve[x^2-1>0,{x}]

f[x_]:=Sqrt[x^2-1]

Plot[f[x],{x,-3,3},PlotRange->{0,3}]

2.b) Definicijsko območje funkcije dane s predpisom  (Sqrt[(x^2)-1]) lahko tudi omejimo na naslednji način.

Clear[g]

g[x_]:=Sqrt[x^2-1]/;1<x<2

Plot[g[x],{x,-3,3},PlotRange->{0,3}]

Funkciji f in g imata sicer isti predpis, vendar pa sta njuni definicijski območji različni. Če hočemo izračunati vrednost funkcije g v točki x=3, nam Mathematica pove, da tam funkcija g še ni definirana.

g[3]

Število a je v zalogi vrednosti funkcije f tedaj, ko obstaja nek xϵDf, da je f(x)=a. To lahko preverimo na dva načina:
- Enačba f(x)=a ima neko realno rešitev.
- Premica y=a seka graf funkcije f

2.c) Preveri, da je število 1.55 v zalogi vrednosti funkcije (x^4)+1

f[x_]:=x^4+1

Solve[f[x]==1.55]

2.d) Za funkcijo iz naloge 2.c grafično pokaži, da velja Zf=[1,∞).

Plot[f[x],{x,-2,2}]

Injektivnost in inverzna funkcija

Funkcija je injektivna, če za x≠y velja f(x)≠f(y). To lastnost lahko preverimo grafično, saj vemo, da je funkcija injektivna natanko tedaj, ko vsaka vodoravna premica graf funkcije seka natanko v eni točki.

3. Grafično preveri, da funkcija (x^3)-5(x^( 2))+7x-1   ni injektivna

Plot[x^3-5x^2+7x-1,{x,-3,3}]

Iz grafa funkcije razberemo, da bo verjetno funkcija neinjektivna na intervalu [0,3]. Z ukazom PlotRange lahko narišemo samo del funkcije, katerega slika leži  v določenem intervalu.

Plot[x^3-5x^2+7x-1,{x,-3,3},PlotRange->2]

Kjer je funkcija f injektivna, lahko določimo njen inverz (f^(-1)). Velja, da je (Df^(-1))=Zf . Predpis za inverzno funkcijo dobimo, če iz f(y)=x izrazimo y.

4.a) Preveri, da je f(x)=ArcTg((x^3)) injektivna.

f[x_]:=ArcTan[x^3]

funkcija=Plot[f[x],{x,-3,3},PlotStyle->{RGBColor[1,0,0],Thickness[0.01]},AspectRatio->1]

4.b) Nariši graf njene inverzne funkcije z ukazom ParametricPlot.

?ParametricPlot

inverz=ParametricPlot[{f[x],x},{x,-3,3},PlotStyle->{RGBColor[0,1,0],Thickness[0.01]},AspectRatio->1]

4.c) Preveri, da je slika inverza res graf funkcije, prezrcaljen preko simetrale lihih kvadrantov.

Show[funkcija, inverz, Plot[x,{x,-3,3},PlotStyle->Dashing[{0.02}]]]

4.d) Poišči predpis za inverzno funkcijo z ukazom Solve.

Solve[f[y]==x,y]

4.e) Izračunaj vrednost inverza v točki 0.5.

((Tan[0.5])^(1/3))

4.f) Reši nalogo 4.e še z ukazom NSolve.

NSolve[f[y]==0.5,y]

Zlepki

Poznamo pa tudi zlepljene funkcije, ki jih v programu ustvarimo s pomočjo ukaza If.

5.a) Definiraj zlepek funkcij f(x)=(x^2) in g (x) = (5/4)-(1/4)(e^(x+1))v točki x=-1 in nariši njegov graf.

??If

h[x_]:=If[x<-1,x^2,5/4-1/4Exp[x+1]]

Plot[h[x],{x,-2,2},PlotRange->2,AspectRatio->Automatic]

5.b) Iz slike smo opazili, da je zlepek injektiven, poišči njegov inverz, pomagaj z njegovo parametrično sliko in ukazom Solve.

ParametricPlot[{h[x],x},{x,-2,2},AspectRatio->Automatic,PlotRange->2]

Solve[y^2==x,y]

Solve[5/4-1/4Exp[y+1]==x,y]

k[x_]:=If[x<1,-1+Log[5-4x],-Sqrt[x]]

Plot[k[x],{x,-2,2},AspectRatio->Automatic,PlotRange->2]

Naloge

1. Sestavi seznam, ki vsebuje točne vrednosti funkcije f(x)=3sin(x)-2cos(x) v točkah 0,(π/6), (π/4),(π/3)in (π/2).

2. Označimo z (Subscript[a, n]) zaporedje, katerega n-ti člen je n-to liho število. 
a) Nariši prvih 10 členov zaporedja.
b) Izračunaj vsoto prvih 50 lihih števil.

3. Dana je funkcija  f(x)=(Sqrt[3-2x-(x^2)])
a) Poišči definicijsko območje funkcije f in nariši njen graf.
b) S pomočjo grafa preveri, ali je funkcija injektivna in določi njeno zalogo vrednosti.

4. Dana je funkcija g(x)=x |x| ter funkcija h(x), ki je zlepek funkcij -(x^2) in (x^2) v točki x=0.
a) Nariši obe funkciji in pokaži, da sta enaki.
b) Grafično preveri, da je funkcija g(x)=x |x| injektivna.
c) S pomočjo ukaza ParametricPlot nariši njen inverz.
c) S pomočjo kompozituma preveri, da je njen inverz funkcija k(x)=sgn(x) (Sqrt[|x|]).
d) Poskusi najti njen inverz še z ukazom Solve in ga definiraj kot zlepek.