Funtzioaren grafikaren azterketa

Aginduz-agindu

f[x_] = x^4 - 1. *x^3 + 2. *x^2 - 10. ;

Funtzioaren erroak eta gora-beherak, hau da, bi erroen artean daukan zeinua.

err=Solve[f[x] == 0, 
        x]

erroak = {}; 
    Do[If[Im[x /. err[[i, 1]]] == 0, 
        AppendTo[erroak, x /. err[[i, 1]]]], {i, 1, 
        Length[err]}]

errokoord = 
      Table[{erroak[[i]], 0}, {i, 1, Length[erroak]}]

puntuerro = 
      Table[Point[errokoord[[i]]], {i, 1, Length[erroak]}]

Lehenengo deribatuaren erroak, gorenak eta beherenak.

df[x_] = D[f[x], x];

mut = Solve[df[x] == 0, x]

muturrak = {}; 
    Do[If[Im[x /. mut[[i, 1]]] == 0, 
        AppendTo[muturrak, x /. mut[[i, 1]]]], {i, 1, 
        Length[mut]}]

gorenbeheren = 
      Table[{muturrak[[i]], ddf[muturrak[[i]]]}, {i, 1, 
          Length[muturrak]}]

muturkoord = 
      Table[{muturrak[[i]], f[muturrak[[i]]]}, {i, 1, 
          Length[muturrak]}]

puntumutur = 
      Table[Point[muturkoord[[i]]], {i, 1, Length[muturrak]}]

zuzenmutur = 
      Table[Line[{muturkoord[[i]], {muturrak[[i]], 0}}], {i, 1, 
          Length[muturrak]}]

Bigarren deribatuaren erroak, gorenak eta beherenak.

ddf[x_] = D[f[x], {x, 2}];

inf = Solve[ddf[x] == 0, x]

inflexio = {}; 
    Do[If[Im[x /. inf[[i, 1]]] == 0, 
        AppendTo[inflexio, x /. inf[[i, 1]]]], {i, 1, 
        Length[inf]}]

inflexio

inflexiokoord = 
      Table[{inflexio[[i]], f[inflexio[[i]]]}, {i, 1, 
          Length[inflexio]}]

puntuinf = 
      Table[Point[inflexiokoord[[i]]], {i, 1, 
          Length[inflexio]}]

zuzeninf = 
      Table[Line[{inflexiokoord[[i]], {inflexio[[i]], 0}}], {i, 1, 
          Length[inflexio]}]

Funtzioaren eta bere deribatuen grafikak. f'-ren zeroak f-ren muturrak (gorenak eta beherenak) dira eta f''-ren zeroak f-ren inflexio puntuak dira.

<< Graphics`Legend`

puntuak = 
        Join[erroak, muturrak, inflexio];
xmin = Min[puntuak]; xmax = Max[puntuak];

Show[
        Graphics[{PointSize[0.02], {Hue[0.1], 
              puntuerro}, 
{Hue[0.3], 
              puntumutur}, {Hue[0.6], 
              puntuinf}}], 
AxesOrigin -> {0, 0}, 
        Axes -> True, PlotRange -> All];

irudi = {Plot[{f[x], df[x], ddf[x]}, {x, xmin - 1, 
              xmax + 1}, 
PlotStyle -> {Hue[0.1], 
                Hue[0.3], Hue[0.6]}, DisplayFunction -> Identity], 
          Graphics[{PointSize[0.02], {Hue[0.1], 
                puntuerro}, 
{Hue[0.3], puntumutur, 
                zuzenmutur}, 
{Hue[0.6], puntuinf, 
                zuzeninf}}]};

Show[irudi, PlotRange -> All, 
      DisplayFunction -> $DisplayFunction];

Show[{Plot[{f[x], df[x], ddf[x]}, {x, xmin - 1, 
              xmax + 1}, 
PlotStyle -> {Hue[0.1], 
                Hue[0.3], Hue[0.6]}, 
            DisplayFunction -> 
              Identity, 
PlotLegend -> {"f(x)=" 
                  f[x], "f'(x)=" df[x], "f''(x)=" ddf[x]}, 
            LegendSize -> {0.8, 
                0.4}, 
LegendTextSpace -> 10]}, 
        PlotRange -> All, 
        DisplayFunction -> $DisplayFunction];

Programa osoa funtzio batean bilduta

Funtzioaren analisi osorako programa

OHARRA:   f[x]  funtzioaren menpeko programaren izenburua: 
prog[f_,x_]:=proglaguna[Function[x,f]];   proglaguna[f_]:=Module[{aldag1,aldag2,...},aginduak];

\(funtzio[f_, x_] := 
        funtziolaguna[Function[x, f]]; \ \ \ funtziolaguna[f_] := 
        Module[{i, err, erroak, errokoord, 
puntuerro, mut, 
            muturrak, gorenbeheren, 
            muturkoord, 
puntumutur, zuzenmutur, inf, 
            inflexio, inflexiokoord, 
puntuinf, 
            zuzeninf}, 
df[x_] = D[f[x], x]; 
          ddf[x_] = D[f[x], {x, 2}]; 
err = 
            Solve[f[x] == 0, x]; Print["Erroak: ", err]; 
          erroak = {}; 
Do[
            If[\ Im[x /. err[\([i, 1]\)]] == 0, 
              AppendTo[erroak, x /. err[\([i, 1]\)]]], {i, 1, 
              Length[err]}]; 

          errokoord = Table[{erroak[\([i]\)], 0}, {i, 1, Length[erroak]}]; 

          puntuerro = 
            Table[Point[errokoord[\([i]\)]], {i, 1, 
                Length[erroak]}]; 
mut = 
            Solve[df[x] == 0, x]; Print["Muturrak: ", mut]; 
          muturrak = {}; 
          Do[If[Im[x /. mut[\([i, 1]\)]] == 0, 
              AppendTo[muturrak, x /. mut[\([i, 1]\)]]], {i, 1, 
              Length[mut]}]; 
gorenbeheren = 
            Table[{muturrak[\([i]\)], 
                If[ddf[muturrak[\([i]\)]] > 0, beherena, 
                  gorena]}, 
{i, 1, Length[muturrak]}]; 
          Print["Mutur errealak: ", gorenbeheren]; 

          muturkoord = 
            Table[{muturrak[\([i]\)], f[muturrak[\([i]\)]]}, {i, 1, 
                Length[muturrak]}]; 

          puntumutur = 
            Table[Point[muturkoord[\([i]\)]], {i, 1, Length[muturrak]}]; 

          zuzenmutur = 
            Table[Line[{muturkoord[\([i]\)], {muturrak[\([i]\)], 0}}], {i, 1, 
                Length[muturrak]}]; inf = Solve[ddf[x] == 0, x]; 
          Print["Inflexio puntuak: ", inf]; 
inflexio = {}; 
          Do[If[Im[x /. inf[\([i, 1]\)]] == 0, 
              AppendTo[inflexio, x /. inf[\([i, 1]\)]]], {i, 1, 
              Length[inf]}]; 

          inflexiokoord = 
            Table[{inflexio[\([i]\)], f[inflexio[\([i]\)]]}, {i, 1, 
                Length[inflexio]}]; 

          puntuinf = 
            Table[Point[inflexiokoord[\([i]\)]], {i, 1, Length[inflexio]}]; 

          zuzeninf = 
            Table[Line[{inflexiokoord[\([i]\)], {inflexio[\([i]\)], 0}}], {i, 
                1, Length[inflexio]}]; 
          puntuak = 
            Join[erroak, muturrak, inflexio]; 
xmin = 
            Min[puntuak]; 
          xmax = Max[
              puntuak]; 
Show[{Plot[{f[x], df[x], 
                  ddf[x]}, {x, xmin - 1, 
                  xmax + 1}, 
PlotStyle -> {Hue[0.1], 
                    Hue[0.3], Hue[0.6]}, DisplayFunction -> Identity], 
              Graphics[{PointSize[0.02], {Hue[0.1], 
                    puntuerro}, 
{Hue[0.3], puntumutur, 
                    zuzenmutur}, 
{Hue[0.6], puntuinf, 
                    zuzeninf}}]}, 
            PlotRange -> 
              All, 
DisplayFunction -> $DisplayFunction];];\)

funtzio[x^3 - 4. *x^2 - 5. *x + 3. , x]

Paketea

"c:\Archivos de programa\Wolfram Research\Mathematica\4.2\AddOns\StandardPackages\Garatu" 
karpetan "Funtzio.m" paketea gorde eta kargatu.

<<Garatu`Funtzio`

funtzio[x^3 - 4. *x^2 - 5. *x + 3. , x]