czyli sztuka obliczeń symbolicznych Mathematica – do czego można

Transkrypt

czyli sztuka obliczeń symbolicznych Mathematica – do czego można
Mathematica - organizacja
czyli sztuka obliczeń symbolicznych
Dokument Mathematica zorganizowany jest w
tzw. komórki.
Ręczne zerowanie zmiennych
Clear[variables] (* czyści wartości zmiennych*)
x=. (* to samo co Clear*)
Remove[“Global`*”] (* usuwa wszystkie zmienne*)
Clear[“Global`*”]
Mathematica – do czego można ją użyć
Zastosowania:
o nauki przyrodnicze
o matematyka
o nauczanie
o inżynieria
o infomatyka, itd
Ponad 100 wyspecjalizowanych, komercyjnych pakietów i
ponad 200 książek o Mathematice i jej zastosowaniach
Mathematica – publikacje
Możliwości
Działania arytmetyczne
Operacje na liczbach całkowitych, rzeczywistych i zespolonych z
dużą precyzją
Bardzo dużo wbudowanych funkcji i stałych
Algebra
Rozwinięcia w szereg, upraszczanie, rozwiązywanie układu
równań liniowych
Operacje na wektorach, macierzach i tensorach
Analiza matematyczna
Granice, całkowanie i różniczkowanie, szeregi, rozwiązywanie
układu równań różniczkowych, itd.
Analiza numeryczna:
Znajdowanie pierwiastków równań, całkowanie numeryczne,
dopasowywanie krzywych, itd.
Możliwości, cd.
o http://www.wolfram.com – strona główna.
GRAFIKA - wykresy
2D, 3D, konturowe, parametryczne, animacje, itd.
o Wbudowana dokumentacja Mathematica (wszystko
napisane w układzie notatnika)
Programowanie
Wbudowany interpreter języka programowania (zbliżony do C) z
kompilatorem
o http://www.wolfram.com/broadcast/screencasts/
o Projekty demonstracyjne można znaleźć na:
http://demonstrations.wolfram.com/
o Czasopismo programu Mathematica
http://www.mathematica-journal.com
Mathematica - organizacja
Jak uzyskać dostęp?
Pracujemy w dokumencie zwanym „Notatnik”
Dokument Mathematica zorganizowany jest w
tzw. komórki.
SHIFT+ENTER – wykonanie obliczeń
ENTER – nowa linia
Z. Postawa, "Podstawy Informatyki II"
Strona: 1 z 9
Podstawowe zasady
o Program rozróżnia małe i duże litery
o Polecenia, nazwy wbudowanych funkcji i stałych zaczynają się
od dużej litery – np. Sin[]
o Użyj małych liter, aby zadeklarować swoje funkcje i stałe
o Argumenty są zamykane w nawiasach prostokątnych []
o Nawiasy klamrowe {} są używane do grupowania elementów,
oraz do oznaczania zakresów parametrów funkcji.
o Nawiasy () są zarezerwowane do grupowania operacji.
o Nazwy wszystkich funkcji dla obliczeń numerycznych zaczynają
się od litery N np. NSin[]
o Komentarz (* komentarz *)
Podstawowe operacje
o Dodawanie
+
o Odejmowanie
-
o Mnożenie
*
o Dzielenie
/
Wbudowane funkcje - przykłady
Abs[x] - wartość bezwzględna liczby x
In[1]:= Abs[ -15 ]
Out[1]= 15
Sqrt[x] – pierwiastek z x
In[2]:= N[ Sqrt[2], 20]
Out[2] = 1.4142135623730950488
Log[x] – logarytm naturalny z x
Log[n,x] – logarytm z x przy podstawie n
Exp[x] – e do potęgi x
Sin[x] – sinus z x (radiany)
Sin [x Degree] – sinus z x (stopnie)
ArcSin[x] – funkcja odwrotna do sinus z x (radiany)
Wbudowane funkcje - przykłady
Sinh[x] - sinus hiperboliczny z x
ArcSinh [x] – odwrotna do sinusa hiperbolicznego z x
! – silnia
!! – podwójna silnia
Prime[k] – k-ta liczba pierwsza
o Podnoszenie do potęgi ^
Uwaga: Mnożenie można reprezentować przez spacje:
x y oznacza x * y
Mod[x,y] – reszta z dzielenia x przez y
MAX[x1,x2,x3..] – wartość maksymalna
Operacje na liczbach całkowitych -> liczba całkowita
Operacje na liczbach mieszanych -> liczba rzeczywista
lub zespolona
Operacje przypisania zmiennych
Wbudowane funkcje – liczby zespolone
In[1]:= z=20+7 I
Out[1]= 20 + 7 i
In[1]:= x = 0.5
Out[1]=0.5
Re[z] - część rzeczywista z z
Im[z] – część urojona z z
In[2]:= x= x*x
Out[2] = 20
Out[3] = 7
Out[2]=x2
Wynik poprzedniej operacji
In[3] = % * 5
Out[3] = 5 x2
Wynik operacji numer In[1]
In[4] = %1 * 5
Out[4]=2.5
Abs[z] – moduł z z - sqrt(re2+im2)
Abs[z]//N
Im[z]
Arg[z]//N – ϕ
Out[3] = Sqrt[449]
Out[4] = 21.1896
Out[5] = 0.336675
7
ϕ
Arg[z]
Out[6] = Atan[---]
Re[z]
20
Conjugate[z] – liczba sprzężona do z Out[7] = 20 – 7 i
Dokładność obliczeń
N[operacja, precyzja]
In[1]:= N[100!]
Out[1]=9.33262*10157
In[2]:= 100!//N – inny zapis
In[2]:= N[100!,157]
Out[2]=9.3326215443944152681699238856266700490
71596826438162146859296389521759999322991560
89414639761565182862536979208272237582511852
1091686400000000000000000000000*10157
Z. Postawa, "Podstawy Informatyki II"
Algebra
Mathematic’a „rozumie” zapis algebraiczny i może na
nim wykonywać operacje symboliczne
In[1]:= z=(x + y)^2
Out[1]=(x + y)2
In[2]:= Expand[z] – rozwiniecie na wielomiany
Out[2]=x2 +2xy + y2
In[3]:= Factor[%] – zwiniecie do postaci potęgowej
Out[3]=(x + y)2
In[4]:= Simplify[%2] – zwiniecie do najprostszej postaci
Out[4]=(x + y)2
Strona: 2 z 9
Rozwiązywanie równania
= jest znakiem przypisania wartości
== jest znakiem oznaczającym równanie
In[1]:= x^2 + 2x+1 == 0
Out[1]=1 + 2 x + x2 == 0
Solve[równanie, zmienna] - rozwiązuje równanie
względem zmiennej zmienna
In[2]:= Solve [%,x]
Out[2]={{x -> -1}, {x -> -1}}
In[3]:= %1./x->-1
Out[3]=True
Rozwiązywanie układu równań
Solve[{ rów1== liczba1, rów2 == liczba2, …. }, {x, y,
….}] - rozwiązuje układ równań względem zmiennych
x,y,..
Definiowanie wyrażeń
In[1]:= row1= x^2 + 2x==-1
Out[1]= 2 x + x2 == -1
In[2]:= Solve[row1]
Out[2]={{x -> -1}, {x -> -1}}
In[3]:=row1:= x^2 + 2x==-1
Przypisuje dopiero w momencie wykonania operacji
Operator zastąpienia /.
In[1]:= x^2 + 2x-1/.x->2
Out[1]= 7
In[1]:= Solve[{x+2*y ==1, x–y==2},{x,y}]
Out[1]=
Liczbowe rozwiązywanie układu równań
NSolve[{ rów1== liczba1, rów2 == liczba2, …. }, {x, y,
….}] - rozwiązuje układ równań względem zmiennych
x,y,..
In[1]:= NSolve[{x+2*y ==1, x–y==2}, {x,y}]
Definiowanie funkcji
nazwaFunkcji[argument_]: = wyrażenie
In[1]:= fun[x_]:=x^2 + 2x-1
In[2]:= fun[4]
Out[2]= 23
Out[1]= {{x -> 1.66667, y -> -0.333333}}
In[3]=ff[x_,y_]:=x*y
In[4]=ff[1.,2.]
Out[4]=2.
Znajdowanie pierwiastków równania
FindRoot[ rów1 , {x,x0}] – szuka pierwiastków
równania rów1 względem zmiennej x, przy wartości
zgadywanej x0
In[1]:= FindRoot [x^2 + 2x==-1, {x,0}]
Out[1]= {x -> -1.}
FindRoot[{ rów1, rów2, …. }, {{x,x0}, {y,y0}, ….}]
Z. Postawa, "Podstawy Informatyki II"
Suma i iloczyn wyrażeń szeregu
Sum[ wyrażenie_ciągu, {l, lmin, lmax,lstep}]
Product[ wyrażenie_ciągu, {l, lmin, lmax,lstep}]
In[1]:= Sum[1/x,{x,1,10,2}]
563
Out[1]= ------315
In[2]:= Product[1/x,{x,1,10,2}]
1
Out[1]= ------945
In[3]:=%//N
Out[3]=0.0010582
Strona: 3 z 9
Operacje na macierzach
Suma i iloczyn wyrażeń ciągu - nieskończoność
Infinity – stała zastrzeżona do oznaczenia ∞
In[1]:= m:={{1,2},{2,1}}
In[2]:= Transpose[m] <- transponowanie macierzy
Out[3]= {{1, 2}, {2, 1}}
In[1]:= Sum[1/x^2,{x,1,Infinity}] ↔
Pi
Out[1]= ------6
In[4]:= Det[m] <- wyznacznik macierzy
Out[4]= -3
=1*1-2*3=-3
In[2]:= %//N
Out[3]=1.64493
In[5]:=Inverse[m]
<- odwrotność macierzy
Out[5]=
Wektory
Znalezienie wartości własnych macierzy
v:={x,y,..} – wektor v o współrzędnych x,y,..
In[1]:= v1:={1,1,1}
In[2]:=v2:={1,2,3}
In[3]:=v1+v2
+
=
Out[3]={2, 3, 4}
Iloczyn skalarny - .
In[4]:= v1◦v2
◦
=1*1+2*2+3*1=
Out[3]=6
Iloczyn wektorowy – Cross[]
In[5]:=Cross[v1,v2]
=
Out[5]={1, -2, 1}
Aby znaleźć wartości własne macierzy należy rozwiązać
równanie charakterystyczne
In[1]:= m:={{1,2,1},{2,1,1},{1,1,1}}
In[2]:=wartwl:=m-x*IdentityMattrix[3]
In[3]:= wyz=Det[wartwl] <- wyznacznik macierzy
Out[3]= -1 + 3 x + 3 x2 - x3
In[4]:=NSolve[wyz==0, x]
Out[4]= {{x -> -1.}, {x -> 0.267949}, {x -> 3.73205}}
Macierze
lub
m:={{a11,a12},{a21,a22}}
In[1]:= m:={{1,0},{0,1}}
In[2]:=m2:={{2,1},{0,0}}
In[3]=MatrixForm[m] <- aby przedstawić wynik w
postaci macierzowej
Out[3]= //MatrixForm= 1 0
0 1
IdentityMatrix[n] <- macierz jednostkowa o rozmiarze
nxn
In[4]:= IdentityMatrix[2]
Out[4] ={{1, 0}, {0, 1}}
Operacje na macierzach
Out[2]= {3.73205, -1., 0.267949}
Wektory własne
In[3]:=Eigenvectors [N[m]]
Out[3]= {{-0.627963,-0.627963,0.459701},{0.707107,-0.707107,0.},{-0.325058,0.325058,0.888074}}
Analiza matematyczna
In[1]:= m:={{1,0},{0,1}}
In[2]:=m2:={{2,1},{0,0}}
o Wyznaczanie granic ciągów
In[3]:= m+m2 <- suma macierzy
Out[3]= {{3, 1}, {0, 1}}
+
=
o Różniczkowanie
o Całkowanie
o Rozwiązywanie równań różniczkowych
In[4]:= m-m2 <- różnica macierzy
Out[4]= {{-1, -1}, {0, 1}}
In[5]:=m.m2 <- iloczyn macierzy
Out[5]= {{2, 1}, {0, 0}}
+
Wartości własne
In[1]:= m:={{1,2,1},{2,1,1},{1,1,1}}
In[2]:=Eigenvalues[N[m]]
=
Z. Postawa, "Podstawy Informatyki II"
Strona: 4 z 9
Granice funkcji
Całkowanie nieoznaczone
Limit[ funkcja, x-> x0] – granica funkcji przy x dążącym do x0
Użycie zmiennych
In[3]:= f:= Sin[x]*Tan[x]
In[1]:= Limit[ Sin[x]/x, x->0]
Out[1]= 1
↔
In[4]:=Integrate[f, x]
Out[4]=-Log[Cos[x/2] - Sin[x/2]] + Log[Cos[x/2] + Sin[x/2]] - Sin[x]
Można szukać granic przy x →∞
In[4]:= Limit[Exp[x]/(x^100),x->Infinity]
Out[4] =Infinity
Różniczkowanie
D[ funkcja, zmienna] – pochodna funkcji po zmiennej
zmienna
In[1]:= D[ Log[x],x]
1
Out[1]= ---x
In[3]:= f1[x_] = Sin[x]*Tan[x]
In[4]:=Integrate[f[x], x]
Out[4]=-Log[Cos[x/2] - Sin[x/2]] + Log[Cos[x/2] + Sin[x/2]] - Sin[x]
Całkowanie nieoznaczone
Zapis naturalny
ESCintESC →
ESCddESC → d
CTRL+_ → dolna granica
CTRL+% → górna granica
D[ funkcja, {zmienna,n}] – n-ta pochodna funkcji po
zmiennej zmienna
In[2]:= D[ Log[x],{x,2}]
Out[1]= -x-2
ESCintESCSin[x]*Tan[x]ESCddESC →
Różniczkowanie cząstkowe
Całkowanie nieoznaczone wielokrotne
D[ funkcja, {zmienna1,n},{zmienna2,m}] – n-ta i m-ta
pochodna funkcji po zmiennej zmienna1 i zmienna2
Integrate[funkcja, zmienna1, zmienna2] – całka
nieoznaczona z funkcji po zmiennych zmienna1 i zmienna2
In[1]:= D[ x*Sin[y],{x,1},{y,2}]
↔
Out[1]= -Sin[y]
In[1]:= Integrate[ Exp[xy]/x, x,y]
Zapis uproszczony
↔
Out[1]= Exp[xy] y Log[x]
In[1]:= D[ x*Sin[y],x,{y,2}]
Out[1]= -Sin[y]
Całkowanie nieoznaczone
Całkowanie oznaczone
Integrate[funkcja, zmienna] – całka nieoznaczona z funkcji
po zmiennej zmienna
Integrate[funkcja, {zmienna1,początek,koniec}] – całka
oznaczona z funkcji po zmienej zmienna w zakresie od z1 do
z2
In[1]:= Integrate[ 1/x,x]
↔
Out[1]= Log[x]
In[1]:= Integrate[ Exp[-x]/x, {x,1., Infinity}] ↔
In[2]:= Integrate[Sin[x]*Tan[x], x] ↔
Out[1]= 0.219384
Out[2]= -Log[Cos[x/2] - Sin[x/2]] + Log[Cos[x/2] + Sin[x/2]] - Sin[x]
Z. Postawa, "Podstawy Informatyki II"
Strona: 5 z 9
Całkowanie oznaczone wielokrotne
Integrate[funkcja, {x,x1,x2}, {y,y1,y2}] – całka oznaczona z
funkcji po zmienych x i y w zakresie od x1 do x2 oraz od y1
do y2
In[1]:= Integrate[ Sin[x+y], {x,0., Pi/2},{y,0.,Pi/2}]
Rozwiązywanie równań różniczkowych
Równanie różniczkowe 2-go rzędu
In[1]:=eq1 = {z''[t] == -9.81}; initial = {z[0] == 0, z'[0] == 10};
ndsol = DSolve[Join[eq1, initial], z[t], t]
Out[1]= {z[t] -> 10 t - 4.905 t^2}}
In[2]=tmax=Solve[ndsol==0];
In[3]=tmax = NSolve[z[t] == 0 /. ndsol, t]
Out[3]={{t -> 0.}, {t -> 2.03874}}
↔
Out[1]= 2.
Szeregi
Series [funkcja, {x,x0,rząd}] – rozwija funkcję w szereg wokół
punktu x0 do rzędu rząd
Wykresy
o Wykres dwuwymiarowy liniowy
o Wykres dwuwymiarowy punktowy
In[1]:= Series[ Exp[-x], {x,0, 4}]
o Wykres trójwymiarowy
2
3
4
x
x
x
5
Out[1]= 1 - x + ----- - ------- + ------ + O[x]
2
6
24
o Wykres konturowy
o Wykres pola wektorowego
o Wykres parametryczny
Rozwiązywanie równań różniczkowych
Wykres dwuwymiarowy
DSolve[funkcja, y[x],x] – analityczne rozwiązywanie
równanie różniczkowego dla y[x], gdzie x jest zmienna
niezależną
Plot[funkcja, {x,x0,x1},Opcje] – rysuje wykres funkcji w
zakresie od x1 do x2. Opcje pozwalają na modyfikacje stylu
In[1]:=Plot [x^2,{x,-1,1}]
Równanie różniczkowe 1-go rzędu
In[1]:=eq:=y’[x]-2 y[x]==0
In[2]:=DSolve[eq,y[x],x]
2x
Out[1]= {{y[x] -> E C[1]}}
In[1]:=eq:={y’[x]==1.2-4.0 y[x]};
inital={y[0]==2}
In[2]:=rozw = DSolve[Join[eq, initial], y[x], x]
Out[2]=
Plot[Evaluate[y[x] /. rozw], {x, 0, 1}, AxesLabel -> {"x", "y"}]
Logarytmiczny wykres dwuwymiarowy
LogPlot[funkcja, {x,x0,x1}] – oś y jest logarytmiczna
LogLinearPlot[funkcja, {x,x0,x1}] – oś x jest logarytmiczna
LogLogPlot[funkcja, {x,x0,x1}] – osie x i y są logarytmiczne
In[158]:=LogPlot [Exp[x],{x,0,10}, LabelStyle -> {15}]
Z. Postawa, "Podstawy Informatyki II"
Strona: 6 z 9
Wykres dwuwymiarowy – opcje
Wykres punktowy II
Plot[funkcja, {x,x0,x1}, PlotRange->{x2, x3}] ]
ListPlot[{y0,y1..},Opcje] – rysuje wykres kolejnych punktów
{y0,y1,...}
PlotRange – zakres osi y
AxesLabel->{"x",”x^2"} – opis osi x i y
In[1]:=ListPlot[ { 2.5, 3.7, -1.2, 7.0, 9.1, -2.3},
PlotJoined->True ]
PlotLabel —> ”Przebieg próbny" – nazwa wykresu
PlotStyle->{RGBColor[1,0,1]} – kolor linii wykresu- styl
linii wykresu
LabelStyle->{15} – rozmiar tekstu opisów osi
Wykres dwuwymiarowy wielu funkcji
Wykres trójwymiarowy
Plot[{f1,f2}, {x,x0,x1},Opcje] – rysuje wykres funkcji f1 i f2 w
zakresie od x1 do x2
Plot3D[funkcja3D, {x,x0,x1},{y,y0,y1},Opcje] – rysuje wykres
funkcji w zakresie x od x1 do x2 i y od y1 do y2
In[117]:=Plot[{x^2, x}, {x, -1, 1}, PlotStyle -> {{Red,
Thickness[0.002]}, {Green, Dashing[{0.03, 0.03}],Thick}}, PlotLabel > "Test", Frame -> True, AxesLabel -> {"Signal [au]",
Superscript["mc", "2"]}]
In[24]:=Plot3D[Sin[x] Sin[y] , {x,-Pi,Pi}, {y,-Pi,Pi},
AxesLabel -> {x,y,z}, Mesh->All, PlotPoints->40]
Polecenie Show
Wykres konturowy
Show[w1,w2]– nakłada na siebie wcześniej utworzone
wykresy w1 i w2
ContourPlot[funkcja, {x,x0,x1},{y,y0,y1},Opcje] – rysuje wykres
konturowy funkcji w zakresie od x0 do x1 i od y0 do y1
In[1]:=w1:=Plot[x^2, {x, -1, 1}]; w2 := Plot[x, {x, -1, 1}]
In[2]:=Show[w1, w2]
In[84]:=ContourPlot[Cos[x]*Cos[y], {x, -Pi, Pi}, {y, -Pi, Pi},
ContourLabels -> True]
Wykres punktowy
Wykres pola wektorowego
ListPlot[{x0,y0},{x1,y1},..] – rysuje wykres punktów x,y
VectorFieldPlot[funkcja, {x,x0,x1},{y,y0,y1},Opcje] – rysuje
wykres wektorowy funkcji w zakresie od x0 do x1 i y0 do y1
In[5]:=ListPlot[{{-5, -3}, {-3, 2},
{0.5, 6.3), {2.5, 1.4}, {5, 3}}, PlotJoined -> True]
Z. Postawa, "Podstawy Informatyki II"
Needs["VectorFieldPlots`"]
In[1]:=V:={x, y}/(x^2 + y^2)^(3/2)
In[2]:=VectorFieldPlot[v, {x, -5, 5}, {y, -5, 5}]
Strona: 7 z 9
Wykres parametryczny
ParametrivPlot[x[t],y[t],{t,t0,t1} ] – rysuje wykres
parametryczny funkcji x[t] i y[t] w zakresie od t0 do t1
In[30]:=ParametricPlot[{Cos[t]*t, Sin[t]*t}, {t, 0, 50}]
Dopasowywanie krzywych
In[1]:=dane:=ReadList["e:\dane.dat", {Number, Number}]
In[2]:=Fit[ dane, {x^2, x^1, 1}, x]
Out[2]:=0.46 - 0.352857 x + 1.05 x^2
In[3]:=NonlinearFit[dane1, a*x^2 + b*x + c, x, {{a, 0.5},
{b, -0.5}, {c, 1.5}}]
Out[3]:=0.46 - 0.352857 x + 1.05 x^2
Operacje na zbiorach
SetDirectory["Nazwa kartoteki"]– ustawienie nazwy
kartoteki głównej, np. kartoteki ze zbiorem
Zmienna=Import["Nazwa zbioru"]– importuje dane
Export["dane.dat","zmienna”]– zapisuje dane ze zmiennej
zmienna do zbioru o nazwie dane.dat
<<["dane.dat","zmienna”]– ładuje jeden element ze zbioru
o nazwie dane.dat do zmiennej zmienna
Delete["dane.dat"]– usuwa zbiór nazwie dane.dat
Operacje na zbiorach
Rzut ukośny
y
In[1]:=SetDirectory["e:/"]
Out[1]=e:/
In[2]:=dane:=Import["dane.dat"]
In[3]:=wykres = ListPlot[dane]
v
x=v cos
θ
y
x
In[1]:=Remove["Global`*"]
In[2]:= y:=v*Sin[α]*t-9.81*t*t/2.; x:= v*Sin[α]*t
In[3]:= Solve[D[y,t] 0,t];
In[4]:= tmax:=N[2.*t//.%]
In[5]:= zasieg=x//.t→tmax
Out[5]:= {0.203874 v2 Cos[α] Sin[α]}
In[6]:= wysokosc=y//.t→tmax/2
Out[6]:= {0.0509684 v2 Sin[α]2}
Operacje na zbiorach
ReadList["Nazwa zbioru", "format"]– ustawienie nazwy
kartoteki ze zbiorem
WriteList["Nazwa zbioru", "format"]– ustawienie nazwy
kartoteki ze zbiorem
In[1]:=dane:=ReadList["e:\dane.dat", {Number, Number}]
In[2]:=dane:=Import["dane.dat"]
In[3]:=wykres = ListPlot[dane]
Z. Postawa, "Podstawy Informatyki II"
Rzut ukośny, cd
In[7]:= Solve[D[zasieg,α] 0,α]
Out[7]:= {{α→-2.35619},{α→0.785398},{α→−
0.785398}, {α→2.35619}}
In[8]:= αmax=N[α//.%][[3]]
In[9]:= α=αmax/Pi*180.
Out[9]:= 45
In[10]:= zasieg
Out[10]:={0.0911312 v2}
Strona: 8 z 9
Pole elektryczne jednorodnie naładowanej
płaszczyzny
θ dE
d
l
θ
dE
r
dϕ
In[1]:=Remove["Global`*"]
In[2]:= dE:=1/(4*Pi*ε0)*σ*dS*Cos[θ]/l^2
In[3]:= l:=d/Cos[θ]
In[4]:= dS:=2*Pi*r*dr*dφ
In[5]:= dφ:=1/(2 Pi)
In[6]:= r:=d*Tan[θ]; dr:=D[r,θ]
In[7]:= Ecalk=Integrate[dE,{θ,0,Pi},{φ,0,2 Pi}]
Out[2]:= σ/ε0
(
Rozpraszanie
⎛ cos θ1 ± A − sin 2 θ1 )1/ 2
E1 = E 0 ⎜⎜
1+ A
⎝
2
) ⎞⎟
⎟
⎠
2
, gdzie
A=
m2
m1
In[1]:= e0:=100; m2=108 (*Srebro *); m1=40 (*Argon *);
In[2]:= A:=m2/m1
In[3]:= e1[θ _]:=e0 ((Cos[θ Degree]+Sqrt[A^2-Sin[θ
Degree]^2])/(1+A))^2
In[4]:= Plot[Evaluate[e1[x]],{x, 0, 90},AxesLabel→{"Angle
(degrees)","Kinetic energy (eV)"}]
Manipulate - interakcja
Manipulate[wyr, {x,x0,x1}] – pozwala na interaktywną
zmianę parametrów zmiennej x w wyrażeniu wyr, w
zakresie of x0 do x1
In[1]:=Manipulate[ Plot[e0*(((Cos[x] - Sqrt[a1^2 - Sin[x]^2])/(1 + a1))^2), {x, 0 Degree, 90
Degree}, AxesLabel -> {"Angle (rad)", "Kinetic energy (eV)"}], {a1, 1, 10}]
Programowanie w Mathematice
To już we własnym zakresie lub na ćwiczeniach
Z. Postawa, "Podstawy Informatyki II"
Strona: 9 z 9

Podobne dokumenty