A házi feladatok megoldása

SetDirectory[NotebookDirectory[]]

AppendTo[$Path, ToFileName[NotebookDirectory[]<>"\\Hazik"]];

Mindenkinek

1. Rajzoljuk fel a megoldást, a trajektóriát és a megoldás koordinátafüggvényeit (vetületeket) valamely kétváltozós vagy másodrendű differenciálegyenletre. Néhány ötlet, de nem kell feltétlenül ebből választani: Lotka-Volterra modell, Michaelis-Menten egyenlet (a C és a P változókra redukálva), Brüsszelátor, Explodátor, Oregonátor stb. Legyen az ábra még informatívabb, mint az óraiak.

Csonka Bálint

result[rot_] :=DSolve[{x'[s]==Cos[t[s]*rot],y'[s]==Sin[t[s]*rot],t'[s]==s,x[0]==0,y[0]==0,t[0]==0},{x,y,t},s]

ParametricPlot[Evaluate[{x[s],y[s]}/.result[30]],{s,-10,10}]

Csaplár Marianna

Az Originátor modell*

Eugene (Oregon), Richard Noyes, Kőrös Endre

Az Originátor modell a Belousov-Zhabotinsky reakcióra kidolgozott FKN (Field-Kőrös-Noyes) mechanizmuson alapul, határciklusos oszcillációt és gerjeszthetőséget képes szimulálni valóságos sebességi állandók felhasználásával. 
A modell öt reakcióból áll, egy autokatalitikus folyamatot, egy negatív visszacsatolási lépést és három köztiterméket tartalmaz. 
A+Y→X+P
X+Y→2P
A+X→2X+2Z
2X→A+P
B+Z→(1/2)f Z
Ahol például: X=[(Subscript[HBrO, 2])], Y=[(SuperMinus[Br])], Z=[Ce(IV)], A=[Br(Subscript[O, 3]^(-))], B=[szerves vegyület], és P=[HOBr]

Manipulate[Module[{eqns,soln,ϵ=4 10^-2,δ=4 10^-4,q=8 10^-4,k=0.1,x0=1,y0=1,z0=1},eqns={
ϵ x'[t]==q y[t]-x[t] y[t]+x[t] (1-x[t]),
δ y'[t]==-q y[t]-x[t] y[t]+f z[t],
z'[t]==x[t]-z[t]+k z[t],
x[0]==x0,y[0]==y0,z[t/;t≤0]==z0};
soln=Quiet@NDSolve[eqns,{x,y,z},{t,0,time}];
Plot[Evaluate[{x[t],z[t]}/.soln],{t,0,time},PlotRange->All,PlotStyle->{Black,Red},AxesLabel->{Style[t],Row[{Style[Subscript[HBrO,2][t],Black],Spacer[5],Style[Superscript["Ce","4+"][t],Red]}]},ImageSize->{550,400}]],{{time,30,"maximális idő"},10,50,ImageSize->Small,Appearance->"Labeled"},{{f,0.5,Row[{"paraméter ", Style["f",Italic]}]},.4,0.6,ImageSize->Small,Appearance->"Labeled"}]

*A feladatmegoldás (nyilvánvalóan) nem saját kútfőből származik, mivel az minden próbálkozásom ellenére nem vezetett sikerre. Viszont igyekeztem aminél több változtatást eszközölni, hogy gyakoroljam melyik beállítás mire való, milyen lehetőségeket nyújt.

Király Márton

DSolveValue[{0.008 x'[t]==x[t](1-x[t])-z[t]*(x[t]-(10^(-4)))/(x[t]+(10^(-4))), z'[t]==x[t]-z[t]},{x[t], z[t]},t] (*Oregonátor*)

DSolveValue[{x'[t]==a+ ((x[t])^2) y[t]-(b+1) x[t] , y'[t]==b x[t]- ((x[t])^2) y[t]},{x[t], y[t]},t]/.a->1   b->1 (*Brüsszelátor*)

DSolveValue[{x'[t]==x[t] (1-((y[t])^2)) , y'[t]== y[t] ( x[t] y[t]-1)},{x[t], y[t]},t] (*Explodátor*)

LV=DSolve[{x'[t]==x[t] (a-b y[t]) , y'[t]== -y[t] (c- d x[t])}/. {a->2,  b->3 , c->4 , d->5 } ,{x, y},t]  /. {C[1]->5, C[2]->2, K[1]->3}  (*Lotka-Volterra*)

Ez fogalmam sincs milyen függvény, vagy létezik-e egyáltalán, de én ezt kaptam. A többi le se futott.

Nemlineáris rendszereknél inkább NDSolve-val érdemes próbálkozni. Ha kapunk is szimbolikus megoldást, az kevesebbet ér, mint a numerikus.

LV=DSolve[{x'[t]==x[t] (2-3 y[t]) , y'[t]== -y[t] (4-5 x[t])},{x, y},t]

%%/. {C[1]->5, C[2]->2}  (*Lotka-Volterra*)

Evaluate[{2,x[2], y[2]}/.%]//N

ParametricPlot3D[Evaluate[{t,x[t], y[t]}/.(LV/. {C[1]->5, C[2]->2})],{t,-10,10},PlotStyle->Red,AxesLabel->{Style["t",18,Bold,Red],x, y}]

Knipl Christian

ClearAll[t, x, y]
dgl=NDSolve[{-x'[t]==y[t]*(2^t),-y'[t]==-x[t]*(t^2)-3x[t],x[0]==1,y[0]==1},{x,y},{t,-0,20}];

ParametricPlot3D[{Tooltip[{t,x[t],y[t]}/.dgl,"megoldás vörösen"],{t,13,y[t]}/.dgl,{t,x[t],-5}/.dgl,{-0,x[t],y[t]}/.dgl},{t,0,20},Boxed->True,PlotStyle->{Red,Green,Blue,Black}, AxesLabel->{t,x,y}, PlotLabel->"Megoldás vetületekkel", PlotTheme -> "Detailed"]

Oláh Judit

Lotka - Volterra modell

Hyperlink["Lotka-Volterra modell", "http://en.wikipedia.org/wiki/Lotka%E2%80%93Volterra_equation"]

((\[DifferentialD]x)/(\[DifferentialD]t))=x (α-βy)

((\[DifferentialD]y)/(\[DifferentialD]t))=-y (γ-δx)

pnds=ParametricNDSolve[{x'[t]==x[t](α - β y[t]),y'[t]==-y[t] (γ - δ x[t]), x[0]==100, y[0]==10},{x,y},{t, 0,100}, {α,β, γ, δ}]

Manipulate[Plot[{Evaluate[Table[x[α,β, γ, δ][t]/.pnds,{3}]],Evaluate[Table[y[α,β, γ, δ][t]/.pnds,{3}]]} ,{t, 0,100}, PlotRange->All ,PlotLegends->"Expressions"],{α,1,10},{β,2,20},{γ,1,5},{δ,2,8} ]

pnds1=ParametricNDSolve[{x'[t]==x[t](α - β y[t]),y'[t]==-y[t] (γ - δ x[t]), x[0]==80, y[0]==40},{x,y},{t, 0,100},{α,β, γ, δ}]

pnds1x:=x[6,11,3,3][t]/.pnds1
pnds1y:=y[6,11,3,3][t]/.pnds1

ParametricPlot3D[{t,pnds1x, pnds1y},{t,0,100},PlotRange ->All,Axes->True,PlotStyle->Blue,AxesLabel->{Style["t",18,Bold,Red],Style["x",18,Bold,Black],Style["y",18,Bold,Green]} ]

ParametricPlot3D[{Tooltip[{t,pnds1x, pnds1y},"megoldás"],Tooltip[{0,pnds1x, pnds1y},"trajektória"],Tooltip[{t,80, pnds1y},"vetület"],Tooltip[{t,pnds1x, -10},"vetület"]},{t,0,100},Boxed->True,PlotRange ->All,PlotStyle->{Red,Green,Blue,Black},AxesLabel->{Style["t, time",18,Bold,Red],Style["x, number of prey",18,Bold,Black],Style["y, number of predator",18,Bold,Green]},ImageSize->Large ]

ParametricPlot3D[Tooltip[{t,pnds1x, pnds1y},"megoldás"],{t,0,100},Boxed->True,PlotRange ->All,PlotStyle->{Red,Green,Blue,Black},AxesLabel->{Style["t",18,Bold,Red],Style["x",18,Bold,Black],Style["y",18,Bold,Green]}]

ParametricPlot3D[Tooltip[{0,pnds1x, pnds1y},"trajektória"],{t,0,100},Boxed->True,PlotRange ->All,PlotStyle->{Red,Green,Blue,Black},AxesLabel->{Style["t",18,Bold,Red],Style["x",18,Bold,Black],Style["y",18,Bold,Green]}]

ParametricPlot3D[Tooltip[{t,80, pnds1y},"vetület"],{t,0,100},Boxed->True,PlotRange ->All,PlotStyle->{Red,Green,Blue,Black},AxesLabel->{Style["t",18,Bold,Red],Style["x",18,Bold,Black],Style["y",18,Bold,Green]}]

ParametricPlot3D[Tooltip[{t,pnds1x,0},"vetület"],{t,0,100},Boxed->True,PlotRange ->All,PlotStyle->{Red,Green,Blue,Black},AxesLabel->{Style["t",18,Bold,Red],Style["x",18,Bold,Black],Style["y",18,Bold,Green]}]

Orosz Dávid

Van der Pol equation: y''(x)-μ(1-((y(x))^2))y'(x)+y(x)=0

μ=0.2;

de=NDSolve[{y''[x]-μ (1-((y[x])^2)) y'[x]+y[x]==0,y[0]==1,y'[0]==1},y,{x,0,30}];

ParametricPlot3D[Tooltip[{x,y[x],y'[x]}/.de,"megoldás"],{x,0,30},Boxed->True,AxesLabel->{Style["x",12,Bold,Black],Style["y",12,Bold,Black],Style["z",12,Bold,Black]},PlotStyle->Black,PlotRange->All]

ParametricPlot3D[{Tooltip[{x,y[x],y'[x]}/.de,"megoldás"],{x,3,y'[x]}/.de,{x,y[x],-3}/.de,{0,y[x],y'[x]}/.de},{x,0,20},Boxed->True,AxesLabel->{Style["x",12,Bold,Black],Style["y",12,Bold,Black],Style["z",12,Bold,Black]},PlotStyle->{Black,Orange,Green,Red},PlotRange->All]

2. Most akkor azonnal mondja meg mindenki, hogy milyen területtel foglalkozzunk. Magamtól két dolgot hozok folyamatosan: a program eszközeit (programozás, ábrázolás stb), illetve differenciálegyenleteket.

Csaplár Marianna

Biológiához, kémiához, biokémiához kapcsolódó példákat örömmel fogadnék,

<<"ReactionKinetics1`"

Models[]

ore=GetProblem["Oregonator"]

RightHandSide[{ore},Array[(Subscript[k, #])&,5]]

DeterministicModel[{ore},Array[(Subscript[k, #])&,5]]//TableForm

Csonka Bálint

...szóval a bemutatkozás :)

Csonka Bálint vagyok mérnök-informatika hallgató. A választott szakirányom a mesterséges intelligencia, 
ahol foglalkozunk többek között funkcionális és deklratív nyelveken történő logikai programozással is. 
Azért vettem fel a tárgyat mert - egyrészt a wolfram mint funkcionális nyelv érdekel a népszerűsége miatt, 
másrészt - érdekelnek a lehetséges alkalmazási lehetőségei.

Király Márton

Nekem tetszik az óra eddigi felépítése, mivel újonnan ismertem meg a programot, így jó tudni, mi mendenre is képes. Ami engem érdekelne, az az adatfeldolgozás, kísérlettervezés és statisztikai kiértékelés, 3D adatmegjelenítés és görbeillesztés, reakciókinetikai számítások, nem triviális differenciálegyenletek megoldása.

Knipl Christian

1) Nekem tetszenek a differenciálegyenleteket, mivel viszonylag keveset tanultuk ezeket.
	2) Amúgy nagyon nagyon szeretem a vizualizációt (Vizualization & Graphics, Graphs & Networks); szóval mindenféle adatot és információt szemnek gyorsan olvashatóvá tenni.
          3) Ha muszály még egy témát kívánni - érdekelne ezen kívül a Data Manipulation and Analysis, szóval hogy adatokból hogyan tudok kifejezö eredményeket kifejteni.

Oláh Judit

Számomra érdekes területek

Mathematica program, újdonságok a 10.1-es verzióban
Differenciál egyenletek és egyenletrendszerek megoldása
Paraméterbecslés
Görbeillesztés (mérési pontok, hiba esetén is), illesztés optimalizása
Statisztika (mérések kiértékelése,pl. T teszt, eloszlás, ANOVA számolható-e)

NonlinearModelFit

Orosz Dávid

Rajzolás, szimuláció.

Pór Gábor

Hyperlink["PORGerdeklodes.nb"]

Kezdők

3. Sorsoljunk 100 standard normális eloszlású számot többféleképpen: legyen mindig más az eredmény, legyen az eredmény rögzített, illetve reprodukálható módon,

Csonka Bálint

x:=RandomInteger[{0, 9}, 100]

x

y=RandomInteger[{0, 9}, 100]

y

SeedRandom[0];
z=RandomInteger[{0, 9}, 100]

Király Márton

gauss1:=RandomReal [NormalDistribution[1,0.1],100]

Histogram[gauss1]

BinCounts

gauss2:={SeedRandom[122], RandomReal [NormalDistribution[1,0.1],100]}

Histogram[gauss2]

Knipl Christian

Hyperlink["http://rlv.zcache.com/paranormal_distribution_ghost_halloween_bell_curve_flyer-r8b7f44a848bf488fa9f09b7abf004459_vgvs0_8byvr_512.jpg"]

"Mindig más az eredmény"
η:=RandomVariate[NormalDistribution[]]
n=0; While[n<101,Print [Evaluate[η]]; n++]

"Mindig más az eredmény"
η:=RandomVariate[NormalDistribution[]]
n=0; While[n<11,Print[η]; n++]

t[n_]:=TableForm[Table[{RandomVariate[NormalDistribution[]]},{n}],TableHeadings->{None,{"Mindig más az eredmény"}}]

t[11]

Oláh Judit

más eredmény

lista= RandomVariate[NormalDistribution[],100]

ListPlot[lista]

rögzített eredmény

SeedRandom[1];  RandomVariate[NormalDistribution[],100]

RandomVariate[NormalDistribution[],100]

RandomVariate[NormalDistribution[],100]

SeedRandom[1];RandomVariate[NormalDistribution[],100]

Orosz Dávid

ListPlot[RandomReal[NormalDistribution[50,4],100]]

ListPlot[BlockRandom[RandomReal[NormalDistribution[50,4],100]]]

4. Mi itt a hiba? Hogyan javítható?

x=5;f[x_]=(x^2);f[2]

Csonka Bálint

x:=5;f[x_]=(x^2);f[2]
x

Király Márton

x=5;f[x_]=(x^2);f[2]

A probléma az, hogy ez nem egy függvény, mivel minden értékre az 5*5=25 értéket fogja kiadni, mivel azonnali értékadás van benne. Valahogy így lehetne kijavítani:

ClearAll[f,x]
f[x_]=(x^2)/.x->4

Knipl Christian

Az a hiba, hogy a ‘Hogyan’ szót ‘i’ nélkül kell írni.

x=5;f[x_]=(x^2);f[2]

A második hiba az, hogy az f[x_] a 25-el egyenlövé lesz téve rögzített módon, így az f[x]=25   ∀x.
Helyessen (vagyis a szerkesztö szándékának megfelelöen):

x=5;f[x_]:=(x^2);f[2]

Oláh Judit

x=5;f[x_]=(x^2);f[2]

közvetlen értékadás történt a függvény esetében

y=5;f[y_]:=(y^2);f[2]

Orosz Dávid

Clear[f,x]

x=5;f[x_]=(x^2);f[2]

Az f(x)=(x^2) függvényt azonnali (Set) értékadással definiáltuk, ezért mindig az x=5 helyen felvett értékkel fog visszatérni.

Megoldás: SetDelayed := / késleltetett értékadás

t=5;g[t_]:=(t^2);g[2]

Haladók

5. Számoljuk ki minél többféleképpen az első 100 Fibonacci-számot.

Csonka Bálint

Table[Fibonacci[n],{n,100}]

Király Márton

fib=Fibonacci[x]/.x->Range[1,100,1]

fib2=Table[Fibonacci[x],{x,100}]

ClearAll[x,y];fib3=Fibonacci[y,x]/.{x->1, y->Range[1,100,1]}

Fibonacci[12,x]

f[0]=0;f[1]=1;
f[x_]:=f[x]=f[x-1]+f[x-2]

f[2000]

fib4=Array[f,100]

Ezeket már az interneten találtam:

fib5=LinearRecurrence[{1,1},{1,1},100]

fib6[y_]=Module[{x=0},NestList[x+(x=#)&,1,y-1]]/.y->100

x=1;y=5;NestList[x+(x=#)&,1,y-1]

Oláh Judit

list=Table[Fibonacci[n],{n,100}]

g[n_]:=g[n]=g[n-1]+g[n-2]

g[1]=1

g[2]=1

lista2=Table[g[n],{n,1,100,1}]

Továbbá

nl=NestList[{{1,1},{1,0}}.#&,{0,1},5]

First/@nl

Rest@%

Flatten[%]

Union[%]

RSolve[{a[n]==a[n-1]+a[n-2],a[0]==1,a[1]==1},a[n],n]

ClearAll[x,n];SeriesCoefficient[(x/(1-x-(x^2))),{x,0,n}]

ClearAll[x,n];SeriesCoefficient[(1/(1-x-(x^2))),{x,0,n}]

PowerExpand[%]

FullSimplify[%,Assumptions->n∈Integers]

GeneratingFunction

Óra közben Csikja Rudolf még ezt találta:

F[str_]:=StringReplace[str,{"a"->"b","b"->"ab"}]
NestList[F,"a",10];
StringLength/@%

Tessék megértenia legutolsót is!

6. Rajzoljunk szép vagy nevezetes görbéket. (ParametricPlot) Ehhez érdemes ellátogatni ide:

Hyperlink["http://blog.wolfram.com/2013/05/17/making-formulas-for-everything-from-pi-to-the-pink-panther-to-sir-isaac-newton/"]

Csaplár Marianna

fourierCoefficientLineSegment[cs_, n_, {{t1_, x1_}, {t2_, x2_}}] := 
  With[{a = -(t2 x1 - t1 x2)/(t1 - t2), b = -(x2 - x1)/(t1 - t2)},
   If[cs === Cos, 
 If[n == 0, (t2 - t1)(2a + b (t1 + t2))/2, 
   (-(n (a + b t1) Sin[n t1]) + n*(a + b*t2)*Sin[n*t2] - b Cos[n t1] + b Cos[n t2])/n^2], 
 If[n == 0, 0, 
    (n (a + b t1) Cos[n t1] - n (a + b t2)*Cos[n t2] + b (Sin[n t2] - Sin[n t1]))/n^2]]]
fourierSeriesLine[l_, n_, t_] := 
Module[{ls, L, ts, xs, ys, Xs, Ys }, 
ls =EuclideanDistance @@@ Partition[l, 2, 1];
L = Total[ls];
ts =1. Prepend[Accumulate[ls],0]/L 2Pi - Pi;
{xs, ys}=Transpose[l]; 
{Xs,Ys}= Partition[Transpose[{ts, #}], 2, 1]& /@ {xs, ys}; 
(Total[fourierCoefficientLineSegment[Cos, 0, #]& /@ #]/2 +
Sum[Total[fourierCoefficientLineSegment[Cos, k, #]& /@ #] Cos[k t], {k, n}]+
Sum[Total[fourierCoefficientLineSegment[Sin, k, #]& /@ #] Sin[k t], {k, n}])/Pi& /@{Xs,Ys}]
Manipulate[
Module[{λ = If[cQ, Append[pt, pt[[1]]], pt]},
Show[{ParametricPlot[Evaluate[
If[iAQ, Table[fourierSeriesLine[λ, k,t],{k, n}] , fourierSeriesLine[λ, n,t]]], 
  {t, -Pi, Pi}, PlotStyle -> Table[ColorData["Rainbow"][j/n], {j, n}]], 
 Graphics[{Yellow, Thickness[0.1], Opacity[0.5], 
                   Line[If[cQ, Append[pt, pt[[1]]], pt]] }]}, PlotRange->3/2]],
{{pt,{{0,-0.381966},{-0.587785,-0.809017},{-0.363271,-0.118034},{-0.951057,0.309017},
        {-0.224514,0.309017},{0.,1.},{0.224514,0.309017},{0.951057,0.309017},
        {0.363271,-0.118034},{0.587785,-0.809017}}}, Locator, Appearance -> Style["O", 15, Bold, Orange]},
{{n, 6, "max Fourier terms"}, 1, 36, 1, Appearance -> "Labeled", ImageSize -> Big},
{{iAQ, True, "plot"}, {True -> "up to max", False -> "only max"}},
Delimiter,
{{cQ, True, "closed curve"}, {True, False}},
TrackedSymbols:>True, SaveDefinitions -> True]

Király Márton

Plot[{With[{w=3*Sqrt[1-(x/7)^2],l=(6/7)*Sqrt[10]+(3+x)/2-(3/7)*Sqrt[10]*Sqrt[4-(x+1)^2],h=(1/2)*(3*(Abs[x-1/2]+Abs[x+1/2]+6)-11*(Abs[x-3/4]+Abs[x+3/4])),r=(6/7)*Sqrt[10]+(3-x)/2-(3/7)*Sqrt[10]*Sqrt[4-(x-1)^2]},w+(l-w)*UnitStep[x+3]+(h-l)*UnitStep[x+1]+(r-h)*UnitStep[x-1]+(w-r)*UnitStep[x-3]],(1/2)*(3*Sqrt[1-(x/7)^2]+Sqrt[1-(Abs[Abs[x]-2]-1)^2]+Abs[x/2]-((3*Sqrt[33]-7)/112)*x^2-3)*((x+4)/Abs[x+4]-(x-4)/Abs[x-4])-3*Sqrt[1-(x/7)^2]},{x,-7,7},AspectRatio->Automatic,Axes->None,Frame->True,PlotStyle->GrayLevel[0], Filling->Axis]

Hyperlink["Batman-curve","https://www.youtube.com/watch?v=M-yAgyrzGdo"]

Rövid, tömör, általános programot írjunk.

Még tovább

Inkább grafika? Becslésről: Rudi. De jön, pde volt

Megoldottuk a Laplace-egyenletet Dirichlet-feltételekkel ezen a halmazon:

ExampleData[{"Geometry3D","SpaceShuttle"}]

Könyvek

Másokéi közül ezek ajánlottak:

Hyperlink["Gray: Mastering Mathematica","http://www.mathprogramming-intro.org/book/node286.html"]

Hyperlink["Cookbook","http://ebookee.org/Mathematica-Cookbook-By-Sal-Mangano_1101082.html"]

És mindenek után meg előtt:

Hyperlink["Mathematica TJ","http://www.math.bme.hu/~jtoth/Mma/mma.html"]

Grafika, geometria, képfeldolgozás 1.

Primitívekvok

Line, Point,Polygon,Rectangle,Circle,Disk

Arrow,BezierCurve,BSplineCurve,

Text

Plot[BesselK[1,x],{x,-3,3},Ticks->Automatic,PlotStyle->Directive[Thickness[0.05],Yellow,Opacity->0.5],Epilog->Inset[Graphics[{Red,Disk[{1,1},{0.5,1},{π/3,2π}]}]]]

Head[%]

InputForm[%%]

Plot[BesselK[1,x],{x,-3,3},Ticks->Automatic,PlotStyle->Directive[Thickness[0.1],Yellow],ImageSize->400,#->Inset[Graphics[{Red,Disk[{1,1},{0.5,1},{π/3,2π}]}]]]&/@{Prolog,Epilog}

GraphicsRow[Plot[BesselK[1,x],{x,-3,3},Ticks->Automatic,PlotStyle->Directive[Thickness[0.1],Yellow],ImageSize->300,#->Inset[Graphics[{Red,Disk[{1,1},{0.5,1},{π/3,2π}]}]]]&/@{Prolog,Epilog}]

Graphics[{LightGray,Disk[],Blue,Thick,Line[{{0,0},{1,2}}],Inset[Graphics[{Red,Thick,Circle[{1,1},{1,1},{π/3,2π}]}]]}]

Menü: Graphics|DrawingTools

ParametricPlot[{16 ((Sin[t])^3),13Cos[t]-5Cos[2t]-2Cos[3t]-Cos[4t]},{t,0,2π},PlotStyle->Directive[Thick,Red]]

Milyen könnyű elrontani! Próbálkozzunk vele! És: dobogjon is!

Locator

Manipulate[Graphics[Line[{{0,0},p}],PlotRange->2],{p,{1,1},{2,2}}]

Manipulate[Graphics[Line[{{0,0},p}],PlotRange->2],{{p,{1,1}},Locator}]

DynamicModule[{p={1,0},A=(({{-1.1, 0.9}, {-1.4, 0.3}}))},LocatorPane[Dynamic[p],Dynamic@ParametricPlot[MatrixExp[A t,p],{t,0,10},PlotRange->5]]]

Az ábra azt mutatja meg, hogy hogyan változik az x'=A x  egyenlet megoldásának vetülete a síkon (trajektóriának nevezik ezt), midőn változtatjuk a  x(0)=p kezdeti feltételt.

DynamicModule[{pts={{0,0},{1,1},{2,0},{3,2}}},LocatorPane[Dynamic[pts],Dynamic[Plot[InterpolatingPolynomial[pts,x],{x,-1,4},PlotRange->3,PlotLabel->Style["Polinommal nem extrapolálunk",Red,18]]]]]

Interpoláció, rwegresszió, Csebisev

RotationMatrix[π/3]//MatrixForm

Graphics[GeometricTransformation[Circle[{0,0},{1,2}],RotationMatrix[π/3]]]

DynamicModule[{v1={2,0},v2={-1,1}},Dynamic@Graphics[{Circle[],Red,GeometricTransformation[Circle[],Transpose[{v1,v2}]],Green,Line[{{0,0},v1}],Arrow[{{0,0},v2}],Locator[Dynamic[v1]],Locator[Dynamic[v2]]},PlotRange->3]]

GraphicsComplex (GraphicsGroup)

Bonyolult, többször használt  pontokra egyszerűen hivatkozhatunk.

(v=Table[15{Cos[t],Sin[t]},{t,0,4Pi,4Pi/5}])//MatrixForm

g=Graphics[GraphicsComplex[v,{PointSize[Large],Point[{1,2,4,5,3}],Green,Line[{1,2,3,4,5,1,2,3,2,1,5}]}]]

Options[g,AspectRatio]

Show[g,AspectRatio->3]

Házi feladatok

1. Írjunk programot, amely egy tetszőleges téglalap alakú mátrixot elforgat 90 fokkal.

2. Írjunk programot, amely kiszedi a sztöchiometriai együtthatókat a reakciólépésekből.

lv={"A"+"X"->2 "X","X"+"Y"->2 "Y","B"←"Y"}

Ez az eredmény:

({{A, 1, 0, 0, 0, 0, 0}, {B, 0, 0, 0, 0, 1, 0}, {X, 1, 2, 1, 0, 0, 0}, {Y, 0, 0, 1, 2, 0, 1}})

lv0={"X"->2 "X","X"+"Y"->2 "Y",0←"Y"}

br={"X"←"A","B"+"X"->"D"+"Y",2 "X"+"Y"->3 "X","X"->"E"}

br0={"X"←0,"X"->"Y",2 "X"+"Y"->3 "X","X"->0}

3. Rajzoljunk házikót 3D-ben. Használjuk a Texture fv-t is a fal hengerezésére.

4. Tekintsünk egy kétváltozós függvényt, amelynek egyik változója az idő, a másik egy paraméter. Készítsünk róla ábárt a Plot3D függvénnyel is, és egy olyat Plot segítségével, ahol egy ábrán láthatóak a különböző paraméterértékek melletti lefutások. (Idő helyett szerepelhet hely, hullámhossz stb.) A függvényt valamely alkalmazásból kerítsék elő.

5. Egy 1 m magasságú helngerből az alján lévő kis lyukon keresztül kifolyik a víz. Ha a magasság a t időpontban h(t), akkor a kifolyás sebessége (Sqrt[2g h(t)]). Tervezzünk kijelzőt, amely mutatja az időben változó vízszintet. Használjuk a *Gauge függvényeket.