Praktikum iz Računarskih Alata u Matematici - raum.etf.rsraum.etf.rs/PDFs/Sem[2010]_02_01_(Ema_Petronijevic_09_073).pdf · Praktikum iz Računarskih Alata u Matematici Tema 2.01

Embed Size (px)

Citation preview

  • Praktikum iz Raunarskih Alata u Matematici

    Tema 2.01.

    Crtanje grafika funkcija jedne promenljive. Crtanje grafika implicitno zadatih funkcija jedne promenljive. Odreivanje graninih vrednosti. Profesor: Dr Branko MaleeviStudent: Emilija PetronijeviBroj indeksa: 73/09Odsek: Fizika elektronika

    1. Uvod U ovim naim prvim susretima sa ozbiljnom naukom i prvim ozbiljnijim izraunavanjima i simulacijama jako je bitno da imamo predstavu kako neka funkcija izgleda u prostoru i da steknemo oseaj za njeno ponaanje zavisno od raznih parametara. MuPAD prua irok spektar opcija za vizuelizaciju matematikih funkcija preko biblioteke plot. Ova biblioteka se koristi za crtanje 2D i 3D grafika, sa animacijom ili bez, i sadri sve procedure za grafiku obradu:

  • info(plot)

    Library 'plot': graphical primitives and functions for two- and three-dimension\

    al plots

    -- Interface:

    plot::AmbientLight, plot::Arc2d, plot::Arrow2d,

    plot::Arrow3d, plot::Bars2d, plot::Bars3d,

    plot::Box, plot::Boxplot, plot::Camera,

    plot::Canvas, plot::Circle2d, plot::Circle3d,

    plot::ClippingBox, plot::Cone, plot::Conformal,

    plot::CoordinateSystem2d, plot::CoordinateSystem3d, plot::Curve2d,

    plot::Curve3d, plot::Cylinder, plot::Cylindrical,

    plot::Density, plot::DistantLight, plot::Dodecahedron,

    plot::Ellipse2d, plot::Ellipsoid, plot::Function2d,

    plot::Function3d, plot::Group2d, plot::Group3d,

    plot::HOrbital, plot::Hatch, plot::Hexahedron,

    plot::Histogram2d, plot::Icosahedron, plot::Implicit2d,

    plot::Implicit3d, plot::Inequality, plot::Integral,

    plot::Iteration, plot::Line2d, plot::Line3d,

    plot::Listplot, plot::Lsys, plot::Matrixplot,

    plot::MuPADCube, plot::Octahedron, plot::Ode2d,

    plot::Ode3d, plot::Parallelogram2d, plot::Parallelogram3d,

    plot::Piechart2d, plot::Piechart3d, plot::Plane,

    plot::Point2d, plot::Point3d, plot::PointLight,

    plot::PointList2d, plot::PointList3d, plot::Polar,

    plot::Polygon2d, plot::Polygon3d, plot::QQplot,

    plot::Raster, plot::Rectangle, plot::Reflect2d,

    plot::Reflect3d, plot::Rotate2d, plot::Rotate3d,

    plot::Scale2d, plot::Scale3d, plot::Scatterplot,

    plot::Scene2d, plot::Scene3d, plot::Sequence,

    plot::SparseMatrixplot, plot::Sphere, plot::Spherical,

    plot::SpotLight, plot::Streamlines2d, plot::Sum,

    plot::Surface, plot::SurfaceSTL, plot::SurfaceSet,

    plot::Sweep, plot::Tetrahedron, plot::Text2d,

    plot::Text3d, plot::Transform2d, plot::Transform3d,

    plot::Translate2d, plot::Translate3d, plot::Tube,

    plot::Turtle, plot::VectorField2d, plot::VectorField3d,

    plot::Waterman, plot::XRotate, plot::ZRotate,

    plot::copy, plot::delaunay, plot::getDefault,

    plot::hull, plot::modify, plot::setDefault

    -- Exported:

    plot, plotfunc2d, plotfunc3d

    Ona sadri preko 100 tipova objekata i preko 400 izbora za njihov izgled pri crtanju, ali e nam uglavnom biti potreban mali deo njih. U opisu svake funkcije iz biblioteke su parametri koji su nam potrebni i lista podeavanja za njih.

  • 2. Crtanje grafika funkcija jedne promenljive Opti oblik za crtanje grafika funkcije jedne promenljive jeste:

    plotfunc2d(f1,f2,...fn,x=xmin..xmax,dodatne opcije);

    gde su:

    f1,f2,...fn - funkcije ije grafike elimo da nacrtamo;x=xmin..xmax - opseg x-ose, odnosno x-koordinata koja, ako ne zadamo opseg, ide od -5 do 5;dodatne opcije - sve dodatne opcije crtanja grafika.

    plotfunc2d(x^4-x^3)

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    100

    200

    300

    400

    500

    600

    700

    x

    y

    plotfunc2d(x^4-x^3,x=-10..10)

  • -10 -8 -6 -4 -2 0 2 4 6 8 10

    2000

    4000

    6000

    8000

    10000

    x

    y

    Duina y-ose se automatski podeava, ali mi to moemo promeniti preko naredbe u opcijama YRange = y min ..y max iliViewingBoxYRange = y min ..y max .

    plotfunc2d(x^4-x^3,x=-10..10,YRange=0..100000)

    -10 -8 -6 -4 -2 0 2 4 6 8 10

    10000

    20000

    30000

    40000

    50000

    60000

    70000

    80000

    90000

    1e+5

    x

    y

    plotfunc2d(3*sin(x)+5*cos(x),x=-20..20,YRange=-10..10)

  • -20 -15 -10 -5 5 10 15 20

    -10

    -8

    -6

    -4

    -2

    2

    4

    6

    8

    10

    x

    y

    plotfunc2d(exp(-x)*sin(x))

    -5 -4 -3 -2 -1 1 2 3 4 5

    20

    40

    60

    80

    100

    120

    140

    x

    y

    plotfunc2d((10*sin(10*x))/x+cos(10*x),x=0..5)

  • 1 2 3 4 5

    -20

    0

    20

    40

    60

    80

    100

    x

    y

    plotfunc2d() je skraeno od plot(plot::Function2d()), gde nam je Function2d() grafik jedne promenljive sada deklarisan kao objekat koji iscrtavamo funkcijom plot(), a naredba plot:: dohvata proceduru iz biblioteke plot.

    b:=plot::Function2d((sin(x)^2)*exp(-x)) //deklariemo grafiki objekat

    plot::Function2d(sin(x)2 e x, x = 5..5

    )

    plot(b) //crtamo taj objekat, mogli smo i direktno

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    20

    40

    60

    80

    100

    120

    x

    y

    U MuPAD-u je veliki izbor ureivanja grafika.

    Moemo specificirati Title, Header, Footer, poziciju Title-a, nazive

  • koordinatnih osa i orijentaciju tih naziva...

    Stringove kucamo izmedu duplih navodnika.

    plotfunc2d(x^(ln(3*x)), Title=" Neka funkcija ", Header= " Vrhh", Footer= "Dole", TitlePosition=[3,30])

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    20

    40

    60

    80

    x

    y

    Neka funkcija

    Vrhh

    Dole

    Nazive koordinatnih osa kucamo u naredbi AxesTitles=[imex,imey],

    a naziv y-ose rotiramo sa YAxisTitleOrientation.

    plotfunc2d((10*sin(10*x))/x+cos(10*x),x=0..5, Title="LevaTrasOFE",TitleP

    1 2 3 4 5

    -20

    0

    20

    40

    60

    80

    100

    KORENizENERGIJE

    f(K

    OR

    EN

    izE

    NE

    RG

    IJE

    *a)

    LevaTrasOFE

    Boju grafika menjamo opcijom Color koja stavlja istu boju svim graficima, odnosno Colors kad elimo vie grafika razliitih boja. Ako uzimamo ve postojeu boju, kaemo Color=RGB::BOJA A, a ako hoemo "sami" da pravimo boju, u MuPAD-u menjamo 4

  • parametra Color=[r,g,b,a], gde su r, g, b jaine crvene, zelene i crne boje respektivno i mogu biti od 0 do 1, a a je koeficijent prozirnosti i takoe moe biti od 0 do 1.

    plotfunc2d(2*sin(5*x)/x+cos(5*x),cos(5*x),x=0..10, YRange=-15..15,Colors=[RGB::Green,[1,0,1,1]])

    cos(5*x) + 2/x*sin(5*x)cos(5*x)

    1 2 3 4 5 6 7 8 9 10

    -15

    -10

    -5

    0

    5

    10

    15

    x

    y

    emu boja kojima se iscrtavaju grafici sa LineColorType koji moe uzimati vrednosti

    Dichromatic, Flat, Functional, Monochrome, Rainbow. Po default-u je flat.Debljinu linija menjamo sa LineWidth=d, gde je d realan broj.Za izgled samih linija imamo LineStyle stilove Dashed, Dotted ili Solid

    a:=x^3; b:=x^4; c:=ln(x^2);

    x3

    x4

    ln(x2)

    plotfunc2d(a,b,c,x=0..10,YRange=0..100, LineColorType=Rainbow,LineWidth=2,LineStyle=Dashed)

  • x^3x^4ln(x^2)

    0 1 2 3 4 5 6 7 8 9 100

    20

    40

    60

    80

    100

    x

    y

    Takoe moemo menjati izgled i podelu koordinatnih osa. Opcija Axes moe uzimati vrednosti None, Automatic, Boxed, Frame, Origin ili ih iskljuimo opcijom AxesVisible.

    plotfunc2d(x*sin(x),Axes=Boxed)

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    -4

    -3

    -2

    -1

    0

    1

    x

    y

    plotfunc2d(x*sin(x),Axes=Frame)

  • -5 -4 -3 -2 -1 0 1 2 3 4 5

    -4

    -3

    -2

    -1

    0

    1

    x

    y

    plotfunc2d(x*sin(x),Axes=Origin)

    -5 -4 -3 -2 -1 1 2 3 4 5

    -4

    -3

    -2

    -1

    1

    x

    y

    plotfunc2d(x*sin(x),AxesVisible)

  • -5 -4 -3 -2 -1 1 2 3 4 5

    -4

    -3

    -2

    -1

    1

    x

    y

    Podeoci se automatski odreuju podeavanjem duine koordinatnih osa, i to program glavne podeoke oznai brojevima, a one manje, izmeu, samo crticama. Mi to moemo menjati naredbama:XTicksNumber, YTicksNumber: moe biti None, Lower, Normal (po default-u) i High.XTicksBetween, YTicksBetween: moe biti pozitivan ceo broj.

    plotfunc2d(x^(sin(x))-1)//by default

    -5 -4 -3 -2 -1 1 2 3 4 5

    -0.8

    -0.6

    -0.4

    -0.2

    0.2

    0.4

    0.6

    0.8

    x

    y

    plotfunc2d(x^(sin(x))-1, XTicksNumber=High, YTicksBetween=4)

  • -5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

    -0.8

    -0.6

    -0.4

    -0.2

    0.2

    0.4

    0.6

    0.8

    x

    y

    Ako elimo da izaberemo odakle nam kree obeleavanje podeljaka i na koliko se deava, koristimo komande (X,Y)TicksAnchor i (X,Y)TicksDistance.

    plotfunc2d(sin(x)*cos(x)*exp(x),XTicksAnchor=0,YTicksAnchor=5,XTicksDistance=PI,YTicksDistance=5)

    -3.1416 3.1416

    -40

    -35

    -30

    -25

    -20

    -15

    -10

    -5

    5

    10

    15

    20

    25

    x

    y

    Opcijom TicksLabelStyle menjamo rotaciju brojeva na podeocima, i ona moe uzimati vrednosti Horizontal, Vertical, Diagonal, Shifted.

    plotfunc2d(sin(x)*cos(x),TicksLabelStyle=Vertical)

  • -5 -4 -3 -2 -1 0 1 2 3 4 5

    -0.5

    -0.4

    -0.3

    -0.2

    -0.1

    0.1

    0.2

    0.3

    0.4

    0.5

    x

    y

    plotfunc2d(sin(x)*cos(x),TicksLabelStyle=Shifted)

    -5-4

    -3-2

    -1 12

    34

    5

    -0.5

    -0.4

    -0.3

    -0.2

    -0.1

    0.1

    0.2

    0.3

    0.4

    0.5

    x

    y

    plotfunc2d(sin(x)*cos(x),TicksLabelStyle=Diagonal)

  • -5 -4 -3 -2 -1 1 2 3 4 5

    -0.5

    -0.4

    -0.3

    -0.2

    -0.1

    0.0

    0.1

    0.2

    0.3

    0.4

    0.5

    x

    y

    Ako hoemo grafik da umreimo, dodaemo mreu po gravnim podeocima naredbom GridVisible=TRUE, a po meupodeocima SubgridVisible=TRUE.plotfunc2d(sin(x)*cos(x),GridVisible=TRUE,SubgridVisible=TRUE,YRange=-1..1)

    -5 -4 -3 -2 -1 1 2 3 4 5

    -1.0

    -0.8

    -0.6

    -0.4

    -0.2

    0.2

    0.4

    0.6

    0.8

    1.0

    x

    y

    Ako hoemo da nam veliine podeljaka na x-osi i y-osi budu jednake, odn. ose budu u razmeri, opcijom Scaling koja moe biti Constrained ili , po default-u, Unconstrained, kad MuPAD sam odreuje razmeru y-ose u odn.na rang vrednosti x-ose.plotfunc2d(exp(x)*cos(x))//Unconstrained

  • -5 -4 -3 -2 -1 1 2 3 4 5

    -30

    -20

    -10

    10

    20

    30

    40

    x

    y

    plotfunc2d(exp(x)*cos(x),Scaling=Constrained)

    -5 5

    -30

    -20

    -10

    10

    20

    30

    40

    x

    y

    Ako imamo funkciju koja je iz nekoliko delova / prekidna, MuPAD ima naredbu piecewise([domen,f-ja],[domen,f-ja]) kojom moemo definisati takvu funkciju:y:=piecewise([x3,sin(x)])\{

    x2 if x 1

    sin(x) if 3 < x

    plotfunc2d(y)

  • -5 -4 -3 -2 -1 1 2 3 4 5

    5

    10

    15

    20

    25

    x

    y

    y:=piecewise([x3,sin(x)]){x2 if x 6

    sin(x) if 3 < x

    Ako smo pogreno zadali funkciju tako da joj se preklapaju segmenti, MuPAD e prosto odsei segmente na kojima je duplo definisana, iscrtavi tu samo prvi deo funkcije.plotfunc2d(y,x=0..10, YRange=-10..10)

    1 2 3 4 5 6 7 8 9 10

    -10

    -8

    -6

    -4

    -2

    0

    2

    4

    6

    8

    10

    x

    y

    Ako nam treba crtanje u drugim koordinatnim sistemima, opcijom CoordinateType menjamo skale x iy-ose u: LinLin, LogLin, LinLog, LogLog. plotfunc2d(exp(x))

  • -5 -4 -3 -2 -1 0 1 2 3 4 5

    20

    40

    60

    80

    100

    120

    140

    x

    y

    plotfunc2d(exp(x),CoordinateType=LogLin)

    Error: expecting a positive X range for a logarithmic X axis. Got Xmin = -5.0 [plot::Function2d::MuPlotML]

    MuPAD se buni ako mu, pri menjanju u drugi koordinatni sistem, funkcija nije dobro definisana, ovoga puta za x osu (ne moe log(negativan broj))plotfunc2d(exp(x),CoordinateType=LinLog)

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    0.01

    0.1

    1

    10

    100

    x

    y

    Ovo su bile neke od opcija iz funkcije plotfunc2d, ali mnogo vie opcija ima u samoj biblioteci plot.Ako hoemo da obojimo deo oblasti izmeu grafika i y-ose, tu je procedura Hatch.

    plot::Hatch(funkcije, , [FillColor, FillPattern]) gde su:

    funkcije - definisane fukncije; ako je jedna, popunjava se oblast

  • izmeu nje i x-ose, a ako je vie funkcija, popunjava se oblast izmeu njih - ako nije definisan, popunjava se sve, od minus beskonano do beskonano.FillColor - odreuje boju kojom se popunjavaFillPattern - odreuje nain popunjavanja: CrossedLines, DiagonalLines, FDiagonalLines, HorizontalLines, Solid, VerticalLinesf:=plot::Function2d(x*exp(x))

    plot::Function2d(x ex, x = 5..5)

    g:=plot::Function2d(sin(x))

    plot::Function2d(sin(x), x = 5..5)

    h:=plot::Hatch(f,-10..10,FillColor=RGB::Blue)

    plot::Hatch("Function2d " (x*exp(x), x = -5..5, 0, 10..10)

    plot(h)//Iscrtava samo rafirani grafik

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    x

    y

    plot(f,h)

  • -5 -4 -3 -2 -1 0 1 2 3 4 5

    x

    y

    h:=plot::Hatch(g,-10..10,FillColor=RGB::Blue)

    plot::Hatch("Function2d " (sin(x), x = -5..5), 0, 10..10)

    plot(h)

    -5 5

    -1.0

    1.0

    x

    y

    Prostor izmeu f i g popunili bismo ovako:a:=plot::Function2d(x*exp(x))

    plot::Function2d(x ex, x = 5..5)

    b:=plot::Function2d(exp(x)+exp(-x))

    plot::Function2d(ex + e x, x = 5..5

    )

  • c:=plot::Hatch(a,b,FillColor=RGB::Green,FillPattern=Solid);

    plot::Hatch("Function2d " (x*exp(x), x = -5..5), "Function2d " (exp(x, ..)

    plot(c)

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    100

    200

    300

    400

    500

    600

    700

    x

    y

    Ako elimo da crtamo u polarnim koordinatama, koristi se funkcija plot(plot::Polar([ r, ],u = umin .. umax, a=amin..amax, Opcije)) iz biblioteke plot, gde su u i a parametri ove krive.plot(plot::Polar([1,u],u=0..2*PI))

    -1.0 -0.8 -0.6 -0.4 -0.2 0.2 0.4 0.6 0.8 1.0

    -1.0

    -0.8

    -0.6

    -0.4

    -0.2

    0.2

    0.4

    0.6

    0.8

    1.0

    x

    y

    plot(plot::Polar([u,1],u=0..2*PI))

  • 0 1 2 30

    1

    2

    3

    4

    5

    x

    y

    plot(plot::Polar([r^2,r],r=0..3*PI/2))

    -10 -8 -6 -4 -2

    -22

    -20

    -18

    -16

    -14

    -12

    -10

    -8

    -6

    -4

    -2

    02

    4

    x

    y

    Po default-u, krive se crtaju po ekvidistantnim takama koje sam program predlae. Zato ponekad, pri veim zakrivljenostima, on uzme nedovoljan broj taaka i izmeu njih crta prave linije: plot(plot::Polar([r, 4*r^2], r = 0..PI))

  • -3 -2 -1 1 2 3

    -3

    -2

    -1

    1

    2

    3

    x

    y

    Ovo moemo promeniti opcijom Mesh koja e poveati broj taaka koje e funkcija povezivati.plot(plot::Polar([r, 4*r^2], r = 0..PI,Mesh=400))

    -3 -2 -1 1 2 3

    -3

    -2

    -1

    1

    2

    3

    x

    y

    Sada nam je funkcija dobra za mala rastojanja, ali na veim su i dalje prave linije. Da bismo poboljali izgled grafika za vea rastojanja, imamo opciju AdaptiveMesh=n, gde je n stepen broja 2 , pa e izmeu svake 2 take prvobitne mree MuPAD crtati 2n

    taaka.plot(plot::Polar([r, 4*r^2], r = 0..PI,AdaptiveMesh=4))

  • -3 -2 -1 1 2 3

    -3

    -2

    -1

    1

    2

    3

    x

    y

    MuPAD ima i neka ogranienja pri crtanju grafika. Recimo, ne moemo zadati beskonaan domen, jer MuPAD numeriki izraunava vrednosti funkcije.plot(x^2,x=-Infinity..Infinity)

    Error: unexpected range argument: x = -Infinity..Infinity [plot::Canvas::new]

    Iz prethodnog rada, videli smo da MuPAD ima problema kad zbog numerikog izraunavanja ne moe da nae nule neke naizgled jednostavne funkcije. Pokuajmo da naemo grafiki nule iste funkcije 10*x4+ln(2-x):plotfunc2d(10*x^4,-ln(2-x),Colors=[RGB::Green,RGB::Red])

    10*x^4-ln(2 - x)

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    1000

    2000

    3000

    4000

    5000

    6000

    x

    y

    Smanjimo duinu y-ose:plotfunc2d(10*x^4,-ln(2-x),Colors=[RGB::Green,RGB::Red],YRange=0..50,x=0..3)

  • 10*x^4-ln(2 - x)

    0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.00

    10

    20

    30

    40

    50

    x

    y

    MuPAD ne iscrtava funkciju do beskonanosti, pa ne moemo videti presek. Poto MuPAD izraunava numeriki take grafika, onda postoji konano mnogo taaka u okolini take x=2, pa e funkcija biti ograniena. Poveanje DIGITS-a e dati precizniji grafik, ali to nam u ovom sluaju nee pomoi.

    Za pamenje grafika se koristi opcija OutputFile="putdofajla\\imefajla.ekstenzija". Opcija OutputOptions daje dodatne mogunosti za obraivanje grafika prilikom eksportovanja.

    plotfunc2d(10*sin(10*x)/x+cos(10*x), OutputFile="D:\\Slicica.jpeg")

    3.Crtanje grafika implicitno zadanih funkcija jedne promenljive.

    Ako nam je funkcija implicitno zadata, umesto plot::Function2d() koristi se plot::Implicit2d(f(x, y)) ,dok je su sve druge opcije iste.

    Primeri:

    plot(plot::Implicit2d(x^4+y^2-1, x = -1..1, y = -1..1));

  • -1.0 -0.8 -0.6 -0.4 -0.2 0.2 0.4 0.6 0.8 1.0

    -1.0

    -0.8

    -0.6

    -0.4

    -0.2

    0.2

    0.4

    0.6

    0.8

    1.0

    x

    y

    plot(plot::Implicit2d(-5+x+y^2, x = -10..10, y = -10..10), LineWidth=1.43, Color=RGB::Green);

    -10 -8 -6 -4 -2 2 4 6 8 10

    -10

    -8

    -6

    -4

    -2

    2

    4

    6

    8

    10

    x

    y

    plot(plot::Implicit2d(x^2/6-y^2/4=1, x = -10..10, y = -10..10),LineColorType=Rainbow,LineWidth=3)

  • -10 -8 -6 -4 -2 2 4 6 8 10

    -10

    -8

    -6

    -4

    -2

    2

    4

    6

    8

    10

    x

    y

    4.Odreivanje graninih vrednosti funkcija jedne promenljive

    Za odreivanje graninih vrednosti koristi se opcija limit :

    limit(f(x), x=a, smer prilaenja) gde je:

    f(x) - funkcija po promenljivoj x iju graninu vrednost traimoa - taka u kojoj traimo graninu vrednostsmer prilaenja - sa koje strane prilazimo taki u kojoj traimo limes, tj. slui za nalaenje leve (

    limit(ln(2-x),x=2,Left)

    limit(sin(x)/x,x=0)

    1

    limit(actan(x),x=1)

    actan(1)

    f:=piecewise([x=2,sin(x)])

    xex

    if x < 2

    sin(x) if 2 x

  • limit(f,x=2,Left)

    2e2

    limit(f,x=2,Right)

    sin(2)

    limit(abs(-x),x=0)

    0

    Po definiciji, moemo nai izvod preko granine vrednosti:f:=x->sin(x)*x

    x sin(x) x

    limit((f(x+h)-f(x))/h,h=0)

    sin(x) + x cos(x)

    f:=x->abs(x)

    x x

    limit((f(x+h)-f(x))/h,h=0)

    undefined

    Nalaenje granine vrednosti sa parametrima:

    limit(arccos(x-p),x=3)2 arcsin(3 p)

    limit(x^2/exp(x),x=infinity)

    0

    Primena Lopitalovog pravila:f:=x->exp(x)/x^3

    x ex

    x

    diff(exp(x),x)/diff(x^3,x)

    ex

    3 x2

    diff(exp(x),x)/diff(3*x^2,x)

    ex

    6 x

    diff(exp(x),x)/diff(6*x,x)

    ex

    6

  • limit(exp(x)/6,x=infinity)

    I bez Lopitalovog pravila:

    limit(exp(x)/x^3,x=infinity)

    limit(exp(x)/x^3,x=0)

    undefined

    5.Primeri sa predmeta Osnovi fizike elektronike Poluprovodnike srukture su osnova dananje elektronike, a primena kvantnih efekata je njena budunost.

    U kvantnom svetu prestaju da vae klasini Njutnovi zakoni, a veina veliina vie ne moe imati kontinualne vrednosti,ve diskretne. estice se tu opisuju redingerovom jednainom, koja nema sama fiziki znaaj, ali kvadrat njene amplitude je srazmeran verovatnii da se estica nae na tom mestu u tom trenutku. Nas uvek interesuju mogue energije estica i verovatnoa da e ih estice imati, jer e makroskopske veliine kao to su koncentracija nosilaca, pa samim tim gustina struje, zavisiti od ovih energija.

    Reavanjem redingerove jednaine za 1D Kronig-Penney model kristalne strukture poluprovodnika, dobija se disperziona relacija:

  • Energija koju traimo sadrana je u koeficijentu ``:

    k je kvazi-talasni vektor i on moe imati proizvoljnu vrednost, ali e funkcija sa leve strane uvek biti izmeu -1 i 1.

    Ostale konstante jesu:

    a - periodinost potencijala koja je, zapravo, rastojanje izmeu atomaU,w - visina i irina potencijalne barijereh - Plankova konstantam - masa estice

    Uvedimo koeficijent propustljivosti barijere:

    P=m*w*U/h2

    Dakle, disperziona relacija koja e dati dozvoljene energije je:

    cos( a) + P sin( a)

    = cos(a k)

    Neka je perioda a=5*10-10m, a koeficijent propustljivosti P=0.2*1011

    Konstante masa elektrona i h su poznate.Nacrtajmo levu stranu trascedentne jednaine:

    a:=5*10^(-10);P:=0.2*10^11;hprec:=6.582*10^-16;m:=9.31*10^(-31);

  • 12000000000

    2.0 1010

    6.582 10 16

    9.31 10 31

    Leva:=P*a*(sin(``*a)/(``*a))+cos(``*a)

    cos

    (

    2000000000

    )+

    2.0 1010 sin(

    2000000000

    )

    MuPAD prijavljuje greku kad pokuavam da iscrtam funkciju od ``*a, verovatno zato to je a konstanta.Stavimo da je A=``*a;

    leva:=A->P*a*sin(A)/A+cos(A)

    A P a sin(A)

    A + cos(A)

    plotfunc2d(leva,A=0..30)

    2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

    -2

    0

    2

    4

    6

    8

    10

    A

    y

    Poto je k proizvoljno, funkcija sa desne strane e uvek ii od -1 do 1. Dakle, disperziona relacija bie zadovoljena za svako A=``*a za koje je leva izmeu -1 i 1.

    plotfunc2d(leva,1,-1,A=0..30)

  • A -> (P*a*sin(A))/A + cos(A)1-1

    2 4 6 8 10 12 14 16 18 20 22 24 26 28 30

    -2

    0

    2

    4

    6

    8

    10

    A

    y

    Delovi funkcije leva koji su izmeu -1 i 1 pokazuju nam da u ovom modelu nemamo diskretne energije ve, usled proizvoljnosti talasnog vektora, dobijamo itave zone dozvoljenih energija. irine ovih zona moemo proitati sa grafika na sledei nain:

    Za, recimo, 1. zonu namestimo kursor grafika na prvi presek funkcije leva i funkcije y=1 i oitamo A1=2.5491. Zaa drugi presek, sa funkcijom y=-1 oitamo A2=2,9357.A1 i A2 daju granice energija za prvu zonu:

    A1:=2.5491;beta1:=A1/a;A2:=2.9357;beta2:=A2/a;

    2.5491

    5098200000.0

    2.9357

    5871400000.0

    E1:=1.6*(10^(-19))*(beta1^2)*(hprec^2)/(2*m)

    0.9675864974

    E2:=1.6*(10^(-19))*(beta2^2)*(hprec^2)/(2*m)

    1.283333109

    Dakle, irina prve energetske zone je [eV]:

    E1:=E2-E1

  • E1:=E2-E1

    0.3157466117

    Talasni vektor je mogue eksciplitno dobiti iz transcedentne relacije, polazei od energije:

    k:=A->arccos(P*a*sin(A)/A+cos(A))/a

    2000000000 arccos

    (cos(A) + 10.0 sin(A)

    A

    )

    plotfunc2d(k,A=0..20,Title="Talasni vektor od beta*a",TitlePosition=[10,5])

    0 2 4 6 8 10 12 14 16 18 200

    1e+9

    2e+9

    3e+9

    4e+9

    5e+9

    6e+9

    A

    y

    Talasni vektor od beta*a

    Gustina dozvoljenih energetskih stanja definie se kao broj dozvoljenihjedinici zapremine. Za provodnu zonu:

    ro:=E->(1/(2*PI*PI))*(2*m/(hprec)^2)*(E-Ec)^0.5

    E 1

    2 2 m

    hprec2 (E Ec)0.5

    Neka nam je provodna zona na E=0.25 ev. Iscrtajmo gustinu.

    Ec:=0.25

    0.25

    plotfunc2d(ro,Title="Gustina dozvoljenih energetskih stanja",TitlePositi

    Warning: 'FillColor' makes no sense in plot::Function2d, ignored [plotfunc2d]

    Warning: 'FillPattern' makes no sense in plot::Function2d, ignored [plotfunc2d]

  • -5 -4 -3 -2 -1 0 1 2 3 4 5

    0.1

    0.2

    0.3

    0.4

    Energija [eV]

    gustina

    Gustina dozvoljenih energetskih stanja

    f:=plot::Function2d(ro)

    plot::Function2d

    (E 1

    2 2 m

    hprec2 (E Ec)0.5, x = 5..5

    )

    c:=plot::Hatch(f,FillColor=RGB::Green,FillPattern=Solid,Title="Balk",TitlePosition=[4,0.3]);

    plot::Hatch("Function2d " (E -> (1, 0, ..)

    plot(c)

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    0.1

    0.2

    0.3

    0.4

    x

    y

    Balk

    Ovo je bio primer 3D strukture, odnosno kako u balku izgleda funkcija gustine dozvoljenih energetskih stanja.Ali kada imamo, npr, kvantnu taku, postojanje nosilaca je konfinirano u sve 3 dimenzije, pa gustina stanja postaje diskretna:

  • plotfunc2d(1,2,3,4,AxesTitles=["Gustine","Na energijama"])

    1234

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    2

    3

    4

    Gustine

    Na energijama

    U kvantnoj statistikoj fizici, verovatnoa nalaenja elektrona na nekom energetskom nivou data je Fermi-Dirakovom raspodelom:

    fFD = 1 / (1+exp((E-EF )/kBT)),

    gde je T- temperatura, kB - Bolcmanova konstanta, E energija estice, a EF energija Fermijevog nivoa, koji pravi granicu izmeu verovatnoe vee ili manje od 50 % da e neko energetsko stanje biti popunjeno.

    f:=E->(1+exp((E-EF)/(k*T)))^(-1)

    E 1

    1 + e

    E EF

    k T

    k:=8.617*10^-5

    0.00008617

    EF:=0.25

    0.25

    T:=0;

    0

  • k*T

    0

    plotfunc2d(f,0.5,Scaling=Constrained)

    E -> 1/(1 + exp((E - EF)/(k*T)))0.5

    -5 -4 -3 -2 -1 1 2 3 4 5

    1

    x

    y

    Opet vidimo da MuPAD ne moe da crta funkciju kojoj ima deljenje nulom, pa je izostavio FD funkciju raspodelena temperaturi apsolutne nule. Da vidimo za malo veu od aps. nule:

    T:=0.000001

    0.000001

    plotfunc2d(f,0.5,Title="Fermi-Dirac-ova raspodela",TitlePosition=[3,0.9],AxesTitles=["E","Probability"])

    E -> 1/(1 + exp((E - EF)/(k*T)))0.5

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    0.2

    0.4

    0.6

    0.8

    1.0

    E

    Probability

    Fermi-Dirac-ova raspodelaFermi-Dirac-ova raspodela

    Na sobnoj temperaturi (T=300K) f-ja izgleda ovako:

    T:=300

  • 300

    plotfunc2d(f,0.5,TitlePosition=[3,0.9],AxesTitles=["E","Probability"])

    E -> 1/(1 + exp((E - EF)/(k*T)))0.5

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    0.2

    0.4

    0.6

    0.8

    1.0

    E

    Probability

    T:=1000;

    1000

    plotfunc2d(f,0.5,TitlePosition=[3,0.9],AxesTitles=["E","Probability"])

    E -> 1/(1 + exp((E - EF)/(k*T)))0.5

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    0.2

    0.4

    0.6

    0.8

    1.0

    E

    Probability

    Koncentracija nosilaca jednaka je broju nosilaca po zapremini, a to je srazmerno gustini odreenog energetskog stanja i verovatnoi da je ono popunjeno: n(E)=fFD * ro.ro:=E->(1/(2*PI*PI))*(2*m/(hprec)^2)*(E-Ec)^0.5

  • ro:=E->(1/(2*PI*PI))*(2*m/(hprec)^2)*(E-Ec)^0.5

    E 1

    2 2 m

    hprec2 (E Ec)0.5

    f:=E->(1+exp((E-EF)/(k*T)))^(-1)

    E 1

    1 + e

    E EF

    k T

    n:=ro*f(E 1

    2 2 m

    hprec2 (E Ec)0.5

    ) E

    1

    1 + e

    E EF

    k T

    plotfunc2d(n,AxesTitles=["Energija","Koncentracija"],YAxisTitleOrientation=Vertical)

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    0.002

    0.004

    0.006

    0.008

    0.010

    0.012

    0.014

    0.016

    0.018

    Energija

    Koncentr

    acija

    g:=plot::Function2d(sin(x))

    h:=plot::Hatch(f,-10..10,FillColor=RGB::Blue)

    n:=plot::Function2d(ro*f)

    plot::Function2d

    (E 1

    2 2 m

    hprec2 (E Ec)0.5

    ) E

    1

    1 + e

    E EF

    k T

    , x = 5..5

    h:=plot::Hatch(n,FillColor=RGB::Green,FillPattern=Solid)

  • h:=plot::Hatch(n,FillColor=RGB::Green,FillPattern=Solid)

    plot::Hatch(

    "Function2d

    0, ..)

    plot(h)

    -5 -4 -3 -2 -1 0 1 2 3 4 5

    0.002

    0.004

    0.006

    0.008

    0.010

    0.012

    0.014

    0.016

    x

    y

    Literatura

    -MuPAD Help-http://www.math.auckland.ac.nz/~taylor/coursematerial/mupad/guide/GuideDraft.html-MuPAD Books- :