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