Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.23
first-letter
Media
Specjalna
Dyskusja
Wikipedysta
Dyskusja wikipedysty
Wikibooks
Dyskusja Wikibooks
Plik
Dyskusja pliku
MediaWiki
Dyskusja MediaWiki
Szablon
Dyskusja szablonu
Pomoc
Dyskusja pomocy
Kategoria
Dyskusja kategorii
Wikijunior
Dyskusja Wikijuniora
TimedText
TimedText talk
Moduł
Dyskusja modułu
Wydarzenie
Dyskusja wydarzenia
Ogólna teoria względności/Wprowadzenie do ogólnej teorii względności
0
14454
558854
548293
2026-10-07T13:38:49Z
Persino
2851
558854
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
'''Ogólna teoria względności''' jest współczesną teorią, która opisuje grawitację w sposób bardziej dokładny niż teoria grawitacji Newtona, która jest on opisana przez:
{{CentrujWzór|<MATH>\vec{F}_{AB}=-G{{m_1m_2}\over{r^2}}{{\vec{r}}\over{r}}</MATH>|1.1}}
* gdzie {{Formuła|<MATH>\vec F_{AB}</MATH>}} siła grawitacji działa wzdłuż wektora {{Formuła|<MATH>\vec{r}</MATH>}} (jest to różnica położenia ciała B i ciała A), która charakteryzuje oddziaływanie ciała A na ciało B, ale o zwrocie przeciwnym niż wektor położenia ciała B względem ciała A.
== Postulaty teorii względności ==
'''Postulat pierwszy''' - jest uogólnienie zasady Galileusza, ale też i Einsteina ze szczególnej teorii względności, że układy poruszające się z przyspieszeniem zerowym lub mającym pewną wartość, to w tych układach spełnione są prawa fizyki.
'''Postulat drugi''' - prędkość światła jest taka sama we wszystkich układach odniesienia, nawet w tych układach poruszających się z pewnym niezerowym przyspieszeniem.
== Elementy ogólnej teorii względności ==
Szczególna teoria względności wyróżnia pewne klasy układów odniesienia zwanych układami inercjalnymi. Szczególna teoria nie ma grawitacji, więc należy sformułować tak nową teorię (OTW), by wszystkie układy odniesienia były równoprawne i zawierały grawitację.
=== Zasady równoważności ===
Przedstawimy tutaj słabą i silną zasadę równoważności.
==== Słaba zasada równoważności ====
Obserwator znajduje na Ziemi, i zauważa, że na niego działa jakaś siła grawitacji, która wywołuje siła ciężkości działająca na nasze ciało. Innym razem obserwator znajduje się w kosmosie w rakiecie, która porusza się z przyspieszeniem {{Formuła|<MATH>\vec{a}=\vec{g}</MATH>}} w sposób płynny, on nie zauważa żadnej różnicy, między układem na Ziemi czy w rakiecie, czyli który układ jest inercjalny? A zatem jeśli założymy, że nasz układ jest inercjalny, to pochodne cząstkowe elementów tensora metrycznego są równe zero. Ale w myśl tej zasady również układy nieinercjalne są nierozróżnialne od inercjalnych. A zatem prawa wyprowadzone dla układów inercjalnym powinny być słuszne też w nieinercjalnych układach odniesienia. Tzn.: pochodną cząstkową zwykłą zastępujemy pochodną tensorową, bo symbole Christoffela są równe zero, a następnie w myśl tej zasady można uogólnić otrzymane prawa na układy również nieinercjalne, w których symbole Christoffela nie muszą się zerować.
==== Silna zasada równoważności ====
Każde prawo fizyczne w sformułowane w szczególnej teorii względności w postaci tensorowej w układzie lokalnie płaskim (inercjalnym) ma taką samą postać w ogólnej teorii względności, czyli w czasoprzestrzeni zakrzywionej.
=== Czasoprzestrzeń w ogólnej teorii względności ===
Czasoprzestrzeń jest czterowymiarową przestrzenią absolutną z trójwymiarową przestrzenią znanej z mechaniki Newtona i czwartą współrzędną zwanej współrzędną czasową.
Metryka w czasoprzestrzeni może przybierać postać lorentzowską, przez obranie układu inercjalnego, który jest układem lokalnie płaskim w danym punkcie przestrzeni.
=== Kontrawariantny czterowektor położenia ===
Kontrawariantnym czterowektorem położenia w ogólnej teorii względności nazywamy wektor:
{{CentrujWzór|<MATH>x^{\mu}=(ct,x,y,z)\;</MATH>|1.2}}
=== Sygnatura dodatnia i ujemna ===
Sygnatura (1,-1,-1,-1) tensora metrycznego Minkowskiego jest w lokalnej płaskości czasoprzestrzeni zakrzywionej, o tej sygnaturze jest tensor metryczny przedstawiony w równaniu {{LinkWzór|1.3}}, tą '''sygnaturę''' nazywamy '''dodatnią''', a sygnaturę (-1,1,1,1), czyli nazywamy ją '''ujemną''', która występuje w równaniu {{LinkWzór|1.3G}}.
=== Interwał czasoprzestrzenny ===
Interwał czasoprzestrzenny w ogólnej teorii względności przedstawiamy w analogii do interwału szczególnej teorii względności, w której zastąpujemy tensory metryczne Minkowskiego innymi tensorami metrycznymi, które w ogólności nie są diagonalne, a kwadrat interwału czasoprzestrzennego przy sygnaturze tensora metrycznego Minkowskiego dodatniej i ujemnej przedstawiają się kolejno:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>ds^2=\sum^3_{\mu,\nu=0}g_{\mu\nu}dx^{\mu}dx^{\nu}\;</MATH>|1.3}}
| 2 = {{CentrujWzór|<MATH>ds^2=-\sum^3_{\mu,\nu=0}g_{\mu\nu}dx^{\mu}dx^{\nu}\;</MATH>|1.3G}}
}}
* gdzie: {{Formuła|<MATH>g_{\mu\nu}\;</MATH>}}, to tensor metryczny.
Udowodnimy, że jeśli w jednym układzie współrzędnym metrykę przedstawiamy wedle sposobu {{LinkWzór|1.3}}, to w innym w układzie współrzędnym kwadrat różniczki interwału czasoprzestrzennego pozostaje niezmienny, zatem to udowodnijmy, stosując tym razem konwencję Einsteina:
{{CentrujWzór|<MATH>ds^2=\pm g_{\mu\nu}dx^{\mu}dx^{\nu}=\pm g_{\mu\nu}{\Lambda^{\mu}}_{\alpha}d{x^'}^{\alpha}{\Lambda^{\nu}}_{\beta}d{x^'}^{\beta}=\pm\underbrace{g_{\mu\nu}{\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}}_{{g^'}_{\alpha\beta}}d{x^'}^{\alpha}d{x^'}^{\beta}=\pm{g^'}_{\alpha\beta}d{x^'}^{\alpha}d{x^'}^{\beta}\;</MATH>|1.4}}
* Względem sygnatury (drugiej) przedstawionej w {{LinkWzór|1.3G}} dowód przedbiega podobnie jak dla pierwszej sygnatury według {{LinkWzór|1.4}}.
Na podstawie dowodu {{LinkWzór|1.4}} kwadrat różniczki interwału czasoprzestrzennego jest niezmiennikiem, tzn. jego infinitezymalna wartość nie zależy od wyboru układu współrzędnych, tzn. nie zależy względem jakich współrzędnych liczymy naszą metrykę.
Kwadrat różniczki interwału czasoprzestrzennego {{LinkWzór|1.3}} jest większy od zera, gdy mamy do czynienia z cząstką o masie spoczynkowej różnej od zera, natomiast dla fotonów lub dla cząstek o masie spoczynkowej równej zero, to kwadrat różniczki interwału czasoprzestrzennego jest równy zero.
Przykładem tensora metrycznego jest tensor metryczny w przestrzeni Minkowskiego (czasoprzestrzeni Einsteina w czterowymiarowej czasoprzestrzeni) znany w płaskiej przestrzeni, w której nie ma pola grawitacyjnego, którego postać można napisać dla obu sygnatur (sygnatura dodatnia - {{LinkWzór|1.5}}, sygnatura ujemna - {{LinkWzór|1.5r}}):
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\eta_{\mu\nu}=\begin{bmatrix}
1&0&0&0\\
0&-1&0&0\\
0&0&-1&0\\
0&0&0&-1
\end{bmatrix}</MATH>|1.5}}
| 2 = {{CentrujWzór|<MATH>\eta_{\mu\nu}=\begin{bmatrix}
-1&0&0&0\\
0&1&0&0\\
0&0&1&0\\
0&0&0&1
\end{bmatrix}</MATH>|1.5r}}
}}
Dla tensora metrycznego {{LinkWzór|1.5}} (sygnatura dodatnia) i {{LinkWzór|1.5r}} (sygnatura ujemna) interwał czasoprzestrzenny obliczony według {{LinkWzór|1.3}}, tzn. w szczególnej teorii względności, jest napisany:
{{CentrujWzór|<MATH>ds^2=c^2dt^2-dx^2-dy^2-dz^2\;</MATH>|1.6}}
Interwał {{LinkWzór|1.6}} jest podstawą szczególnej teorii względności.
Widzimy, że w powyższym interwale współrzędne przestrzenne są na równi sobie, niezależne z jakimi mamy do czynienia współrzędnymi przestrzennymi, współrzędna czasowa w tym interwale jest wyróżniona, czas w metrach (ct) jest iloczynem prędkości światła i czasu w sekundach.
=== Czterowektor prędkości ===
Czterowektorem prędkości zdefiniowanej jako pochodną kontrawariantnego czterowektora położenia względem interwału czasoprzestrzennego {{LinkWzór|1.3}} nazywamy wielkość zdefiniowaną:
{{CentrujWzór|<MATH>u^{\mu}={{dx^{\mu}}\over{ds}}\;</MaTH>|1.7}}
Wielkość {{Formuła|<MATH>s\;</MATH>}} jest to jest interwał czasoprzestrzenny dla cząstek o masie spoczynkowej różnej od zera i dla cząstek o masie spoczynkowej równej zero.
=== Czterowektor pędu ===
Czterowektorem pędu nazywamy wielkość zdefiniowaną:
{{CentrujWzór|<MATH>p^{\mu}=m_0cu^{\mu}\;</MaTH>|1.8}}
=== Czterowektor pędu a masa spoczynkowa cząstki ===
Jeśli będziemy korzystali ze wzoru {{LinkWzór|1.3}} (sygnatura dodatnia) i {{LinkWzór|1.3G}} (sygnatura ujemna), to je można równoważnie razem zapisać w sposób najpierw dzieląc obustronnie przez kwadrat różniczki interwału czasoprzestrzennego (cząstki o masie spoczynkowej różnej od zera) dla obu sygnatur, tzn.: dla sygnatury dodatniej (znak u góry) i ujemnej (znak u dołu):
{{CentrujWzór|<MATH>1=\pm g_{\mu\nu}u^{\mu}u^{\nu}\Rightarrow \pm 1=u_{\mu}u^{\mu}\Rightarrow \pm 1={{dx_{\mu}}\over{ds}}{{dx^{\mu}}\over{ds}}\;</MATH>|1.9}}
Gdy mamy cząstkę o masie spoczynkową równej zero, wtedy musimy podzielić równanie {{LinkWzór|1.3}} obustronnie przez kwadrat różniczki dowolnego parametru λ, wtedy czterowektor prędkości definiujemy podobnie jak dla cząstki masowej, wtedy otrzymujemy równanie inne niż {{LinkWzór|1.9}}:
{{CentrujWzór|<MATH>{{ds^2}\over{d\lambda^2}}=\pm g_{\mu\nu}{{dx^{\mu}}\over{d\lambda}}{{dx^{\nu}}\over{d\lambda}}\Rightarrow \pm {{ds^2}\over{d\lambda^2}}={{dx_{\nu}}\over{d\lambda}}{{dx^{\nu}}\over{d\lambda}}\;</Math>|1.10}}
Równanie {{LinkWzór|1.9}} wymnażamy obustronnie przez wyrażenie (m{{Sub|0}}c){{Sup|2}}, korzystając z definicji czterowektora pędu {{LinkWzór|1.8}}, dostajemy inne równoważne do {{LinkWzór|1.9}} równanie w postaci dla sygnatury dodatniej (znak u góry) i ujemnej (znak u dołu):
{{CentrujWzór|<MATH>p_{\mu}p^{\mu}=\pm m_0^2c^2\;</Math>|1.11}}
Jak udowodniliśmy równanie {{LinkWzór|1.11}} jest słuszne tylko dla cząstek o masie spoczynkowej różnej od zera, ale równanie {{LinkWzór|1.11}} możemy uogólnić dla cząstek o wszystkich masach spoczynkowych.
Równość {{LinkWzór|1.11}} możemy napisać dla układów rozciągłych w postaci:
{{CentrujWzór|<MATH>\mathfrak p_{\mu}\mathfrak p^{\mu}=\mp g\gamma^2\left({{dm_0}\over{dV_0}}\right)^2c^2\Rightarrow \mathfrak p_{\mu}\mathfrak p^{\mu}=\mp g\gamma^2c^2\rho_0^2\;</MATH>|KJH1}}
=== Infinitezymalny czas własny i infinitezymalna długość własna ===
Infinitezymalnym czasem własnym mierzoną przez zegary w ogólnej teorii względności nazywamy wielkość, który dany obserwator doświadczający dwóch zdarzeń bliskich w czasie doświadcza w układzie własnym, że dla niego czas w układzie w którym cząstka spoczywa (układ własny) jest mierzony w zależności od czasu w układzie, w którym cząstka porusza się:
{{CentrujWzór|<MATH>d\tau={{1}\over{c}}\sqrt{g_{\mu\nu}dx^{\mu}dx^{\nu}}={{1}\over{c}}\sqrt{dx_{\mu}dx^{\mu}}\;</MATH>|1.12}}
Infinitezymalną długością własną mierzoną przez pręty między dwoma sąsiednimi punktami nazywamy długość zdefiniowaną:
{{CentrujWzór|<MATH>dl=\sqrt{-g_{\mu\nu}dx^{\mu}dx^{\nu}}=\sqrt{-dx_{\mu}dx^{\mu}}\;</MATH>|1.13}}
Długość własna w układzie własnym spoczywającym jest równa długości pręta w układzie spoczywającym, tzn. w układzie współrzędnym. gdy długość pręta między oba jego końcami mierzymy w tym samym czasie współrzędnościowym, czyli dla spoczywającego pręta względem układu dla pręta poruszającego się.
Odpowiednie infinitezymalne czasy własne między dwoma zdarzeniami i infinitezymalne długości własne dwóch sąsiednich zdarzeń istnieją, jeśli pod pierwiastki są wielkości infinitezymalne, ale dodatnie.
Niezmienniczość {{LinkWzór|1.12}} i {{LinkWzór|1.13}}, które można je liczyć w dowolnym układzie współrzędnym, można tak samo udowodnić, jak przy dowodzie na niezmienniczość interwału czasoprzestrzennego (dowód {{LinkWzór|1.4}}).
=== Nieinercjalne układy odniesienia a czasoprzestrzeń ===
==== Przykład - układ rotujący ze stałą prędkością kątową ω ====
Teraz przedstawmy układ rotujący ze stałą prędkością z częstotliwością kołową: {{Formuła|<MATH>\omega\;</MATH>}}, to jego wartość prędkości w zależności od częstotliwości kołowej i promienia od pewnego punktu względem którego następuje obrót ma się jako według wzoru {{Formuła|<MATH>v=\omega r\;</MATH>}}, to jego interwał czasoprzestrzenny w zależności od interwału czasoprzestrzennego w układzie inercjalnym przestawiam się:
{{CentrujWzór|<MAth>d\tau^2=\left(1-{{v^2}\over{c^2}}\right)c^2dt=\left(1-{{\omega^2r^2}\over{c^2}}\right)c^2dt^2\;</MATH>|1.14}}
W układzie nieinercjalnym ciało rotujące jest w spoczynku, jeśli na układ działa siła odśrodkowa, to: {{Formuła|<MATH>F_0=-m\omega^2 r\;</MATH>}}, to można powiedzieć, że ta siła równoważy siła grawitacji, według teorii równoważności. To energia kinetyczna ciała obracającego ma się jako: {{Formuła|<MATH>E_k={{m\omega^2r^2}\over{2}}\;</MATH>}}, a energia potencjalna w układzie nieinercjalnym ma się jako:{{Formuła|<MATh>E_p=\varphi m\;</MATH>}}
Można przyjąć, że w takim układzie całkowita energia mechaniczna, czyli suma energii kinetycznej i potencjalnej równa się zero lub z dokładnością do stałej, ale w naszym przypadku lepiej przyjąć za tą stała jest liczbą zero, zatem: {{Formuła|<MATH>E_k+E_p=0\;</MATH>}}, to {{Formuła|<MATH>0={{m\omega^2 r^2}\over{2}}+\varphi m\Rightarrow {{\omega^2 r^2}\over{c^2}}=-{{2\varphi}\over{c^2}}\;</MATH>}}. A zatem nasz interwał czasoprzestrzenny przedstawia się względem ostatnich rozważań i wzoru na interwał czasoprzestrzenny {{LinkWzór|1.14}} dla obu sygnatur (znak plus u góry to sygnatura dodatnia, w przeciwnym przypadku ujemna):
{{CentrujWzór|<MATH>d\tau^2=\pm\left(\pm 1\pm{{2\varphi}\over{c^2}}\right)c^2dt^2\;</MATH>|1.15}}
Dochodzimy więc do wniosku, że wedle wzoru {{LinkWzór|1.14}} i {{LinkWzór|1.15}}, że element tensora metrycznego, a mianowicie element o współczynnikach dolnych zerowych przedstawia się:
{{CentrujWzór|<MATH>g_{00}=\pm 1\pm{{2\varphi}\over{c^2}}\;</MATH>|1.16}}
Widzimy, że ona zależy od potencjału skalarnego pola grawitacyjnego słabego, a więc można powiedzieć, że w układzie nieinercjalnym siły bezwładności zastępują siły grawitacji.
Według zasady równoważności nie rozróżnia się sił grawitacji od sił pochodzenia nieinercjalnego (siły bezwładności), a zatem można powiedzieć:
{{CentrujWzór|<MATH>g_{00}=\pm 1\mp{{2GM}\over{c^2r^2}}\;</MATH>|1.17}}
Jeśli mamy układ zwykły oznaczony współrzędnymi: {{Formuła|<MATH>(x,y,t)</MATH>}}, to w układzie rotującym układ jest względem współrzędnych: {{Formuła|<MATH>(x',y',t')\;</MATH>}}, czyli obracającym się ze stałą prędkością kątową ω, to transformacje z układu obracającego się do układu nieobracającego mają się jak:
{{CentrujWzór|<MATH>x=x'\cos(\omega t)-y'\sin(\omega t)\;</MATH>|1.18}}
{{CentrujWzór|<MATH>y=x^'\sin(\omega t)+y'\cos(\omega t)\;</MATH>|1.19}}
Można policzyć różniczki zupełne wyrażeń {{LinkWzór|1.18}} i {{LinkWzór|1.19}}, które są takowymi transformacjami z jednego układu współrzędnych do drugiego:
{{CentrujWzór|<MATH>dx=dx'(\cos\omega t)-dy'\sin(\omega t)-x'\sin(\omega t)\omega dt-y^'\cos(\omega t)\omega dt=dx'\cos(\omega t)-dy'\sin(\omega t)-\omega y dt\;</MATH>|1.20}}
{{CentrujWzór|<MATH>dy=dx'\sin(\omega t)+dy'\cos(\omega t)+x'\cos(\omega t)\omega dt-y'\sin(\omega t)\omega dt=dx'\sin(\omega t)+dy'\sin(\omega t)+\omega x dt\;</MATH>|1.21}}
Obliczenia na liczbach ogólnych {{LinkWzór|1.20}} i {{LinkWzór|1.21}} przedstawiamy w uproszczeniu jako kombinacje różniczek współrzędnych i czasu:
{{CentrujWzór|<MATH>dx=dx'\cos(\omega t)-dy'\sin(\omega t)-\omega y dt\;</MATH>|1.22}}
{{CentrujWzór|<MATH>dy=dx'\sin(\omega t)+dy'\cos(\omega t)+\omega x dt\;</MATH>|1.23}}
Interwał czasoprzestrzenny w układzie inercjalnym przedstawia wedle sposobu {{LinkWzór|1.6}}. Mając transformacje różniczek, tzn. {{LinkWzór|1.22}} i {{LinkWzór|1.23}}, wyznaczmy wedle jakiego sposobu przedstawia się on w układzie nieinercjalnym i w ten sposób możemy wyznaczyć elementy tensora metrycznego w nieinercjalnym układzie odniesienia względem układu czysto inercjalnego, który porusza się względem innych układów inercjalnym ze stałą prędkością kątową:
{{CentrujWzór|<MATH>ds^2=c^2dt^2-dx^2-dy^2=c^2dt^2-(dx'\cos(\omega t)-dy'\sin(\omega t)-\omega y dt)^2-(dx'\sin(\omega t)+dy'\cos(\omega t)+\omega x dt)^2=\;</MATH>{{Br}}
<MATH>=c^2dt^2-dx^{'2}\cos^2(\omega t)-dy^{'2}\sin^2(\omega t)-\omega^2y^2 dt^2+2dx'dy'\cos(\omega t)\sin(\omega t)+2dx'\cos(\omega t)\omega y dt-2dy'\sin(\omega t)\omega y dt+\;</MATH>{{Br}}<MATH>-dx^{'2}\sin^2(\omega t)-dy^{'2}\sin^2(\omega t)-\omega^2 x^2 dt^2-2dx'dy'\sin(\omega t)\cos(\omega t)-2dx'\sin(\omega t)\omega x dt-2dy'\cos(\omega t)\omega x dt=\;</MATH>{{Br}}
<MAtH>=\left(1-{{\omega^2 (x^2+y^2)}\over{c^2}}\right)c^2dt^2-dx^{'^2}-dy^{'2}+2\omega dt\left(dx'\cos(\omega t)y-dy'\sin(\omega t)y-dx'\sin(\omega t)x-dy'\cos(\omega t)x\right)=</MATH>{{Br}}
<MATH>=\left(1-{{\omega^2 r^2}\over {c^2}}\right)c^2dt^2-dx^{2'}-dy^{'2}+
2\omega dt\left(dx'(\cos(\omega t)y-\sin(\omega t)x)-dy'(\sin(\omega t)y+\cos(\omega t)x)\right)</MATH>|1.24}}
Wyznaczmy wyrażenia pomocnicze, które są potrzebne do obliczeń interwału w układzie nieinercjalnych w {{LinkWzór|1.24}} wedle współrzędnych w układzie nieinercjalnym:
{{CentrujWzór|<MATH>\cos(\omega t)y-\sin(\omega t)x=\cos(\omega t)\left(x'
\sin(\omega t)+y'\cos(\omega t)\right)-\sin(\omega t)\left(x'\cos(\omega t)-y'\sin(\omega t)\right)=\;</math>{{Br}}
<math>=x^'\sin(\omega t)\cos(\omega t)+y^{'}\cos^2(\omega t)-x^'\cos(\omega t)\sin(\omega t)+y^'\sin^2(\omega t)=y'\;</MATH>|1.25}}
a także drugie pomocnicze obliczenia:
{{CentrujWzór|<MATH>\sin(\omega t)y+\cos(\omega t)x=\sin(\omega t)(x'\sin(\omega t)+y'\cos(\omega t))+\cos(\omega t)(x'\cos(\omega t)-y'\sin(\omega t))=\;</MATH>{{Br}}
<MATH>=x'\sin^2(\omega t)+y'\sin(\omega t)\sin(\omega t)+x'\cos^2(\omega t)-y'\sin(\omega t)\cos\omega t=x'\;</MATH>|1.26}}
Dochodzimy, że interwał czasoprzestrzenny na podstawie obliczeń {{LinkWzór|1.24}} i obliczeń pomocniczych {{LinkWzór|1.25}} i {{LinkWzór|1.26}} przedstawia się względem współrzędnych nieinercjalnych:
{{CentrujWzór|<MATH>ds^2=\left(1-{{\omega^2 r^2}\over {c^2}}\right)c^2dt^2+2(\omega dx'y'-\omega dy'x')dt-dx^{'2}-dy^{'2}</MATH>|1.27}}
W obliczeniach {{LinkWzór|1.27}} grupujemy wyrazy względem tych samych różniczek względem nieinercjalnego układu współrzędnych, wtedy dostajemy wzór na interwał czasoprzestrzenny w naszym rozważanym układzie współrzędnym:
{{CentrujWzór|<MATH>ds^2=\underbrace{\left(1-{{\omega^2 r^2}\over {c^2}}\right)}_{\pm g_{00}}c^2dt^2+\underbrace{{{\omega y'}\over{c}}}_{\pm g_{01}}dtdx'+\underbrace{{{\omega y'}\over{c}}}_{\pm g_{10}}dx'dt+ dx\underbrace{\left(-{{\omega x'}\over{c}}\right)}_{\pm g_{20}}dy'dt+\underbrace{\left(-{{\omega x'}\over{c}}\right)}_{\pm g_{02}}dtdy'+\underbrace{(-1)}_{\pm g_{11}}dx^{'2}+\underbrace{(-1)}_{\pm g_{22}}dy^{'2}</MATH>|1.28}}
Tensor metryczny w nieinercjalnym układzie współrzędnych możemy napisać na podstawie definicji interwału znanej ze szczególnej teorii względności przy definicji kwadratu infinitezymalnego interwału {{LinkWzór|1.28}} dla sygnatury dodatniej i ujemnej (wiedząc, że elementy w tej sygnaturze względem sygnatury dodatniej mają przeciwne parametry):
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>g_{\mu\nu}=\begin{bmatrix}
1-{{\omega^2 r^2}\over{c^2}}&{{\omega y'}\over{c}}&-{{\omega x'}\over{c}}\\
{{\omega y'}\over{c}}&-1&0\\
-{{\omega x'}\over{c}}&0&-1
\end{bmatrix}</MATH>|1.29}}
| 2 = {{CentrujWzór|<MATH>g_{\mu\nu}=\begin{bmatrix}
-1+{{\omega^2 r^2}\over{c^2}}&-{{\omega y'}\over{c}}&{{\omega x'}\over{c}}\\
-{{\omega y'}\over{c}}&1&0\\
{{\omega x'}\over{c}}&0&1
\end{bmatrix}</MATH>|1.29r}}
}}
Warto zauważyć, że elementy pozadiagonalne tensora metrycznego, wskazują na jakiś rodzaj rotacji wedle naszego przedstawienia interwału {{LinkWzór|1.28}} układu nieinercjalnego względem inercjalnego.
== Wprowadzenie do tensorów Einsteina w postaci tensorowej ==
=== Tensor Einsteina ===
Wyprowadzimy tutaj tensor Einsteina i wyznaczmy pochodną tensorową tego tensora i przekonamy się, że ona wynosi zero.
Tożsamość Bianchiego, które podamy tutaj bez dowodu, ale jego dowód znajduje się w punkcie {{LinkWzór|2.126|Rachunek_tensorowy|Metody_matematyczne_fizyki|MMF}}:
{{CentrujWzór|<MATH>R_{\mu \nu \gamma \alpha ;\sigma}+R_{\mu \nu \sigma\gamma;\alpha}+R_{\mu \nu\alpha \sigma;\gamma}=0\;</MaTH>|1.30}}
W obliczeniach na tensorach będziemy korzystać, z własności na tensorze Ricciego: g{{Sup|μγ}}R{{Sub|μνγσ}}=R{{Sub|νσ}}, oraz z antysymetryczności przedstawiania wskaźników pierwszej pary lub drugiej.
Zastosujmy zwężenie tożsamości Bianchiego wymnażając obustronnie przez podwójnie kontrawariantny tensor metryczny g{{Sup|μγ}} tożsamość {{LinkWzór|1.30}}:
{{CentrujWzór|<MATH>g^{\mu\gamma}\left[R_{\mu\nu \gamma \alpha;\sigma}+R_{\mu\nu \sigma \gamma;\alpha}+R_{\mu\nu \alpha\sigma;\gamma}\right]=0\Rightarrow R_{\nu\alpha;\sigma}-R_{\nu\sigma;\alpha}+{R^\gamma}_{\nu\alpha\sigma;\gamma}=0\;</MATH>|1.31}}
Dokonajmy teraz ponownego zwężania ostatniej równości {{LinkWzór|1.31}}, a także korzystając znów w naszej równości tensorowej z własności na tensorach Ricciego:
{{CentrujWzór|<MATH>g^{\nu\alpha}\left[R_{\nu\alpha;\sigma}-R_{\nu\sigma;\alpha}+{R^\gamma}_{\nu\alpha\sigma;\gamma}\right]=0\Rightarrow R_{;\sigma}-{R^\alpha}_{\sigma;\alpha}-{R^{\gamma}}_{\sigma;\gamma}=0\;</MATH>|1.32}}
Po ostatnich przekształceniach, i po przemianowaniu wskaźników w równaniu {{LinkWzór|1.32}} wedle schematu α→γ, wtedy dojdziemy do następnego równania:
{{CentrujWzór|<MATH>R_{;\sigma}-{R^{\gamma}}_{\sigma;\gamma}-{R^{\gamma}}_{\sigma;\gamma}=0\;</MATH>|1.33}}
Wykorzystujemy definicję delty Kroneckera oraz wykorzystujemy go do pierwszego wyrazu w równaniu tensorowym {{LinkWzór|1.33}}, a także redukujemy wyrazy podobne w tym samym równaniu:
{{CentrujWzór|<MATH>R_{;\alpha}{\delta^{\alpha}}_{\sigma}-2{R^{\gamma}}_{\sigma;\gamma}=0\Rightarrow {R^{\alpha}}_{\sigma;\alpha}-{{1}\over{2}}{\delta^{\alpha}}_{\sigma}R_{;\alpha}=0\;</MATH>|1.34}}
Idąc dalej by mieć górne wskaźnik przy tensorach w równaniu tensorowym {{LinkWzór|1.34}} należy to równanie tensorowe wymnożyć przez tensor g{{Sup|σβ}}, wtedy dostaniemy co chcieliśmy.
{{CentrujWzór|<MATH>g^{\sigma\beta}\left({R^{\alpha}}_{\sigma;\alpha}-{{1}\over{2}}{\delta^{\alpha}}_{\sigma}R_{;\alpha}\right)=0\Rightarrow {R^{\alpha\beta}}_{;\alpha}-{{1}\over{2}}g^{\alpha\beta}R_{;\alpha}=0\;</MATH>|1.35}}
Wyłączając pochodną tensorową przed nawias i wykorzystując przy tym, że pochodna tensorowa elementów tensora metrycznego jest równa zero, wtedy {{LinkWzór|1.35}} przechodzi w równanie:
{{CentrujWzór|<MATH>\left(R^{\alpha\beta}-{{1}\over{2}}g^{\alpha\beta}R\right)_{;\alpha}=0\;</MATH>|1.36}}
Tensor występujący pod pochodną tensorową {{LinkWzór|1.36}} nazywamy tensorem Einsteina i jest funkcją dwuwskaźnikowego tensora krzywizny R{{Sup|αβ}}, skalaru krzywizny R, a także jest funkcją tensora metrycznego, który panuje w danej geometrii w przestrzeni czterowymiarowej.
{{CentrujWzór|<MATH>G^{\alpha\beta}=R^{\alpha\beta}-{{1}\over{2}}g^{\alpha\beta}R\;</MATH>|1.37}}
Tensor Einsteina {{LinkWzór|1.37}} na podstawie tożsamości {{LinkWzór|1.36}} ma taką własność, że jego pochodna tensorowa względem wskaźnika α występujący w jego definicji {{LinkWzór|1.37}} jest równa zero.
{{CentrujWzór|<MATH>{G^{\alpha\beta}}_{;\alpha}=0\;</MATH>|1.38}}
Tensor Einsteina {{LinkWzór|1.37}} można zapisać w postaci bezwskaźnikowej, tzn. bez powiedzenia z jakiego typu tensorem mamy do czynienia w przypadku tensora Einsteina G{{Sup|αβ}}, który można zdefiniować nie tylko w postaci jakby miał tylko górne wskaźniki, ale wszystkie te zapisy tensorowo są równoważne w zapisie wspomnianego tensora.
{{CentrujWzór|<MATH>\mathbf{G}=\mathbf{R}-{{1}\over{2}}\mathbf{g}R\;</MATH>|1.39}}
Wyprowadzona własność tensora Einsteina jest bardzo potrzebna w ogólnej teorii względności i jest wykorzystana w równaniach tensorowych Einsteina opisująca grawitację.
=== Rozszerzony tensor Einsteina ===
Rozszerzony tensor Einsteina zdefiniujmy w oparciu o tensor Einsteina {{LinkWzór|1.37}} o stałą kosmologiczną Λ:
{{CentrujWzór|<maTH>O^{\alpha\beta}=G^{\alpha\beta}+\Lambda g^{\alpha\beta}\;</MaTH>|1.40}}
Wyznaczmy pochodną tensorową rozszerzonego tensora Einsteina {{LinkWzór|1.40}} względem współrzędnej kontrawariantnej o numerze β, zatem na podstawie {{LinkWzór|1.38}} i z własności, że pochodna tensorowa tensora metrycznego jest równa zero:
{{CentrujWzór|<MATH>{O^{\alpha\beta}}_{;\alpha}=\left(G^{\alpha\beta}+\Lambda g^{\alpha\beta}\right)_{;\alpha}=
{G^{\alpha\beta}}_{;\alpha}+\Lambda {g^{\alpha\beta}}_{;\alpha}=0+\Lambda\cdot 0=0\;</maTh>|1.41}}
Doszliśmy więc do wniosku, że rozszerzony tensor Einsteina ma te same własności, co zwykły tensor Einsteina.
== Czy istnieją układy lokalnie, a nie globalnie płaskie ==
=== Twierdzenie o lokalnej płaskości czasoprzestrzeni (przestrzeni czterowymiarowej) ===
Przestrzeń jest lokalnie płaska w czasoprzestrzeni Einsteina, że w danym otoczeniu punktu mamy doczynienia z czasoprzestrzenią Minkowskiego, bo przestrzeń, która jest rozwiązaniem ogólnej teorii względności nie może być globalnie płaska, ale może być spełniona tylko w przybliżeniu w otoczeniu pewnego punktu w którym na płaskość obowiązuje, w której mamy tensor metryczny w przybliżeniu Minkowskiego {{LinkWzór|1.5}}, gdy pochodne zupełne tego tensora metrycznego są równe zero, tzn.:
{{CentrujWzór|<MATH>{{\partial {g^'}_{\alpha\beta}}\over{\partial x^{\gamma}}}=0\;</MATH>|1.42}}
* gdzie:{{Formuła|<MaTH>{g^'}_{\alpha\beta}\;</MATH>}} jest to tensor metryczny Minkowskiego {{Formuła|<MATH>\eta_{\alpha\beta}\;</MATH>}} z małą poprawką do niego by z bardzo dużą dokładnością był spełniony powyższy warunek.
Zakładamy, że istnieje przekształcenia między aktualną przestrzenią, a układem lokalnie płaskim, które jest prawdziwy dla punktu, w którym ta lokalna płaskość jest spełniona według:
{{CentrujWzór|<MATH>g_{\alpha\beta}={\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}{g^'}_{\mu\nu}\;</MATH>|1.43}}
* gdzie:{{Formuła|<MATH>{g^'}_{\mu\nu}\simeq\eta_{\mu\nu}\;</MATH>}}- jest to tensor metryczny Minkowskiego.
A także również zachodzi dla ściśle określonego punktu w przestrzeni lokalnie płaskiej równanie {{LinkWzór|1.42}}, i ze względu na symetryczność ogólnej definicji tensora metrycznego ma on w rezultacie 1+2+3+4=10 niezależnych składowych, a ilość składowych tensora {{Formuła|<MATH>{\Lambda^{\mu}}_{\alpha}\;</Math>}} jest 4· 4=16 elementów, zatem ilość niezależnych stopni swobody w równaniu {{LinkWzór|1.43}} jest równa 16-10=6. Te sześć stopni swobody odpowiada sześciu stopniom swobody przekształcenia Lorentza, tzn. nasz układ można przesunąć z prędkością <math>\vec{v}\;</MATH> względem trzech jego niezależnych współrzędnych lub obrócić badany układ o trzy niezależne kąty. W sumie mamy sześć stopni swobody {{Formuła|<MATH>{\Lambda^{\mu}}_{\alpha}\;</MAtH>}}, które powodują, że lokalny układ inercjalny pozostanie układem inercjalnym.
Według równania {{LinkWzór|1.42}} ilość niezależnych równań jest 10·4=40 (jest 10-to ilość niezależnych składowych tensora metrycznego, który jest jak wiadomo symetryczny i cztery niezależne składowe tensora kontrawariantnego położenia), daje nam też 40 stopni swobody. Ponieważ w tym punkcie lub jego otoczeniu istnieje tensor metryczny Minkowskiego, to małe poprawki do tensora metrycznego Minkowskiego możemy tak wybrać, by były spełnione równania {{LinkWzór|1.42}}, co w połączeniu z {{LinkWzór|1.43}} daje nam pewne {{Formuła|<math>{{\partial{\Lambda^{\mu}}_{\alpha}}\over{\partial x^{\gamma}}}\;</MATH>}}, które możemy tak obrać by były spełnione omawiane warunki lokalnej płaskości. Jeśli mamy dany punkt układu lokalnie płaskiego wedle {{LinkWzór|1.42}} i {{LinkWzór|1.43}}, to tensor Christoffela dla tego punktu jest równy zero i według twierdzenia Taylora istnieje w otoczeniu tego punktu w przybliżeniu canaj wyżej do wyrazów liniowych tensora krzywizny (należy pamiętać, że pochodna cząstkowa tensora krzywizny dla układu lokalnie płaskiego jest równa zero), w którym są spełnione te zależności, też istnieje w przybliżeniu lokalna płaskość dla punktów tego otoczenia. '''Zatem na podstawie powyższych rozważań zawsze istnieje układ lokalnie płaski, w których dla tych punktów spełnione są {{LinkWzór|1.42}} i {{LinkWzór|1.43}}.'''
== Tensor gęstości energii-pędu ==
=== Definicja tensora gęstości energii-pędu ===
W szczególnej teorii względności tensor gęstości energii-pędu przedstawia się według {{LinkWzór|K61a|Lokalna zachowawczość tensora gęstości energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} wzorem:
{{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)u^{\mu}u^{\nu}-p\eta^{\mu\nu}\;</math>|1.44}}
* gdzie {{Formuła|<MATH>\eta^{\mu\nu}\;</math>}} jest to tam tensor przestrzeni metrycznej Minkowskiego o sygnaturze dodatniej,
* gdy mamy synaturę przeciwną, tzn.: sygnaturę ujemną, to tensor gęstości energii-pędu ma się jako:
{{CentrujWzór|<MATH>T^{\mu\nu}=(\rho c^2+p)u^{\mu}u^{\nu}+p\eta^{\mu\nu}\;</math>|1.45}}
My zawsze będziemy przyjmować jak w szczególnej teorii względności tą sygnaturę pierwszą. Wielkość: {{Formuła|<MATH>u^{\mu}={{dx^{\mu}}\over{ds}}\;</math>}} jest to pochodna dla μ=0 współrzędnej czasowej zdefiniowanej x{{Sup|0}}=ct względem interwału czasoprzestrzennego zdefiniowanej przez: {{Formuła|<MATH>ds^2=c^2dt^2-dx^2-dy^2-dz^2\;</math>}}, gdy mamy:{{Formuła|<MATH>0\neq \mu=i\;</math>}}, to jest ona pochodna współrzędnej położenia cząstki względem tak samo zdefiniowanego interwału czasoprzestrzennego.
Należy pamiętać, że ρ{{Sub|0}} - to gęstość spoczynkowa, p - to ciśnienie cząstki płynu, w danym punkcie. A także zależy od jej prędkości światła (fal elektromagnetycznych).
Miano tensora gęstości energii-pędu ma się jak:
{{CentrujWzór|<MATH>[T^{\mu\nu}]={{J}\over{m^3}}={{Nm}\over{m^3}}={{N}\over{m^2}}=Pa\;</math>|1.46}}
W ogólnej teorii względności, zastępując wedle schematu {{Formuła|<MATH>\eta^{\mu\nu}\rightarrow g^{\mu\nu}</MATH>}}, oraz metrykę Minkowskiego przez inną metrykę zdefiniowaną zdefiniowaną poprzez tensor {{Formuła|<MATH>g^{\mu\nu}</MATH>}}, czyli wtedy mamy {{LinkWzór|1.3}} dla sygnatury dodatniej, a dla ujemnej {{LinkWzór|1.3G}}, które na ogół nie są tensorami metrycznymi Minkowskiego w OTW, ale może być, przy pierwszej sygnaturze tensora metrycznego Minkowskiego mamy dla tensora energii-pędu w ogólnej teorii względności:
{{CentrujWzór|<MATH>T^{\mu\nu}=(\rho c^2+p)u^{\mu}u^{\nu}-pg^{\mu\nu}\Rightarrow {T^{\mu}}_{\nu}=(\rho c^2+p)u^{\mu}u_{\nu}-p{\delta^{\mu}}_{\nu}\;</math>|1.48}}
Dla drugiej o sygnaturze otrzymujemy względem przedstawienia tensora gęstości energii-pędu {{LinkWzór|1.48}}, w takim razie:
{{CentrujWzór|<MATH>T^{\mu\nu}=(\rho c^2+p)u^{\mu}u^{\nu}+pg^{\mu\nu}\Rightarrow {T^{\mu}}_{\nu}=(\rho c^2+p)u^{\mu}u_{\nu}+p{\delta^{\mu}}_{\nu}\;</math>|1.48a}}
Z powyższych definicji wynika, że dla tensora metrycznego jako tensora symetrycznego, wynika symetryczność tensora gęstości energii-pędu przy dowolnym tensorze metrycznym. Na podstawie symetryczności tensora metrycznego wynika, że ten tensor jest macierzą iloczynu skalarnego w czterowymiarowej czasoprzestrzeni.
Można też sformułować tensor gęstości energii-pędu {{LinkWzór|1.44}} i {{LinkWzór|1.45}} zastępując {{Formuła|<MATH>u^{\mu}={{dx^{\mu}}\over{ds}}\;</MATH>}} przez {{Formuła|<MATH>U^{\mu}={{dx^{\mu}}\over{d\lambda}}\;</MATH>}}, gdzie {{Formuła|<MATH>\lambda\;</MATH>}} jest dowolną funkcją {{Formuła|<MATH>\lambda=\lambda(x^{\mu},g^{\mu\nu},s)\;</MATH>}}, gdzie {{Formuła|<MATH>x^{\mu}\;</MATH>}} są to współrzędne kontrawariantne w czasoprzestrzeni, a {{Formuła|<MATH>g^{\mu\nu}\;</MATH>}} to tensor metryczny podwójnie kontrawariantny, dalej {{Formuła|<MATH>s\;</MATH>}} to interwał czasoprzestrzenny. Zatem nasze równania dla sygnatury kolejno dodatniej i ujemnej, spełnione ogólnie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)U^{\mu}U^{\nu}-p g^{\mu\nu}\;</math>|sd1}}
| 2 = {{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)U^{\mu}U^{\nu}+pg^{\mu\nu}\;</math>|sd2}}
}}
Równości {{LinkWzór|sd1}} i {{LinkWzór|sd2}} można też zapisać przy innych układach wskaźników, wtedy zamiast tensora metrycznego jest delta Kroneckera ze wskaźnikiem u góry i u dołu, a jeden tensor prędkości (względem {{Formuła|<MATH>\lambda\;</MATH>}}) jest u dołu, zatem:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{T^{\mu}}_{\nu}=(\rho_0 c^2+p)U^{\mu}U_{\nu}-p {\delta^{\mu}}_{\nu}\;</math>|sd12}}
| 2 = {{CentrujWzór|<MATH>{T^{\mu}}_{\nu}=(\rho_0 c^2+p)U^{\mu}U_{\nu}+p{\delta^{\mu}}_{\nu}\;</math>|sd22}}
}}
A dla przestrzeni lokalnie płaskiej nasze równania {{LinkWzór|sd1}} i {{LinkWzór|sd2}} wyglądają, te równania są pisane dla szczególnej teorii względności, w którym one są spełnione, a w ogólnej teorii względności są spełnione tylko szczególnie, dla tych sygnatur kolejno, tak:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)U^{\mu}U^{\nu}-p \eta^{\mu\nu}\;</math>|sd11}}
| 2 = {{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)U^{\mu}U^{\nu}+p\eta^{\mu\nu}\;</math>|sd21}}
}}
=== Zasada zachowania energii-pędu a jego lokalność ===
Z wykładu o szczególnej teorii względności mamy, że zachodzi lokalna zasada zachowania energii-pędu {{LinkWzór|3.20|Lokalna zachowawczość tensora gęstości energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} z gęstością siły zewnętrznej równą zero:
{{CentrujWzór|<MATH>{T^{\mu\nu}}_{,\mu}=0\;</MATH>|1.49}}
Powyższy wzór jest spełniony dla punktów układu lokalnie płaskiego, w których zachodzą tożsamości {{LinkWzór|1.42}} i {{LinkWzór|1.43}}, czyli tensor metryczny jest w przybliżeniu tensorem Minkowskiego i jego pierwsze pochodne względem współrzędnych kontrawariantnych są równe zero, ale już o wyższych pochodnych tensora gęstości energii, lokalna definicja lokalnej płaskości nić nie mówi o tych pochodnych, zatem również mamy do czynienia z metryką prawie płaską, gdy mamy do czynienia z układami, w których punktach istnieje słabe pole grawitacyjne, jak np. dla metryki obowiązujących dla pól Newtonowskich.
Uogólnijmy ten wzór na dowolną metrykę, ogólnie nie tylko na lokalną płaską metrykę Minkowskiego, ale za tą metrykę obowiązującą wedle ogólnej teorii względności, którą poznamy i z którego będziemy wyznaczać elementy tensora metrycznego i przy pomocy, której będziemy tworzyć definicję kwadratu różniczki interwału czasoprzestrzennego wtedy wzór na zachowawczość tensora gęstości energii i pędu jest:
{{CentrujWzór|<MATH>{T^{\mu\nu}}_{;\mu}=0\;</MATH>|1.50}}
Powyższe równanie określa zasadę zachowania energii-pędu dla dowolnej przestrzeni zakrzywionej. Gdy siły zewnętrze są nierówne zero, to wtedy z definicji {{Formuła|<MATH>\gamma</MATH>}}, tzn.: {{LinkWzór|hd11|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} mamy w szczególnej teorii względności:
{{CentrujWzór|<MATH>{{\gamma}\over{c}}{T^{\mu\nu}}_{,\mu}={{dK^{\mu}_z}\over{dV}}\;</MATH>|ccv1}}
Widzimy, że wzór {{LinkWzór|ccv1}} przechodzi {{LinkWzór|1.49}}, gdy gęstość tensora siły zewnętrzne jest równa zero. W przestrzeni zakrzywionej równość {{LinkWzór|ccv1}} przechodzi w:
{{CentrujWzór|<MATH>{{\gamma}\over{c}}\sqrt{-g}{T^{\mu\nu}}_{;\mu}={{dK^{\mu}_z}\over{dV}}\;</MATH>|ccv}}
Widzimy, że wzór {{LinkWzór|ccv}} przechodzi {{LinkWzór|1.50}}, gdy gęstość tensora siły zewnętrzne jest równa zero.
== Równania powiązane tensora Einsteina z tensorem gęstości energii-pędu ==
=== Równania pola Einsteina ===
Tutaj przedstawmy równania Einsteina bez stałej kosmologicznej, które można zapisać dla przyciągania i odpychania grawitacyjnego, słuszne dla obu sygnatur, kolejno w postaci:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>G^{\alpha\beta}=\kappa T^{\alpha\beta}\;</MaTh>|1.51|Obramuj}}
| 2 = {{CentrujWzór|<MATH>G^{\alpha\beta}=-\kappa T^{\alpha\beta}\;</MaTh>|1.51a|Obramuj}}
}}
Gdy uwzględnimy inne pola, niż grawitacyjne, a także inne siły, to należy zastąpić w {{LinkWzór|1.51}} i {{LinkWzór|1.51a}} według schematu:
{{CentrujWzór|<MATH>T^{\mu\nu}\rightarrow T^{\mu\nu}+T^{\mu\nu}_z\;</MATH>|1.51b}}
W równaniu {{LinkWzór|1.51b}} mamy tensor {{Formuła|<MATH>T^{\mu\nu}\;</MATH>}}, którym jest {{LinkWzór|1.48}} (sygnatura dodatnia) lub {{LinkWzór|1.48a}} (sygnatura ujemna), albo gdy zamiast {{Formuła|<MATH>s\;</MATH>}} jest {{Formuła|<MATH>\lambda\;</MATH>}}, to wtedy jest on: {{LinkWzór|sd12}} (sygnatura dodatnia) lub {{LinkWzór|sd22}} (sygnatura ujemna). Również mamy tensor {{Formuła|<MATH>T^{\mu\nu}_z\;</MATH>}}, który jest tensorem np. od pola elektromagnetycznego, czy też od innego, a także w nim muszą być uwzględnione wszystkie siły zewnętrzne.
Dla równania {{LinkWzór|1.51}} dla przyciągania grawitacyjnego (równania dla odpychania grawitacyjnego w każdym etapie tu przeprowadzonym otrzymujemy z równania dla jej wersji przyciągającej poprzez podstawienie: {{Formuła|<MATH>\kappa\rightarrow -\kappa\;</MATH>}}) zastosujemy definicję tensora Einsteina, to równanie grawitacji na podstawie {{LinkWzór|1.37}} zapisujemy w postaci pełnej:
{{CentrujWzór|<MAth>R^{\alpha\beta}-{{1}\over{2}}g^{\alpha\beta}R=\kappa T^{\alpha\beta}\;</math>|1.52}}
Widzimy, że tensor Einsteina (lewa strona równania Einsteina {{LinkWzór|1.52}}) jest zależna od dwuwskaźnikowego tensora krzywizny oraz od skalaru krzywizny. W powyższym wzorze tensor Einsteina jest w proporcjonalny do tensora gęstości energii.
Przekształcając równanie Einsteina {{LinkWzór|1.52}} tak by otrzymać jego odwrotną postać, gdy tensor czegoś w rodzaju równania Einsteina omawianego wcześniej, czyli:
{{CentrujWzór|<MATH>T^{\alpha\beta}-{{1}\over{2}}g^{\alpha\beta}T</MATH>}}
Z równań Einsteina można udowodnić, że przechodzi on do postaci, które poniżej podamy ale bardzo podobnych do oryginalnych równań Einsteina {{LinkWzór|1.52}}, gdy wszystkie tensory w równaniu Einsteina przedstawimy jako kowariantno-kontrawariantnego tensora i dokonując sumować po tych samych wskaźnikach górno-dolnych i po tych czynnościach dostajemy skalary odpowiednich wielkości, tzn. skalaru krzywizny i skalaru tensora gęstości napięć-energii, dzięki których możemy dokonać dalszych operacji:
{{CentrujWzór|<maTH>R-{{1}\over{2}}4R=\kappa T\Rightarrow -R=\kappa T\;</math>|1.53}}
Dokonując pewnych przekształceń pewnych wyrażeń w {{LinkWzór|1.53}}, wtedy wiemy po tych dysputach, że skalar krzywizny ma się jako:
{{CentrujWzór|<MATh>R=-\kappa T\;</math>|1.54}}
Widzimy względem ostatniego wzoru, że skalar krzywizny jest proporcjonalny do skalaru tensora gęstości napięć-energii.
Wzór {{LinkWzór|1.54}} na skalar krzywizny podstawiamy do równania Einsteina {{LinkWzór|1.51}} za skalar krzywizny (za R), wtedy mamy:
{{CentrujWzór|<MATH>{R^{\mu}}_{\nu}+{{1}\over{2}}{\delta^{\mu}}_{\nu}\kappa T=\kappa {T^{\mu}}_{\nu}\;</math>|1.55}}
Następnie możemy przenieść pewne wyrazy nie będące tensorem krzywizny na prawą stronę, a więc równanie tensorowe Einsteina przestawia się:
{{CentrujWzór|<math>{R^{\mu}}_{\nu}=\kappa({T^{\mu}}_{\nu}-{{1}\over{2}}{\delta^{\mu}}_{\nu}T)\;</math>|1.56}}
Równanie pola {{LinkWzór|1.57}} względem wcześniejszych obliczeń jest równoważne równaniu {{LinkWzór|1.51}}, a równanie tensorowe dla odpychania grawitacyjnego {{LinkWzór|1.57r}} otrzymujemy z jej wersji, ale przyciągającej, zastępując w {{LinkWzór|1.57}} przez proste wspomniane zastąpienie, wtedy otrzymujemy drugi wzór niżej, a ten wzór jest równoważny równaniu {{LinkWzór|1.51a}}, w takim razie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>R_{\mu\nu}=\kappa(T_{\mu\nu}-{{1}\over{2}}g_{\mu\nu}T)\;</math>|1.57}}
| 2 = {{CentrujWzór|<MATH>R_{\mu\nu}=-\kappa(T_{\mu\nu}-{{1}\over{2}}g_{\mu\nu}T)\;</math>|1.57r}}
}}
Równanie Einsteina wyjściowe, tzn.: {{LinkWzór|1.57}}, jest słuszne dla obu sygnatur, podobnie jest z równaniem {{LinkWzór|1.57r}}, które wyprowadziliśmy z ich wersji, ale wejściowych.
=== Równania pola Einsteina z uwzględnieniem stałej kosmologicznej ===
Przedstawmy równania pola Einsteina z uwzględnieniem stałej kosmologicznej, czyli musimy uwzględnić rozszerzony tensor Einsteina w postaci {{LinkWzór|1.40}}, a więc równanie Einsteina {{LinkWzór|1.51}} {{LinkWzór|1.51a}} z jego uwzględnieniem o dodatkowy wyraz są dla przyciągania i odpychania grawitacyjnego przedstawione kolejno:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<math>O^{\alpha\beta}=\kappa T^{\mu\nu}\;\;</MATH>|1.58}}
| 2 = {{CentrujWzór|<math>O^{\alpha\beta}=-\kappa T^{\mu\nu}\;\;</MATH>|1.58GG}}
}}
Podstawiając za O{{Sup|αβ}} definicję tego tensora wedle {{LinkWzór|1.40}}, czyli z uwzględnieniem stałej kosmologicznej Λ, wtedy dostajemy równanie grawitacji Einsteina dla obu rodzajów oddziaływania grawitacyjnego kolejno:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>G^{\alpha\beta}+\Lambda g^{\alpha\beta}=\kappa T^{\alpha\beta}\;</MATH>|1.59}}
| 2 = {{CentrujWzór|<MATH>G^{\alpha\beta}+\Lambda g^{\alpha\beta}=-\kappa T^{\alpha\beta}\;</MATH>|1.59ww}}
}}
Równanie {{LinkWzór|1.59}} dla oddziaływania grawitacyjnego przyciągającego (dla odpychania grawitacyjnego w każdym etapie tu przeprowadzonym otrzymujemy z równania z jej wersji, ale dla oddziaływania przyciągającego, poprzez podstawienie: {{Formuła|<MATH>\kappa\rightarrow -\kappa\;</MATH>}}) można zapisać w postaci bezwskaźnikowej bez uwzględnienia z jakimi tensorami mamy do czynienia:
{{CentrujWzór|<maTh>\mathbf{G}+\mathbf{g}\Lambda=\kappa\mathbf{T}\;\;</MATH>|1.60}}
* gdzie {{Formuła|<MaTH>\mathbf{G}\;</MATH>}} jest tensorem Einsteina i ona jest zdefiniowane wedle {{LinkWzór|1.37}}.
Policzmy ślady w równaniu tensora Einsteina {{LinkWzór|1.60}} względem niemych tych samych wskaźników górno-dolnych do wyznaczenia ich jako skalarów tychże wielkości, czyli tensor Einsteina przedstawimy w postaci kowariantno-kontrawariantnego tensora {{LinkWzór|1.59}}:
{{CentrujWzór|<MATH>G=R-{{1}\over{2}}4 R\Rightarrow G=-R\;</MATH>|1.61}}
Widzimy, że skalar tensora Einsteina jest równa skalarowi krzywizny z dokładnością do minusa.
Uwzględniając definicję rozszerzonego tensora Einsteina w równaniu Einsteina {{LinkWzór|1.59}}, gdy w ogólności stała kosmologiczna jest nie równa zero, zatem licząc ich ślady, wtedy mamy:
{{CentrujWzór|<MATH>G+4\Lambda=\kappa T\;</MATH>|1.62}}
Biorąc policzoną wartość skalaru G {{LinkWzór|1.61}} podstawiamy do równania skalarnego {{LinkWzór|1.62}}, wtedy dostajemy równość:
{{CentrujWzór|<MATH>-R+4\Lambda=\kappa T\Rightarrow R=4\Lambda-\kappa T\;</MATH>|1.63}}
Widzimy, że skalar krzywizny zależy od stałej kosmologicznej i skalaru tensora gęstości energii, stąd mamy czemu jest równy skalar Ricciego, poniżej mamy równania Einsteina w jego pełnej postaci z uwzględnieniem stałej kosmologicznej zapisując je w postaci bezwskaźnikowej:
{{CentrujWzór|<MATH>\mathbf{R}-{{1}\over{2}}\mathbf{g}R+\Lambda\mathbf{g}=\kappa\mathbf{T}\;</MATH>|1.64}}
Wszystkie wyrazy po lewej stronie przenosimy na prawą stronę równania {{LinkWzór|1.64}} oprócz tensora krzywizny, wtedy dostajemy po przekształceniu:
{{CentrujWzór|<MATH>\mathbf{R}=\kappa\mathbf{T}+{{1}\over{2}}\mathbf{g}R-\Lambda\mathbf{g}\;</MATH>|1.65}}
Następnym naszym krokiem jest podstawienie za skalar krzywizny Ricciego, w równaniu tensorowym {{LinkWzór|1.65}} wyrażenia policzonego w punkcie {{LinkWzór|1.63}}, wtedy po dokonanych operacjach tuż po, dostajemy:
{{CentrujWzór|<MATH>\mathbf{R}=\kappa\mathbf{T}+{{1}\over{2}}\mathbf{g}(4\Lambda-\kappa T)-\Lambda\mathbf{g}\;</MATH>|1.66}}
Po krótkich przekształceniach i redukcji pewnych wyrazów w {{LinkWzór|1.66}}, otrzymujemy że tensor dwuwskaźnikowy krzywizny jest równy pewnemu wyrażeniu, bardzo podobnego do pierwotnego równania Einsteina {{LinkWzór|1.64}} z uwzględnieniem stałej kosmologicznej.
{{CentrujWzór|<MaTH>\mathbf{R}=\kappa(\mathbf{T}-{{1}\over{2}}\mathbf{g}T)+\Lambda\mathbf{g}\;</MATH>|1.67}}
Równanie pola {{LinkWzór|1.68}} względem wcześniejszych obliczeń jest równoważne równaniu {{LinkWzór|1.59}}, a równanie tensorowe dla odpychania grawitacyjnego {{LinkWzór|1.68r}} otrzymujemy z jej wersji, ale dla oddziaływania przyciągającego, zastępując w {{LinkWzór|1.68}} przez proste wspomniane zastąpienie, wtedy otrzymujemy drugi wzór niżej, a ten wzór jest równoważny równaniu {{LinkWzór|1.59ww}}, w takim razie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>R_{\alpha\beta}=\kappa(T_{\alpha\beta}-{{1}\over{2}}g_{\alpha\beta}T)+g_{\alpha\beta}\Lambda\;</MATH>|1.68}}
| 2 = {{CentrujWzór|<MATH>R_{\alpha\beta}=-\kappa(T_{\alpha\beta}-{{1}\over{2}}g_{\alpha\beta}T)+g_{\alpha\beta}\Lambda\;</MATH>|1.68r}}
}}
Równanie Einsteina wyjściowe, tzn.: {{LinkWzór|1.68}}, jest słuszne dla obu sygnatur, podobnie jest z równaniem {{LinkWzór|1.68r}}, które wyprowadziliśmy z ich wersji, ale wejściowych.
== Zachowawczość energii, a równania grawitacji Einsteina ==
Korzystając z równań grawitacji Einsteina {{LinkWzór|1.58}}, to równania są tak sformułowane, by była spełniona zasada energii, tzn. jeśli lewa strona tegoż równania, którego pochodna tensorowa jest równe zero według {{LinkWzór|1.41}}, to musi być spełniona zasada zachowania energii i pędu, tzn. dokonując różniczkowania tensorowego obu stron naszego równania, otrzymujemy:
{{CentrujWzór|<MATH>{O^{\alpha\beta}}_{;\beta}=\kappa {T^{\alpha\beta}}_{;\beta}\Rightarrow {T^{\alpha\beta}}_{;\beta}=0\;</MATH>|1.69}}
Z obliczeń {{LinkWzór|1.69}} wynika równanie {{LinkWzór|1.50}}, czyli z ogólnej teorii względności wynika zasada zachowania energii i pędu.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
78xqchqfu0kxfjmx02peogrtp4rlxbn
Mechanika kwantowa/Wprowadzenie do interpretacji fizycznych operatorów
0
15012
558842
494130
2026-10-07T12:00:45Z
Persino
2851
558842
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
== Zasada superpozycji stanów ==
Naszym punktem wyjścia będzie równanie własne operatora {{Formuła|<MATH>\hat{B}\;</MATH>}}, który przedstawiamy wedle przepisu:
{{CentrujWzór|<MATH>\hat{B}\psi_i=b_i\psi_i\;\;</MATH>|22.1}}
Rozwiązaniem tego równania są wektory własne ortogonalne do siebie do delty Diraca lub Kroneckera.
Ze względu na zupełność bazy, dowolny stan funkcji {{Formuła|<MATH>\phi\;</MATH>}}, można przedstawić jak kombinację wektorów bazy {{Formuła|<MATH>\psi_i\;</MATH>}}, które są rozwiązaniami równania własnego {{LinkWzór|22.1}} przy współczynnikach rozwinięcia {{Formuła|<MATH>c_i\;</math>}} wedle sposobu:
{{CentrujWzór|<MATH>\phi=\sum_ic_i\psi_i\;\;</MATH>|22.2}}
Jeśli funkcja stanu jest sumą dwóch wektorów prostopadłych do siebie, to funkcję własną tego stanu piszemy:
{{CentrujWzór|<MATH>\phi=c_1\psi_1+c_2\psi_2\;</MATH>|22.3}}
Gęstość prawdopodobieństwa znalezienia cząstki w danym punkcie jest opisany przez kwadrat modułu funkcji stanu {{LinkWzór|22.3}}:
{{CentrujWzór|<MATH>|\phi|^2=\phi^*\phi=c_1^2|\psi_1|^2+c_2^2|\psi_2|^2+c_1c_2(\psi_1^*\psi_2+\psi_1\psi_2^*)\;</MATH>|22.4}}
W równaniu {{LinkWzór|22.4}} występuje człon interferencyjny, tzn.
{{CentrujWzór|<MATH>c_1c_2(\psi_1^*\psi_2+\psi_1\psi_2^*)\;</MATH>|22.5}}
który nijak nie ma się do doświadczenia.
Np. jeśli detektor, który obserwuje z gęstością prawdopodobieństwa {{Formuła|<MATH>|\psi_1|^2\;</MATH>}}, lub {{Formuła|<MATH>|\psi_2|^2\;</MATH>}}, i dodatkowo mamy dużo fotonów, i jeśli pierwszy detektor wykrył {{Formuła|<MATH>n_1\;</MATH>}} fotonów z pierwszym prawdopodobieństwem w szczelinie 1, a drugi detektor {{Formuła|<MATH>n_2\;</MATH>}} w drugiej szczelinie z drugim prawdopodobieństwem, to gęstość znalezienia fotonu jest równa wyrażeniu z teorii prawdopodobieństwa:
{{CentrujWzór|<MATH>{{n_1}\over{n_1+n_2}}|\psi_1|^2+{{n_2}\over{n_1+n_2}}|\psi_2|^2\;</MATH>|22.6}}
Widzimy, na podstawie naszych rozważań, że w doświadczeniu układ wybiera pewne funkcje będące wektorami bazy, które są rozwiązaniami równania własnego {{LinkWzór|22.1}}, a więc też on wybiera wartości własne odpowiadające tym ściśle określonym wektorom bazy. Tzn. Jeśli w wyniku doświadczenia została wybrana funkcja własna {{Formuła|<math>\psi_i\;</math>}}, to zmierzyliśmy obserwable o wartości {{Formuła|<MATH>b_i\;</MATH>}}, czyli ta funkcja własna odpowiada temu wektorowi ściśle określonemu.
== Zespoły czyste i mieszane ==
Rozważmy dwie szczeliny, przez który mogą przechodzić fotony, to takim stanom, należy przyporządkować funkcje:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\left({{n_1}\over{n_1+n_2}}\right)^{1\over 2}\psi_1</MATH>|22.7}}
| 2 = {{CentrujWzór|<MATH>\left({{n_2}\over{n_1+n_2}}\right)^{1\over 2}\psi_2</MATH>|22.8}}
}}
Gęstość uderzenia cząstki w detektor jest równa kwadratowi modułu, który w tym obiekcie funkcja podmodułowa jest sumą funkcji {{LinkWzór|22.7}} i {{LinkWzór|22.8}} wyrażona przez:
{{CentrujWzór|<MATH>|\psi|^2=\left|\left({{n_1}\over{n_1+n_2}}\right)^{1\over 2}\psi_1+\left({{n_2}\over{n_1+n_2}}\right)^{1\over 2}\psi_2\right|^2</MATH>|22.9}}
Gęstości prawdopodobieństwa wykrycia cząstki w przeciwieństwie do wzoru {{LinkWzór|22.9}} jest to gęstość zaobserwowania fotonu przez detektor jest napisana w sposób:
{{CentrujWzór|<MATH>\left|\left({{n_1}\over{n_1+n_2}}\right)^{1\over 2}\psi_1\right|^2+\left|\left({{n_2}\over{n_1+n_2}}\right)^{1\over 2}\psi_2\right|^2</MATH>|22.10}}
Pierwszy wzór dopuszcza superpozycję a drugi nie. Ale jak wiadomo z doświadczenia, drugi wzór realizuje doświadczenie, czyli {{LinkWzór|22.10}}, a nie {{LinkWzór|22.9}}.
Jeśli mamy funkcje własne {{Formuła|<MATH>f_1,f_2,\ldots,f_n\;</MATH>}}, które są rozwiązaniami określonego równania własnego i które są niezależnymi funkcjami bazy n-wymiarowej, to można dokonać superpozycji tych stanów ze współczynnikami rozwinięcia {{Formuła|<MaTH>c_i\;</math>}}:
{{CentrujWzór|<MATH>f=\sum_ic_i f_i\;</MATH>|22.11}}
A więc gęstość znalezienia cząstki, uderzenia elektronu w dany punkt jest równa kwadratowi modułu z funkcji własnej będących kombinacją n-wymiarową bazy i jest przedstawiona wzorem:
{{CentrujWzór|<MATH>|f|^2=|\sum_ic_if_i|^2\;</MATH>|22.12}}
A prawdopodobieństwo wykrycia przez detektor redukuje się do gęstości prawdopodobieństwa {{Formuła|<MATH>|f_i|^2\;</MATH>}} jako wyboru jednej funkcji z bazy {{Formuła|<MATH>f_i</MATH>}}.
Funkcje {{LinkWzór|22.7}} i {{LinkWzór|22.8}}, czy też {{LinkWzór|22.10}}, opsiują '''stany mieszane''' (gdzie występują gęstości prawdopodobieństwa), a {{LinkWzór|22.9}} i {{LinkWzór|22.11}} opisują '''stany czyste''' (gdzie występują aplitudy).
== Obrazy według Schrödingera i Heisenberga ==
Rozważmy równanie zależne od czasu równanie Schrödingera, która wprowadza zależność od czasu funkcji falowej, który jest rozwiązaniem równania własnego {{LinkWzór|10.1|Postulat_czwarty_mechaniki_kwantowej}}, gdy mamy przedstawienie funkcji falowej rozwiązania niezależnego od czasu {{LinkWzór|7.121|Postulat_drugi_mechaniki_kwantowej}} i te dwie funkcje można ze sobą połączyć używając operatora ewolucji {{LinkWzór|10.35|Postulat_czwarty_mechaniki_kwantowej}} a tą operację przedstawiamy przy pomocy wzoru {{LinkWzór|10.42|Postulat_czwarty_mechaniki_kwantowej}}, co tutaj przepiszemy w postaci:
{{CentrujWzór|<MATH>\psi(x,y,z,t)=e^{-{{i\hat{H}}\over{\hbar}}t}\phi(x,y,z)</MATH>|22.13}}
Lub odwrotną zależność do {{LinkWzór|22.13}}, gdy mamy funkcję {{Formuła|<math>\psi(x,y,z,t)\;</Math>}} (która jest rozwiązaniem równania falowego zależnego czasu), to będziemy mogli wyznaczyć funkcję niezależną od czasu {{Formuła|<math>\phi(x,y,z)\;</math>}} (która jest rozwiązaniem równania falowego niezależnego od czasu):
{{CentrujWzór|<MATH>\phi(x,y,z)=e^{{{i\hat{H}}\over{\hbar}}t}\psi(x,y,z,t)</MATH>|22.14}}
Wyznaczmy elementy macierzowe operatora {{Formuła|<MATH>A^{(S)}\;</MATH>}} Schrödingera względem funkcji falowych zależnych od czasu przedstawionym wzorem {{LinkWzór|22.13}}:
{{CentrujWzór|<MATH>A^{(S)}_{mm}=\int \psi^{*}\hat{A}^{(S)}\psi_md\tau=\int \left(e^{-{{i\hat{H}}\over{\hbar}}t}\phi_m\right)^{*}\hat{A}^{(S)}e^{-{{i\hat{H}}\over{\hbar}}t}\phi_md\tau=
\int \phi^{*}_m e^{{{i\hat{H}}\over{\hbar}}t}\hat{A}^{(S)}e^{-{{i\hat{H}}\over{\hbar}}t}\phi_md\tau=\int\phi^{*}_m\hat{A}^{(H)}\phi_md\tau</MATH>|22.15}}
* gdzie: {{Formuła|<MATH>d\tau=dxdydz</MATH>}}.
W powyższym wzorze wprowadzono oznaczenie, które nazwiemy operatorem Heisenberga {{Formuła|<math>\hat{A}^{(H)}\;</MATH>}}:
{{CentrujWzór|<MATH>\hat{A}^{(H)}=e^{{{i\hat{H}}\over{\hbar}}t}\hat{A}^{(S)}e^{-{{i\hat{H}}\over{\hbar}}t}</MATH>|22.16}}
Według wzoru {{LinkWzór|22.15}} przedstawia on elementy macierzowe operatora {{Formuła|<math>\hat{A}^{(H)}\;</Math>}} względem funkcji własnych niezależnych od czasu równania własnego falowego niezależnego od czasu.
Wprowadzamy {{Formuła|<MATH>\psi(x,y,z,t)=\psi^{(S)}</MATH>}} oraz {{Formuła|<MATH>\phi(x,y,z)=\psi^{(H)}</MATH>}}, otrzymujemy:
{{CentrujWzór|<MATH>\psi^{(H)}=e^{{{i\hat{H}}\over{\hbar}}t}\psi^{(S)}</MATH>|22.17}}
Operator {{Formuła|<MATH>\hat{U}=e^{i{{\hat{H}}\over{\hbar}}t}</MATH>}} jest operatorem unitarnym, ponieważ zachodzi warunek dla tych operatorów w postaci {{LinkWzór|20.62|Wprowadzenie_do_teorii_wektorów_Diraca}}, a jego dowód jest:
{{CentrujWzór|<MATH>(e^{i{{\hat{H}}\over{\hbar}}t})^{+}e^{i{{\hat{H}}\over{\hbar}}t}=e^{-i{{\hat{H}}\over{\hbar}}t}e^{i{{\hat{H}}\over{\hbar}}t}=e^0=1</MATH>|22.18}}
Wyznaczmy element macierzowy operatora {{Formuła|<math>\hat{A}^{(H)}\;</MATH>}} względem funkcji falowych Heisenberga, które są rozwiązaniami równania falowego niezależnego od czasu, korzystając przy tym, że operator energii jest operatorem hermitowskim:
{{CentrujWzór|<MATH>A^{(H)}_{nm}=\langle m|\hat{A}^{(H)}|n\rangle=\int{\psi^{(H)}_m}^*\hat{A}^{(H)}\psi^{(H)}_n d\tau=\int{\psi^{(H)}_m}^{*}e^{{{i\hat{H}}\over{\hbar}}t}\hat{A}^{(S)}e^{-{{i\hat{H}}\over{\hbar}}t}\psi^{(H)}_nd\tau=\int(e^{-{{i\hat{H}}\over{\hbar}}t}\psi^{(H)}_m)^*\hat{A}^{(S)}e^{-i{{\hat{H}}\over{\hbar}}t}\psi^{(H)}_nd\tau</MATH>|22.19}}
Ponieważ zachodzi na podstawie {{LinkWzór|10.37|Postulat_czwarty_mechaniki_kwantowej}}, to można rozpisać działanie operatora ewolucji na funkcję falową Heisenberga:
{{CentrujWzór|<MATH>e^{-{{i\hat{H}}\over{\hbar}}t}\psi_k^{(H)}=\left(1+(-{{i}\over{\hbar}})\hat{H}+\left(-{{i}\over{\hbar}}\right)\hat{H}^2+...\right)\psi^{(H)}_n=
\left(1+(-{{i}\over{\hbar}})E_n+\left(-{{i}\over{\hbar}}\right)E^2_n+...\right)\psi^{(H)}_n=
e^{-{{iE_k}\over{\hbar}}t}\psi_k^{(H)}</MATH>|22.20}}
A zatem równanie {{LinkWzór|22.19}} na podstawie obliczeń {{LinkWzór|22.20}} przyjmuje postać:
{{CentrujWzór|<MATH>A^{(H)}_{mn}=e^{{{i(E_m-E_n)}\over{\hbar}}t}\int{\psi^{(H)}_m}^*\hat{A}^{(S)}\psi^{(H)}_n d\tau=e^{{{i(E_m-E_n)}\over{\hbar}}t}A^{(S)}_{mn}</MATH>|22.21|Obramuj}}
Widzimy, że elementy macierzowe operatora Heisenberga są wyrażone przy pomocy operatorów Schrödingera. Gdy zachodzi n=m, to te dwa operatory są sobie równe
== Operatory kreacji i anihilacji ==
=== Reprezentacja liczby obsadzeń-operatory kreacji i anihilacji fermionów ===
Zapiszmy przy pomocy ketu Diraca stan r-nieoddziaływujących fermionów w postaci wektora Diraca "ket", który opisuje r liczb kwantowych, które są zapisywane przez liczby kwantowe napisana w postaci symbolu ξ{{Sub|r}}{{Sup|(x{{Sup|r}})}}, co opisujemy wzorem:
{{CentrujWzór|<MATH>|\xi_1^{(x_1)}\xi_2^{(x_2)}\ldots\xi_r^{(x_r)}\rangle\;</MATH>|22.22}}
* gdzie dolny wskaźnik oznacza numer cząstki, a górny oznacza stan w jakim dana cząstka się znajduje. Np. dla dwóch cząstek definicja tego stanu jest przedstawiana jest jako iloczyn dwóch stanów kwantowych osobnych fermionów, co opisujemy wzorem:
{{CentrujWzór|<MATH>|\xi^{(x_1)}\xi^{(x_2)}\rangle\equiv|\xi_1^{(x_1)}\rangle|\xi_2^{(x_2)}\rangle\;</MATH>|22.23}}
Układ dwóch fermionów dla którego funkcja falowa opisuje stan przez funkcję całkowicie antysymetryczną, tzn. przy zamianie dwóch cząstek pojawia się znak minus przed tą funkcją falową, zatem ten stan opisujemy przez funkcję falową:
{{CentrujWzór|<MATH>\hat{A}|\xi^{(x_1)}\xi^{(x_2)}\rangle={{1}\over{\sqrt{2}}}\left\{|\xi_1^{(x_1)}\rangle|\xi_2^{(x_2)}\rangle-|\xi_2^{(x_1)}\rangle|\xi_1^{(x_2)}\rangle\right\}\;</MATH>|22.24}}
Ustalając w pewien ustalony sposób kolejność stanów, dla wszystkich możliwych, możemy je ponumerować naturalnym wskaźnikiem {{Formuła|<MATH>i=1,2,3,\ldots\;</MATH>}}, i napisać je będzie można z definicji wprowadzając zamiast parametrów opisujących dany stan kwantowy wprowadzamy liczbę cząstek ν{{Sub|k}}znajdujący się w danym stanie kwantowym:
{{CentrujWzór|<MATH>\hat{A}|\xi_1^{(x_1)}\xi_2^{(x_2)}\ldots\xi_r^{(x_r)}\rangle\equiv|\nu_1\nu_2\nu_3\ldots\nu_s\ldots\rangle\;</MATH>|22.25}}
* gdzie {{Formuła|<MAtH>\hat{A}\;</MATH>}} jest to operator przekształcający stan ξ{{Sub|k}} w liczbę cząstek w stanie k z kolei.
==== Operator liczby obsadzeń fermionów na k-tej stanie ====
Określmy przez operator {{Formuła|<MATH>\hat{n}_k\;</MATH>}} liczby cząstek w danym stanie kwantowym o numerze k i działanie tego operatora na funkcję stanu fermionowego, które to przedstawiamy wedle sposobu poniżej. Widzimy, że podczas działania operatora liczby cząstek działający na stan k-ty, powoduje, że przed funkcją falową wyskakuje liczba cząstek znajdujących się w stanie k, co obrazujemy wzorem:
{{CentrujWzór|<MATH>\hat{n}_k|\nu_1\nu_2\ldots\nu_k\ldots\rangle\equiv \nu_k|\nu_1\nu_2\ldots\nu_k\ldots\rangle\;</MATH>|22.26}}
* gdzie ν{{Sub|k}} jest to liczba cząstek w stanie k z kolei.
Operatory liczby cząstek komutuje z tym samym operatorem liczby cząstek, których te dwa operatory działają na ten sam stan lub różne stany kwantowe fermionowe:
{{CentrujWzór|<MATH>[\hat{n}_k,\hat{n}_l]=0\;</MATH>|22.27}}
a oto dowód wzoru napisanego w punkcie {{LinkWzór|22.27}}, wykorzystujący przy tym wzór {{LinkWzór|22.26}}, co można zapisać w postaci:
{{CentrujWzór|<MATH>[\hat{n}_k,\hat{n}_l]|\nu_1\nu_2\ldots\nu_k\ldots\rangle=\hat{n}_k\hat{n}_l|\nu_1\nu_2\ldots\nu_k\ldots\rangle-\hat{n}_l\hat{n}_k|\nu_1\nu_2\ldots\nu_k\ldots\rangle=(\nu_k\nu_l-\nu_l\nu_k)|\nu_1\nu_2\ldots\nu_k\ldots\rangle=0\;</MATH>|22.28}}
Według obliczeń przeprowadzonych w punkcie {{LinkWzór|22.28}} wzór {{LinkWzór|22.27}} został udowodniony w sposób natychmiastowy.
==== Krótkie wprowadzenie do operatorów kreacji i i anihilacji ====
Podamy tutaj podstawowe własności dla operatorów kreacji i anihilacji fermionów i bozonów.
===== Fermiony =====
Wprowadźmy przy pomocy właściwości komutacyjnych nowe operatory {{Formuła|<MATH>\hat{a}_k^-\;</MATH>}} oraz sprzężone po hermitowsku operator {{Formuła|<MATH>\hat{a}_k^{+}\;</MATH>}} do operatora {{Formuła|<MATH>a_k^-\;</MATH>}}, gdzie operator {{Formuła|<MATH>\hat{a}_k^-\;</MATH>}} jest operatorem anihilacji na k-tym miejscu fermionu, a {{Formuła|<MATH>\hat{a}_k^{+}\;</MATH>}},jest operatorem kreacji na k-tym miejscu fermionu. Z powodów oczywistych możemy powiedzieć na podstawie powyższych rozważań:
{{CentrujWzór|<MATH>(\hat{a}_k^-)^{+}=\hat{a}_k^{+}\;</MATH>|22.29}}
Na pomocy definicji sprzężenia podwójnego po hermitowsku dochodzimy do wniosku, że operator {{Formuła|<MATH>\hat{a}_k^+\;</MATH>}} jest sprzężony po hermitowsku z operatorem {{Formuła|<MATH>\hat{a}_k^-\;</MATH>}}:
{{CentrujWzór|<MATH>(\hat{a}_k^{+})^{+}=\hat{a}_k^-;\;</MATH>|22.30}}
===== Bozony =====
Wprowadźmy przy pomocy właściwości komutacyjnych nowe operatory {{Formuła|<MATH>\hat{b}_k^-\;</MATH>}} oraz sprzężone po hermitowsku operator {{Formuła|<MATH>\hat{b}_k^{+}\;</MATH>}} do operatora {{Formuła|<MATH>b_k^-\;</MATH>}}, gdzie operator {{Formuła|<MATH>\hat{b}_k^-\;</MATH>}} jest operatorem anihilacji na k-tym miejscu fermionu, a {{Formuła|<MATH>\hat{b}_k^{+}\;</MATH>}}, jest operatorem kreacji na k-tym miejscu fermionu. Z powodów oczywistych możemy powiedzieć na podstawie powyższych rozważań:
{{CentrujWzór|<MATH>(\hat{b}_k^-)^{+}=\hat{b}_k^{+}\;</MATH>|22.29a}}
Na pomocy definicji sprzężenia podwójnego po hermitowsku dochodzimy do wniosku, że operator {{Formuła|<MATH>\hat{b}_k^+\;</MATH>}} jest sprzężony po hermitowsku z operatorem {{Formuła|<MATH>\hat{b}_k^-\;</MATH>}}:
{{CentrujWzór|<MATH>(\hat{b}_k^{+})^{+}=\hat{b}_k^-;\;</MATH>|22.30b}}
==== Działanie operatorów kreacji i anihilacji na dany stan fermionowy ====
Działanie operatora kreacji na stan fermionowy, otrzymujemy pewien stan, gdzie ν{{Sub|k}} przyjmują wartości takie jak zero lub jeden, które to w k-tym stanie zwiększa się liczba cząstek o jeden, tzn. jeśli nie było fermionu, to tam pojawia się fermion, a jeśli jest tam fermion, to działanie funkcji operatora kreacji daje nam wynik zerowy w rezultacie.
{{CentrujWzór|<MATH>\hat{a}_k^+|\nu_1\nu_2...\nu_k...\rangle=(-1)^p(1-\nu_{k})|\nu_1\nu_2...\nu_k+1..\rangle\;</MATH>|22.31}}
* gdzie wykładnik p występujący we wzorze {{LinkWzór|22.31}} określamy jako sumę liczby cząstek dla stanów o wskaźnikach mniejszych niż wskaźnik operatora kreacji.
{{CentrujWzór|<MATH>p=\sum_{s<k}n_{s}\;</MATH>|22.32}}
Działaniem operatora anihilacji na pewien stan fermionowy określamy wzorem poniżej. Widzimy, że operator anihilacji działający na k-ty stan fermionowy, to liczba cząstek w tym stanie zmniejsza się o jeden, tzn. jeśli tam była jakaś cząstka, to w tym stanie ona znika i pojawia się pustka. Jeśli tam nie było cząstki, to działanie operatora anihilacji powoduje zerowy wynik takiej operacji.
{{CentrujWzór|<MATH>\hat{a}_k^-|\nu_1\nu_2...\nu_k...\rangle=(-1)^p\nu_{k}|\nu_1\nu_2...\nu_k-1...\rangle\;</MATH>|22.33}}
Policzmy teraz działanie operatora opisanym wzorem {{Formuła|<MATH>\hat{a}_k^+\hat{a}_k^-\;</MATH>}} na pewien stan fermionowy, który na pewien stan kwantowy działamy operatorem kreacji na k-ty stan, stąd otrzymany wynik działamy operatorem kreacji, których to liczba k określa jednocześnie anihilację, a później kreację pewnej cząstki w stanie k-tej, wtedy na podstawie tego:
{{CentrujWzór|<MATH>\hat{a}_k^+\hat{a}_k^-|\nu_1\nu_2...\nu_k...\rangle=(-1)^p\nu_k\hat{a}_k^+|\nu_1\nu_2...\nu_k-1...\rangle=\nu_k[1-(\nu_k-1)]|\nu_1\nu_2...\nu_k\rangle=\nu_k|\nu_1\nu_2...\nu_k...\rangle\;</MATH>|22.34}}
W obliczeniach {{LinkWzór|22.34}} wykorzystaliśmy tożsamość, którą zapisujemy w postaci: {{Formuła|<MATH>\nu_k[1-(\nu_k-1)]=\nu_k\;</MATH>}}, co dowód przeprowadzamy wstawiając za n{{Sub|k}} liczbę zero albo jedynkę. Na sam koniec wyznaczmy działanie operatora {{Formuła|<MATH>\hat{a}_k^-\hat{a}_k^+\;</MATH>}}, tzn. najpierw działamy operatorem kreacji na dany stan fermionowy, a później działamy operatorem anihilacji na tak otrzymany wynik, co powiemy:
{{CentrujWzór|<MATH>\hat{a}_k^-\hat{a}_k^+|\nu_1\nu_2...\nu_k...\rangle=(-1)^p(1-\nu_k)\hat{a}_k|\nu_1\nu_2...\nu_k+1...\rangle=
(1-\nu_k)(\nu_k+1)|\nu_1\nu_2...\nu_k...\rangle=(1-\nu_k)|\nu_1\nu_2...\nu_k...\rangle\;</MATH>|22.35}}
Zatem na podstawie wzoru napisanego w punkcie {{LinkWzór|22.34}} {{LinkWzór|22.35}} możemy określić anty-komutację operatora {{Formuła|<MATH>\hat{a}_k^+\;</MATH>}} z operatorem {{Formuła|<MATH>\hat{a}_k^-\;</MATH>}}, w takim razie biorąc wyniki działania naszego operatora kreacji i anihilacji i odwrotnie, tzn. wynikające z wspominanych obliczeń:
{{CentrujWzór|<MATH>\{\hat{a}_k^+,\hat{a}_k^-\}|\nu_1\nu_2...\nu_k...\rangle=(\hat{a}_k^+\hat{a}_k^-+\hat{a}_k^-\hat{a}_k^+)|\nu_1\nu_2...\nu_k...\rangle=\nu_k|\nu_1\nu_2...\nu_k...\rangle+(1-\nu_k)|\nu_1\nu_2...\nu_k...\rangle=|\nu_1\nu_2...\nu_k...\rangle\;</MATH>|22.36}}
Widzimy, że na podstawie obliczeń wynikających z {{LinkWzór|22.36}} działanie składającego się z operatorów kreacji i anihilacji na stan fermionowy jest liczbie jeden pomnożonej przez stan fermionowy.
Następnym krokiem jest wyznaczenie podobnego działania {{Formuła|<MATH>\hat{a}^+_k\hat{a}^-_l\;</MATH>}}, ale na operatorach kreacji i anihilacji zakładając przy tym, że zachodzi k>l:
{{CentrujWzór|<MATH>\hat{a}_k^+\hat{a}_l^-|\nu_1\nu_2...\nu_k...\rangle=(-1)^{p_l}(-1)^{p_k-1}(1-\nu_k)\nu_l|\nu_1\nu_2...\nu_l-1...\nu_k+1...\rangle\;</MATH>|22.37}}
Naszym dalszym krokiem jest wyznaczenie działania operatorowego, który jest operatorem {{Formuła|<MATH>\hat{a}_l^-\hat{a}_k^+\;</MATH>}} dla k>l, zatem możemy napisać, że zachodzi tożsamość dla złożenia operatora anihilacji i kreacji:
{{CentrujWzór|<MATH>\hat{a}_l^-\hat{a}_k^+|\nu_1\nu_2...\nu_k...\rangle=(-1)^{p_l}(-1)^{p_k}(1-\nu_k)\nu_l|\nu_1\nu_2...\nu_l+1...\nu_k-1...\rangle\;</MATH>|22.38}}
Zatem możemy wyrazić operator, który jest antykomutatorem działający na dany stan fermionowy, których składnikami jest operator kreacji i anihilacji, dowód ten przeprowadzamy dla k>l, ale wynik jest słuszny, że względu na wszystkie k i l różne od siebie, bo możemy w antykomutorze zamienić miejscami oba te opisywane w tym komutatorze operatory, w takim razie otrzymujemy postać:
{{CentrujWzór|<MATH>\{\hat{a}_k^+,\hat{a}_l^-\}|\nu_1\nu_2...\nu_l...\nu_k...\rangle=\left(\hat{a}_k^+\hat{a}_l^-+\hat{a}_l\hat{a}_k^+\right)|\nu_1\nu_2...\nu_l...\nu_k...\rangle=
(-1)^{p_l}(-1)^{p_k-1}(1-\nu_k)\nu_l\cdot\;</MATH><BR><MATH>\cdot|\nu_1\nu_2...\nu_l+1...\nu_k-1...\rangle=(-1)^{p_l}(-1)^{p_k}(1-\nu_k)\nu_l|\nu_1\nu_2...\nu_l+1...\nu_k-1...\rangle=0|\nu_1\nu_2...\nu_l+1...\nu_k-1...\rangle\;</MATH>|22.39}}
Na podstawie przeprowadzonych obliczeń {{LinkWzór|22.36}} (dla k równego od l) i {{LinkWzór|22.39}} (dla k nierównego l) możemy napisać właściwość operatora kreeacji i anihilacji, który określamy wzorem:
{{CentrujWzór|<MATH>\left\{\hat{a}_k^+,\hat{a}_l^-\right\}=\delta_{kl}\;</MATH>|22.40}}
Następnym naszym obliczeniem jest wyznaczenie działania operatora {{Formuła|<MATH>\hat{a}_k^-\hat{a}_k^-\;</MATH>}}, że na k-tym miejscu możemy raz anihilować jedną cząstkę, jeśli tam znajdowała się cząstka, ale puste miejsce w takim razie po anihilacji fermionu nie da się z anihilować, ale gdy by tam nie znajdowała się cząstka (fermion), to w takim razie wynik takiego operatora na ten nasz stan fermionowy jest równy zero, w takim razie możemy napisać tożsamość:
{{CentrujWzór|<MATH>\{\hat{a}_k^-,\hat{a}_k^-\}=0\;</MATH>|22.41}}
Dalej wyznaczmy działanie operatora {{Formuła|<MATH>\hat{a}_k^-\hat{a}_l^-\;</MATH>}}, gdy zachodzi na pewno k>l, w takim przypadku działanie na wynik działania operatora anihilacji na stan l na funkcję stanu fermionowego jeszcze raz operatorem anihilacji działający tym razem na stan k określamy wzorem:
{{CentrujWzór|<MATH>\hat{a}_k^-\hat{a}_l^-|\nu_1\nu_2...\nu_l...\nu_k...\rangle=(-1)^{p_l}(-1)^{p_k-1}\nu_k\nu_l|\nu_1\nu_2...\nu_l-1...\nu_k-1...\rangle\;</MATH>|22.42}}
Jeśli w takim razie, gdy napiszemy działanie operatora {{Formuła|<MATH>\hat{a}_l^-\hat{a}_k^-\;</MATH>}}, gdy zachodzi k>l, możemy napisać tożsamość opisujący działanie operatora anihilacji na k-ty stan fermionowy, którego to wynik działamy znów operatorem anihilacji działający n l-ty stan kwantowy, w takim razie możemy napisać tożsamość matematyczną:
{{CentrujWzór|<MATH>\hat{a}_l^-\hat{a}_k^-|\nu_1\nu_2...\nu_l...\nu_k...\rangle=(-1)^{p_l}(-1)^{p_k}\nu_l\nu_k|\nu_1\nu_2...\nu_l-1...\nu_k-1...\rangle\;</MATH>|22.43}}
Na podstawie przeprowadzonych obliczeń w punkcie {{LinkWzór|22.43}} możemy napisać, że zachodzi tożsamość, która jest również słuszna dla k=l a także dla dowolnego k i l:
{{CentrujWzór|<MATH>\{\hat{a}_k,\hat{a}_l\}|\nu_1\nu_2...\nu_l...\nu_k...\rangle=(\hat{a}_k\hat{a}_l+\hat{a}_l\hat{a}_k)|\nu_1\nu_2...\nu_l...\nu_k...\rangle=\;</MATH><BR><MATH>=(-1)^{p_l}(-1)^{p_k+1}\nu_k\nu_l|\nu_1\nu_2...\nu_l-1...\nu_k-1...\rangle+(-1)^{p_l}(-1)^{p_k}\nu_l\nu_k|\nu_1\nu_2...\nu_l-1...\nu_k-1...\rangle=0\;</MATH>|22.44}}
Wedle przeprowadzonych wywodów {{LinkWzór|22.43}} i {{LinkWzór|22.44}} i z wywodu, gdy k≠l przeprowadzonego powyżej możemy napisać tożsamość przeprowadzoną na operatorach kreacji i anihilacji, w takim razie możemy powiedzieć dla dowolnego k i l zachodzi tożsamość poniżej. Ten dowód był przeprowadzany dla k>l lub k=l, ale jest on słuszny dla dowolnego k i l, co wynika symetryczności antykomutatora, ze względu na przestawienie tychże składników:
{{CentrujWzór|<MATH>\{\hat{a}_k^-,\hat{a}_l^-\}=0\;</MATH>|22.45}}
Następnym naszym obliczeniem jest wyznaczenie działania operatora {{Formuła|<MATH>\hat{a}^+_k\hat{a}^+_k\;</MATH>}}, jeśli tam znajdowało się na k-tym miejscu puste miejsce, to tam zostanie wykreowany fermion. Powtórna kreacja fermionu jest niemożliwa, stąd wynika działania kwadrat operatora a{{Sub|k}} jest równy zero. Zatem wynik działania antykomutatora określonego tuż poniżej jest równa tożsamościowo zeru.
{{CentrujWzór|<MATH>\{\hat{a}^+_k,\hat{a}^+_k\}=0\;</MATH>|22.46}}
Dalej wyznaczmy działanie operatora {{Formuła|<MATH>\hat{a}_k^+\hat{a}_l^+\;</MATH>}}, gdy zachodzi k>l, zatem możemy napisać tożsamość działania dwóch operatorów anihilacji na stan najpierw na l-ty stan i później na k-ty, które to działają na osobne stany kwantowe fermionowe, zatem wynik takiego działania jest okreslony wzorem:
{{CentrujWzór|<MATH>\hat{a}^+_k\hat{a}^+_l|\nu_1\nu_2...\nu_l...\nu_k...\rangle=(-1)^{p_l+1}(-1)^{p_k}(1-\nu_l)(1-\nu_k)|\nu_1\nu_2...\nu_l+1...\nu_k+1...\rangle\;</MATH>|22.47}}
Jeśli w takim razie, gdy napiszemy działanie operatora {{Formuła|<MATH>\hat{a}_l^+\hat{a}_k^+\;</MATH>}}, dla którego zachodzi k>l, w których na dany k-ty stan kwantowy działamy operatorem anihilacji, a później na ten uzyskany wynik działamy operatorem anihilacji na l-ty stan kwantowy.
{{CentrujWzór|<MATH>\hat{a}^+_l\hat{a}^+_k|\nu_1\nu_2...\nu_l...\nu_k...\rangle=(-1)^{p_l}(-1)^{p_k}(1-\nu_k)(1-\nu_l)|\nu_1\nu_2...\nu_l+1...\nu_k+1...\rangle\;</MATH>|22.48}}
Na podstawie przeprowadzonych obliczeń w punkcie {{LinkWzór|22.47}} oraz w punckie {{LinkWzór|22.48}} możemy napisać, że zachodzi tożsamość dla k>l, co również jest słuszne dla k=l wedle {{LinkWzór|22.45}}, stąd jest słuszne dla dowolnego k i l, co wynika z symetryczności po przestawieniu w naszym rozważanym antykomutatorze argumentów:
{{CentrujWzór|<MATH>\{\hat{a}^+_k,\hat{a}^+_l\}|\nu_1\nu_2...\nu_l...\nu_k...\rangle=(\hat{a}_k\hat{a}_l+\hat{a}_l\hat{a}_k)|\nu_1\nu_2...\nu_l...\nu_k...\rangle=\;</MATH><BR><MATH>=(-1)^{p_l+1}(-1)^{p_k}|\nu_1\nu_2...\nu_l+1...\nu_k+1...\rangle+(-1)^{p_l}(-1)^{p_k}|\nu_1\nu_2...\nu_l+1...\nu_k+1...\rangle=0\;</MATH>|22.49}}
Wedle przeprowadzonych wywodów {{LinkWzór|22.48}} i {{LinkWzór|22.49}} i z wywodu, gdy k≠l przeprowadzonego powyżej możemy napisać tożsamość przeprowadzoną na operatorach kreacji i anihilacji, w takim razie możemy powiedzieć dla dowolnego k i l:
{{CentrujWzór|<MATH>\{\hat{a}^+_k,\hat{a}^+_l\}=0\;</MATH>|22.50}}
==== Wyrażanie operatorów kreacji i anihilacji fermionów ====
Operatory {{Formuła|<MATH>\hat{a}_k^-\neq \hat{a}_k^{+}\;</MATH>}} nie są to operatorami hermitowskimi i nie mogą reprezentować żadnej mierzalnej wielkości. Natomiast odpowiednie iloczyny są już operatorami hermitowskimi, bo zachodzi tożsamość poniżej:
{{CentrujWzór|<MATH>(\hat{a}_k^{+}\hat{a}_k^-)^{+}=\hat{a}_k^{+}\hat{a}_k^-\;</MATH>|22.51}}
Wobec tego operator {{Formuła|<MATH>\hat{a}_k^{+}\hat{a}_k^-\;</MATH>}} posiada rzeczywiste wartości własne, i nietrudno je wyliczyć. A oto dowód własności {{LinkWzór|22.51}}:
{{CentrujWzór|<MATH>(\hat{a}^{+}_k\hat{a}_k^-)^2=\hat{a}_k^{+}\hat{a}_k^-\hat{a}_k^{+}\hat{a}_k^-=\hat{a}_k^{+}
(1-\hat{a}_k^{+}\hat{a}_k^-)\hat{a}_k^-=\hat{a}_k^{+}\hat{a}_k^--\hat{a}_k^{+}\hat{a}_k^{+}\hat{a}_k^-\hat{a}_k^-=\hat{a}_k^{+}\hat{a}_k^-\;</MATH>|22.52}}
Korzystaliśmy tu z właściwości antykomutatora {{LinkWzór|22.40}}, zatem otrzymaliśmy własność przy wykorzystaniu ostatnio wspomnianego komutatora.
Na podstawie wzoru {{LinkWzór|22.51}} operator {{Formuła|<MATH>\hat{a}_k^{+}\hat{a}_k^-\;</MATH>}}, ma wartości własne 0 i 1, a więc takie jak operator liczby cząstek <MATH>\hat{n}_k\;</MATH> dla fermionów, bo ten nasz opisywany operator jest operatorem rzutowym, ale dla porządku dziennego udowodnijmy, że on posiada takie wartości własne, a nie inne, korzystając z warunku udowodnionego {{LinkWzór|22.51}}. Napiszmy najpierw równanie własne operatora {{Formuła|<MATH>\hat{a}_k^{+}\hat{a}_k^-\;</MATH>}}, w takim przypadku możemy powiedzieć, że zachodzi równość poniżej:
{{CentrujWzór|<MATH>\hat{a}_k^{+}\hat{a}_k^-|v_i\rangle=\lambda|v_i\rangle\;</MATH>|22.53}}
Następnie podziałajmy następującym operatorem {{Formuła|<MATH>\hat{a}_k^{+}\hat{a}_k^-\;</MATH>}} lewostronnie obie strony równania {{LinkWzór|22.53}}, korzystając na podstawie tożsamości {{LinkWzór|22.53}} dla prawej jego strony, dostajemy równanie:
{{CentrujWzór|<MATH>(\hat{a}_k^{+}\hat{a}_k^-)^2|v_i\rangle=\lambda^2|v_i\rangle\;</MATH>|22.54}}
Idąc dalej przekształcając lewą stronę według tożsamości {{LinkWzór|22.51}}, dochodzimy więc do wniosku:
{{CentrujWzór|<MATH>\hat{a}_k^{+}\hat{a}_k^-|v_i\rangle=\lambda^2|v_i\rangle\;</MATH>|22.55}}
I ostatecznie, jeśli zastosujemy równanie własne {{LinkWzór|22.53}} do równania {{LinkWzór|22.55}} i zastosujemy dla lewej jego strony, dojdziemy więc do wniosku, że powinno zachodzić:
{{CentrujWzór|<MATH>\lambda|v_i\rangle=\lambda^2|v_i\rangle\;</MATH>|22.56}}
Przenosząc całą lewą stronę równania {{LinkWzór|22.56}} na jego prawą stronę i włączając wielkość {{Formuła|<MATH>|v_i\rangle\;</MATH>}} za nawias, dochodzimy do wniosku:
{{CentrujWzór|<MATH>0=(\lambda^2-\lambda)|v_i\rangle\;</MATH>|22.57}}
co jedynie jest spełnione dla wartości λ równej 0 lub 1.
Czyli operator {{Formuła|<MATH>\hat{a}_k^{+}\hat{a}_k^-\;</MATH>}} ma wartości własne takie jak {{Formuła|<MATH>\lambda=1\;</MATH>}} lub {{Formuła|<MATH>\lambda=0\;</MATH>}}, co zostało udowodnione.
Policzmy antykomutator operatora składający się z operatora {{Formuła|<mATH>\hat{a}_k^{+}\hat{a}_k^-\;</MATH>}} i operatora {{Formuła|<mATH>\hat{a}_l^{+}\hat{a}_l\;</MATH>}} tak że zachodzi {{Formuła|<Math>k\neq l\;</Math>}}, bo dla {{Formuła|<MATH>k=l\;</MATH>}} dowód jest trywialny i taki komutator jest równy zero, korzystając przy tym z własności operatorów kreacji i anihilacji wedle tożsamości {{LinkWzór|22.40}}, określający związek na operatorach kreacji i anihilacji, i związku opisanego na operatorach kreacji, czyli wzoru {{LinkWzór|22.50}}, zatem:
{{CentrujWzór|<MATH>[\hat{a}_k^{+}\hat{a}_k^-,\hat{a}_l^{+}\hat{a}_l^-]=\hat{a}_k^{+}\hat{a}_k^-\hat{a}_l^{+}\hat{a}_l^--\hat{a}_l^{+}\hat{a}_l^-\hat{a}_k^{+}\hat{a}_k^-=
\hat{a}_k^{+}\hat{a}_k^-\hat{a}_l^{+}\hat{a}_l^-+\hat{a}_l^{+}\hat{a}_k^{+}\hat{a}_l^-\hat{a}_k^-=\hat{a}_k^{+}\hat{a}_k^-\hat{a}_l^{+}\hat{a}_l^--\hat{a}_k^{+}\hat{a}_l^{+}\hat{a}_l^-\hat{a}_k^-=
\hat{a}_k^{+}\hat{a}_k^-\hat{a}_l^{+}\hat{a}_l^-\;</MATH><BR><MATH>+\hat{a}_k^{+}\hat{a}_l^{+}\hat{a}_k^-\hat{a}_l^-=\hat{a}_k^{+}\hat{a}_k^-\hat{a}_l^{+}\hat{a}_l^--\hat{a}_k^{+}\hat{a}_k^-\hat{a}_l^{+}\hat{a}_l^-=0\;</MATH>|22.58}}
Wobec obliczonego związku {{LinkWzór|22.58}} i związku na operatorach liczby cząstek na k-tym i l-tym stanie {{LinkWzór|22.27}}, operator{{Formuła| <MATH>\hat{a}_k^{+}\hat{a}_k^-\;</MATH>}} ma wartości własne zero i jeden dla fermionów, zatem możemy tożsamościowo zdefiniować równoważność operatora {{Formuła|<mATH>\hat{a}_k^{+}\hat{a}_k^-\;</MATH>}} z operatorem liczby fermionów w danym stanie {{Formuła|<MatH>\nu_k\;</MATH>}}, bo w danym stanie najwyżej może się znajdować 0 albo 1 fermion, czyli powinna na pewno zachodzić tożsamość operatorowa:
{{CentrujWzór|<MATH>\hat{n}_k=\hat{a}_k^{+}\hat{a}_k^-\;</MATH>|22.59}}
==== Przykłady stanów fermionowych i działania na te stany operatorów kreacji i anihilacji ====
Wprowadźmy fizyczny stan próżni, tzn. stanu opisywanego przez funkcję, których liczba cząstek we wszystkich stanach jest równa zero, w takim przypadku operator stanu fermionowego jest operatorem zerowym:
{{CentrujWzór|<MATH>|\nu_1=0,\nu_2=0,\ldots,\nu_s=0,\ldots\rangle\equiv|0\rangle\;</MATH>|22.60}}
Z definicji tego stanu otrzymujemy od razu, że operator liczby cząstek działający na k-ty stan kwantowy, daje nam liczbę cząstek równej zero, co zapisujemy wzorem {{Formuła|<MATH>\hat{n}_k|0\rangle=0\;</MATH>}}, bo w stanie k z kolei nie ma żadnych cząstek.
Korzystając z definicji {{Formuła|<MATH>\hat{n}_k\;</MATH>}} zdefiniowanego w punkcie {{LinkWzór|22.59}}, dochodzimy do wniosku:
{{CentrujWzór|<MATH>\hat{a}_k^{+}\hat{a}_k^-|0\rangle=0\;</MATH>|22.61}}
Ponieważ w stanie k z kolei nie ma żadnych cząstek i nie ma co operatorem anihilacji {{Formuła|<MATH>\hat{a}_k\;</MATH>}} robić (usunąć daną cząstkę z tego stanu), więc nic dziwnego, że w tym stanie, że działanie operatora liczby cząstek opisywanego wedle równania {{LinkWzór|22.61}} daje nam końcowy wynik równy zero.
Pomnóżmy lewostronnie przez {{Formuła|<MATH>\langle 0|\;</MATH>}} równanie {{LinkWzór|22.61}}, dostajemy tożsamość:
{{CentrujWzór|<MATH>\langle 0|\hat{a}^{+}_k\hat{a}_k^-|0\rangle=0\;</MATH>|22.62}}
Obierzmy definicję "ket"-a {{Formuła|<MATH>|A\rangle\;</math>}} wedle sposobu: {{Formuła|<MATH>\hat{a}_k|0\rangle=|A\rangle\;</MATH>}}, to mamy {{Formuła|<MATH>\langle A|A\rangle=0\;</MATH>}}, a zatem z definicji iloczynu skalarnego dostajemy odrazu, że zachodzi A=0.
Policzmy teraz dla przykładu wyrażenie, korzystając przy tym z własności na operatorach kreacji i anihilacji {{LinkWzór|22.40}}, a także korzystając z definicji operatora liczby cząstek poprzez operatory kreacji i anihilacji przeprowadzonych wedle punktu {{LinkWzór|22.58}}:
{{CentrujWzór|<MATH>\hat{n}_l\hat{a}^{+}_k|0\rangle=\hat{a}_l^{+}\hat{a}_l\hat{a}_k^{+}|0\rangle=\delta_{kl}\hat{a}^{+}_l|0\rangle-\hat{a}^{+}_l\hat{a}^{+}_k\hat{a}_k|0\rangle=\delta_{kl}\hat{a}_k^{+}|0\rangle\;</MATH>|22.63}}
bo w trzeciej równości w drugim wyrazie operator anhilacji nie mam co anihilować w stanie k z kolei, a więc gdy zachodzi k≠1, to możemy powiedzieć:
{{CentrujWzór|<MATH>\hat{n}_l\hat{a}_k^{+}|0\rangle=0\;</MATH>|22.64}}
oraz gdy {{Formuła|<MATH>k=l\;</MATH>}}, to dochodzimy do wniosku:
{{CentrujWzór|<MATH>\hat{n}_k\hat{a}_k^{+}|0\rangle=1\cdot \hat{a}_k^{+}|0\rangle\;</MATH>|22.65}}
Wyznaczmy wyrażenie w którym w k-tym stanie występuje cząstka i działamy operatorem anihilacji na l-ty stan:
{{CentrujWzór|<MATH>\hat{a}_l^-|0,..,1_k,0,..\rangle=\hat{a}_l^-\hat{a}_k^{+}|0\rangle=(\delta_{kl}-\hat{a}_k^{+}\hat{a}_l)|0\rangle=\delta_{kl}|0\rangle\;</MATH>|22.66}}
Zbierając razem interesujące nas wyniki z punktu {{LinkWzór|22.66}}, możemy napisać:
{{CentrujWzór|<MATH>\hat{a}_k^-|0\rangle=0\;</MATH>|22.67}}
bo zero, iż kreator anihilacji nie ma co anihilować w stanie k z kolei. A także równanie, na którym na stan fermionowym, którym na k-tym poziomie jest cząstka i działamy operatorem anihilacji na ten stan i wyniku czego po anihilacji tam cząstki powstaje w ogólności stan próżni:
{{CentrujWzór|<MATH>\hat{a}_k^-|0,\ldots,1_k,0,\ldots\rangle=|0\rangle\;</MATH>|22.68}}
Jeśli podziałamy operatorem kreacji na k-ty stan kwantowy, w której znajduje się jakiś fermion, to wyniku działania takiego operatora na ten stan powoduje działanie nie wykonalne, a więc wynik działania takiego operatora daje nam liczbę zero.
{{CentrujWzór|<MATH>\hat{a}_k^{+}|0\rangle=|0,\ldots,1_k,0,\ldots\rangle\;</MATH>|22.69}}
Cząstkę można kreować w stanie k ze stanu próżni w stan, której na k tym poziomie fermionowym będzie znajdowała się cząstka po tej operacji, i jeszcze raz działając na ten otrzymany tak stan tym samym operatorem kreacji otrzymamy wynik zerowym, bo nie można kreować na tym samym miejscu dwóch cząstek, które są fermionami.
Połóżmy zatem:
{{CentrujWzór|<MATH>\hat{a}_k^{+}\hat{a}^{+}_k|0\rangle=0\;</MATH>|22.70}}
Jeśli działamy operatorem kreacji na stan k{{Sub|r}}, a później na stan k{{Sub|r-1}}, i na samym ostatku aż do operatora kreacji o numerze k{{Sub|1}}, co działanie na stan próżni r- operatorów zapisujemy wzorem opisanych poniżej:
{{CentrujWzór|<MATH>\hat{a}_{k_1}^{+}\hat{a}_{k_2}^{+}\ldots \hat{a}_{k_r}^{+}|0\rangle=\prod^{r}_{i=1}\hat{a}_{k_i}^+|0\rangle\;</MATH>|22.71}}
Jest to sprzężenie (iloczyn) operatorów kreacji, które powodują powstanie na {{Formuła|<MATH>k_i\;</MATH>}}-tych miejscach cząstek.
Określmy jako liczba cząstek znajdująca się na wszystkich poziomach w stanie fermionowym, których tą liczbę cząstek oznaczamy przez parametr N.
{{CentrujWzór|<MATH>N=\sum_k\hat{a}_k^{+}\hat{a}_k^-\;</MATH>|22.72}}
W równaniu {{LinkWzór|22.64}} oznaczamy całkowitą liczbę cząstek we wszystkich stanach dla {{Formuła|<MATH>k=0,1,2,3,4,\ldots\;</MATH>}}.
Zdefiniujmy dla przykładu operator, którego definicja jest:
{{CentrujWzór|<MATH>Q=\sum_{ik}\langle i|q|k\rangle \hat{a}_i^{+}\hat{a}_k^-\;</MATH>|22.73}}
Policzmy elementy macierzowe operatora Q zdefiniowanej w punkcie {{LinkWzór|22.73}} przy pomocy operatora kreacji i anihilacji, w takim przypadku możemy napisać:
{{CentrujWzór|<MATH>Q_{pr}=\langle p|\sum_{ik}\langle i|q|k\rangle \hat{a}_i^{+}\hat{a}_k^-|r\rangle=\sum_{ik}\langle i|q|k\rangle\langle p|\hat{a}_i^{+}\hat{a}_k^-|r\rangle=\sum_{ik}\langle i|q|k\rangle\langle 0|\hat{a}_p^-\hat{a}_i^{+}\hat{a}_k^-\hat{a}_r^{+}|0\rangle=\sum_{ik}\langle i|q|k\rangle\delta_{pi}\delta_{kr}=\langle p|q|r\rangle\;</MATH>|22.74}}
=== Reprezentacja liczby obsadzeń-operatory kreacji i anihilacji bozonów ===
Działaniem operatora kreacji {{Formuła|<MATH>b_k^+\;</MATH>}} dla stanu bozonowego nazywamy działaniem, która w wyniku działania stanu bozonowego zwiększa się liczba cząstek o jedynkę na tym poziomie na k-tym poziomie, na który działa nasz operator. Zatem nasze działanie naszego operatora piszemy:
{{CentrujWzór|<MATH>\hat{b}_k^+|\nu_1\nu_2...\nu_k...\rangle=\sqrt{\nu_k+1}|\nu_1\nu_2...\nu_k+1...\rangle\;</MATH>|22.75}}
We wzorze {{LinkWzór|22.75}} wykorzystaliśmy stan, że ν{{Sub|k}} jest stanem, który jest opisany przez liczbę kwantową równej k=0,1,2,3,..
Działaniem operatora anihilacji {{Formuła|<MATH>b_k^-\;</MATH>}} dla stanu bozonowego nazywamy działaniem, która w wyniku działania stanu bozonowego zmiejsza się liczba cząstek o jedynkę na tym poziomie na k-tym poziomie, na który działa nasz operator, Zatem nasze działanie naszego operatora piszemy wzorem:
{{CentrujWzór|<MATH>\hat{b}^-_k|\nu_1\nu_2...\nu_k...\rangle=\sqrt{\nu_k}|\nu_1\nu_2...\nu_k-1...\rangle\;</MATH>|22.76}}
Policzmy teraz działanie operatora opisanym wzorem {{Formuła|<MATH>\hat{b}_k^+\hat{b}_k^-\;</MATH>}} na pewien stan bozonowy, zatem na pewien stan kwantowy podziałajmy operatorem anihilacji na k-ty stanie, stąd na wynik tak otrzymany działamy operatorem kreacji, na ten sam stan:
{{CentrujWzór|<MATH>\hat{b}_k^+\hat{b}_k^-|\nu_1\nu_2...\nu_k...\rangle=\hat{b}_k^+\sqrt{\nu_k}|\nu_1\nu_2...\nu_k-1...\rangle=\nu_k|\nu_1\nu_2...\nu_k...\rangle\;</MATH>|22.77}}
Na sam koniec wyznaczmy działanie operatora {{Formuła|<MATH>\hat{b}_k^-\hat{b}_k^+</MATH>}}, tzn., najpierw działamy operatorem kreacji na dany stan bozonowy, a później działamy operatorem anihilacji na tak otrzymany wynik:
{{CentrujWzór|<MATH>\hat{b}_k^-\hat{b}_k^+|\nu_1\nu_2...\nu_k...\rangle =\hat{b}_k^-\sqrt{\nu_k+1}|\nu_1\nu_2...\nu_k+1...\rangle =(\nu_k+1)|\nu_1\nu_2...\nu_k...\rangle\;</MATH>|22.78}}
Na podstawie wzoru napisanego w punkcie {{LinkWzór|22.77}} i {{LinkWzór|22.78}} możemy określić antykomutację operatora {{Formuła|<MATH>\hat{b}^-_k\;</MATH>}} z operatorem {{Formuła|<math>\hat{b}_k^+\;</math>}}:
{{CentrujWzór|<MATH>[\hat{b}_k^-,\hat{b}_k^+]|\nu_1\nu_2...\nu_k...\rangle=\left(\hat{b}_k^-\hat{b}_k^+-\hat{b}_k^+\hat{b}_k^-\right)|\nu_1\nu_2...\nu_k...\rangle=(\nu_k+1)|\nu_1\nu_2...\nu_k...\rangle-\nu_k|\nu_1\nu_2...\nu_k...\rangle=\;</MATH><BR><MATH>=1\cdot|\nu_1\nu_2...\nu_k...\rangle\Rightarrow[\hat{b}_k^-,\hat{b}_k^+]|\nu_1\nu_2...\nu_k...\rangle=1\cdot |\nu_1\nu_2...\nu_k...\rangle\;</MATH>|22.79}}
Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|22.79}} wynika tożsamość:
{{CentrujWzór|<MATH>[\hat{b}_k^-,\hat{b}_k^+]=1\;</MATH>|22.80}}
Policzmy teraz działanie operatora opisanym wzorem {{Formuła|<MATH>\hat{b}_k^-\hat{b}_l^+\;</MATH>}} na pewien stan bozonowy, któremu odpowiada działaniu operatora kreacji na l-ty stan, stąd na wynik tak otrzymany działamy operatorem anihilacji na k-ty stan kwantowy, gdy k≠l, wtedy:
{{CentrujWzór|<MATH>\hat{b}_k^-\hat{b}_l^+|\nu_1\nu_2...\nu_k...\rangle=\hat{b}_k^-\sqrt{\nu_l+1}|\nu_1\nu_2...\nu_k...\nu_l+1...\rangle=\sqrt{\nu_k(\nu_l+1)}|\nu_1\nu_2...\nu_k-1...\nu_l+1...\rangle=\;</MATH><BR><MATH>=\hat{b}_l^+\hat{b}_k^-|\nu_1\nu_2...\nu_k...\rangle\Rightarrow[\hat{b}_k^-,\hat{b}_l^+]|\nu_1\nu_2...\nu_k...\rangle=0\Rightarrow[\hat{b}_k^-,\hat{b}_l^+]=0\;</MATH>|22.81}}
Na podstawie wniosków końcowych przeprowadzonych w punkcie {{LinkWzór|22.80}} i {{LinkWzór|22.81}} dla dowolności "k" i "l" można zapisać właściwość:
{{CentrujWzór|<MATH>[\hat{b}_k^-,\hat{b}_l^+]=\delta_{kl}\;</MATH>|22.82}}
Policzmy teraz działanie operatora opisanym wzorem {{Formuła|<MATH>\hat{b}^+_l\hat{b}^+_k\;</MATH>}} na pewien stan bozonowy, któremu odpowiada działaniu operatorem kreacji na l-ty stan, stąd na wynik tak otrzymany działamy operatorem kreacji na k-tyn stan kwantowy, gdy k≠l, wtedy:
{{CentrujWzór|<MATH>\hat{b}^+_k\hat{b}^+_l|\nu_1\nu_2...\nu_k...\rangle=\sqrt{\nu_k+1}\sqrt{\nu_l+1}|\nu_1\nu_2...\nu_l+1...\nu_k+1...\rangle=\hat{b}^+_l\hat{b}^+_k|\nu_1\nu_2...\nu_l...\nu_k...\rangle\;</MATH>|22.83}}
Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|22.83}} możemy powiedzieć, że tożsamość powstaje w wyniku odjęcia działania obu stron dotyczące działania operatorami {{Formuła|<MATH>\hat{b}^+_l\hat{b}^+_k\;</MATH>}} i {{Formuła|<MATH>\hat{b}^+_k\hat{b}^+_l\;</MATH>}} na stan bozonowy, co te zależności opisujemy razem we wspomnianym tutaj równaniu:
{{CentrujWzór|<MATH>[\hat{b}_k^+,\hat{b}_l^+]|\nu_1\nu_2...\nu_k...\rangle=0\Rightarrow [\hat{b}_k^+,\hat{b}_l^+]=0\;</MATH>|22.84}}
Przeprowadzmy obliczenia gdy k=l, wtedy na tej podstawie piszemy tożsamość:
{{CentrujWzór|<MATH>\hat{b}^+_k\hat{b}^+_k|\nu_1\nu_2...\nu_k...\rangle=\sqrt{\nu_k+1}\sqrt{\nu_k+1}|\nu_1\nu_2...\nu_k+2...\rangle\Rightarrow [\hat{b}^+_k,\hat{b}^+_k]|\nu_1\nu_2...\nu_k...\rangle=0\Rightarrow [{b}^+_k,\hat{b}^+_k]=0\;</MATH>|22.84a1}}
Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|22.84}} i {{LinkWzór|22.84a1}}, a także dowolności "k" i "l", co wtedy na tej podstawie opisujemy tutaj równaniem:
{{CentrujWzór|<MATH>[\hat{b}_k^+,\hat{b}_l^+]=0\;</MATH>|22.84a}}
Policzmy teraz działanie operatora opisanym wzorem {{Formuła|<MATH>\hat{b}_l^+\hat{b}_k^+\;</MATH>}} na pewien stan bozonowy, który na pewien stan kwantowy działamy operatorem anihilacji na l-ty stan, stąd na wynik tak otrzymany działamy operatorem anihilacji na l-ty stan kwantowy, gdy l≠k, zatem na podstawie tego:
{{CentrujWzór|<MATH>\hat{b}^-_k\hat{b}^-_l|\nu_1\nu_2...\nu_k...\rangle=\sqrt{\nu_k}\sqrt{\nu_l}|\nu_1\nu_2...\nu_l-1...\nu_k-1...\rangle=\hat{b}_l^-\hat{b}_k^-|\nu_1\nu_2...\nu_k...\rangle\Rightarrow[\hat{b}^-_k, \hat{b}^-_l]|\nu_1\nu_2...\nu_k...\rangle=0\Rightarrow \;</MATH><BR><MATH>\Rightarrow[\hat{b}^-_k, \hat{b}^-_l]=0</MATH>|22.85}}
Policzmy teraz działanie operatora opisanym wzorem {{Formuła|<MATH>\hat{b}_k^+\hat{b}_k^+\;</MATH>}} na pewien stan bozonowy, który na pewien stan kwantowy działamy operatorem anihilacji na k-ty stan, stąd na wynik tak otrzymany działamy operatorem anihilacji na k-ty stan kwantowy, zatem na podstawie tego:
{{CentrujWzór|<MATH>\hat{b}^-_k\hat{b}^-_k|\nu_1\nu_2...\nu_k...\rangle=\sqrt{\nu_k}\sqrt{\nu_k}|\nu_1\nu_2...\nu_k-2...\rangle=\hat{b}_k^-\hat{b}_k^-|\nu_1\nu_2...\nu_k...\rangle\Rightarrow [\hat{b}^-_k, \hat{b}^-_k]|\nu_1\nu_2...\nu_k...\rangle=0\Rightarrow[\hat{b}^-_k, \hat{b}^-_k] =0</MATH>|22.85a}}
Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|22.85}} i {{LinkWzór|22.85a}} możemy powiedzieć, że powstaje tożsamość dla dowolności "k" i "l", co te zależności opisujemy wspomnianym tutaj w równaniu:
{{CentrujWzór|<MATH>[\hat{b}_k^-,\hat{b}_l^-]=0\;</MATH>|22.86}}
Mnożenie operatorów kreacji {{LinkWzór|22.84}} lub anihilacji {{LinkWzór|22.86}} jest całkowicie przemienne, tzn.:
{{CentrujWzór|<MATH>\hat{b}_k^{+}\hat{b}_l^{+}=\hat{b}_l^{+}\hat{b}_k^{+}\wedge \hat{b}_k^{-}\hat{b}_l^{-}=\hat{b}_l^{-}\hat{b}_k^{-}</math>|22.87}}
stąd w ogólności, mamy dla bozonów: {{Formuła|<MATH>\hat{b}_k^{+}\hat{b}_{k}^{+}|0\rangle\neq 0</MATH>}}.
Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|22.77}} możemy powiedzieć, że operator {{Formuła|<MATH>\hat{b}_k^+\hat{b}_k^-\;</MATH>}} oznacza liczbę cząstek znajdujących się w danym stanie kwantowym, czyli ten operator ma sens ilości cząstek w danym stanie kwantowym i jest zapisana wzorem:
{{CentrujWzór|<MATH>\hat{n}_k=\hat{b}_k^+\hat{b}_k^-\;</MATH>|22.88}}
Liczba cząstek znajdujących się we wszystkich stanach kwantowych jest zapisana przy pomocy wzoru {{LinkWzór|22.88}}:
{{CentrujWzór|<MATH>N=\sum_k\hat{n}_k=\sum_k\hat{b}^+_k\hat{b}_k^-\;</MATH>|22.89}}
=== Wyrażenie operatora hamiltonianu poprzez operatory kreacji i anihilacji ===
Często operator energii całkowitej jest wyrażony poprzez operatory kreacji i anihilacji, np. kolejno nieoddziaływających fermionów, czy to bozonów, w takim przypadku możemy powiedzieć, że hamiltonian:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{H}=\sum_{\alpha\beta}H_{\alpha\beta}a_{\alpha}^+a_{\beta}^-\;</MATH>|28.90}}
| 2 = {{CentrujWzór|<MATH>\hat{H}=\sum_{\alpha\beta}H_{\alpha\beta}b_{\alpha}^+b_{\beta}^-\;</MATH>|28.91}}
}}
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
4ai70mgyyfwalvvmg2bh2tk3m52tjdz
Mechanika kwantowa/Symetrie, a prawa zachowania wartości średniej
0
15031
558843
470218
2026-10-07T12:07:15Z
Persino
2851
558843
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
W prowadźmy pewne początkowe rozważania, które są potrzebne do wykazania, że dany operator powoduje, że jego wartość średnia pewnej wielkości względem hamiltonianu (operatora energii) jest zachowana. Jeśli mamy jakąś funkcję falową {{Formuła|<MATH>|q\rangle\;</MATH>}}, to po przetransformowaniu jego, po zmianie jakiegoś parametru na przykład obrót o kąt lub przesunięcie o wektor, a nawet przesunięcia w czasie można zapisać w postaci działania operatora {{Formuła|<MATH>\hat{T}\;</MATH>}} na stan początkowy naszego układu, tzn. przed dokonaniem pewnych operacji na nim.
{{CentrujWzór|<MATH>|q'\rangle=\hat{T}|q\rangle\;</MATH>|23.1}}
Średnia wartość Hamiltonianu, korzystając przy tym ze wzoru {{LinkWzór|23.1}} w układzie wyrażoną za pomocą funkcji falowej po dokonaniu tejże operacji, wyrazimy ją za pomocą funkcji falowej przed dokonaniem tej operacji:
{{CentrujWzór|<MATH>\overline{P}'=\int \langle q'|\hat{P}'|q'\rangle d\tau=\int \langle q|\hat{T}^{+}\hat{P}'\hat{T}|q\rangle d\tau\;</MATH>|23.2}}
Jeśli średnia ma być zachowana względem jakiegoś parametru bez względu na jakie operacji dokonujemy na układzie, to musi zachodzić:
{{CentrujWzór|<MATH>\overline{P}=\overline{P}'\;</MATH>|23.3}}
Zatem powinno zachodzić równanie opisujące transformację operatora {{Formuła|<MAth>\hat{P}\;</Math>}} z układu po operacji do układu przez naszą operacją, czyli:
{{CentrujWzór|<MATH>\hat{P}=\hat{T}^{+}\hat{P}'\hat{T}\;</MATH>|23.4}}
A ze wzoru {{LinkWzór|23.4}} możemy wyznaczyć operację odwrotną:
{{CentrujWzór|<MATH>\hat{P}'=\hat{T}\hat{P}\hat{T}^{+}\;</MATH>|23.5|Obramuj}}
Wyrażenie {{LinkWzór|23.5}} pozwala przetransformować operator {{Formuła|<MATH>\hat{P}\;</MATH>}} z jednych współrzędnych do drugich przy transformacji {{Formuła|<MATH>\hat{T}\;</MATH>}}, jeśli ket można przetransformować według {{LinkWzór|23.1}}.
Ale nasz operator {{Formuła|<MATH>\hat{P}\;</MATH>}} lub {{Formuła|<MATH>\hat{P}'\;</MATH>}} jest operatorem hermitowskim, to mamy również wyrażenie {{LinkWzór|23.5}}, które można zapisać inaczej:
{{CentrujWzór|<MATH>\hat{P}'=\hat{T}^{+}\hat{P}\hat{T}\;</MATH>|23.6|Obramuj}}
Szczególnym przypadkiem operatora {{Formuła|<math>\hat{P}\;</math>}} może być operator Hamiltonianu, czyli: {{Formuła|<MATH>\hat{P}=\hat{H}\;</MATH>}}.
== Wprowadzenie do symetrii zasad zachowania ==
Skonstruujmy operator transformacji unitarnej w postaci wygodnej dla dalszych rozważań, niech tym operatorem będzie operator zdefiniowany przy pomocy operatora {{Formuła|<MATH>\hat{S}\;</MATH>}} charakteryzujący naszą wielkość zachowaną na podstawie {{LinkWzór|12.4|Równanie_Ehrenfesta}}, jeśli ten nasz operator nie zależy od czasu i komutacja operatora {{Formuła|<math>\hat{S}\;</MATH>}} z hamiltonianem jest równa zero, to energia układu jest zachowana względem transformacji {{Formuła|<MATH>\hat{T}\;</MATh>}}:
{{CentrujWzór|<MATH>\hat{T}=e^{ia\hat{S}}\;</MATH>|23.7}}
Operator {{LinkWzór|23.7}} jest on operatorem unitarnym wedle definicji {{LinkWzór|20.62|Wprowadzenie_do_teorii_wektorów_Diraca}}, a oto jego dowód:
{{CentrujWzór|<MATH>\hat{T}^{+}\hat{T}=\left(e^{ia\hat{S}}\right)^{+}e^{ia\hat{S}}=e^{-ia\hat{S}}e^{ia\hat{S}}=e^0=1\;</MATH>|23.8}}
Jeśli mamy operator, którego transformujemy według przepisu {{LinkWzór|23.5}}, to:
{{CentrujWzór|<MATH>\hat{H}\rightarrow \hat{H}'=\hat{T}\hat{H}\hat{T}^{+}=e^{ia\hat{S}}\hat{H}e^{-ia\hat{S}}\;</MATH>|23.9}}
Rozłóżmy operator unitarny {{Formuła|<math>\hat{T}\;</Math>}} {{LinkWzór|23.7}} w szereg Taylora względem wykładnika w nim występującego w operatorze {{LinkWzór|23.7}}:
{{CentrujWzór|<MATH>\hat{T}=\sum_{k=0}{{(ia)^k}\over{k!}}\hat{S}^k\;</MATH>|23.10}}
A teraz policzmy {{Formuła|<math>\hat{H}^'\;</MATH>}} (po przetransformowaniu operatorem {{Formuła|<MATH>\hat{S}\;</MATH>}} wstawiając operatory {{Formuła|<MATH>\hat{T}\;</MATH>}} wedle jego rozwinięcia {{LinkWzór|23.10}} do wzoru na transformację hamiltonianu {{LinkWzór|23.9}} z jednego układu do innego z primem.
{{CentrujWzór|<MATH>\hat{H}'=\sum_{k=0}{{(ia)^k}\over{k!}}\hat{S}^k\hat{H}\sum_{p=0}{{(-ia)^p}\over{p!}}\hat{S}^p=\sum_{k,p=0}{{(ia)^k}\over{k!}}\hat{S}^k\hat{H}{{(-ia)^p}\over{p!}}\hat{S}^p=\sum_{p,n,n \geq p}{{(ia)^{n-p}}\over{(n-p)!}}\hat{S}^{n-p}H(-1)^p{{(ia)^{p}}\over{p!}}\hat{S}^{p}=\;</MATH>{{Br}}
<MATH>=\sum_{p,n,n \geq p}n!{{(ia)^n}\over{(n-p)!p!}}\left[(-1)^p \hat{S}^{n-p}H\hat{S}^p\right]=\sum_{p,n,n \geq p}(ia)^n\left[{{(-1)^p \hat{S}^{n-p}H\hat{S}^p}\over{p!(n-p)!}}\right]=\sum^{\infty}_{n=0}{{(ia)^n}\over{n!}}\hat{W}(n)
\;</MATH>|23.11}}
Weźmy pod pretekst badań wyrażenie występujące {{LinkWzór|23.11}}, które można je prezestawić jako:
{{CentrujWzór|<MATH>\hat{W}(n)=\sum^{p\leq n}_{p=0}n!\left[{{(-1)^p \hat{S}^{n-p}\hat{H}\hat{S}^p}\over{p!(n-p)!}}\right]\;</MATH>|23.12}}
A {{Formuła|<math>\hat{W}(n)\;</MAth>}} powinno być równe wyrażeniu zdefiniowanego za pomocą komutatorów, czyli
{{CentrujWzór|<MATH>\hat{K}(n)=\left[\hat{S},\left[\hat{S},\left[\hat{S},\left[\hat{S},....\left[\hat{S},\hat{H}\right]...\right]\right]\right]\right]\;</MATH>|23.13}}
* gdzie S-ów jest tyle co n
Równoważność wzorów {{LinkWzór|23.12}} i {{LinkWzór|23.13}} udowodnimy za pomocą indukcji matematycznej.
Sprawdźmy czy ta równoważność dla n=1 jest spełniona tożsamościowo.
Zatem mamy dla tego "n", czyli {{Formuła|<MATH>\hat{K}(1)=\hat{S}\hat{H}-\hat{H}\hat{S}=[\hat{S},\hat{H}]=\hat{W}(1)\;</MATH>}} S-ów jest 1 czyli zgadza się, czyli dla n=1 nasze równoważność jest spełniona.
Z założenia indukcyjnego, jeśli mamy {{Formuła|<MATH>\hat{K}(n)=\hat{W}(n)\;</MATH>}}, to mamy udowodnić wyrażenie na {{Formuła|<MATH>\hat{K}(n+1)=\hat{W}(n+1)\;</MATH>}}. W ten sposób napiszmy takie wyrażenie, które mamy wedle {{LinkWzór|23.13}} i które jest równy temu wyrażeniu.
{{CentrujWzór|<MATH>\hat{K}(n+1)=\hat{S}\hat{W}(n)-\hat{W}(n)\hat{S}=\left[\hat S,\hat W(n)\right]\Rightarrow\hat{K}(n+1)=\left[\hat S,\hat W(n)\right]\;</MATH>|23.14}}
I udowodnijmy, że {{Formuła|<MATH>\hat{K}(n+1)=\hat{W}(n+1)\;</MATH>}} wedle twierdzenia indukcyjnego, bo udowodniamy równoważność wzorów {{LinkWzór|23.12}} z {{LinkWzór|23.13}}.
Z wyrażenia na {{Formuła|<MATH>\hat{K}(n+1)\;</MATH>}} i {{Formuła|<MATH>\hat{W}(n)\;</MATH>}} {{LinkWzór|23.12}}, dochodzimy do wniosku:
{{CentrujWzór|<MATH>
\begin{align}
\hat{K}(n+1)&=\hat{S}\hat{W}(n)-\hat{W}(n)\hat{S}=\hat{S}\sum^{p\leq n}_{p=0}n!\left[{{(-1)^p \hat{S}^{n-p}\hat{H}\hat{S}^p}\over{p!(n-p)!}}\right]-\sum^{p\leq n}_{p=0}n!\left[{{(-1)^p \hat{S}^{n-p}\hat{H}\hat{S}^p}\over{p!(n-p)!}}\right]\hat{S}=\\
&=\sum^{p\leq n}_{p=0}n!\left[{{(-1)^p \hat{S}^{n-p+1}\hat{H}\hat{S}^p}\over{p!(n-p)!}}\right]-\sum^{p\leq n}_{p=0}n!\left[{{(-1)^p \hat{S}^{n-p}\hat{H}\hat{S}^{p+1}}\over{p!(n-p)!}}\right]
\end{align}\;</MATH>|23.15}}
W drugim wyrazie wzoru {{LinkWzór|23.15}} zastępujemy wedle schematu {{Formuła|<MATH>p\rightarrow p-1\;</MATH>}}:
{{CentrujWzór|<MATH>\hat{K}(n+1)=\sum^{p\leq n}_{p=0}n!\left[{{(-1)^p \hat{S}^{n-p+1}\hat{H}\hat{S}^p}\over{p!(n-p)!}}\right]-
\sum^{p\leq n+1}_{p=1}n!\left[{{(-1)^{p-1} \hat{S}^{n+1-p}\hat{H}\hat{S}^{p}}\over{{(p-1)}!(n-p+1)!}}\right]=\;</MATH>{{Br}}
<MATH>=\sum^{p\leq n}_{p=1}n!{(-1)^{p} \hat{S}^{n+1-p}\hat{H}\hat{S}^{p}}\left({{1}\over{p}}+{{1}\over{n-p+1}}\right){{1}\over{(p-1)!(n-p)!}}+\hat{S}^{n+1}\hat{H}+(-1)^{n+1}\hat{H}\hat{S}^{n+1}=\;</MATH>{{Br}}<MATH>=\sum^{p\leq n+1}_{p=0}n!{{(-1)^{p} \hat{S}^{n+1-p}\hat{H}\hat{S}^{p}}\over{p!(n+1-p)!}}(n+1)=\sum^{p\leq n+1}_{p=0}(n+1)!{{(-1)^{p} \hat{S}^{n+1-p}\hat{H}\hat{S}^{p}}\over{p!(n+1-p)!}}=\hat{W}(n+1)\;</MATH>|23.16}}
A zatem udowodniliśmy, że {{Formuła|<MATH>\hat{W}(n)\;</MATH>}}{{LinkWzór|23.12}} jest równe tożsamościowo wzorowi {{LinkWzór|23.13}}.
W ten sposób możemy dojść do wniosku, że równanie {{LinkWzór|23.11}}, na podstawie udowodnionego ostatniego wzoru na W(n){{LinkWzór|23.15}}, wtedy równanie na {{Formuła|<MATH>\hat{H}'\;</MATH>}}, który powstaje po przetransformowaniu {{Formuła|<MATH>\hat{H}\;</MATH>}} przez operator {{Formuła|<MATH>\hat{T}\;</MATH>}} {{LinkWzór|23.10}} względem parametru "a" przy operatorze {{Formuła|<math>\hat{S}\;</MatH>}}, jest wyrażone:
{{CentrujWzór|<MATH>\hat{H}'=\hat{H}+(ia)\left[\hat{S},\hat{H}\right]+{{(ia)^2}\over{2!}}\left[\hat{S},\left[\hat{S},\hat{H}\right]\right]+{{(ia)^3}\over{3!}}\left[\hat{S},\left[\hat{S},\left[\hat{S},\hat{H}\right]\right]\right]+...\;</MATH>|23.17}}
Widać z stąd, że jeśli {{Formuła|<MATH>[\hat{S},\hat{H}]=0\;</MATH>}}, to {{Formuła|<MATH>\hat{H}'=\hat{H}\;</MATH>}}, oznacza to, że operator {{Formuła|<MAtH>\hat{H}\;</MaTH>}} jest niezmienniczy ze względu na transformację unitarną {{Formuła|<MATH>\hat{T}\;</Math>}} generowane przez hermitowski operator {{Formuła|<MATH>\hat{S}\;</MAth>}}.
Wiemy, że zachodzi {{LinkWzór|12.5|Równanie_Ehrenfesta}} dla operatora {{Formuła|<MATH>\hat{S}\;</MATH>}} niezależnego od czasu, i jeśli nasz operator jest niezmienniczy, ze względu na transformacje unitarne {{Formuła|<MATH>\hat{S}\;</MATH>}}, to {{Formuła|<MATH>{{d\hat{S}}\over{dt}}=0\;</MATH>}}, co oznacza: {{Formuła|<MATH>\hat{H}'=\hat{H}\Leftrightarrow \hat{S}=const\;</MATH>}}.
== Obroty, a prawo zachowania momentu pędu ==
Napiszmy jak wygląda transformacja obrotu w prawie zachowania momentu pędu.
Transformacja odwrotna przekształcająca nowe współrzędne na stare rozważająca obrót wokół osi z, o kąt {{Formuła|<MaTH>\theta\;</math>}} jest napisana wedle schematu:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>x=x'\cos\theta-y'\sin\theta\;</MATH>|23.18}}
| 2 = {{CentrujWzór|<MATH>y=x'\sin\theta+y'\cos\theta\;</MATH>|23.19}}
}}
Ze wzorów transformacyjnych, tzn. {{LinkWzór|23.18}} i {{LinkWzór|23.19}} wynikają tożsamości, które bardzo łatwo możemy udowodnić:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial x}\over{\partial\theta}}=-y\;</MATH>|23.20}}
| 2 = {{CentrujWzór|<MATH>{{\partial y}\over{\partial\theta}}=x\;</MATH>|23.21}}
| 3 = {{CentrujWzór|<MATH>{{\partial z}\over{\partial \theta}}=0\;</MATH>|23.22}}
}}
Napiszmy jak wygląda transformacja keta po obróceniu układu współrzędnych o pewien kąt, rozkładając nasz "ket" w szereg Taylora względem kąta {{Formuła|<MATH>\theta\;</MATH>}}:
{{CentrujWzór|<MATH>|q\rangle'=|q\rangle+\theta{{\partial |q\rangle}\over{\partial\theta}}+{{\theta^2}\over{2!}}{{\partial^2|q\rangle}\over{\partial\theta^2}}+...\;</MATH>|23.23}}
Napiszmy czemu jest równa pochodna cząstkowa pewnego "keta" względem kąta {{Formuła|<MATH>\theta\;</MATH>}}, korzystając przy tym z definicji operatora współrzędnej zetowego momentu pędu oraz ze wzorów, które wcześniej udowodniliśmy {{LinkWzór|23.20}}, {{LinkWzór|23.21}}, {{LinkWzór|23.22}}:
{{CentrujWzór|<MATH>{{\partial |q\rangle}\over{\partial \theta}}=\sum_i{{\partial|q\rangle}\over{\partial q_i}}{{\partial q_i}\over{\partial \theta}}=-\left(x{{\partial}\over{\partial y}}-y{{\partial}\over{\partial x}}\right)=-i{{\hat{L}_z}\over{\hbar}}|q>\;</MATH>|23.24}}
Operator {{LinkWzór|23.24}}, wiedząc, że jest to pochodna cząstkowa względem parametru azymutalnego w układzie kulistym, jest równy:
{{CentrujWzór|<MATH>{{\partial}\over{\partial\theta}}=-i{{\hat{L}_z}\over{\hbar}}\;</MATH>|23.25}}
Definicja wzoru {{LinkWzór|23.25}} jest tożsama z równaniem {{LinkWzór|5.46|Postulat_pierwszy_mechaniki_kwantowej}}.
A zatem do wzoru {{LinkWzór|23.23}} podstawiamy tożsamość {{LinkWzór|23.25}} do rozwiniętego "keta" względem kąta obrotu θ w szereg Taylora według wzoru {{LinkWzór|23.23}}:
{{CentrujWzór|<MATH>|q\rangle'=|q>+\theta\left(i{{\hat{L}_z}\over{\hbar}}\right)|q\rangle+{{\theta^2}\over{2!}}\left(i{{\hat{L}_z}\over{\hbar}}\right)^2|q\rangle+...=\left\{1+\theta\left(-i{{\hat{L}_z}\over{\hbar}}\right)|q\rangle+{{\theta^2}\over{2!}}\left(-i{{\hat{L}_z}\over{\hbar}}\right)^2+...\right\}|q\rangle=\;</MATH>{{Br}}
<MATH>=e^{-i\theta{{\hat{L}_z}\over{\hbar}}}|q\rangle\;</MATH>|23.26}}
A zatem operator transformacyjny, według szeregu {{LinkWzór|23.26}}, który można zapisać w postaci zwartej, który działa na ket, i który jest szukanym operatorem {{Formuła|<MATH>\hat{T}\;</MATH>}}.
Uogólnimy nasz wniosek, czyli wzór {{LinkWzór|23.26}} na dowolną oś obrotu równoległą do wektora {{Formuła|<MATH>\vec{n}\;</MATH>}}:
{{CentrujWzór|<MATH>\hat{T}=e^{-i\theta{{\vec{n}\hat{L}}\over{\hbar}}}\;</MATH>|23.27}}
Jeśli ma być spełnione prawo zachowania momentu pędu, czyli Hamiltonian ma być niezmienniczy przy transformacji generowanej przez operator {{Formuła|<MATH>\hat{L}\;</MATH>}}, to musi być spełniony warunek:
{{CentrujWzór|<MATH>0=[H,\vec{n}\hat{L}]=[H,\hat{L}_x]\cos\alpha+[H,\hat{L}_y]\cos\beta+[H,\hat{L}_z]\cos\gamma\;</MATH>|23.28}}
co ma być spełnione dla dowolnego wektora {{Formuła|<MATH>\vec{n}\;</MATH>}}:
{{CentrujWzór|<MATH>0=[\hat{L}_x,H]=[\hat{L}_y,H]=[\hat{L}_z,H]\;</MATH>|23.29}}
Jeśli uwzględnimy spin cząstki, jeśli jakaś cząstka posiada (np. elektrony), tzn. całkowity moment pędu jest równa sumie orbitalnego momentu pędu i spinowego momentu pędu, zatem równanie na tą wielkość zapisujemy:
{{CentrujWzór|<MATH>\hat{J}_z=\hat{L}_z+\hat{S}_z\;</MATH>|23.310}}
to dla osi "z' prawo całkowiego zachowania momentu pędu, czyli korzystając ze związku {{LinkWzór|23.310}}, jest wyrażone przez równanie komutacyjne jako suma dwóch komutatorów:
{{CentrujWzór|<MATH>[\hat{L}_z,\hat{H}]+[\hat{S}_z,\hat{H}]=0\;</MATH>|23.31}}
== Przesunięcia w przestrzeni euklidesowej, a prawo zachowania pędu ==
Wcześniej wprowadziliśmy operator obrotu, a teraz wprowadźmy operator przesunięcia w przestrzeni {{LinkWzór|23.1}}.
Przy przesunięciu o dowolny odcinek pewnego układ współrzędnych, musi być spełniony warunek: {{Formuła|<MATH>|q(x)\rangle'=|q(x-a)\rangle\;</MATH>}}, co piszemy:
{{CentrujWzór|<MATH>\hat{T}|q(x)\rangle=|q(x-a)\rangle\;</MATH>|23.32}}
Po rozwinięciu w szereg Taylora prawej strony wyrażenia {{LinkWzór|23.32}} względem zmiennej {{Formuła|<MATH>-a\;</MATH>}}, wtedy działania można napisać wedle:
{{CentrujWzór|<MATH>\hat{T}|q(x)\rangle=|q(x)\rangle+(-a){{\partial |q(x)\rangle}\over{\partial x}}+{{(-a)^2}\over{2!}}{{\partial^2|q(x)\rangle}\over{\partial x^2}}+...=e^{-a{{\partial}\over{\partial x}}}|q(x)\rangle\;</MATH>|23.33}}
Operator przesunięcia {{Formuła|<MATH>\hat{T}\;</MATH>}}, na podstawie wyrażenia {{LinkWzór|23.33}} można przedstawić:
{{CentrujWzór|<MATH>\hat{T}=e^{i{{a}\over{\hbar}}i\hbar{{\partial}\over{\partial x}}}=e^{-i{{{a}}\over{\hbar}}\hat{p}_x}\;</MATH>|23.35}}
Jeśli uogólnimy to dla wektora operatora pędu, to operator transformacji podczas przesunięcia starego układu współrzędnych o wektor {{Formuła|<math>\vec{a}\;</MATH>}} jest napisany wedle schematu:
{{CentrujWzór|<MATH>\hat{T}=\hat{T}_x\hat{T}_y\hat{T}_z=e^{-i{{{a_x}}\over{\hbar}}\hat{p}_x}e^{-i{{{a_y}}\over{\hbar}}\hat{p}_y}e^{-i{{{a_z}}\over{\hbar}}\hat{p}_z}=
e^{-i{{a_x\hat{p}_x+a_y\hat{p}_y+a_z\hat{p}_z}\over{\hbar}}}=e^{-i{{{\vec{a}}}\over{\hbar}}\hat{p}}\;</MATH>|23.35a}}
Tak więc, jeśli Hamiltonian jest niezmienniczy, to komutacja hamiltonianu ze wszystkimi współrzędnymi z osobna jest równa zero, co można zapisać:
{{CentrujWzór|<MATH>[\hat{H},\hat{p}_x]=[\hat{H},\hat{p}_y]=[\hat{H},\hat{p}_z]=0\;</MATH>|23.36}}
Na podstawie {{LinkWzór|23.37}} średni pęd układu jest zachowany.
== Transformacja inwersji przestrzeni, a prawo zachowania parzystości ==
Definicja działania operatora inwersji {{Formuła|<MatH>\hat{P}\;</MATH>}} na funkcję falową {{Formuła|<MATH>\psi(\vec{r})\;</MATH>}} jest przedstawiana:
{{CentrujWzór|<MATH>\hat{P}\psi(\vec{r})=\psi(-\vec{r})\;</MATH>|23.37}}
Widzimy, że podczas działania operatora inwersji argument naszej funkcji falowej, czyli wektor położenia {{Formuła|<MATH>\vec{r}\;</MATH>}} zmienia się na wartość z minusem.
Jeśli jeszcze raz podziałamy operatorem parzystości obustronnie na równość {{LinkWzór|23.37}}, który przedstawia działanie operatora parzystości:
{{CentrujWzór|<MATH>\hat{P}^2\psi(\vec{r})=\hat{P}\psi(-\vec{r})=\psi(\vec{r})\;</MATH>|23.38}}
Stąd według wyrażenia {{LinkWzór|23.38}}, dwa razy działanie operatora inwersji na funkcję falową powoduje, że otrzymamy taką samą funkcję jak przez działaniem, zatem kwadrat operatora inwersji jest operatorem tożsamościowym, co napiszemy poniżej:
{{CentrujWzór|<MATH>\hat{P}^2=I\;</MATH>|23.39}}
Równanie własne operatora inwersji, jak każde inne równanie własne mozemy je przestawić przy pomocy jej wartości własnej:
{{CentrujWzór|<MATH>\hat{P}\psi(\vec{r})=\pi\psi(\vec{r})\;</MATH>|23.40}}
Jeśli podziałamy obustronnie operatorem inwersji ponownie na równanie własne {{LinkWzór|23.40}} korzystając jeszcze raz {{LinkWzór|23.41}} oraz z liniowości operatora inwersji:
{{CentrujWzór|<math>\hat{P}^2\psi(\vec{r})=\hat{P}\pi\psi(\vec{r})\Rightarrow \psi(\vec{r})=\pi\hat{P}\psi(\vec{r})\Rightarrow \psi(\vec{r})=\pi^2\psi(\vec{r})\;</math>|23.41}}
Aby powyższe równanie było prawdziwą tożsamością dla dowolnego {{Formuła|<MATH>\psi(\vec{r})\;</math>}}, że kwadrat operatora inwersji jest równa jeden wedle {{LinkWzór|23.41}}, to musi na pewno zachodzić:
{{CentrujWzór|<MATH>\pi^2=1\;</MatH>|23.42}}
Na podstawie {{LinkWzór|23.42}} wartością własną operatora inwersji, która jest wartością własną równania własnego {{LinkWzór|23.40}}, przyjmująca dwie wartości:
{{CentrujWzór|<MATH>\pi=-1,1\;</MATH>|23.43}}
Operatory hamiltonianu i inwersji są operatorami inwersji komutującymi, jeśli założymy, że hamiltonian jest operatorem parzystym, tzn. {{Formuła|<Math>\hat{H}(\vec{r})=\hat{H}(-\vec{r})\;</MATH>}}, którego dowód przeprowadzimy poniżej:
{{CentrujWzór|<MATH>\hat{P}\hat{H}(\vec{r})\psi(\vec{r})=\hat{H}(-\vec{r})\psi(-\vec{r})=\hat{H}(\vec{r})\psi(-\vec{r})=\hat{H}(\vec{r})\hat{P}\psi(\vec{r})\Rightarrow \left(\hat{P}\hat{H}-\hat{H}\hat{P}\right)\psi(\vec{r})=0\;</MATH>|23.44}}
Na podstawie obliczeń, które przeprowadziliśmy w punkcie {{LinkWzór|23.44}} i samej definicji komutatora dostajemy, że operator całkowitej energii i operator hamiltonianu komutują ze sobą, czyli te operatory wobec siebie są przemienne:
{{CentrujWzór|<MATH>[H,\hat{P}]=0\;</MATH>|23.45}}
Co oznacza, że operator inwersji {{Formuła|<MATH>\hat{P}\;</MATH>}} i {{Formuła|<MATH>\hat{H}\;</MATH>}} mają jednakowe funkcje własne.
Podziałajmy operatorem {{Formuła|<MATH>\hat{P}\;</MATH>}} na funkcję {{Formuła|<MATH>\hat{H}\psi(r)\;</MATH>}}, korzystając przy tym, że hamiltonian {{Formuła|<MATH>\hat{H}\;</MATH>}} komutuje z operatorem inwersji {{Formuła|<MATH>\hat{P}\;</MATH>}}, to otrzymamy pewne wyrażenie z funkcją {{Formuła|<MATH>\hat{H}\psi(r)\;</MATH>}} i przy nim stojącym czynnikiem {{Formuła|<MATH>\pi\;</MATH>}}:
{{CentrujWzór|<MATH>\hat{P}(\hat{H}\psi(r))=\hat{H}\hat{P}\psi=\hat{H}\pi\psi(r)=\pi(\hat{H}\psi(r))\;</MATH>|23.46}}
Z powyższych obliczeń wynika własność:
{{CentrujWzór|<MATH>\pi=(-1)^p\;</MATH>|23.47}}
A więc dla p parzystych wartość własna operatora parzystości jest {{Formuła|<MATH>\pi=1\;</MATH>}}, a dla p nieparzystych zachodzi {{Formuła|<MATH>\pi=-1\;</MATH>}}.
Napiszmy funkcję, która jest rozwiązaniem pewnego równania, która dzieli się na cześć radialną i kątową, która przy założeniu naszym musi być funkcją kulistą.
{{CentrujWzór|<MATH>\psi_{nlm}=f_n(r)Y_{lm}(\theta\phi)\;</MATH>|23.48}}
Korzystając z {{LinkWzór|7.90|Postulat_drugi_mechaniki_kwantowej}} i {{LinkWzór|7.105|Postulat_drugi_mechaniki_kwantowej}} oraz korzystając z tego że zmienna u jest równa dokładnie wyrażeniu {{Formuła|<MATH>\cos\phi\;</MATH>}}, a zatem napiszmy czemu jest równe to wyrażenie:
{{CentrujWzór|<MATH>Y(180^o+\theta,180^o-\phi)=e^{im(180^o+\theta)}(1-u(180^o-\phi)^2)^{|m|}{{d^{l+|m|}}\over{du^{l+|m|}(180^o-\phi)}}\left\{(1-u(180^o-\phi)^2)^l\right\}=\;</MATH>{{Br}}
<MATH>=(-1)^me^{im\theta}(1-u^2)^{|m|}{{1}\over{(-1)^{l+|m|}}}{{d^{l+|m|}}\over{du^{l+|m|}}}\left\{(1-u^2)^l\right\}={{(-1)^m}\over{(-1)^{l+|m|}}}Y_{lm}(\theta\phi)\;</MATH>|23.49}}
Gdy magnetyczna liczba kwantowa {{Formuła|<MATH>m\;</MATH>}} jest większa lub równa zero, to współczynnik w równaniu {{LinkWzór|23.49}} ma się:
{{CentrujWzór|<MATH>{{(-1)^m}\over{(-1)^{l+|m|}}}=(-1)^{-l}=(-1)^l\;</MATH>|23.50}}
Gdy magnetyczna liczba kwantowa {{Formuła|<MATH>m\;</MATH>}} jest mniejsza niż zero, to współczynnik w równaniu {{LinkWzór|23.49}} ma się:
{{CentrujWzór|<MATH>{{(-1)^m}\over{(-1)^{l+|m|}}}={{({-1})^m}\over{(-1)^{l-m}}}=(-1)^{m-l+m}=(-1)^{-l+2m}=(-1)^{l}\;</MATH>|23.51}}
Z własności funkcji sferycznych (na podstawie {{LinkWzór|23.50}} lub {{LinkWzór|23.51}}), wynika:
{{CentrujWzór|<MATH>Y(180^o+\theta,180^o-\phi)=(-1)^lY_{lm}(\theta\phi)\;</MATH>|23.52}}
A teraz podziałajmy operatorem inwersji na funkcję falową zdefiniowanej za pomocą funkcji falowej zdefiniowaną wedle wzoru {{LinkWzór|23.49}} jako iloczynu funkcji radialnej i funkcji kulistej:
{{CentrujWzór|<MATH>\hat{P}\psi_{nlm}(\vec{r})=\psi_{nlm}(-\vec{r})=f_n(r)Y(180^o+\theta,180^o-\phi)\;</MATH>|23.53}}
Według wzoru {{LinkWzór|23.53}} (działania operatorem inwersji na funkcję falową), korzystając przy tym z równania {{LinkWzór|23.52}} (czemu jest równe Y(180{{Sup|o}}+θ,180{{Sup|o}}-φ)), wtedy:
{{CentrujWzór|<MATH>\hat{P}\psi_{nlm}(r)=(-1)^l\psi_{nlm}(r)\;</MATH>|23.54}}
Z stąd wniosek na podstawie równania {{LinkWzór|23.54}}, który mamy na pewno, że wartość własna zależna od orbitalnej liczby kwantowej, która jest wykładnikiem potęgi o podstawie równej minus jeden:
{{CentrujWzór|<MATH>\pi=(-1)^l\;</MATH>|23.55}}
Co jest wartością własną rozwiązania operatora parzystości funkcji własnej {{LinkWzór|23.48}}, a która z kolei jest iloczynem funkcji radialnej i funkcji kulistej Y{{Sub|lm}}(θφ).
Ponieważ operator parzystości nie zależy od czasu, a także operator całkowitej energii całkowitej (hamiltonian) (hamiltonian jest parzysty) komutuje według z nim według {{LinkWzór|23.45}}, według wzoru {{LinkWzór|12.4|Równanie_Ehrenfesta}} operator parzystości jest niezależny od czasu.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
2j82thlnos5my1uznd63dn0jxaysu9j
Mechanika kwantowa/Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca
0
15289
558845
487123
2026-10-07T12:26:19Z
Persino
2851
558845
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Przedstawmy równania mechaniki kwantowej relatywistycznej Diraca. Poniższy wywód ma na celu wprowadzenie równań mechaniki kwantowej relatywistycznych Diraca.
Głównym zarzutem do relatywistycznych równań Kleina-Gordona w postaci zależnej i niezależnej od czasu polegał na zakwestionowaniu postaci kwadratowej równań relatywistycznej mechaniki kwantowej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{H}^2\psi=E^2\psi</MATH>|25.1}}
| 2 = {{CentrujWzór|<MATH>(i\hbar)^2{{\partial^2\psi}\over{\partial t^2}}=\hat{H}^2\psi</MATH>|25.2}}
}}
A zamiast równań {{LinkWzór|25.1}} (równania niezależnego od czasu) i {{LinkWzór|25.2}} (równania zależnego od czasu) należy włożyć natomiast równania, w których operator całkowitej energii cząstki jest w potędzie pierwszej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{H}\psi=E\psi</MATH>|25.3}}
| 2 = {{CentrujWzór|<MATH>\hat{H}\psi=i\hbar{{\partial\psi}\over{\partial t}}</MATH>|25.4}}
}}
Chcemy napisać równanie kwantowe relatywistyczne w analogii do równania {{LinkWzór|24.1|Relatywistyczna_teoria_kwantów_Kleina-Gordona}}, wychodząc z wyrażenia na energię relatywistyczną cząstki, znana w szczególnej teorii względności jako związek energii relatywistycznej związaną z jej wartością pędu i masą spoczynkową cząstki (antycząstki), wiedząc jednocześnie, że antycząstki mają masę relatywistyczną ujemną w stosunku do cząstek, które mają dodatnią, mające ten sam pęd, co wynika z warunku linearyzacji hamiltonianu, a więc energia cząstki (z plusem) lub antycząstki (z minusem):
{{CentrujWzór|<MATH>E=\pm\sqrt{c^2p^2+m_0^2c^4}</MATH>|25.5}}
== Linearyzacja Hamiltonianu ==
Będziemy tutaj przeprowadzać linearyzację operatora energii relatywistycznej bez uwzględnienia pola magnetycznego i z uwzględnieniem pola magnetycznego.
=== Linearyzacja operatora energii relatywistycznej bez uwzględnienia pola magnetycznego ===
Zastępując w {{LinkWzór|25.5}} kwadrat wektora pędu przez kwadrat operatora pędu, wtedy możemy określić operator Hamiltonianu:
{{CentrujWzór|<MATH>\hat{H}=\pm\sqrt{c^2\hat{p}^2+m_0^2c^4}</MATH>|25.6}}
Dokonajmy linearyzacji Hamiltonianu {{LinkWzór|25.6}} zastępując przez inny zmodyfikowany operator energii, który posiada takie same wartości i funkcje własne jak operator poprzedni:
{{CentrujWzór|<MATH>\hat H=c\hat{\alpha}\hat{p}+m_0c^2\hat{\beta}</MATH>|25.7}}
Wartości własne i funkcje własne operatora hamiltonianu {{LinkWzór|25.7}} są takie same jak dla {{LinkWzór|25.6}}, zaraz to wyjaśnimy. Równania własne hamiltonianów {{LinkWzór|25.6}} i {{LinkWzór|25.7}} są w pewnej postaci, a jeżeli podziałamy obie strony operatorem energii pierwszego równania na obie strony pierwszego równania, podobnie z drugim równaniem, to otrzymamy równania własne kwadratu operatorów hamiltonianów. Stąd wartości własne i funkcje własne dla operatorów {{LinkWzór|25.6}} i {{LinkWzór|25.7}} są takie same, bo zakładamy, że kwadraty tychże operatorów są sobie równe.
Podnosimy wzory operatorowe {{LinkWzór|25.6}} i {{LinkWzór|25.7}} do kwadratu, to wtedy oba operatory po tej czynności są sobie równe, wtedy możemy otrzymać pewne związki operatorowe na operatorach {{Formuła|<MATH>\hat{\alpha}\;</MATH>}} i {{Formuła|<MATH>\hat{\beta}\;</MATH>}}, a także z operatorami pędu, po zrobieniu tej operacji otrzymujemy tożsamość operatorową:
{{CentrujWzór|<MATH>c^2\hat{p}^2+m_0^2c^4=c^2(\alpha\hat{p})^2+m_0^2c^4\hat{\beta}^2+m_0c^3(\hat{\alpha}\hat{p})\hat{\beta}+m_0c^3\hat{\beta}(\hat{\alpha}\hat{p})</MATH>|25.8}}
Ponieważ prawa i lewa strona tożsamości {{LinkWzór|25.8}} oznacza to samo wyrażenie operatorowe, więc możemy je porównać, by otrzymać jakie związki operatorowe zachodzą, zatem porównujemy prawą i lewą stronę prawdziwej tożsamości wspomnianej tożsamości, ostatecznie otrzymujemy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{p}^2=(\hat{\alpha}\hat{p})^2</MATH>|25.9}}
| 2 = {{CentrujWzór|<MATH>1=\hat{\beta}^2</MATH>|25.10}}
| 3 = {{CentrujWzór|<MATH>0=(\alpha\hat{p})\hat{\beta}+\hat{\beta}(\hat{\alpha}\hat{p})</MATH>|25.11}}
}}
Równanie operatorowe {{LinkWzór|25.9}} możemy rozpisać, wykonując po prawej jego stronie pod potęgowanie, rozpisując coś w rodzaju iloczynu skalarnego, ale to wyrażenie nim nie jest, w postaci kwadratu sumy iloczynów odpowiednich współrzędnych operatora {{Formuła|<MATH>\hat{\alpha}\;</MATH>}} i odpowiednich operatorów pędu:
{{CentrujWzór|<MATH>\hat{p}^2=\hat{p}_x^2+\hat{p}_y^2+\hat{p}_z^2=(\hat{\alpha}_x \hat{p}_x+\hat{\alpha}_y \hat{p}_y+\hat{\alpha}_z\hat{p}_z)^2</MATH>|25.12}}
Wykonujemy działania związane z podnoszeniem do drugiej potęgi prawej strony tożsamości {{LinkWzór|25.12}} i wykonując je na operatorach:
{{CentrujWzór|<MATH>\hat{p}^2=\hat{p}_x^2+\hat{p}_y^2+\hat{p}_z^2=
\hat{\alpha}_x^2\hat{p}_x^2+\hat{\alpha}_y^2\hat{p}_y^2+\hat{\alpha}_z^2\hat{p}_z^2+\alpha_x\alpha_yp_xp_y+\alpha_y\alpha_x\hat{p}_y\hat{p}_x+\hat{\alpha}_x\hat{\alpha}_z \hat{p}_x\hat{p}_y+\hat{\alpha}_z\hat{\alpha}_x\hat{p}_y\hat{p}_z+\hat{\alpha}_y\hat{\alpha}_z \hat{p}_y\hat{p}_z+\hat{\alpha}_z\hat{\alpha}_y\hat{p}_z\hat{p}_y</MATH>|25.13}}
Po dalszych przekształceniach {{LinkWzór|25.13}}, korzystając z definicji antykomutatorów grupując odpowiednie wyrazy występujące w nim:
{{CentrujWzór|<MATH>\hat{p}^2=\hat{p}_x^2+\hat{p}_y^2+\hat{p}_z^2=\hat{\alpha}_x^2\hat{p}_x^2+\hat{\alpha}_y^2\hat{p}_y^2+\hat{\alpha}_z^2\hat{p}_z^2+\{\alpha_x,\alpha_y\}\hat{p}_x\hat{p}_y+\{\hat{\alpha}_x,\hat{\alpha}_z\} \hat{p}_x\hat{p}_y+\{\hat{\alpha}_y,\hat{\alpha}_z\}\hat{p}_y\hat{p}_x</MATH>|25.14}}
Porównujemy lewą i prawą stronę tożsamości operatorowej {{LinkWzór|25.14}}, otrzymujemy, że kwadrat współrzędnych operatora {{Formuła|<math>\hat{\alpha}\;</MATH>}} jest równy jedynce, czyli:
{{CentrujWzór|<MATH>\alpha^2_x=\alpha^2_y=\alpha_z^2=1</MATH>|25.15}}
a także wychodzą definicję antykomutatorów napisanych za pomocą współrzędnych operatora {{Formuła|<MATH>\hat{\alpha}\;</MATH>}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\{\alpha_x,\alpha_y\}=0\;</MATH>|25.16}}
| 2 = {{CentrujWzór|<MATH>\{\alpha_y,\alpha_z\}=0\;</MATH>|25.17}}
| 3 = {{CentrujWzór|<MATH>\{\alpha_x,\alpha_z\}=0\;</MATH>|25.18}}
}}
\Lub ogólnie można zapisać wykorzystując {{LinkWzór|25.15}}, a także działania na antykomutatorach {{LinkWzór|25.16}}, {{LinkWzór|25.17}} oraz {{LinkWzór|25.18}}, wykorzystując te wszystkie wymienione związki, możemy zapisać ogólną tożsamość operatorową:
{{CentrujWzór|<MATH>\{\alpha_i,\alpha_j\}=2\delta_{ij}\;</MaTh>|25.19}}
Natomiast wiemy, że zachodzi {{LinkWzór|25.10}}, oraz wiemy, że operatory współrzędnych pędu {{Formuła|<MATH>\hat{p}_i</MATH>}} i operator {{Formuła|<MATH>\hat{\beta}</MATH>}} komutują ze sobą. zatem możemy dojść do wniosku:
{{CentrujWzór|<MATH>\{\alpha\hat{p},\hat{\beta}\}=0\Rightarrow\{\alpha_i,\hat{\beta}\}=0\mbox{ i=x,y,z}</MATH>|25.20}}
Z tożsamości {{LinkWzór|25.10}} możemy dojść do wniosku, że to równanie możemy zapisać w postaci operatorowej, którego pokrótce udowodnimy:
{{CentrujWzór|<MATH>(\hat{\beta}-1)(\hat{\beta}+1)=0\;</MATH>|25.21}}
A oto dowód tożsamości {{LinkWzór|25.21}}, gdy zachodzi {{LinkWzór|25.10}}, udowodnimy, że te równości oznaczają to samo:
{{CentrujWzór|<MATH>(\beta-1)(\beta+1)=\hat{\beta}^2+\beta-\beta-1=0</MATH>|25.22}}
Na podstawie obliczeń {{LinkWzór|25.22}} wychodząc z {{LinkWzór|25.21}} dochodzimy do tożsamości operatorowej {{LinkWzór|25.10}}.
Co oznacza, że wartościami własnymi operatora {{Formuła|<MATH>\hat{\beta}</MATH>}} według równości operatorowej {{LinkWzór|25.21}} są jego wartości własne w postaci liczb 1 oraz -1.
Również operatory {{Formuła|<MATH>\hat{\alpha}_i</MATH>}}, dla których zachodzi {{LinkWzór|25.15}}, podobnie jak przy {{Formuła|<MATH>\hat{\beta}\;</MATH>}} posiadają one wartości własne równe 1 lub -1, bowiem można je zapisać w postaci podobnej do {{LinkWzór|25.21}}, tylko zamiast operatora {{Formuła|<MATH>\hat{\beta}\;</MATH>}} występują odpowiednie współrzędne operatora {{Formuła|<MATh>\hat{\alpha}\;</math>}}, zatem każda taka współrzędna tego operatora ma takie same wartości własne.
=== Linearyzacja operatora energii relatywistycznej z uwzględnieniem pola magnetycznego ===
Napiszmy wzór na energię relatywistyczną zastępując pęd klasyczny w {{LinkWzór|25.5}} przez różnicę pędu uogólnionego i iloczynu ładunku elektrycznego i potencjału magnetycznego, wtedy:
{{CentrujWzór|<MATH>E_r=\pm\sqrt{c^2(\vec p-q\vec A)^2+m_0^2c^4}\;</MATH>|25.5a}}
Zastępując w {{LinkWzór|25.5a}} wektora pędu uogólnionego przez operatora pędu, wtedy możemy określić operator energii relatywistycznej cząstki:
{{CentrujWzór|<MATH>\hat E_r=\pm\sqrt{c^2(\hat p-q\vec A)^2+m_0^2c^4}\;</MATH>|25.5b}}
Dokonajmy linearyzacji Hamiltonianu {{LinkWzór|25.5b}} zastępując go przez zmodyfikowaną wersję tego operatora posiadającego takie same wartości i funkcje własne:
{{CentrujWzór|<MATH>\hat E_r=c\hat \alpha(\hat p-q\vec A)+m_0c^2\hat\beta^'\;</MATH>|25.5c}}
Wartości własne i funkcje własne operatora hamiltonianu {{LinkWzór|25.5c}} są takie same jak dla {{LinkWzór|25.5b}}, zaraz to wyjaśnimy. Równania własne operatorów energii relatywistycznej {{LinkWzór|25.5b}} i {{LinkWzór|25.5c}} są w postaci {{Formuła|<MATH>\hat E_r\psi=E_r\psi\;</MATH>}}, a jeżeli podziałamy obie strony operatorem {{Formuła|<MATH>\hat E_r\;</MATH>}} tych równań własnych, to otrzymamy równania własne kwadratów operatora energii relatywistycznych, które są takie same, bo kwadrat operatora {{LinkWzór|25.5b}} jest równy kwadratowi operatora {{LinkWzór|25.5c}} jak zakładamy. Stąd wartości własne i funkcje własne dla operatorów {{LinkWzór|25.5b}} i {{LinkWzór|25.5c}} są takie same.
Przyrównujemy kwadrat operatora {{LinkWzór|25.5b}} z {{LinkWzór|25.5c}}, by otrzymać pewne związki operatorowe na operatorach {{Formuła|<MATH>\hat\alpha\;</MATH>}} i {{Formuła|<MATH>\hat\beta^'\;</MATH>}}, a także operatorze pędu, po zrobieniu tej operacji otrzymujemy tożsamość operatorową:
{{CentrujWzór|<MATH>c^2(\hat p-q\vec A)^2+m_0^2c^4=c\hat \alpha(\hat p-q\vec A)c\hat \alpha(\hat p-q\vec A)+m_0^2c^4\hat\beta^{'2}+m_0c^2c\hat \alpha(\hat p-q\vec A)\hat\beta^'+m_0c^2\hat\beta^' c\hat \alpha(\hat p-q\vec A)\;</MATH>|25.5d}}
Dokonajmy dalszych obliczeń na wyrażeniu operatorowym w tożsamości operatorowej {{LinkWzór|25.5d}}:
{{CentrujWzór|<MATH>c\hat \alpha(\hat p-q\vec A)c\hat \alpha(\hat p-q\vec A)+m_0^2c^4\hat\beta^{'2}+m_0c^2c\hat \alpha(\hat p-q\vec A)\hat\beta^'+m_0c^2\hat\beta^' c\hat \alpha(\hat p-q\vec A)=\;</MATH>{{Br}}<MATH>=
c\hat \alpha(\hat p-q\vec A)c\hat \alpha(\hat p-q\vec A)+m_0^2c^4\hat\beta^{'2}+
\left[m_0c^3\left(\hat \alpha\hat\beta^'+\hat\beta^'\hat\alpha\right)\left(\hat p-q\vec A\right)\right]+m_0c^3\hat\alpha(\hat p\hat \beta^')\;</MATH>|25.5e}}
==== Definicja operatorów σ{{Sub|i}} ====
Niech będą zdefiniowane nowe operatory {{Formuła|<MATH>\hat{\sigma}\;</MATH>}}, który ma odpowiednie trzy współrzędne, które zapisujemy za pomocą współrzędnych operatora {{Formuła|<MATH>\hat{\alpha}\;</MATH>}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{\sigma}_x=-i\hat{\alpha}_y\hat{\alpha}_z</MATH>|25.29}}
| 2 = {{CentrujWzór|<MATH>\hat{\sigma}_y=-i\hat{\alpha}_z\hat{\alpha}_x</MATH>|25.30}}
| 3 = {{CentrujWzór|<MATH>\hat{\sigma}_z=-i\hat{\alpha}_x\hat{\alpha}_y</MATH>|25.31}}
}}
==== Przedstawienie w postaci wektorowej operatorów σ{{Sub|i}} w zależności od iloczynu wektorowego dwóch takich samych wektorów α zbudowanej jako wektor operatorów α{{Sub|i}} ====
Wyznaczmy czemu jest równy operator {{Formuła|<MATH>\hat{\sigma}\;</MATH>}} przy pomocy operatora {{Formuła|<MATH>\hat{\alpha}\;</Math>}}, dowiemy się, że on jest równy iloczynowi wektorowemu dwóch takich samych operatorów {{Formuła|<MaTH>\hat{\alpha}\;</MATH>}} wiedząc jednocześnie, że współrzędne omawianego operatora są współrzędnymi nieprzemiennymi, Jeśli definicję {{Formuła|<MATH>\hat{\sigma}\;</MATH>}} przedstawimy jako:
{{CentrujWzór|<MATH>\hat\sigma=-{{i}\over{2}}\vec e_s\epsilon_{sjk}\alpha_j\alpha_k=-{{i}\over{2}}\hat{\alpha}\times\hat{\alpha}\;</MATH>|25.51}}
to jego współrzędne naszego operatora przedstawimy wedle:
{{CentrujWzór|<MATH>\hat{\sigma}=-{{i}\over{2}}\begin{bmatrix}
\hat{\alpha}_y\hat{\alpha}_z-\hat{\alpha}_z\hat{\alpha}_y\\
\hat{\alpha}_z\hat{\alpha}_x-\hat{\alpha}_x\hat{\alpha}_z\\
\hat{\alpha}_x\hat{\alpha}_y-\hat{\alpha}_y\hat{\alpha}_x\end{bmatrix}=-{{i}\over{2}}\begin{bmatrix}
2\hat{\alpha}_y\hat{\alpha}_z\\
2\hat{\alpha}_z\hat{\alpha}_x\\
2\hat{\alpha}_x\hat{\alpha}_y
\end{bmatrix}=\begin{bmatrix}
-i\hat{\alpha}_y\hat{\alpha}_z\\
-i\hat{\alpha}_z\hat{\alpha}_x\\
-i\hat{\alpha}_x\hat{\alpha}_y
\end{bmatrix}\;</MATH>|25.52}}
==== Macierzowe przedstawienie operatorów β, α{{Sub|x}}, α{{Sub|y}} i α{{Sub|z}} ====
Napiszmy wzór na operator {{Formuła|<MATH>\hat\beta\;</MATH>}} w zależności od macierzy jednostkowej {{Formuła|<MATH>I\;</MATH>}}:
{{CentrujWzór|<MATH>\hat{\beta}=\begin{pmatrix}
1&0&0&0\\
0&1&0&0\\
0&0&-1&0\\
0&0&0&-1
\end{pmatrix}=\begin{bmatrix}I&0\\0&-I\end{bmatrix}</MATH>|25.170}}
Oraz napiszmy operatory {{Formuła|<MATH>\hat{\alpha}</MATH>}}, a właściwie jego współrzędne, które przedstawiamy w postaci trzech składowych wiedząc, że zachodzi {{LinkWzór|14.55|Cząstki o spinie połówkowym}} ({{Formuła|<MATH>\sigma_x\;</MATH>}}), {{LinkWzór|14.56|Cząstki o spinie połówkowym}} ({{Formuła|<MATH>\sigma_y\;</MATH>}}) i {{LinkWzór|14.57|Cząstki o spinie połówkowym}} ({{Formuła|<MATH>\sigma_z\;</MATH>}}):
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{\alpha}_x=\begin{pmatrix}
0&0&0&1\\
0&0&1&0\\
0&1&0&0\\
1&0&0&0
\end{pmatrix}=\;</MATH>{{Br}}<MATH>=\begin{bmatrix}0&\sigma_x\\\sigma_x&0\end{bmatrix}</MATH>|25.171}}
| 2 = {{CentrujWzór|<MATH>\hat{\alpha}_y=\begin{pmatrix}
0&0&0&-i\\
0&0&i&0\\
0&-i&0&0\\
i&0&0&0
\end{pmatrix}=\;</MATH>{{Br}}<MATH>=\begin{bmatrix}0&\sigma_y\\\sigma_y&0\end{bmatrix}</MATH>|25.172}}
| 3 = {{CentrujWzór|<MATH>\hat{\alpha}_z=\begin{pmatrix}
0&0&1&0\\
0&0&0&-1\\
1&0&0&0\\
0&-1&0&0
\end{pmatrix}=\;</MATH>{{Br}}<MATH>=\begin{bmatrix}0&\sigma_z\\\sigma_z&0\end{bmatrix}</MATH>|25.173}}
}}
Na podstawie {{LinkWzór|25.171}}, {{LinkWzór|25.172}} i {{LinkWzór|25.173}} możemy napisać ogólną postać na operator {{Formuła|<MATH>\hat\alpha_i\;</MATH>}}:
{{CentrujWzór|<MATH>\hat{\alpha}_i=\begin{bmatrix}0&\sigma_i\\\sigma_i&0\end{bmatrix}</MATH>|25.173a}}
==== Macierzowe przedstawienie operatorów σ{{Sub|x}}, σ{{Sub|y}} i σ{{Sub|z}} ====
Mając definicje odpowiednich współrzędnych operatora {{Formuła|<MATH>\hat{\alpha}\;</MATH>}} wyprowadzimy operatory {{Formuła|<MATH>\hat{\sigma}\;</MATH>}}, które zdefiniowaliśmy w {{LinkWzór|25.29}}, {{LinkWzór|25.30}} i {{LinkWzór|25.31}}. Wyprowadzając najpierw operator {{Formuła|<MATh>\hat{\sigma}_x\;</MATH>}} z pierwszego wspomnianego wzoru wiedząc, że zachodzi {{LinkWzór|14.55|Cząstki o spinie połówkowym}} ({{Formuła|<MATH>\sigma_x\;</MATH>}}):
{{CentrujWzór|<MATH>\hat{\sigma}_x=-i\begin{pmatrix}
0&0&0&-i\\
0&0&i&0\\
0&-i&0&0\\
i&0&0&0\end{pmatrix}\begin{pmatrix}
0&0&1&0\\
0&0&0&-1\\
1&0&0&0\\
0&-1&0&0
\end{pmatrix}=
\begin{pmatrix}
0&1&0&0\\
1&0&0&0\\
0&0&0&1\\
0&0&1&0
\end{pmatrix}=\begin{bmatrix}\sigma_x&0\\0&\sigma_x\end{bmatrix}
</MATH>|25.174}}
Policzmy {{Formuła|<MATH>\hat{\sigma}_y\;</MATH>}} ze wzoru {{LinkWzór|25.30}} znając definicję współrzędnych operatora {{Formuła|<MATH>\hat{\alpha}\;</MATH>}} iksowej i zetowej wiedząc, że zachodzi {{LinkWzór|14.56|Cząstki o spinie połówkowym}} ({{Formuła|<MATH>\sigma_y\;</MATH>}}):
{{CentrujWzór|<MATH>\hat{\sigma}_y=-i\begin{pmatrix}
0&0&1&0\\
0&0&0&-1\\
1&0&0&0\\
0&-1&0&0
\end{pmatrix}\begin{pmatrix}
0&0&0&1\\
0&0&1&0\\
0&1&0&0\\
1&0&0&0
\end{pmatrix}=
\begin{pmatrix}
0&-i&0&0\\
i&0&0&0\\
0&0&0&-i\\
0&0&i&0
\end{pmatrix}=\begin{bmatrix}\sigma_y&0\\0&\sigma_y\end{bmatrix}
</MATH>|25.175}}
Wyznaczmy {{Formuła|<MATH>\hat{\sigma}_z\;</MATH>}} ze wzoru {{LinkWzór|25.31}} znając definicję współrzędnych operatora {{Formuła|<MATH>\hat{\alpha}\;</MATH>}} iksową i igrekową, można powiedzieć wiedząc, że zachodzi {{LinkWzór|14.57|Cząstki o spinie połówkowym}} ({{Formuła|<MATH>\sigma_z\;</MATH>}}):
{{CentrujWzór|<MATH>\hat{\sigma}_z=-i\begin{pmatrix}
0&0&0&1\\
0&0&1&0\\
0&1&0&0\\
1&0&0&0
\end{pmatrix}\begin{pmatrix}
0&0&0&-i\\
0&0&i&0\\
0&-i&0&0\\
i&0&0&0
\end{pmatrix}=\begin{pmatrix}
1&0&0&0\\
0&-1&0&0\\
0&0&1&0\\
0&0&0&-1
\end{pmatrix}=\begin{bmatrix}\sigma_z&0\\0&\sigma_z\end{bmatrix}
</MATH>|25.176}}
Na podstawie {{LinkWzór|25.174}}, {{LinkWzór|25.175}} i {{LinkWzór|25.176}} możemy napisać również ogólną tożsamość na operator {{Formuła|<MATH>\hat\sigma_i\;</MATH>}}:
{{CentrujWzór|<MATH>\hat\sigma_i=\begin{bmatrix}\sigma_i&0\\0&\sigma_i\end{bmatrix}\;</MATH>|25.17y}}
==== Komutacja operatorów α{{Sub|i}} ====
Mamy sobie przyrównanie {{LinkWzór|25.173a}} zbadajmy czemu jest równy komutator dwóch operatorów {{Formuła|<MATH>\hat\alpha</MATH>}} na podstawie {{LinkWzór|14.8|Cząstki o spinie połówkowym}} i {{LinkWzór|25.17y}}:
{{CentrujWzór|<MATH>[\hat\alpha_i,\hat\alpha_j]=\hat\alpha_i\hat\alpha_j-\hat\alpha_j\hat\alpha_i=\begin{pmatrix}0&\sigma_i\\\sigma_i&0\end{pmatrix}\begin{pmatrix}0&\sigma_j\\\sigma_j&0\end{pmatrix}-\begin{pmatrix}0&\sigma_j\\\sigma_j&0\end{pmatrix}\begin{pmatrix}0&\sigma_i\\\sigma_i&0\end{pmatrix}=\begin{pmatrix}\sigma_i\sigma_j&0\\0&\sigma_i\sigma_j\end{pmatrix}-\begin{pmatrix}\sigma_j\sigma_i&0\\0&\sigma_j\sigma_i\end{pmatrix}=\;</MATH>{{Br}}<MATH>=\begin{pmatrix}[\sigma_i,\sigma_j]&0\\0&[\sigma_i,\sigma_j]\end{pmatrix}=2i\epsilon_{ijk}\begin{pmatrix}\sigma_k&0\\0&\sigma_k\end{pmatrix}=2i\epsilon_{ijk}\hat\sigma_k\;</MATH>|25.176d1}}
Na podstawie {{LinkWzór|25.176d1}} możemy napisać komutacje dwóch dowolnych operatorów {{Formuła|<MATH>\hat\alpha_i\;</MATH>}} w sposób:
{{CentrujWzór|<MATH>[\hat\alpha_i,\hat\alpha_j]=2i\epsilon_{ijk}\hat\sigma_k</MATH>|25.176d2}}
==== Antykomutacja operatorów α{{Sub|i}} ====
Mamy sobie przyrównanie {{LinkWzór|25.173a}} zbadajmy czemu jest równy antykomutator dwóch operatorów {{Formuła|<MATH>\hat\alpha</MATH>}} na podstawie {{LinkWzór|O1|Cząstki o spinie połówkowym}}:
{{CentrujWzór|<MATH>\{\hat\alpha_i,\hat\alpha_j\}=\hat\alpha_i\hat\alpha_j+\hat\alpha_j\hat\alpha_i=\begin{pmatrix}0&\sigma_i\\\sigma_i&0\end{pmatrix}\begin{pmatrix}0&\sigma_j\\\sigma_j&0\end{pmatrix}+\begin{pmatrix}0&\sigma_j\\\sigma_j&0\end{pmatrix}\begin{pmatrix}0&\sigma_i\\\sigma_i&0\end{pmatrix}=\begin{pmatrix}\sigma_i\sigma_j&0\\0&\sigma_i\sigma_j\end{pmatrix}+\begin{pmatrix}\sigma_j\sigma_i&0\\0&\sigma_j\sigma_i\end{pmatrix}=\;</MATH>{{Br}}<MATH>=\begin{pmatrix}\{\sigma_i,\sigma_j\}&0\\0&\{\sigma_i,\sigma_j\}\end{pmatrix}=2\begin{pmatrix}\delta_{ij}&0\\0&\delta_{ij}\end{pmatrix}=2\delta_{ij}\;</MATH>|25.176d3}}
Stąd otrzymany związek {{LinkWzór|25.176d3}} jest taki sam jak {{LinkWzór|25.19}}.
==== Antykomutacja operatorów α{{Sub|i}} z operatorem β ====
Weźmy sobie operator {{Formuła|<MATH>\hat\alpha_i\;</MATH>}} {{LinkWzór|25.173a}}, wtedy napiszmy antykomutację:
{{CentrujWzór|<MATH>\{\hat\alpha_i,\hat \beta\}=\hat\alpha_i\hat\beta+\hat\beta\hat\alpha_i=\begin{pmatrix}0&\sigma_i\\\sigma_i&0\end{pmatrix}\begin{pmatrix}I&0\\0&-I\end{pmatrix}+\begin{pmatrix}I&0\\0&-I\end{pmatrix}\begin{pmatrix}0&\sigma_i\\\sigma_i&0\end{pmatrix}=\begin{pmatrix}0&-\sigma_i\\\sigma_i&0\end{pmatrix}+\begin{pmatrix}0&\sigma_i\\-\sigma_i&0\end{pmatrix}=0</MATH>|25.176d4}}
Jak widzimy otrzymaliśmy tożsamość operatorową {{LinkWzór|25.20}}.
==== Operatory σ{{Sub|i}} jako operatory hermitowskie ====
Operatory {{Formuła|<MATH>\hat\sigma_i</MATH>}} są to operatory hermitowskie, co można udowodnić, korzystając przy tym z tożsamości {{LinkWzór|25.29}}, {{LinkWzór|25.30}} i {{LinkWzór|25.31}}, a także z {{LinkWzór|25.16}}, {{LinkWzór|25.17}} i {{LinkWzór|25.18}}, a dowód jego przebiega:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat\sigma_x^{+}=i\hat\alpha^{+}_z\hat\alpha_y^{+}=i\hat\alpha_z\hat\alpha_y=-i\hat\alpha_y\hat\alpha_z=\hat\sigma_x</MATH>|25.33a}}
| 2 = {{CentrujWzór|<MATH>\hat\sigma_y^{+}=i\hat\alpha^{+}_x\hat\alpha_z^{+}=i\hat\alpha_x\hat\alpha_z=-i\hat\alpha_z\hat\alpha_x=\hat\sigma_y</MATH>|25.33b}}
}}
{{CentrujWzór|<MATH>\hat\sigma_z^{+}=i\hat\alpha^{+}_y\hat\alpha_x^{+}=i\hat\alpha_y\hat\alpha_x=-i\hat\alpha_x\hat\alpha_y=\hat\sigma_z</MATH>|25.33c}}
==== Antykomutacja operatorów σ{{Sub|i}} ====
Napiszmy czemu jest równy kwadrat operatora {{Formuła|<MATH>\hat\sigma_i</MATH>}}, ale dowód przeprowadzimy dla i=x,y,z:
{{CentrujWzór|<MATH>\hat\sigma_x^2=(-i\hat\alpha_y\hat\alpha_z)^2=(-i)^2\hat\alpha_y\hat\alpha_z\hat\alpha_y\hat\alpha_z
=\hat\alpha_y\hat\alpha_y\hat\alpha_z\hat\alpha_z=1\cdot 1=1</MATH>|25.34a}}
{{CentrujWzór|<MATH>\hat\sigma_y^2=(-i\hat\alpha_z\hat\alpha_x)^2=(-i)^2\hat\alpha_z\hat\alpha_x\hat\alpha_z\hat\alpha_x
=\hat\alpha_z\hat\alpha_z\hat\alpha_x\hat\alpha_x=1\cdot 1=1</MATH>|25.34b}}
{{CentrujWzór|<MATH>\hat\sigma_z^2=(-i\hat\alpha_x\hat\alpha_y)^2=(-i)^2\hat\alpha_x\hat\alpha_y\hat\alpha_x\hat\alpha_y
=\hat\alpha_x\hat\alpha_x\hat\alpha_y\hat\alpha_y=1\cdot 1=1</MATH>|25.34c}}
A także operatory {{Formuła|<MATH>\hat\sigma_i\;</MATH>}} o róznych współrzędnych antykomutują ze sobą, co udowodnimy poniżej:
{{CentrujWzór|<MATH>\{\hat\sigma_y,\hat\sigma_z\}=\hat\sigma_y\hat\sigma_z+\hat\sigma_z\hat\sigma_y=-\hat\alpha_z\hat\alpha_x\hat\alpha_x\hat\alpha_y-\hat\alpha_x\hat\alpha_y\hat\alpha_z\hat\alpha_x=-\hat\alpha_z\hat\alpha_y-\hat\alpha_y\hat\alpha_z=-\hat\alpha_z\hat\alpha_y+\hat\alpha_z\hat\alpha_y=0\;
</MATH>|25.35a}}
{{CentrujWzór|<MATH>\{\hat\sigma_x,\hat\sigma_z\}=\hat\sigma_x\hat\sigma_z+\hat\sigma_z\hat\sigma_x=-\hat\alpha_y\hat\alpha_z\hat\alpha_x\hat\alpha_y-\hat\alpha_x\hat\alpha_y\hat\alpha_y\hat\alpha_z=-\hat\alpha_z\hat\alpha_x-\hat\alpha_x\hat\alpha_z=-\hat\alpha_z\hat\alpha_x+\hat\alpha_z\hat\alpha_x=0\;
</MATH>|25.35b}}
{{CentrujWzór|<MATH>\{\hat\sigma_x,\hat\sigma_y\}=\hat\sigma_x\hat\sigma_y+\hat\sigma_y\hat\sigma_z=-\hat\alpha_y\hat\alpha_z\hat\alpha_z\hat\alpha_x-\hat\alpha_z\hat\alpha_x\hat\alpha_y\hat\alpha_z=-\hat\alpha_y\hat\alpha_x-\hat\alpha_x\hat\alpha_y=-\hat\alpha_y\hat\alpha_x+\hat\alpha_y\hat\alpha_x=0\;
</MATH>|25.35c}}
Na podstawie dowodu {{LinkWzór|25.34a}}, {{LinkWzór|25.34b}} i {{LinkWzór|25.34c}} oraz {{LinkWzór|25.35a}}, {{LinkWzór|25.35b}} i {{LinkWzór|25.35c}} otrzymujemy zależność z udziałem antykomutatora dla operatorów {{Formuła|<MATH>\hat{\sigma}\;</MATH>}} dla współrzędnych i-tej i j-tej:
{{CentrujWzór|<MATH>\{\hat\sigma_i,\hat\sigma_j\}=2\delta_{ij}\;</MATH>|25.36}}
==== Komutacje operatorów σ{{Sub|i}} ====
Wyznaczmy komutacje operatorów {{Formuła|<MATH>\hat\sigma_i\;</MATH>}}, tzn. {{LinkWzór|25.174}} ({{Formuła|<MATH>\hat\sigma_x\;</MATH>}}), {{LinkWzór|25.175}} ({{Formuła|<MATH>\hat\sigma_y\;</MATH>}}) i {{LinkWzór|25.176}} ({{Formuła|<MATH>\hat\sigma_z\;</MATH>}}) wiedząc, że zachodzi {{LinkWzór|25.29}}, {{LinkWzór|25.30}} i {{LinkWzór|25.31}}, wtedy:
{{CentrujWzór|<MATH>[\hat\sigma_y,\hat\sigma_z]=\hat\sigma_y\hat\sigma_z-\hat\sigma_z\hat\sigma_y=-\hat\alpha_z\hat\alpha_x\hat\alpha_x\hat\alpha_y+\hat\alpha_x\hat\alpha_y\hat\alpha_z\hat\alpha_x=-\hat\alpha_z\hat\alpha_y+\hat\alpha_y\hat\alpha_z=\hat\alpha_y\hat\alpha_z+\hat\alpha_y\hat\alpha_z=2i(-i\hat\alpha_y\hat\alpha_z)=2i\hat\sigma_x=2i\epsilon_{yzx}\hat\sigma_x\;
</MATH>|25.35aa}}{{CentrujWzór|<MATH>[\hat\sigma_x,\hat\sigma_z]=\hat\sigma_x\hat\sigma_z-\hat\sigma_z\hat\sigma_x=-\hat\alpha_y\hat\alpha_z\hat\alpha_x\hat\alpha_y+\hat\alpha_x\hat\alpha_y\hat\alpha_y\hat\alpha_z=-\hat\alpha_z\hat\alpha_x+\hat\alpha_x\hat\alpha_z=-\hat\alpha_z\hat\alpha_x-\hat\alpha_z\hat\alpha_x=-2i(-i\hat\alpha_z\hat\alpha_x)=-2i\hat\sigma_y=\;</MATH>{{Br}}<MATH>=2i\epsilon_{xzy}\hat\sigma_y\;
</MATH>|25.35ba}}
{{CentrujWzór|<MATH>[\hat\sigma_x,\hat\sigma_y]=\hat\sigma_x\hat\sigma_y-\hat\sigma_y\hat\sigma_z=-\hat\alpha_y\hat\alpha_z\hat\alpha_z\hat\alpha_x+\hat\alpha_z\hat\alpha_x\hat\alpha_y\hat\alpha_z=-\hat\alpha_y\hat\alpha_x+\hat\alpha_x\hat\alpha_y=\hat\alpha_x\hat\alpha_y+\hat\alpha_x\hat\alpha_y=2i(-i\hat\alpha_x\hat\alpha_y)=2i\hat\sigma_z=2i\epsilon_{xyz}\hat\sigma_z\;
</MATH>|25.35ca}}
Na podstawie dowodów {{LinkWzór|25.35aa}}, {{LinkWzór|25.35ba}} i {{LinkWzór|25.35ca}} otrzymujemy zależność z udziałem komutatora dla operatorów {{Formuła|<MATH>\hat{\sigma}\;</MATH>}} dla współrzędnych i-tej i j-tej:
{{CentrujWzór|<MATH>[\hat\sigma_i,\hat\sigma_j]=2i\epsilon_{ijk}\hat{\sigma}_k\;</MATH>|25.36a}}
Widzimy, ze komutator dwóch operatorów dowolnych {{Formuła|<MATH>\hat\sigma_i\;</MATH>}} jest wprost proporcjonalny do {{Formuła|<MATH>\hat\sigma_k\;</MATH>}} z czynnikiem {{Formuła|<MATH>2i\epsilon_{ijk}\;</MATH>}}.
Na tym kończymy dowody na współrzędnych operatora {{Formuła|<MaTH>\hat{\sigma}\;</MATH>}} {{LinkWzór|25.51}}, czyli operatorów {{LinkWzór|25.29}}({{Formuła|<MATH>\hat{\sigma}_x\;</MATH>}}), {{LinkWzór|25.30}} ({{Formuła|<MATH>\hat{\sigma}_y\;</MaTH>}}) i {{LinkWzór|25.31}} ({{Formuła|<MatH>\hat{\sigma}_z\;</MATH>}}).
==== Dalsze rozważania na temat operatora Hamiltonianu ====
Pierwszy wyraz występujący po prawej stronie wzoru {{LinkWzór|25.5e}} możemy rozpisać jako iloczyn dwóch takich samych operatorów i wymnożyć je względem siebie. W tym rozpisaniu tego iloczynu występują wyrazy mieszane i niemieszane, przy czym pierwszy wyraz niemieszany zapisujemy zakładając, że zachodzi tożsamość {{LinkWzór|25.15}}:
{{CentrujWzór|<MATH>[\alpha_x(\hat{p}_x-qA_x)]^2=\alpha_x(\hat{p}_x-qA_x)\alpha_x(\hat{p}_x-qA_x)=\alpha_x^2(\hat{p}_x-qA_x)^2=(\hat{p}_x-qA_x)^2</MATH>|25.5g}}
A teraz podejmować się będziemy do wyznaczenia wyrazów mieszanych, tzn. wyrazów, w których występują różne współrzędne tej samej wielkości operatorowej, w tym przypadku poniżej występując współrzędne iksowe i ikregowe:
{{CentrujWzór|<MATH>\alpha_x(\hat{p}_x-qA_x)\alpha_y(\hat{p}_y-qA_y)+\alpha_y(\hat{p}_y-qA_y)\alpha_x(\hat{p}_x-qA_x)=q\alpha_x\alpha_y\left[-\hat{p}_x(A_y\cdot)-A_x\hat{p}_y +\hat{p}_y(A_x\cdot)+A_y\hat{p_x}\right]=</MATH>{{Br}}<MATH>=-q\alpha_x\alpha_y
\left[\hat{p}_xA_y+A_y\hat{p}_x+A_x\hat{p}_y-A_x\hat{p_y}-p_yA_x-A_y\hat{p_x}\right]=-q\alpha_x\alpha_y(-i\hbar)\left({{\partial A_y}\over{\partial x}}-{{\partial A_x}\over{\partial y}}\right)=q\hbar(i\alpha_x\alpha_y)B_z=-q\hbar\sigma_z B_z</MATH>|25.5h}}
Na podstawie {{LinkWzór|25.5g}} i {{LinkWzór|25.5h}}, a także z {{LinkWzór|25.29}}, {{LinkWzór|25.30}} i {{LinkWzór|25.31}} wyrażenie operatorowe {{LinkWzór|25.5e}} możemy przepisać w postaci:
{{CentrujWzór|<MATH>\hat E_r^2=c^2(\hat p-q\vec A)^2-q\hbar c^2\hat \sigma \vec B+m_0^2c^4\hat\beta^{'2}+
\left[m_0c^3\left(\hat \alpha\hat\beta^'+\hat\beta^'\hat\alpha\right)\left(\hat p-q\vec A\right)\right]+m_0c^3\hat \alpha(\hat p\hat \beta^')=\;</MATH>{{Br}}<MATH>=c^2(\hat p-q\vec A)^2+m_0^2c^4\left(\hat\beta^{'2}-{{q\hbar}\over{m_0^2c^2}}\hat\sigma\vec B\right)+\left[m_0c^3\left(\hat \alpha\hat\beta^'+\hat\beta^'\hat\alpha\right)\left(\hat p-q\vec A\right)\right]+m_0c^3\hat \alpha(\hat p\hat \beta^')=\;</MATH>{{Br}}<MATH>=c^2(\hat p-q\vec A)^2+m_0^2c^4\left[\left(\hat\beta^{'2}-{{q\hbar}\over{m_0^2c^2}}\hat\sigma\vec B\right)+\left(\hat \alpha\hat\beta^'+\hat\beta^'\hat\alpha\right){{\hat p-q\vec A}\over{m_0c}}+{{1}\over{m_0c}}\hat \alpha(\hat p\hat \beta^')\right]
</MATH>|25.5l}}
Porównując wzór {{LinkWzór|25.5l}} z kwadratem wyrażenia {{LinkWzór|25.5a}}, wtedy przyjmijmy:
{{CentrujWzór|<MATH>\hat\beta^{'2}-{{q\hbar}\over{m_0^2c^2}}\hat\sigma\vec B=\hat 1\;</MATH>|25.5m}}
Z wyrażenia {{LinkWzór|25.5m}} możemy wywnioskować, że zachodzi wzór na {{Formuła|<MATH>\hat\beta^'\;</MATH>}} w zależności od operatora {{Formuła|<MATH>\hat\beta\;</MATH>}} {{LinkWzór|25.170}} i {{Formuła|<MATH>\hat\sigma\;</MATH>}}, tzn. wzory {{LinkWzór|25.174}}, {{LinkWzór|25.175}} i {{LinkWzór|25.176}} przy przybliżeniu {{Formuła|<MATH>{{q\hbar}\over{m_0^2c^2}}\hat\sigma\vec B\;</MATH>}}, że jest to małe:
{{CentrujWzór|<MATH>\hat 1=\hat\beta^{'2}-{{q\hbar}\over{m_0^2c^2}}\hat\sigma\vec B\Rightarrow\hat\beta^{'2}=\hat 1+{{q\hbar}\over{m_0^2c^2}}\hat \sigma\vec B\Rightarrow \hat\beta^'=\hat \beta\sqrt{\hat 1+{{q\hbar}\over{m_0^2c^2}}\hat\sigma\vec B}\simeq \hat \beta\left(\hat 1+{{q\hbar}\over{2m_0^2c^2}}\hat\sigma\vec B\right)\Rightarrow
\hat\beta^'=\hat\beta+{{q\hbar}\over{2m_0^2c^2}}\hat\beta\hat\sigma\vec B\;</math>|25.5n}}
Udowodnijmy, czy zachodzi antykomutacja pomiędzy operatowami {{LinkWzór|25.5n}}, a operatorami {{Formuła|<MATH>\hat \alpha_i\;</MATH>}}, jeżeli wiadomo, że zachodzi {{LinkWzór|25.5n}}, wtedy:
{{CentrujWzór|<MATH>\{\hat\alpha_i,\hat \beta^'\}=\hat\alpha_i\hat \beta^'+\hat\beta^'\hat \alpha_i=
\hat \alpha_i\hat \beta\left(\hat 1+{{q\hbar}\over{2m_0^2c^2}}\sigma\vec B\right)+\hat \beta\left(\hat 1+{{q\hbar}\over{2m_0^2c^2}}\sigma\vec B\right)\alpha_i=
\hat \alpha_i\hat \beta+\hat \beta\hat\alpha_i+{{q\hbar}\over{2m_0^2c^2}}\left(\alpha_i\beta\hat \sigma\vec B+\hat\beta\hat \sigma\vec B\alpha_i\right)=\;</MATH>{{Br}}<MATH>={{q\hbar}\over{2m_0^2c^2}}\left(\alpha_i\beta\hat \sigma_j+\hat\beta\hat \sigma_j\alpha_i\right)B_j\;</MATH>|25.5o}}
Udowodnijmy czy zachodzi i dla jakich przybliżeń komutacja operatorów {{Formuła|<MATH>\hat \sigma_i\;</MATH>}} i {{Formuła|<MATH>\hat \alpha_j\;</MATH>}} na podstawie definicji tych dwóch operatorów:
{{CentrujWzór|<MATH>\left[\sigma_i,\hat\alpha_j\right]=2i\epsilon_{ijk}\alpha_k\;</MATH>|25.5p}}
Zatem do dzieła:
{{CentrujWzór|<MATH>\left[\sigma_i,\hat\alpha_j\right]=\sigma_i\hat\alpha_j-\hat\alpha_j\sigma_i=\begin{pmatrix}\sigma_i&0\\0&\sigma_i\end{pmatrix}\begin{pmatrix}0&\sigma_j\\\sigma_j&0\end{pmatrix}-\begin{pmatrix}0&\sigma_j\\\sigma_j&0\end{pmatrix}\begin{pmatrix}\sigma_i&0\\0&\sigma_i\end{pmatrix}=\begin{pmatrix}0&\sigma_i\sigma_j\\\sigma_i\sigma_j&0\end{pmatrix}-\begin{pmatrix}0&\sigma_j\sigma_i\\\sigma_j\sigma_i&0\end{pmatrix}=\;</MATH>{{Br}}<MATH>=2i\epsilon_{ijk}\begin{pmatrix}0&\sigma_k\\\sigma_k&0\end{pmatrix}=2i\epsilon_{ijk}\alpha_k\;</MATH>|25.5r}}
Ma podstawie obliczeń {{LinkWzór|25.5r}} zachodzi komutacja operatorów {{Formuła|<MATH>\hat \sigma_i\;</MATH>}} i {{Formuła|<MATH>\hat \alpha_j\;</MATH>}}, a więc zachodzi {{LinkWzór|25.5p}}. Powróczmy jeszcze raz do antykomutacji operatorów {{Formuła|<MATH>\hat\alpha_i\;</MATH>}} i {{Formuła|<MATH>\hat \beta^'\;</MATH>}}, czyli {{LinkWzór|25.5o}}, wtedy na podstawie {{LinkWzór|25.5p}} mamy:
{{CentrujWzór|<MATH>\{\hat\alpha_i,\hat \beta^'\}={{q\hbar}\over{2m_0^2c^2}}\left(\hat\alpha_i\hat\beta\hat \sigma_j+\hat\beta\hat \sigma_j\alpha_i\right)B_j={{q\hbar}\over{2m_0^2c^2}}B_j\left(\hat\alpha_i\hat\beta+\hat\beta\alpha_i\right)\hat\sigma_j+i{{q\hbar}\over{m_0^2c^2}}B_j\epsilon_{jik}\beta\alpha_k=-i{{q\hbar}\over{m_0^2c^2}}B_j\epsilon_{ijk}\beta\alpha_k=\;</MATH>{{Br}}<MATH>=-i{{q\hbar}\over{m_0^2c^2}}\hat\beta(\vec B\times\hat\alpha)_i\;</MATH>|25.5s}}
Musi zachodzić w równaniach Diraca:
{{CentrujWzór|<MATH>\left\|\{\hat\alpha_i,\hat \beta^'\}\right\|={{q\hbar}\over{m_0^2c^2}}\left\|\hat \beta(\vec B\times\hat\alpha)_i\right\|<<1\;</MATH>|25.5s1}}
wtedy następuje antykomutacja operatora {{Formuła|<MATH>\hat\alpha_i\;</MATH>}} i {{Formuła|<MATH>\hat \beta^'\;</MATH>}} na podstawie {{LinkWzór|25.5s}}.
Drugi wyraz w nawiasie kwadratowym w {{LinkWzór|25.5l}} na podstawie założenia {{LinkWzór|25.5s1}} jest w przybliżeniu równy zero.
Udowodnijmy czy trzeci wyraz w {{LinkWzór|25.5l}} jest równy w przybliżeniu zero na podstawie pewnych założeń i definicji {{Formuła|<MATH>\hat\beta^'\;</MATH>}} {{LinkWzór|25.5n}}:
{{CentrujWzór|<MATH>{{1}\over{m_0c}}\hat\alpha(\hat p\hat \beta^')={{1}\over{m_0c}}\hat\alpha_i\hat p_i\left({{q\hbar}\over{2m_0^2c^2}}\hat\beta\hat\sigma\vec B\right)=
-{{1}\over{m_0c}}{{q\hbar}\over{2m_0^2c^2}}\hat\beta\left[\hat p_i\left(\hat\alpha_i\hat\sigma_j\vec B_j\right)\right]\;</MATH>|25.5s2}}
Udowodnijmy dodatkowo wyrażenie, zatem do dzieła:
{{CentrujWzór|<MATH>\left\{\sigma_i,\hat\alpha_j\right\}=\sigma_i\hat\alpha_j+\hat\alpha_j\sigma_i=\begin{pmatrix}\sigma_i&0\\0&\sigma_i\end{pmatrix}\begin{pmatrix}0&\sigma_j\\\sigma_j&0\end{pmatrix}+\begin{pmatrix}0&\sigma_j\\\sigma_j&0\end{pmatrix}\begin{pmatrix}\sigma_i&0\\0&\sigma_i\end{pmatrix}=\begin{pmatrix}0&\sigma_i\sigma_j\\\sigma_i\sigma_j&0\end{pmatrix}+\begin{pmatrix}0&\sigma_j\sigma_i\\\sigma_j\sigma_i&0\end{pmatrix}=\;</MATH>{{Br}}<MATH>=\begin{pmatrix}0&2i\delta_{ij}\\2i\delta_{ij}&0\end{pmatrix}=2i\delta_{ij}\;</MATH>|25.5s3}}
i odejmijmy obie strony wyrażeń {{LinkWzór|25.5r}} i {{LinkWzór|25.5s3}}, wtedy dostajemy równość:
{{CentrujWzór|<MATH>\alpha_i\hat\sigma_j=i\delta_{ij}+i\epsilon_{ijk}\alpha_k\;</MATH>|25.5s4}}
Na podstawie tożsamości {{LinkWzór|25.5s4}} wyrażenie {{LinkWzór|25.5s2}} możemy przepisać w postaci:
{{CentrujWzór|<MATH>{{1}\over{m_0c}}\hat\alpha(\hat p\hat \beta^')=-{{1}\over{m_0c}}{{q\hbar}\over{2m_0^2c^2}}\hat\beta\left[\hat p_i\left( i\delta_{ij}+i\epsilon_{ijk}\alpha_k\right)B_j\right]=-{{1}\over{m_0c}}{{q\hbar}\over{2m_0^2c^2}}\hat\beta\left(i\hat p_iB_i+i\hat p_i\epsilon_{ijk}\alpha_k B_j\right)=-i {{1}\over{m_0c}}{{q\hbar}\over{2m_0^2c^2}}\hat\beta\hat p(\vec B\times\hat \alpha)\;</MATH>|25.5s5}}
Zakładamy w równaniach Diraca, że zachodzi:
{{CentrujWzór|<MATH>\left\|{{1}\over{m_0c}}\hat\alpha(\hat p\hat \beta^')\right\|={{1}\over{m_0c}}{{q\hbar}\over{2m_0^2c^2}}\left\|\hat\beta\hat p(\vec B\times\hat \alpha)\right\|<<1</MATH>|25.5s6}}
Na podstawie {{LinkWzór|25.5s6}} trzeci wyraz w nawiasie kwadratowym w {{LinkWzór|25.5l}} jest w przybliżeniu równy zero.
Napiszmy operator energii relatywistycznej na podstawie związku na {{Formuła|<MATH>\hat\beta^'\;</MATH>}} {{LinkWzór|25.5n}} i {{LinkWzór|25.5c}}, wtedy:
{{CentrujWzór|<MATH>\hat E_r=c\hat\alpha(\hat p-q\vec A)+m_0c^2\hat \beta\left(\hat 1+{{q\hbar}\over{2m_0^2c^2}}\hat\sigma\vec B\right)=c\hat\alpha(\hat p-q\vec A)+m_0c^2\hat\beta+{{q\hbar}\over{2m_0}}\hat\beta\hat\sigma\vec B\;</MATH>|25.5q}}
Wartości własne operatora {{Formuła|<MATH>\hat\beta\;</MATH>}} {{LinkWzór|25.170}}, czyli {{Formuła|<MATH>\beta=\pm 1\;</MATH>}}, a operatora {{Formuła|<MATH>\sigma_i\;</MATH>}} {{LinkWzór|25.174}}, {{LinkWzór|25.175}} i {{LinkWzór|25.175}}, czyli {{Formuła|<MATH>\sigma_i=\pm 1\;</MATH>}}, a wartości własne operatora {{Formuła|<MATH>\hat \beta\hat \sigma_i\;</MATH>}} są 1 i -1, stąd na podstawie tego możemy napisać na podstawie definicji {{Formuła|<MATH>\hat\beta\;</MATH>}} {{LinkWzór|25.170}} i {{Formuła|<MATH>\hat\sigma_i\;</MATH>}} {{LinkWzór|25.17y}} oraz definicji wartości własnej i wektora własnego:
{{CentrujWzór|<MATH>\hat\beta\hat\sigma_i\vec X=\begin{bmatrix}\sigma_i&0\\0&-\sigma_i\end{bmatrix}\vec X=\begin{bmatrix}\pm I&0\\0&\mp I\end{bmatrix}\vec X=
\begin{bmatrix}\sigma_i&0\\0&\sigma_i\end{bmatrix}\vec X=\hat\sigma_i\vec X\;</MATH>|25.5q12}}
* gdzie {{Formuła|<MATH>\vec X\;</MATH>}} jest to przestrzeń wektorów własnych, odpowiadające danej wartości własnej operatora {{Formuła|<MATH>\hat\sigma_i\;</MATH>}}, ta przestrzeń dla {{Formuła|<MATH>\hat\beta\hat\sigma_i\;</MATH>}} jest taka sama jak dla {{Formuła|<MATH>\hat\sigma_i\;</MATH>}}.
Stąd z definicji operatora {{Formuła|<MATH>\hat E_r\;</MATH>}} {{LinkWzór|25.5q}} na podstawie wniosków {{LinkWzór|25.5q12}} możemy napisać inną zmodyfikowaną wersję operatora energii relatywistycznej {{Formuła|<MATH>\hat E_r\;</MATH>}} w taki sposób by wartości własne i wektory własne dla obu operatorów {{Formuła|<MATH>\hat E_r\;</MATH>}} były takie same:
{{CentrujWzór|<MATH>\hat E_r=c\hat\alpha(\hat p-q\vec A)+m_0c^2\hat\beta+{{q\hbar}\over{2m_0}}\hat\sigma\vec B\;</MATH>|25.5q2}}
Przepiszmy operator {{LinkWzór|25.5q2}} w postaci wydzielając przed nawias wyrażenie {{Formuła|<MATH>m_0c^2\;</MATH>}} w {{LinkWzór|25.5q2}}, wtedy:
{{CentrujWzór|<MATH>\hat E_r=c\hat\alpha(\hat p-q\vec A)+m_0c^2\left(\hat\beta+{{q\hbar}\over{2m_0^2c^2}}\hat\sigma\vec B\right)\;</MATH>|25.5q3}}
Na podstawie tego możemy napisać zmodyfikowaną wersję operatora {{Formuła|<MATH>\hat\beta^'\;</MATH>}} na podstawie {{LinkWzór|25.5c}}:
{{CentrujWzór|<MATH>\hat \beta^'=\hat\beta+{{q\hbar}\over{2m_0^2c^2}}\hat\sigma\vec B\;</MATH>|25.5q4}}
A ponieważ na podstawie wzóru {{LinkWzór|14.6|Cząstki_o_spinie_połówkowym}} i wzoru {{LinkWzór|14.1|Cząstki_o_spinie_połówkowym}}, a także wzoru na energię ramki {{LinkWzór|11.12|Elementarne właściwości materii w polu magnetycznym|Elektrodynamika klasyczna|EK}} zachodzi:
{{CentrujWzór|<MATH>\hat U=-\hat \mu\vec B=-{{q}\over{m_0}}\hat s\vec B=-{{q\hbar}\over{2m_0}}\hat\sigma\vec B\;</MATH>|25.5q5}}
Całkowity Hamiltonian jest sumą operatorów energii relatywistycznej ciała {{LinkWzór|25.5q2}}, energii ramki {{LinkWzór|25.5q5}} i operatora uwzględniająca energię potencjalną w polu elektrycznym, wtedy on jest równy:
{{CentrujWzór|<MATH>\hat H=\hat E_r+\hat U+\hat E_p=c\hat\alpha (\hat p-q\vec A)+m_0c^2\hat\beta+q\varphi\;</MATH>|25.24}}
Operator energii mechanicznej {{LinkWzór|25.24}} oraz na podstawie {{LinkWzór|25.5s1}} i {{LinkWzór|25.5s6}} jest spełniony tylko dla słabych pól magnetycznych i małych zmian pola magnetycznego w przestrzeni.
Hamiltonian Diraca {{LinkWzór|25.24}} jest spełniony dla słabych i małych zmian pól magnetycznych, a matematycznie dla pól magnetycznych i ich zmian dążących do zera.
== Pełne równanie Diraca z uwzględnieniem pól elektrycznych, magnetycznych i innych ==
Widzimy, że hamiltonian {{LinkWzór|25.24}} jest zależny od potencjału wektorowego pola magnetycznego i skalarnego pola elektrycznego.
Uogólnimy operator Hamiltonianu dla układu n cząstek znajdujących się wzajemnych polach potencjalnych i w polu zewnętrznym:
{{CentrujWzór|<MATH>\hat H=\sum_i\left[c\hat{\alpha}(\hat{p}_i-q_i\vec{A}_i)+m_{0i}c^2\hat{\beta}\right]+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_iq_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_{i}\;</MATH>|25.24a}}
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
kilmsd9sm9a7js9zoqliu5xd1kw2ccv
Mechanika kwantowa/Asymptotyczne właściwości wektora własnego Hamiltonianu, a jego przekroje
0
15715
558851
470225
2026-10-07T13:04:52Z
Persino
2851
558851
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
== Fala asymptotyczna i jego przekrój różniczkowy i całkowity ==
Przez σ(φθ) oznaczamy liczbę cząstek rozproszonych w jednostce czasu, w jednostce kąta bryłowego przypadającego na jednostkę strumienia padającego nazywamy różniczkowym przekrojem czynnym.
Całkowitym przekrojem czynnym nazywamy całkę po różniczkowym przekroju czynnym względem kąta bryłowego po całym możliwym kącie bryłowym jakie może zachodzić w rozważanym przypadku:
{{CentrujWzór|<MATH>\sigma=\int\sigma(\phi\theta)d\Omega</MATH>|29.1}}
Kątem bryłowym nazywamy wyrażenie zdefiniowanej jako infinitezymalna powierzchnia na sferze podzielona przez promień krzywizny tej powierzchni:
{{CentrujWzór|<MATH>d\Omega={{dS}\over{r^2}}={{r\sin\phi d\theta rd\phi}\over{r^2}}={{r^2\sin\phi d\theta d\phi}\over{r^2}}=\sin\phi d\theta d\phi\;</MATH>|29.2}}
Weźmy pod oszczał równanie własne operatora energii {{LinkWzór|7.123|Postulat_drugi_mechaniki_kwantowej}} i pomnóżmy go przez odwrotność wyrażenia będącego kombinacją masy cząstki badanej i jednej stałej fizycznej: {{Formuła|<MATH>-{{\hbar^2}\over{2m}}</MATH>}}, otrzymamy równość:
{{CentrujWzór|<MATH>\left\{\nabla^2-V(r){{2m}\over{\hbar^2}}\right\}\psi=-E{{2m}\over{\hbar^2}}\psi</MATH>|29.3}}
W otrzymanym równaniu {{LinkWzór|29.3}} przenosimy wyraz z prawej strony w tym równaniu różniczkowym, który jest funkcją energii własnej równania własnego operatora energii, na jego lewą stronę dając równanie:
{{CentrujWzór|<MATH>\left\{\nabla^2+{{2mE}\over{\hbar^2}}-{{2mV(r)}\over{\hbar^2}}\right\}\psi=0</MATH>|29.4}}
Następnie wprowadźmy poniższe oznaczenia stałej k{{Sup|2}} i W(r) poprzez energię własną cząstki (pierwsze oznaczenie) i przez energię potencjalną cząstki (drugie oznaczenie), które będą nam potrzebne do dalszych obliczeń:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>k^2={{2mE}\over{\hbar^2}}</MATH>|29.5}}
| 2 = {{CentrujWzór|<MATH>W(r)={{2mV(r)}\over{\hbar^2}}</MATH>|29.6}}
}}
Przy oznaczeniach powyższych {{LinkWzór|29.5}} (k{{Sup|2}}) i {{LinkWzór|29.6}} (W(r)) do równania {{LinkWzór|29.4}}, to wspomniane równanie zapisujemy:
{{CentrujWzór|<MATH>\left\{\nabla^2+k^2-W(r)\right\}\psi=0</MATH>|29.7}}
Połóżmy jako rozwiązanie równania różniczkowego {{LinkWzór|29.7}} jako sumę rozwiązań funkcji bez energii potencjalnej (W(r)=0) dla fali płaskiej rozchodzącej się równoległe do osi "z" i z zaburzeniem zależnym od promienia r względem kulistego układu współrzędnych, możemy go zapisać w postaci:
{{CentrujWzór|<MATH>\psi\sim e^{ikz}+f(\phi){{e^{ikr}}\over{r}}</MATH>|29.8}}
Druga cześć {{LinkWzór|29.8}} przedstawia falę kulistą zależną od położenia radialnego r cząstki.
Ponieważ kwadrat modułu funkcji falowej jest gęstością prawdopodobieństwa znalezienia cząstki, a zatem infinitezymalne prawdopodobieństwo w pewnym elemencie objętości na jednostkę czasu jest równe:
{{CentrujWzór|<MATH>\left|{{f(\phi)e^{ikz}}\over{r}}\right|^2vdS={{|f(\phi)|^2}\over{r^2}}vdS=v|f(\phi)|^2d\Omega</MATH>|29.9}}
Różniczkowym przekrojem czynnym nazywamy liczbę cząstek rozproszonym w jednostce czasu i kąta bryłowego, czyli v|f(φ)|{{Sup|2}}, przypadające na jednostkę strumienia padającego "v" przez strumień padający "v", zatem przekrojem czynnym, korzystając z definicji kąta bryłowego {{LinkWzór|29.2}}, nazywamy wyrażenie:
{{CentrujWzór|<MATH>\sigma(\phi)d\Omega={{v|f(\phi)|^2d\Omega}\over{v}}=|f(\phi)|^2d\Omega\;</MATH>|29.10}}
Zatem przekrój czynny na podstawie {{LinkWzór|29.10}}, wyraża się jako kwadrat modułu funkcji f(φ), który występuje w wyrażeniu {{LinkWzór|29.8}}:
{{CentrujWzór|<MATH>\sigma(\phi)=|f(\phi)|^2\;</MATH>|29.11}}
A całkowity przekrój czynny, według {{LinkWzór|29.1}}, wyraża się jako całka z przekroju różniczkowego z definiowanej przez {{LinkWzór|29.11}}:
{{CentrujWzór|<MATH>\sigma=\int\sigma(\phi)d\Omega=d\Omega=\int|f(\phi)|^2d\Omega\;</MATh>|29.12}}
== Asymptotyczne rozwiązanie Hamiltonianu a przybliżenie Borna ==
Rozwiązaniem własnym hamiltonianu (operatora energii) jest przybliżenie:
{{CentrujWzór|<MATH>\psi=\psi_0+\psi_1\;</MATH>|29.13}}
* gdzie ψ{{Sub|0}} jest to rozwiązanie hamiltonianu niezaburzonego, czyli operatora energii kinetycznej,
* ψ{{Sub|1}} jest to rozwiązanie hamiltonianu zaburzonego o człon energii potencjalnej.
Możemy wykorzystać wzór {{LinkWzór|29.7}} oraz przybliżenie {{LinkWzór|29.13}}, można zapisać wspomniane pierwsze równanie wedle sposobu:
{{CentrujWzór|<MATH>\left\{\nabla^2+k^2-W(r)\right\}\psi=0\Rightarrow \left\{\nabla^2+k^2-W(r)\right\}\left(\psi_0+\psi_1\right)=0</MATh>|29.14}}
Po dalszych przekształceniach wzoru {{LinkWzór|29.14}}, tzn. wykorzystując twierdzenie rozdzielności mnożenia względem dodawania, otrzymujemy:
{{CentrujWzór|<MATH>\left\{\nabla^2+k^2\right\}(\psi_0+\psi_1)-W(r)(\psi_0+\psi_1)=0\Rightarrow\left\{\nabla^2+k^2\right\}\psi_0+\left\{\nabla^2+k^2\right\}\psi_1-W(r)(\psi_0+\psi_1)=0</MATH>|29.15}}
Wykorzystajmy warunek na ψ{{Sub|0}} w {{LinkWzór|29.15}}, który jest rozwiązaniem wynikających z równania na operator energii kinetycznej (hamiltonianu niezaburzonego), tzn. z równania wynikającego z równania własnego energii kinetycznej, których to rozwiązaniem jest funkcja falowa ψ{{Sub|0}}.
{{CentrujWzór|<MATH>\left\{\nabla^2+k^2\right\}\psi_0=0</MATH>|29.16}}
Udowodnimy, czy rzeczywiście równanie {{LinkWzór|29.16}} jest równaniem własny operatora energii kinetycznej, jak założyliśmy wcześniej, zatem to równanie różniczkowe przy pomocy oznaczenia stałej k{{Sup|2}} wedle {{LinkWzór|29.5}} piszemy:
{{CentrujWzór|<MATH>\left\{\nabla^2+{{2mE}\over{\hbar^2}}\right\}\psi=0\Rightarrow -{{\hbar^2}\over{2m}}\psi_0=E\psi\;</MATH>|29.17}}
Co kończy nasz dowód.
Możemy wykorzystać wzór {{LinkWzór|29.16}} przy pisaniu wzoru {{LinkWzór|29.15}}, dostaniemy inne wynikowe równanie:
{{CentrujWzór|<MATH>\left\{\nabla^2+k^2\right\}\psi_1=W(r)(\psi_0+\psi_1)=0</MATH>|29.17a}}
Korzystając że w rachunku zaburzeń, dowiadujemy się, że funkcja ψ{{Sub|1}} jest zbyt małą funkcją w porównaniu z funkcją ψ{{Sub|0}}, czyli ψ{{Sub|0}}>>ψ{{Sub|1}}, czyli ze ścisłego równania różniczkowego dochodzimy do równania przybliżonego wynikającego ze wzoru {{LinkWzór|29.17}}:
{{CentrujWzór|<MATH>\left(\nabla^2+k^2\right)\psi_1=W(r)\psi_0</MATH>|29.18}}
Rozwiązaniem niezaburzonego równania własnego hamiltonianu dla fali płaskiej rozchodzącą się równolegle do osi "z", jest napisana w postaci rozwiązania:
{{CentrujWzór|<MATH>\psi_0=e^{ikz}\;</MATH>|29.19}}
Równanie {{LinkWzór|29.18}} przy pomocy rozwiązania niezaburzonego hamiltonianu {{LinkWzór|29.19}} zapisujemy:
{{CentrujWzór|<MATH>\left(\nabla^2+k^2\right)\psi_1=W(r) e^{ikz}</MATH>|29.20}}
Rozwiązaniem równania {{LinkWzór|29.20}} jest rozwiązanie w postaci funkcji {{LinkWzór|20.7|Funkcje_Greena|Metody_matematyczne_fizyki|MMF}}, bo wykorzystaliśmy przybliżenie {{LinkWzór|29.13}} i obliczoną funkcję Greena {{LinkWzór|28.19|Funkcje_Greena_w_teorii_kwantów}} dla równania nieratywistycznego Schrödingera ze znakiem plus w eksponensie, bo interesują nas fale rozchodzące się od źródła, zatem poprawka rozwiązania do rozwiązania fali płaskiej jest zapisana w sposób:
{{CentrujWzór|<MATH>\psi_1=\int W(r) e^{ikz}G(\vec{r},\vec{r}^')d^3\vec{r}^'=
-{{1}\over{4\pi}}\int W(r^')e^{ikx}{{e^{i k_0 |\vec{r}-\vec{r}^'|}}\over{|\vec{r}-\vec{r}^'|}}d^3\vec{r}^'\;</MATH>|29.21}}
Całe przybliżone rozwiązanie równania {{LinkWzór|29.7}} z poprawką do fali płaskiej rozchodzących się od źródła {{LinkWzór|29.21}} wyraża się wedle równania:
{{CentrujWzór|<MATH>\psi(r)=e^{ikz}-{{1}\over{4\pi}}\int W(r^')e^{ikx}{{e^{i k_0 |\vec{r}-\vec{r}^'|}}\over{|\vec{r}-\vec{r}^'|}}d^3\vec{r}^'</MATH>|29.22}}
wyznaczmy czemu jest równy kwadrat modułu różnicy wektora {{Formuła|<MATH>\vec{r}\;</MATH>}} i {{Formuła|<MATH>\vec{r}^'\;</MATH>}}, gdy mamy do czynienia z bardzo dużą odległością r od źródła fal. Z dobrym przybliżeniem dla bardzo dużych odległości od środka układu kulistego można zapisać przybliżenie:
{{CentrujWzór|<MATH>|\vec{r}-\vec{r}^'|^2\simeq|\vec{r}-\vec{r}^'|r</MaTH>|29.23}}
Ale i też z drugiej strony można powiedzieć, wiedząc co to jest kwadrat modułu różnicy wektora, i dalej będziemy robić przekształcenia, jak podnieść tą różnice do kwadratu ze wzorów skróconego mnożenia:
{{CentrujWzór|<MATH>|\vec{r}-\vec{r}^'|^2=r^2+{r^'}^2-2\vec{r}\vec{r}^'\simeq r^2+{r^'}^2-{r^'}{r^'}-\vec{r}\vec{r}^'=r^2-\vec{r}\vec{r}^'</MATH>|29.24}}
Zatem na podstawie {{LinkWzór|29.23}} i {{LinkWzór|29.24}}, zapisujemy na pewno:
{{CentrujWzór|<MATH>|\vec{r}-\vec{r}^'|r\simeq r^2-\vec{r}\vec{r}^'</MATH>|29.25}}
{{Rysunek|Przybliżenie długości różnicy wektorów.PNG|ght|Rysunek obrazujący przybliżenie {{LinkWzór|29.26}}.}}
Równanie {{LinkWzór|29.25}} dzielimy obustronnie przez wielkość r, otrzymujemy:
{{CentrujWzór|<MATH>|\vec{r}-\vec{r}^'|\simeq r-{{\vec{r} \vec{r}^'}\over{r}}</MATH>|29.26}}
Widzimy na rysunku obok, że różnica {{Formuła|<math>\vec{r}-\vec{r}^'\;</MATH>}} jest prawie równoległa do {{Formuła|<MATH>\vec{r}\;</MATH>}}, zatem ta nasza różnica dwóch wektorów nieprimowanego i primowanego jest równa różnicy dwóch wektorów równoległych, a wartość tej różnicy, tzn. różnicy długości r i małego odcinka jest widoczna na rysunku, tak jak we wzorze {{LinkWzór|29.26}}.
Pomnóżmy obustronnie {{LinkWzór|29.26}} przez k, wtedy wprowadzamy pewne oznaczenia co do parametru {{Formuła|<MATH>\vec {k}^'\;</MATH>}}, pamiętając o tym, otrzymujemy:
{{CentrujWzór|<MATH>k|\vec{r}-\vec{r}^'|\simeq kr-k{{\vec{r} \vec{r}^'}\over{r}}= kr-\vec{k}^' r^'</MAth> bo <MATH>\vec{k}^'=k{{\vec{r}}\over{r}}</MATH>|29.27}}
Wyznaczmy wyrażenie poniżej w sposób przybliżony, korzystając przy tym z wyrażenia przybliżonego występującego {{LinkWzór|29.27}}, zatem:
{{CentrujWzór|<MATH>{{\exp(ik|\vec{r}-\vec{r}^'|)}\over{|\vec{r}-\vec{r}^'|}}={{k\exp(i(kr-\vec{k}^'\vec{r}^'))}\over{kr-\vec{k}^'\vec{r}^'}}=
{{k\exp(ikr)}\over{kr-\vec{k}^'\vec{r}^'}}\exp(-\vec{k}^'\vec{r}^')\simeq
{{e^{ikr}}\over{r}}e^{-\vec{k}^'\vec{r}^'}</MATH>|29.28}}
Przybliżenie {{LinkWzór|29.28}} możemy wykorzystać do wzoru na funkcję {{LinkWzór|29.22}}, która jest rozwiązaniem równania różniczkowego {{LinkWzór|29.7}}, przy dokonywaniu obliczeń:
{{CentrujWzór|<MATH>\psi=e^{ikz}-{{1}\over{4\pi}}\int {{e^{ikr}}\over{r}}e^{-i\vec{k}^'\vec{r}^'}W(r^')e^{ikz^'}d^3\vec{r}^'
=e^{ikz}-{{1}\over{4\pi}}{{e^{ikr}}\over{r}}\int e^{-i\vec{k}^'\vec{r}^'}e^{ikz^'}W(r^')d^3\vec{r}^'=\;</MATH><BR><MATH>=e^{ikz}-{{1}\over{4\pi}}{{e^{ikr}}\over{r}}\int e^{i(kz^'-\vec{k}^'\vec{r}^')}W(r^')d^3\vec{r}^'</MATH>|29.29}}
Porównujemy obliczenia {{LinkWzór|29.29}} do {{LinkWzór|29.8}}, które te wzory oznaczają to samo, zatem dostajemy wzór na funkcję f(φ), która jak się przekonamy poniżej jest całką po całej trójwymiarowej przestrzeni trzywymiarowej względem wektora wodzącego primowanego {{Formuła|<MATH>\vec{r}^'\;</MATH>}}:
{{CentrujWzór|<MATH>f(\phi)=-{{1}\over{4\pi}}\int e^{i(kz^'-\vec{k}^'\vec{r}^')}W(r^')d^3\vec{r}^'</MATH>|29.30}}
Doszliśmy do wniosku, że przybliżenie asymptotyczne Borna {{LinkWzór|29.8}} jest twierdzeniem prawdziwym (dla odległości od źródła dla r bardzo dużych).
Również można udowodnić, że zachodzi tożsamość:
{{CentrujWzór|<MATH>kz^'-\vec {k}^'\vec{r}^'=k_x x^'-k_yy^'-(k_z-k) z^'=\vec{n}\vec{r}^'</MATH>|29.31}}
W wyrażeniu {{LinkWzór|29.31}} prowadziliśmy definicję wektora {{Formuła|<MATH>\vec{n}\;</MATH>}}, którego definicja jest napisana poniżej, i ten wektor jest zależny od liczby falowej k fali płaskiej bez zaburzenia wraz z wielkościami współrzędnych primowanych {{Formuła|<MATH>k^'_i\;</MATH>}} zdefiniowanej wedle opisu {{LinkWzór|29.27}}:
{{CentrujWzór|<MATH>\vec{n}=\left(k^'_x,-k^'_y,-(k^'_z-k)\right)</MATH>}}
Możemy wykorzystać wyrażenie {{LinkWzór|29.31}} i podstawić go do wzoru {{LinkWzór|29.30}}, wtedy dostajemy bardziej uproszczone wyrażenie na funkcję f(φ).
{{CentrujWzór|<MATH>f(\phi)=-{{1}\over{4\pi}}\int e^{i\vec{n}\vec {r}^'}W(\vec{r}^')d^3\vec{r}^'</MATH>|29.32}}
Wprowadźmy taki układ, w którym wektor {{Formuła|<MATH>\vec{n}</MATH>}} ma kierunek równoległy do osi zetowej, wtedy całkę {{LinkWzór|29.32}} we współrzędnych kulistych możemy policzyć w sposób bardzo łatwy i przyjemny.
{{CentrujWzór|<MATH>f(\phi)=-{{1}\over{4\pi}}\int e^{inr^'\cos(\phi^')}W(r^')\sin\phi^' d\phi^' d\theta^' {r^'}^2dr^'={{1}\over{4\pi}}\int e^{inr^'\cos\phi^'}W(r^')d\cos\phi^'d\theta^'{r^'}^2dr^'=\;</MATH><BR><MATH>={{1}\over{4
\pi}}\int \left[{{e^{inr^'\cos\phi^'}}\over{inr^'}}\right]^{\pi}_{0}W(r^'){r^'}^2dr^'d\theta^'={{1}\over{4\pi}}\int\left({{e^{-inr^'}-e^{inr^'}}\over{inr^'}}\right)W(r^'){r^'}^2dr^'d\theta^'=\;</MATH><BR><MATH>=-{{1}\over{2\pi}}\int \left({{e^{inr^'}-e^{-inr^'}}\over{2inr^'}}\right)W(r^'){r^'}^2dr^'d\theta^'=-{{1}\over{2\pi}}\int{{\sin nr^'}\over{nr^'}}{r^'}^2W(r^')dr^'d\theta^'=-\int{{\sin nr^'}\over{nr^'}}{r^'}^2W(r^')dr^'</MATH>|29.33}}
Policzmy czemu jest równy kwadrat wektora {{Formuła|<MATH>\vec{n}\;</MATH>}}, czyli będziemy wyznaczać wielkość n{{Sup|2}}, zatem nasze obliczenia, które przeprowadziliśmy poniżej, doprowadzą nasz do zależności tej wielkości tylko od współrzędnych kątowej i od liczby falowej fali materii rozchodzącej się wzdłuż osi zetowej.
{{CentrujWzór|<MATH>n^2=(k^'_x)^2+{k^'_y}^2+(k-k^'_z)^2={k^'_x}^2+{k^'_y}^2+{k^'_z}^2+k^2-2k^'_zk={k^'}^2+k^2-2k k^'_z\simeq k^2+k^2-2kk^'_z=2k^2-2kk^'_z=\;</MATH><BR><MATH>=2k^2-2k k\cos\phi=2k^2(1-\cos\phi)=4k^2\sin^2{{\phi}\over{2}}</MATH>|29.34}}
Ostatecznie otrzymujemy długość wektora {{Formuła|<MATH>\vec{n}\;</MATH>}}, zdefiniowanego wcześniej:
{{CentrujWzór|<MATH>n\simeq 2k\sin{{\phi}\over{2}}</MATH>|29.35|Obramuj}}
Udowodniliśmy, że wektor zdefiniowany według wzoru powyżej ma długość zależną od stałej k (liczby falowej fali) i od kąta zenitalnego φ.
== Rozwinięcie w falach cząstowych S,P,D,... ==
=== Rozwinięcie funkcji rozwiązania operatora energii kinetycznej ===
Rozwinięcie funkcji e{{Sup|ikz}} w bazie funkcji ortogonalnych Legendre'a {{LinkWzór|9.33|Wprowadzenie_do_wielomianów_ortogonalnych|Metody_matematyczne_fizyki|MMF}} piszemy wedle wzoru {{LinkWzór|11.78|Funkcje_Bessela|Metody_matematyczne_fizyki|MMF}}, które określiliśmy w punkcie w podręczniku z [[Metody_matematyczne_fizyki|metod matematycznych fizyki]], którego wzór ten przypomnimy tutaj dla przejrzystości dalszego toku wykładu:
{{CentrujWzór|<MATH>e^{ikz}=\sum_{l=0}^{\infty}i^n(2l+1){{\sin\left(kr-l{{\pi}\over{2}}\right)}\over{kr}}P_l(\phi)\;</MATH>|29.36}}
=== Asymptotyczne rozwinięcie funkcji falowej rozwiązania Hamiltonianu ===
Poszukujemy rozwiązania asyptotycznego równania różniczkowego {{LinkWzór|29.7}}, który zapisujemy jako iloczyn funkcji kątowej (Lagrange'a) i radialnej, w którym zapisujemy w sposób ogólny jako rozwiązania dla ściśle określonej liczby kwantowej orbitalnego momentu pędu:
{{CentrujWzór|<MATH>\psi_l=P_l(\cos\phi)F_l(r)\;</MATH>|29.37}}
Niech funkcja zależąca od współrzędnej radialnej F{{Sub|l}}(r) w układzie współrzędnych kulistych dla tożsamości {{LinkWzór|29.37}} spełnia warunek poprzez funkcję R(r) w sposób:
{{CentrujWzór|<MATH>F_l(r)={{R(r)}\over{r}}\Rightarrow R(r)=rF_l(r)</MATH>|29.38}}
Ponieważ ∇{{Sup|2}}=Δ jest zdefiniowany według równania {{LinkWzór|5.41|Postulat_pierwszy_mechaniki_kwantowej}} we współrzędnych kulistych, wtedy nasze rozważane równanie różniczkowego {{LinkWzór|29.7}}, które wynika z równania własnego mechaniki kwantowej klasycznej, jeśli wykorzystamy wartości własne operatora momentu pędu poprzez liczby kwantowe "l", przyjmuje postać:
{{CentrujWzór|<MATH>{{d^2R(r)}\over{dr^2}}+\left[k^2-W(r)-{{l(l+1)}\over{r^2}}\right]R(r)=0</MATH>|29.39}}
Dla dużych r funkcja W(r) nie pozostawia śladów w asymptotycznym rozwiązaniu {{LinkWzór|29.37}}, bo ona spełnia warunek w granicy dla położenia radialnego nieskończonego:
{{CentrujWzór|<MATH>\lim_{r\rightarrow\infty}W(r)=0</MATH>|29.40}}
Zatem funkcja F{{Sub|l}}(r) ma bardzo podobną asymptotyczną podstać do funkcji f{{Sub|l}}(r) {{LinkWzór|29.51}}, ale w funkcji sinus występuje przesunięcie w fazie, zatem tą funkcję zapisujemy wedle sposobu:
{{CentrujWzór|<MATH>F_l(r)\xrightarrow[r\rightarrow\infty]{}{{1}\over{kr}}\sin(kr-{{1}\over{2}}l\pi+\alpha_l)</MATH>|29.58}}
Rozłóżmy funkcję własną ψ w bazie funkcji {{LinkWzór|29.37}}, bo stany kwantowe orbitalnej liczby kwantowej mogą być różne, a więc całkowita funkcja jest kombinacją liniową funkcji ψ{{Sub|l}}, która jest rozwiązaniem pełnym dla równania różniczkowego {{LinkWzór|29.7}}, ale już na pewno dla równania różniczkowego {{LinkWzór|29.39}}, zatem:
{{CentrujWzór|<MATH>\psi(r,\phi)=\sum^{\infty}_{l=0}B_lP_l(\cos\phi)F_l(r)={{1}\over{kr}}\sum^{\infty}_{l=0}B_lP_l(\cos\phi)\sin(kr-{{1}\over{2}}l\pi+\alpha_l)</MATH>|29.41}}
Całkowita funkcja własna dla równania różniczkowego {{LinkWzór|29.7}}, jest przedstawiana według {{LinkWzór|29.8}}, przekształcając ją odpowiednio, by wyznaczyć drugi składnik tej sumy, można zapisać:
{{CentrujWzór|<MATH>{{f(\phi)}\over{r}}e^{ikr}=\psi(r,\phi)-e^{ikz}</MATH>|29.42}}
Wykorzystajmy rozwinięcie odjemnika w {{LinkWzór|29.42}} według rozważań w {{LinkWzór|29.41}} i rozwinięcia funkcji fali płaskiej w bazie funkcji Legendre'a {{LinkWzór|29.36}}, wtedy równanie powyższe pomnożoną obustronnie przez promień r zapisujemy:
{{CentrujWzór|<MATH>f(\phi)e^{ikr}={{1}\over{k}}\sum^{\infty}_{l=0}
\left\{-(2l+1)i^l\sin(kr-{{1}\over{2}}\pi l)+B_l\sin(kr-{{1}\over{2}}\pi l+\alpha_l)\right\}P_l(\cos\phi)</MATH>|29.43}}
Zdefiniujmy tożsamość, która zależy od położenia radialnego r w układzie kulistych zdefiniowanej za pomocą zmiennej ρ{{Sub|l}}:
{{CentrujWzór|<MATH>k\rho_l=kr-{{1}\over{2}}l\pi</MATH>|29.44}}
Wtedy wyrażenie {{LinkWzór|29.43}}, na podstawie napisanej tożsamości zapisanej w punkcie {{LinkWzór|29.44}}, zapisujemy:
{{CentrujWzór|<MATH>f(\phi)e^{ikr}={{1}\over{k}}\sum^{\infty}_{l=0}
\left\{-(2l+1)i^l\sin(k\rho_l)+B_l\sin(k\rho_l+\alpha_l)\right\}P_l(\cos\phi)</MATH>|29.45}}
Jeśli będziemy dokonywać operacji zastępowania funkcji sinus przez jego odpowiednik przy pomocy eksponensów, którego jego potęgi o podstawie liczby "e" mają wykładniki, które są liczbami urojonymi:
{{CentrujWzór|<MATH>\sin(x)={{e^{ix}-e^{-ix}}\over{2i}}</MATH>|29.46}}
wtedy wyrażenie {{LinkWzór|29.45}} na podstawie tożsamości znanej z algebry {{LinkWzór|29.46}} zapisujemy na pewno według:
{{CentrujWzór|<MATH>f(\phi)e^{ikr}={{1}\over{2ki}}\sum^{\infty}_{l=0}\left\{e^{ik\rho}
\left[B_le^{i\alpha_l}-(2l+1)i^l\right]-
e^{-ik\rho}\left[B_le^{-i\alpha_l}-(2l+1)i^l\right]\right\}P_l(\cos\phi)</MATH>|29.47}}
Aby prawa strona równania {{LinkWzór|29.47}} była bardzo podobna do jego lewej strony tegoż równania, to drugi wyraz występujący we wspomnianym wzorze musi się zerować, zatem na podstawie tego wniosku, otrzymujemy warunek na stałe B{{Sub|l}} zależne od liczby kwantowej l.
{{CentrujWzór|<MATH>B_l=e^{i\alpha_l}(2l+1)i^l</MATH>|29.48}}
Wiedząc coś o współczynnikach {{LinkWzór|29.48}}, wtedy drugi wyraz zeruje się, a pozostaje pierwszy wyraz wzoru {{LinkWzór|29.47}}, w takim przypadku funkcję zapisaną poniżej redukuje się do prostszej tożsamości niż poprzednio:
{{CentrujWzór|<MATH>f(\phi)e^{ikr}={{1}\over{2ik}}\sum^{\infty}_{l=0}e^{ik\rho_l}(2l+1)i^l(e^{2i\alpha_l}-1)P_l(\cos\phi)</MATH>|29.49}}
Można udowodnić, że na podstawie definicji parametru kρ{{Sub|l}} wprowadzonej w punkcie {{LinkWzór|29.44}}, że zachodzi tożsamość:
{{CentrujWzór|<MATH>e^{ik\rho_l}i^l=e^{kr-{{1}\over{2}}\pi l} e^{{{1}\over{2}}il\pi}=e^{kr-{{1}\over{2}}\pi l+{{1}\over{2}}il\pi}=e^{ikr}</MATH>|29.50}}
A także można zapisać inną znowu tożsamość korzystając z tożsamości znanej z algebry {{LinkWzór|29.46}}, która jest definicją sinusa z argumentu x w zależności od funkcji eksponencjalnych, w takim przypadku ta nasza rozważane wyrażenie piszemy:
{{CentrujWzór|<MATH>{{1}\over{2i}}\left(e^{2i\alpha_l}-1\right)=
{{1}\over{2i}}e^{\alpha_l}\left(e^{i\alpha_l}-e^{-i\alpha_l}\right)=
e^{i\alpha_l}{{e^{i\alpha_l}-e^{-i\alpha_l}}\over{2i}}=e^{i\alpha_l}\sin\alpha_l</MATH>|29.51}}
Aby napisać {{LinkWzór|29.49}} należy skorzystać z tożsamości udowodnionych w punktach {{LinkWzór|29.50}} i {{LinkWzór|29.51}}, wtedy dochodzimy do wniosku, że zachodzi wzór na f(φ)e{{Sup|ikr}}, który jest:
{{CentrujWzór|<MATH>f(\phi)e^{ikr}={{1}\over{k}}\sum^{\infty}_{l=0}e^{ikr}(2l+1)\sin\alpha_l e^{i\alpha_l}P_l(\cos\phi)</MATH>|29.52}}
Dzielimy teraz obustronnie {{LinkWzór|29.52}} przez wyrażenie będące eksponentem z liczby ikr, czyli będącej wyrażeniem e{{Sup|ikr}}, otrzymujemy równość:
{{CentrujWzór|<MATH>f(\phi)={{1}\over{k}}\sum^{\infty}_{l=0}(2l+1)\sin\alpha_l e^{i\alpha_l}P_l(\cos\phi)</MATH>|29.53}}
Znając funkcję f(φ) {{LinkWzór|29.53}} w rozwiązaniu {{LinkWzór|29.8}} równania różniczkowe pełnego (ogólnego) {{LinkWzór|29.7}}, w ten sposób mamy całkowitą funkcją falową równania własnego falowego dla dużych wartości promienia wodzącego, czyli mamy rozwiązanie asymptotyczne, które dąży do właściwego rozwiązania dla r→∞.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
j7ogaz5lolxsoiz35jlut753ekgi07o
Mechanika kwantowa/Wstęp do teorii promieniowania kwantów pola elektromagnetycznego
0
15822
558852
527787
2026-10-07T13:10:47Z
Persino
2851
558852
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
W tym rozdziale zapoznamy się z podstawowymi własnościami dla operatorów symbolizujących kwanty pola elektromagnetycznego, wyprowadzimy macierze spinowe, podamy równanie własne współrzędnej zetowej i kwadratu całkowitego momentu pędu kwantów pola elektromagnetycznego.
== Całkowity moment pędu kwantu pola elektromagnetycznego a jego obroty ==
Wiemy, że obroty są odpowiedzialne za zasadę zachowania momentu pędu. Jeśli znamy oś obrotu i jej kierunek, czyli znamy wektor {{Formuła|<MATH>\vec{n}\;</MATH>}}, który właśnie za nie jest odpowiedzialny, przy czym zakładamy, że zwrot tego wektora jest do góry względem pewnej płaszczyzny i prostopadły do niego, w której następuje obrót, jeśli obrót jest przeciwny z kierunkiem ruchu zegara, zatem macierz obrotu przedstawia się:
{{CentrujWzór|<MATH>R(\vec{n},\theta)=e^{-\theta{{\vec{n}\hat{l}}\over{\hbar}}}</MATH>|30.1}}
Wektor wodzący tuż po obrocie względem operatora obrotu zdefiniowaną w punkcie {{LinkWzór|30.1}} względem starego wektora zapisujemy:
{{CentrujWzór|<MATH>\vec{r}^'=R(\vec{n},\theta)\vec{r}</MATH>|30.2}}
Można też napisać transformację odwrotną do {{LinkWzór|30.2}} transformująca nowy wektor tuż po obrocie na stary wektor wodzący przed obrotem względem wektora {{Formuła|<MATH>\vec{n}\;</MATH>}}:
{{CentrujWzór|<MATH>\vec{r}=R^{-1}(\vec{n},\theta)\vec{r}^'</MATH>|30.3}}
{{Rysunek|Pole wektorowe przed i po obrocie.JPG|gf2|Pole wektorowe przed i po obrocie.}}
Transformacja funkcji falowej przedstawia się podobnie jak w przypadku współrzędnych wektora wodzącego {{LinkWzór|30.2}}, jeśli rozpatrujemy funkcje falowe w postaci wektora, to taką transformacje zapisujemy podobnie:
{{CentrujWzór|<MATH>\psi^'(r^')=R(\vec{n},\theta)\psi(r)</MATH>|30.4}}
Jeśli dodatkowo założymy, że kwant pola elektromagnetycznego posiada dodatkowy moment pędu i nazwijmy ją spinowym momentem pędu kwantu promieniowania, to operator transformacji w analogii do {{LinkWzór|30.1}} jest:
{{CentrujWzór|<MATH>\hat{D}^{(1)}=e^{-i\theta{{\vec{n}\hat{S}}\over{\hbar}}}</MATH>|30.5}}
* gdzie {{Formuła|<MATH>\hat{S}</MATH>}} - jest to macierz spinowa:
Całkowity operator obrotu jest operatorem iloczynu dwóch operatorów, tzn. {{LinkWzór|30.1}} oraz {{LinkWzór|30.5}}:
{{CentrujWzór|<MATH>\hat{P}=\hat{D}^{(1)}\hat{T} =e^{-i\theta{{(\vec{n}\hat{S})}\over{\hbar}}}e^{-i\theta{{\vec{n}\hat{l}}\over{\hbar}}}=e^{-i\theta{{\vec{n}(\hat{l}+\hat{S})}\over{\hbar}}}</MATH>|30.6}}
Zatem otrzymaliśmy {{LinkWzór|30.6}}, czyli macierz obrotu sumy operatorów momentu pędu orbitalnego i operatora momentu pędu spinowego:
{{CentrujWzór|<MATH>\hat{P}=e^{-i\theta{{\vec{n}\left(\hat{l}+\hat{S}\right)}\over{\hbar}}}</MATH>|30.7|Obramuj}}
Nazwijmy całkowitym operatorem momentu pędu jako suma operatora orbitalnego momentu pędu i operatora momentu pędu spinowego kwantu promieniowania:
{{CentrujWzór|<MATH>\hat{j}=\hat{l}+\hat{S}</Math>|30.8}}
Całkowita macierz obrotu {{LinkWzór|30.7}}, korzystając z definicji całkowitego momentu pędu kwantu {{LinkWzór|30.8}}, jest przedstawiona:
{{CentrujWzór|<MATH>\hat{P}=e^{-i\theta{{\vec{n}\hat{j}}\over{\hbar}}}\;</MATH>|30.9|Obramuj}}
Rozpatrując wartości własne operatorów momentu pędu, to całkowity moment pędu kwantu promieniowania jest zapisany wedle wzoru:
{{CentrujWzór|<MATH>\vec{j}=\vec{l}+\vec{S}</MATH>|30.10}}
== Wyznaczenie macierzy spinowych kwantów pola elektromagnetycznego ==
{{Rysunek|Zmiana pola wektorowego w zależności od infitezymalnego kąta.JPG|gf|Zmiana δ stałego pola pola przy obrocie układu o kąt δθ}}
W macierzy transformacji operatora całkowitego momentu pędu kwantu promieniowania napisaną według {{LinkWzór|30.7}}, jeśli w nim dokonamy operacji {{Formuła|<math>\theta\rightarrow \delta\theta</MATH>}}, i rozpatrując przy stałym polu wektorowym {{Formuła|<MATH>\psi(\vec{r})=\operatorname{const}\;</MATH>}}, wtedy wynik działania operatora momentu pędu na tą funkcję jest równa zero (ten operator jest w coś rodzaju liczenia pochodnej względem pewnych zmiennych przestrzennych według definicji operatora momentu pędu) i pozostaje nam tylko operator zależny od operatora spinu {{LinkWzór|30.5}}, a więc funkcję ψ możemy rozłożyć w szereg Taylora jednej zmiennej pomijając wyższe wyrazy inne niż liniowe:
{{CentrujWzór|<MATH>\psi^{'}_{k^'}(\vec{r})=\psi_{k^'}(\vec{r})-\sum_k i\delta\theta{{\vec{n}(\hat{l}+\hat{S})_{k^'k}}\over{\hbar}}\psi_k(\vec{r})\Rightarrow
\psi^{'}_{k^'}(\vec{r})=\psi_{k^'}(\vec{r})-\sum_k i\delta\theta{{1}\over{\hbar}}\underbrace{\vec n\hat{l}\psi_k(\vec{r})}_{0}+\;</MATH>{{Br}}<MATH>-\sum_k i\delta\theta{{\vec{n}\hat{S}_{k^'k}}\over{\hbar}}\psi_k(\vec{r})
</MATH>|30.11}}
Przy zastosowania operatora {{LinkWzór|30.5}} dla infitezymalnego kąta obrotu przy transformacji wektorowej funkcji własnej jakiegoś równania własnego otrzymujemy to samo równanie, co {{LinkWzór|30.11}} przy stałej tej funkcji:
{{CentrujWzór|<MATH>\delta\psi^'(\vec{r})_{k^'}=\psi^{'}_{k^'}(\vec{r})-\psi_{k^'}(\vec{r})=-\sum_k i\delta\theta{{\vec{n}\hat{S}_{k^'k}}\over{\hbar}}\psi_k(\vec{r})</MATH>|30.12}}
Z drugiej jednak strony z rysunku obok możemy jednak zapisać przy pomocy wektora {{Formuła|<MATH>\vec{n}\;</MATH>}}, wzdłuż której następuje obrót o kierunku odwrotnym względem wskazówek zegara, jeśli zwrot tego wektora jest nad zegarem:
{{CentrujWzór|<MATH>\delta\psi=-(\psi\times\vec{n})\delta\theta</MATH>|30.13}}
Ponieważ wzory {{LinkWzór|30.12}} i {{LinkWzór|30.13}} przedstawiają to samo, dla tej samej współrzędnej wektora falowego, ale dla stałego pola wektorowego, przyrównujemy obie strony tychże równań do siebie:
{{CentrujWzór|<MATH>-\sum_k i\delta\theta{{\vec{n}\hat{S}_{k^'k}}\over{\hbar}}\psi_k(\vec{r})=
-(\psi\times\vec{n})_{k^'}\delta\theta\Rightarrow\left(\sum_k i{{\vec{n}\hat{S}_{k^'k}}\over{\hbar}}\psi_k(\vec{r})\right)\delta\theta=(\psi\times\vec{n})_{k^'}\delta\theta</MATH>|30.14}}
I ostatecznie w ostatnim równaniu {{LinkWzór|30.14}} dokonajmy operacji wymnożenia obustronnego przez stałą kreśloną Plancka, wtedy otrzymamy tożsamość, którą później wykorzystamy dla ściśle określonych {{Formuła|<MATH>k^'\;</MATH>}}:
{{CentrujWzór|<MATH>i\sum_k{{\vec{n}\hat{S}_{k^'k}}\over{\hbar}}\psi_{k}=\left(\psi\times\vec{n}\right)_{k^'}\Rightarrow i\sum_k(\vec{n}\hat{S}_{k^'k})\psi_{k}=\hbar\left(\psi\times\vec{n}\right)_{k^'}</MATH>|30.15}}
Rozpatrujemy równanie {{LinkWzór|30.15}} dla parametru k' równej jeden k'=1:
{{CentrujWzór|<MATH>i\left[n_x(S_x)_{11}+n_y(S_y)_{11}+n_z(S_z)_{11}\right]\psi_1+i\left[n_x(S_x)_{12}+n_y(S_y)_{12}+n_z(S_z)_{12}\right]\psi_2+i\left[n_x(S_x)_{13}+n_y(S_y)_{13}+n_z(S_z)_{13}\right]\psi_3=\;</MATH>{{Br}}<MATH>=\hbar(\psi_2 n_z-\psi_3 n_y)\;</MATH>|30.16}}
Porównując obie strony tożsamości {{LinkWzór|30.16}} dochodzimy do wniosku, że odpowiednie współrzędne operatora spinu kwantu promieniowania, a właściwie jej niektóre elementy można policzyć z pierwszego z trzech równań, które będziemy rozważać:
{{CentrujWzór|<MATH>\begin{cases}(S_x)_{11}=(S_y)_{11}=(S_z)_{11}=0\\
i[n_x(S_x)_{12}+n_y(S_y)_{12}+n_z(S_z)_{12}]=\hbar n_z\\
i[n_x(S_x)_{13}+n_z(S_y)_{13}+n_z(S_z)_{13}]=-\hbar n_y\end{cases}\Rightarrow
\begin{cases}(S_x)_{12}=(S_y)_{12}=0\\
(S_z)_{12}=-i\hbar\\
(S_x)_{13}=(S_z)_{13}=0\\
(S_y)_{13}=i\hbar\end{cases}\;</MATH>|30.17}}
Gdy rozpatrzymy równanie {{LinkWzór|30.15}} dla parametru k'=2, wtedy niektóre elementy macierzy współrzędnych operatora spinu można policzyć z drugiego z trzech równań, wtedy:
{{CentrujWzór|<MATH>i\left[n_x (S_x)_{21}+n_y(S_y)_{21}+n_z(S_z)_{21}\right]\psi_1+i\left[n_x(S_x)_{22}+n_y(S_y)_{22}+n_z(S_z)_{22}\right]\psi_2+i\left[n_x(S_x)_{23}+n_y(S_y)_{23}+n_z(S_z)_{23}\right]\psi_3=\;</MATH>{{Br}}<MATH>=\hbar[\psi_3 n_x-\psi_1 n_z]\;</MATH>|30.18}}
Porównując obie strony tożsamości {{LinkWzór|30.18}}, to dochodzimy do wniosku:
{{CentrujWzór|<MATH>\begin{cases}i\left[n_x (S_x)_{21}+n_y(S_y)_{21}+n_z(S_z)_{21}\right]=-n_z\\
(S_x)_{22}=(S_y)_{22}=(S_z)_{22}=0\\
i\left[n_x(S_x)_{23}+n_y(S_y)_{23}+n_z(S_z)_{23}\right]=\hbar n_x\end{cases}\Rightarrow
\begin{cases}(S_x)_{21}=(S_y)_{21}=0\\
(S_y)_{23}=(S_z)_{23}=0\\
(S_z)_{21}=i\hbar\\
(S_x)_{23}=-i\hbar\end{cases}\;</MATH>|30.19}}
Gdy rozpatrzymy równanie {{LinkWzór|30.15}} dla parametru k'=3, wtedy niektóre elementy macierzy współrzędnych operatora spinu można policzyć z trzeciego z trzech równań, które będziemy rozważać:
{{CentrujWzór|<MATH>i\left[n_x (S_x)_{31}+n_y(S_y)_{31}+n_z(S_z)_{31}\right]\psi_1+i\left[n_x(S_x)_{32}+n_y(S_y)_{32}+n_z(S_z)_{32}\right]\psi_2+i\left[n_x(S_x)_{33}+n_y(S_y)_{33}+n_z(S_z)_{33}\right]\psi_3=\;</MATH>{{Br}}<MATH>=\hbar[\psi_1 n_y-\psi_2 n_x]</MATH>|30.20}}
Porównując obie strony tożsamości {{LinkWzór|30.20}}, dochodzimy więc do wniosku:
{{CentrujWzór|<MATH>\begin{cases}i\left[n_x (S_x)_{31}+n_y(S_y)_{31}+n_z(S_z)_{31}\right]=\hbar n_y\\
i\left[n_x(S_x)_{32}+n_y(S_y)_{32}+n_z(S_z)_{32}\right]=-\hbar n_x\\
(S_x)_{33}=(S_y)_{33}=(S_z)_{33}=0\end{cases}\Rightarrow
\begin{cases}(S_x)_{31}=(S_z)_{31}=0\\
(S_y)_{32}=(S_z)_{32}=0\\
(S_y)_{31}=-i\hbar\\
(S_x)_{32}=i\hbar\end{cases}\;</Math>|30.21}}
Następnie wyznaczmy współrzędne operatora spinowe {{Formuła|<MATH>\hat{S}</MATH>}} na podstawie obliczeń dokonanych w punktach {{LinkWzór|30.17}}, {{LinkWzór|30.19}} i {{LinkWzór|30.21}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{S}_x=\hbar
\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}\;</MATH>|30.22}}
| 2 = {{CentrujWzór|<MaTh>\hat{S}_y=\hbar\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}\;</MATH>|30.23}}
| 3 = {{CentrujWzór|<MATH>\hat{S}_z=\hbar\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}</MATH>|30.24}}
}}
Związki między współrzędnymi macierzy spinowych, które później udowodnimy, przedstawiamy podobnie jak dla zwykłych orbitalnych operatorów momentu pędu:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>[\hat{S}_x,\hat{S}_y]=i\hbar\hat{S}_z\;</MATH>|30.25}}
| 2 = {{CentrujWzór|<MATH>[\hat{S}_y,\hat{S}_z]=i\hbar\hat{S}_x\;</MATH>|30.26}}
| 3 = {{CentrujWzór|<MATH>[\hat{S}_z,\hat{S}_x]=i\hbar\hat{S}_y</MATH>|30.27}}
}}
Udowodnijmy komutator {{LinkWzór|30.25}} na współrzędnych operatora momentu pędu spinowego:
{{CentrujWzór|<MATH>[\hat{S}_x,\hat{S}_y]=\hat{S}_x\hat{S}_y-\hat{S}_y\hat{S}_x=
\hbar^2\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}-\hbar^2\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}=\;</MATH>{{Br}}<MATH>=\hbar^2\begin{pmatrix}
0&0&0&\\
-1&0&0\\
0&0&0
\end{pmatrix}-\hbar^2\begin{pmatrix}
0&-1&0\\
0&0&0\\
0&0&0
\end{pmatrix}=\hbar^2\begin{pmatrix}
0&1&0\\
-1&0&0\\
0&0&0
\end{pmatrix}=i\hbar^2\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}=i\hbar\hat{S}_z
</MATH>|30.28}}
Następnie komutator {{LinkWzór|30.26}} na współrzędnych operatora momentu pędu spinowego:
{{CentrujWzór|<MATH>[\hat{S}_y,\hat{S}_z]=\hat{S}_y\hat{S}_z-\hat{S}_z\hat{S}_y=
\hbar^2\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}-\hbar^2\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}=\;</MATH>{{Br}}<MATH>=\hbar^2\begin{pmatrix}
0&0&0\\
0&0&0\\
0&-1&0
\end{pmatrix}-\hbar^2\begin{pmatrix}
0&0&0\\
0&0&-1\\
0&0&0
\end{pmatrix}=\hbar^2\begin{pmatrix}
0&0&0\\
0&0&1\\
0&-1&0
\end{pmatrix}=i\hbar^2\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&0&i
\end{pmatrix}=i\hbar\hat{S}_x
</MATH>|30.29}}
I ostatecznie udowodnijmy komutator {{LinkWzór|30.27}} na współrzędnych operatora momentu pędu spinowego:
{{CentrujWzór|<MATH>[\hat{S}_z,\hat{S}_x]=\hat{S}_z\hat{S}_x-\hat{S}_x\hat{S}_z=
\hbar^2\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}-\hbar^2\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}=\;</MATH>{{Br}}<MATH>=\hbar^2\begin{pmatrix}
0&0&-1\\
0&0&0\\
0&0&0
\end{pmatrix}-\begin{pmatrix}
0&0&0\\
0&0&0\\
0&-1&0
\end{pmatrix}=\hbar^2\begin{pmatrix}
0&0&-1\\
0&0&0\\
0&1&0
\end{pmatrix}=i\hbar^2\begin{pmatrix}
0&0&i\\
0&0&0\\
0&-i&0
\end{pmatrix}=i\hbar\hat{S}_y</MATH>|30.30}}
Komutatory {{LinkWzór|30.25}}, {{LinkWzór|30.26}} i {{LinkWzór|30.27}} można ogólnie zapisać tak jak w przypadku operatorów momentu pędu orbitalnego {{LinkWzór|6.12|Komutacja_operatorów_fizycznych}} według schematu:
{{CentrujWzór|<MATH>[\hat{S}_i,\hat{S}_j]=i\hbar\epsilon_{ijk}\hat{S}_k</MATH>|30.31}}
Teraz policzmy kwadrat macierzy operatora spinowego, który jak wiadomo jest sumą kwadratów współrzędnych operatora momentu pędu spinowego zdefiniowanych wedle {{LinkWzór|30.22}}({{Formuła|<MATH>\hat{S}_x\;</MATH>}}), {{LinkWzór|30.23}}({{Formuła|<MATH>\hat{S}_y\;</MATH>}}) i {{LinkWzór|30.24}}({{Formuła|<MATH>\hat{S}_z\;</MATH>}}):
{{CentrujWzór|<MATH>\hat{S}^2=\hat{S}_x^2+\hat{S}_y^2+\hat{S}_z^2=
\hbar^2{\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}}^2+\hbar^2{\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}}^2+\hbar^2{\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}}^2=</MATH>{{Br}}<math>=\hbar^2\left[\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}+\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}+\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}\right]=\;</MATH>{{Br}}<MaTH>=\hbar^2\Bigg[\begin{pmatrix}
0&0&0\\
0&1&0\\
0&0&1
\end{pmatrix}+\begin{pmatrix}
1&0&0\\
0&0&0\\
0&0&1
\end{pmatrix}+\begin{pmatrix}
1&0&0\\
0&1&0\\
0&0&0
\end{pmatrix}\Bigg]=\hbar^2\begin{pmatrix}
2&0&0\\
0&2&0\\
0&0&2
\end{pmatrix}=2\hbar^2\begin{pmatrix}
1&0&0\\
0&1&0\\
0&0&1
\end{pmatrix}=2\hbar^2E_{3x3}
</mATH>}}
Również dobrze możemy napisać na podstawie ostatnich obliczeń:
{{CentrujWzór|<MATH>\hat{S}^2=\hbar^2S(S+1)E_{3x3}</MATH>|30.32}}
* gdzie {{Formuła|<MATH>S=1\;</MATH>}}, która jest liczbą kwantową spinowego operatora momentu pędu.
Wyznaczmy wartości własne operatora zetowego macierzy spinowej:
{{CentrujWzór|<MATH>0=\operatorname{det}\left[\hbar\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0\end{pmatrix}-\lambda\begin{pmatrix}
1&0&0\\
0&1&0\\
0&0&1\end{pmatrix}\right]=
\begin{vmatrix}
-\lambda&-\hbar i&0\\
\hbar i&-\lambda&0\\
0&0&-\lambda
\end{vmatrix}=-\lambda\begin{vmatrix}
-\lambda&-i\hbar\\
i\hbar&-\lambda
\end{vmatrix}=\;</MaTH>{{Br}}<maTH>=-\lambda\left(\lambda^2-\hbar^2\right)=-\lambda(\lambda-\hbar)(\lambda+\hbar)\Rightarrow \lambda=-\hbar\vee\lambda=0\vee\lambda=\hbar\;</MaTH>|30.33}}
ze względu na obliczenia {{LinkWzór|30.33}} i tożsamości {{LinkWzór|30.32}} dochodzimy do wniosku, że trzecia składowa spinu dla kwantu spełnia podobny warunek jak dla trzeciej składowej (zetowej) momentu pędu względem liczby kwantowej charakteryzującej wartości własne momentu pędu, czyli:
{{CentrujWzór|<MATH>\lambda=m_S\hbar=-\hbar,0,\hbar\Rightarrow m_S=-1,0,1\;</MATH>|30.34}}
Liczba kwantowa kwadratu całkowitego momentu pędu jest równa S=1, a magnetyczna spinowa liczba magnetyczna jest liczbą mieszczącą się pomiędzy liczbami S=-1 i S=1, i ta liczba zmienia się co jeden, tak jak według przepisu {{LinkWzór|30.34}}, podobnie jest dla magnetycznej orbitalnej liczby kwantowej poprzez liczbę kwantową orbitalnego kwadratu momentu pędu {{LinkWzór|7.83|Postulat_drugi_mechaniki_kwantowej}}.
== Wektory spinowe, równania własne dla całkowitego momentu pędu kwantu ==
Prowadźmy trójwymiarową przestrzeń spinową, którymi wektorami bazy w układzie kartezjańskim będą formalnie zapisane wektory spinowe χ, które jak można udowodnić są do siebie ortonormalne i są to kanoniczne wersory w rozważanej bazie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{\chi}_x=\begin{pmatrix}1\\0\\0\end{pmatrix}</MATH>|30.35}}
| 2 = {{CentrujWzór|<MATH>\vec{\chi}_y=\begin{pmatrix}0\\1\\0\end{pmatrix}</MATH>|30.36}}
| 3 = {{CentrujWzór|<MATH>\vec{\chi}_z=\begin{pmatrix}0\\0\\1\end{pmatrix}</MATH>|30.37}}
}}
Wprowadźmy nowe wektory spinowe tensora rangi drugiej zdefiniowane przy pomocy {{LinkWzór|30.35}}, {{LinkWzór|30.36}}, a ich definicje są takie by ich norma była równa jeden, należy przy tym pamiętać, że te wektory spinowe rangi drugiej nie muszą być wcale do siebie prostopadłe, w przypadku pierwszym spinor o numerze jeden:
{{CentrujWzór|<MATH>\vec{\chi}_1=-\sqrt{{{1}\over{2}}}\left(\vec{\chi}_x+i\vec{\chi}_y\right)=
-\sqrt{{{1}\over{2}}}\left(\begin{pmatrix}1\\0\\0\end{pmatrix}+i\begin{pmatrix}0\\1\\0\end{pmatrix}\right)=
\sqrt{{{1}\over{2}}}\begin{pmatrix}-1\\-i\\0\end{pmatrix}</MATH>|30.38}}
Spinor o numerze zero piszemy bezpośrednio przy pomocy wektora ortonormalnego {{LinkWzór|30.37}}:
{{CentrujWzór|<MATH>\vec{\chi}_0=\vec{\chi}_z=\begin{pmatrix}0\\0\\1\end{pmatrix}</MATH>|30.39}}
i ostatecznie przy tych samych spinorach co {{LinkWzór|30.38}}, ale inaczej zdefiniowane przy oznaczeniu równym minus jeden:
{{CentrujWzór|<MATH>\vec{\chi}_{-1}=\sqrt{{1}\over{2}}\left(\vec{\chi}_x-i\vec{\chi}_y\right)=
\sqrt{{{1}\over{2}}}\left(\begin{pmatrix}1\\0\\0\end{pmatrix}-i\begin{pmatrix}0\\1\\0\end{pmatrix}\right)=
\sqrt{{{1}\over{2}}}\begin{pmatrix}1\\-i\\0\end{pmatrix}</MATH>|30.40}}
Zbudujmy operator spinowy ze znakiem plus, który jest sumą operatora spinowego iksowego {{LinkWzór|30.22}} i igrekowanego {{LinkWzór|30.23}}, pomnożonej przez jednostkę urojoną, całość podzielona przez stałą kreśloną Plancka:
{{CentrujWzór|<MATH>\hat{S}_{+}={{1}\over{\hbar}}\left(\hat{S}_x+i\hat{S}_y\right)=\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}+i\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}=\begin{pmatrix}
0&0&-1\\
0&0&-i\\
1&i&0
\end{pmatrix}</MATH>|30.41}}
Dalej zbudujmy operator spinowy ze znakiem minus, który jest różnicą operatora spinowego iksowego {{LinkWzór|30.22}} i igrekowanego {{LinkWzór|30.23}}, pomnożonej przez jednostkę urojoną, całość podzielona przez stałą kreśloną Plancka:
{{CentrujWzór|<MATH>\hat{S}_{-}={{1}\over{\hbar}}\left(\hat{S}_x-i\hat{S}_y\right)=\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}-i\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}=\begin{pmatrix}
0&0&1\\
0&0&-i\\
-1&i&0
\end{pmatrix}</MATH>|30.42}}
Ostatecznie zbudujmy operator spinowy ze znakiem zero, który jest zetowym operatorem spinowym {{LinkWzór|30.24}} podzielonej przez stałą Plancka.
{{CentrujWzór|<MATH>\hat{S}_0={{1}\over{\hbar}}\hat{S}_z=\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}</MATH>|30.43}}
Również można udowodnić, że zachodzą związki na wektorach spinowych drugiego rzędu na macierzach spinowych {{LinkWzór|30.41}}, {{LinkWzór|30.42}} i {{LinkWzór|30.43}}
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{S}_{+}\vec{\chi}_k=\sqrt{(S-k)(S+k+1)}\vec{\chi}_{k+1}</MATH>|30.44}}
| 2 = {{CentrujWzór|<MATH>\hat{S}_{-}\vec{\chi}_k=\sqrt{(S+k)(S-k+1)}\vec{\chi}_{k-1}</MATH>|30.45}}
| 3 = {{CentrujWzór|<MATH>\hat{S}_0\vec{\chi}_k=k\vec{\chi}_k</MATH>|30.46}}
}}
* gdzie {{Formuła|<MATH>S=1\;</MATH>}}, zaś {{Formuła|<MATH>k=+1,0,-1\;</MATH>}}
Udowodnijmy zależności {{LinkWzór|30.44}}, {{LinkWzór|30.45}} i {{LinkWzór|30.46}} dla trzech możliwych k i jednego S:
{{CentrujWzór|<MATH>\hat{S}_{+}\vec{\chi}_{-1}=\begin{pmatrix}
0&0&-1\\
0&0&-i\\
1&i&0
\end{pmatrix}\sqrt{{{1}\over{2}}}\begin{pmatrix}-1\\-i\\0\end{pmatrix}=
\sqrt{{{1}\over{2}}}\begin{pmatrix}
0\\
0\\
2
\end{pmatrix}=\sqrt{2}\begin{pmatrix}0\\0\\1\end{pmatrix}=\sqrt{(1-(-1))(1+(-1))}\begin{pmatrix}0\\0\\1\end{pmatrix}
</MATH>{{Br}}<MATH>\hat{S}_{+}\vec{\chi}_{0}=\begin{pmatrix}
0&0&-1\\
0&0&-i\\
1&i&0
\end{pmatrix}\begin{pmatrix}0\\0\\1\end{pmatrix}=\begin{pmatrix}
-1\\-i\\0
\end{pmatrix}=\sqrt{(1-0)(1+0+1)}\sqrt{{1}\over{2}}\begin{pmatrix}-1\\-i\\0\end{pmatrix}
</MATH>
:<MATh>\hat{S}_{-}\vec{\chi}_{1}=\begin{pmatrix}
0&0&1\\
0&0&-i\\
-1&i&0
\end{pmatrix}\sqrt{{{1}\over{2}}}\begin{pmatrix}-1\\-i\\0\end{pmatrix}=
\sqrt{{{1}\over{2}}}\begin{pmatrix}
0\\0\\2
\end{pmatrix}=\sqrt{2}\begin{pmatrix}0\\0\\1\end{pmatrix}=\sqrt{(1+1)(1-1+1)}\begin{pmatrix}0\\0\\1\end{pmatrix}
</MATH>
{{Br}}<MATH>\hat{S}_{-}\vec{\chi}_{0}=\begin{pmatrix}
0&0&1\\
0&0&-i\\
-1&i&0
\end{pmatrix}\begin{pmatrix}0\\0\\1\end{pmatrix}=\begin{pmatrix}1\\-i\\0\end{pmatrix}=\sqrt{(1+0)(1-0+1)}\sqrt{{1}\over{2}}\begin{pmatrix}1\\-i\\0\end{pmatrix}</MATH>
:<MATH>\hat{S}_{0}\vec{\chi}_{-1}=\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}\sqrt{{{1}\over{2}}}\begin{pmatrix}1\\-i\\0\end{pmatrix}=\sqrt{{{1}\over{2}}}\begin{pmatrix}-1\\i\\0\end{pmatrix}=
-\sqrt{{{1}\over{2}}}\begin{pmatrix}1\\-i\\0\end{pmatrix}</MATH>
{{Br}}<MATH>\hat{S}_{0}\vec{\chi}_{0}=\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}\begin{pmatrix}0\\0\\1\end{pmatrix}=\begin{pmatrix}0\\0\\0\end{pmatrix}=0\begin{pmatrix}0\\0\\1\end{pmatrix}</MATH>
{{Br}}<MATH>\hat{S}_{0}\vec{\chi}_{1}=\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}\sqrt{{{1}\over{2}}}\begin{pmatrix}-1\\-i\\0\end{pmatrix}=
\sqrt{{{1}\over{2}}}\begin{pmatrix}-1\\-i\\0\end{pmatrix}=
1\cdot\sqrt{{{1}\over{2}}}\begin{pmatrix}-1\\-i\\0\end{pmatrix}</MATH>}}
Wiadomo, że jeśli zachodzi:{{Formuła|<MATH>\hat{l}_zY_{lm}=m\hbar Y_{lm}</MATH>}}, to powinno również zachodzić inne równanie własne, ale wynikającego ze wspomnianego równania:
{{CentrujWzór|<MATH>\hat{j}_z(\hat{l}Y_{lm})=m\hbar(\hat{l}Y_{lm})</MATH>|30.47}}
A teraz przejdźmy do dowodu ostatniego stwierdzenia wykorzystując przy tym, że całkowity operator momentu pędu promieniowania elektromagnetycznego jest wyrażony wzorem {{LinkWzór|30.10}}, to operator całkowitego momentu pędu wyraża się bardzo podobnym wzorem, zatem wspomniany ostatnio wzór można udowodnić wedle przekształceń:
{{CentrujWzór|<MATH>\hat{j}_z(\hat{l}Y_{lm})=(\hat{l}_z+\hat{S}_z)\begin{pmatrix}
\hat{l}_xY_{lm}\\
\hat{l}_yY_{lm}\\
\hat{l}_zY_{lm}
\end{pmatrix}=
\begin{pmatrix}
\hat{l}_z\hat{l}_xY_{lm}\\
\hat{l}_z\hat{l}_yY_{lm}\\
\hat{l}_z\hat{l}_zY_{lm}
\end{pmatrix}+\hbar
\begin{pmatrix}
0&-1&0\\
i&0&0\\
0&0&0
\end{pmatrix}\begin{pmatrix}
\hat{l}_xY_{lm}\\
\hat{l}_yY_{lm}\\
\hat{l}_zY_{lm}
\end{pmatrix}=</MATH>
{{Br}}<MATH>=
\begin{pmatrix}
\hat{l}_x\hat{l}_zY_{lm}+i\hbar\hat{l}_yY_{lm}\\
\hat{l}_y\hat{l}_zY_{lm}-i\hbar\hat{l}_xY_{lm}\\
\hat{l}_y\hat{l}_zY_{lm}+0
\end{pmatrix}+\begin{pmatrix}
-i\hbar\hat{l}_yY_{lm}\\
i\hbar\hat{l}_xY_{lm}\\
0
\end{pmatrix}=\begin{pmatrix}
\hat{l}_x\hat{l}_zY_{lm}\\
\hat{l}_y\hat{l}_zY_{lm}\\
\hat{l}_y\hat{l}_zY_{lm}
\end{pmatrix}=m\hbar\begin{pmatrix}\hat{l}_xY_{lm}\\
\hat{l}_yY_{lm}\\
\hat{l}_zY_{lm}\end{pmatrix}=m\hbar(\hat{l}Y_{lm})</MATH>|30.48}}
* gdzie {{Formuła|<MATH>m</MATH>}} jest to wartość własna operatora {{Formuła|<MATH>\hat{l}_z</MATH>}}, a zarazem operatora {{Formuła|<MATH>\hat{j}_z\;</Math>}}
Jeśli zachodzi warunek {{Formuła|<MATH>\hat{l}^2Y_{lm}=l(l+1)Y_{lm}</MATH>}}, to można udowodnić:
{{CentrujWzór|<MATH>\hat{j}^2(\hat{l}Y_{jm})=j(j+1)(\hat{l}Y_{jm})</MATH>|30.49}}
a zarazem zachodzi j=l, co później udowodnimy intuicyjnie.
Aby udowodnić równanie własne {{LinkWzór|30.49}}, musimy wiedzieć, że: {{Formuła|<MATH>[\hat{l},\hat{S}]=0</MATH>}}, co jest trywialnym dowodem, ze względu, że współrzędne operatora momentu pędu spinowego są macierzami, współrzędne operatora momentu pędu orbitalnego są operatorami, coś w rodzaju różniczkowania, dlatego te operatory są przemienne, zatem przejdźmy do głównego nurtu dowodu wykorzystując przy tym, że operator całkowitego momentu pędu promieniowania elektromagnetycznego jest wyrażony wzorem {{LinkWzór|30.10}}:
{{CentrujWzór|<MATH>\hat{j}^2(\hat{l}Y_{lm})=(\hat{l}+\hat{S})^2(\hat{l}Y_{lm})=\hat{l}^2(\hat{l}Y_{lm})+\hat{S}^2(\hat{l}Y_{lm})+2\hat{l}\hat{S}(\hat{l}Y_{lm})=(l(l+1)\hbar^2+S(S+1)\hbar^2)(\hat{l}Y_{lm})+2\hat{l}\hat{S}(\hat{l}Y_{lm})</MATH>|30.50}}
Obliczmy wyrażenie pomocnicze: {{Formuła|<MATH>\hat{l}\hat{S}(\hat{l}Y_{jm})</MATH>}}, występujące w dowodzie {{LinkWzór|30.50}}, by dalej przeprowadzić ten nas powyższy dowód:
{{CentrujWzór|<MATH>\hat{l}\hat{S}(\hat{l}Y_{lm})=\left(\hat{l}_x\hat{S}_x+\hat{l}_y\hat{S}_y+\hat{l}_z\hat{S}_z\right)(\hat{l}Y_{lm})=\hbar\left[\hat{l}_x\begin{pmatrix}
0&0&0\\
0&0&-i\\
0&i&0
\end{pmatrix}+\hat{l}_y\begin{pmatrix}
0&0&i\\
0&0&0\\
-i&0&0
\end{pmatrix}+\hat{l}_z\begin{pmatrix}
0&-i&0\\
i&0&0\\
0&0&0
\end{pmatrix}\right](\hat{l}Y_{lm})=</MATH>{{Br}}<MATH>=\hbar\begin{pmatrix}
0&-i\hat{l}_z&i\hat{l}_y\\
i\hat{l}_z&0&-i\hat{l}_x\\
-i\hat{l}_y&i\hat{l}_x&0
\end{pmatrix}\begin{pmatrix}
\hat{l}_x\\
\hat{l}_y\\
\hat{l}_z\\
\end{pmatrix}Y_{lm}=\hbar\begin{pmatrix}
i(\hat{l}_y\hat{l}_z-\hat{l}_z\hat{l}_z)\\
i(\hat{l}_z\hat{l}_x-\hat{l}_x\hat{l}_z)\\
i(\hat{l}_x\hat{l}_y-\hat{l}_y\hat{l}_x)
\end{pmatrix}Y_{lm}=i\hbar^2\begin{pmatrix}
i\hat{l}_x\\
i\hat{l}_y\\
i\hat{l}_z
\end{pmatrix}Y_{lm}=-\hbar^2\hat{l}Y_{lm}</MATH>|30.51}}
Teraz powróćmy do dowodu {{LinkWzór|30.50}} na wartość własną całkowitego momentu pędu promieniowania elektromagnetycznego, korzystając przy tym z obliczeń pomocniczych {{LinkWzór|30.51}}:
{{CentrujWzór|<MATH>\hat{j}^2(\hat{l}Y_{lm})=(l(l+1)+S(S+1)-2)\hbar^2(\hat{l}Y_{lm})=
(l(l+1)+2-2)\hbar^2(\hat{l}Y_{lm})=l(l+1)\hbar^2(\hat{l}Y_{lm})</MATH>|30.52}}
Z definicji wartość własna kwadratu momentu pędu całkowitego przyjmuje się jako {{Formuła|<MATH>j(j+1)\hbar^2\;</mATH>}}, a momentu pędu orbitalnego {{Formuła|<MaTH>l(l+1)\hbar^2\;</MATH>}}. Dochodzimy do wniosku, że w obliczeniach {{LinkWzór|30.52}} musimy przyjąć j=l, ponieważ przy składaniu orbitalnego momentu pędu ze spinem, którego liczba kwantowa jest w trzech postaciach, że j=l-1,l,l+1, ale pole elektromagnetyczne wybiera jedną z nich, tzn. j=l i dlatego musimy napisać dla {{LinkWzór|30.47}} i {{LinkWzór|30.52}} w postaci równań własnych:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<math>\hat{j}_z(\hat{l}Y_{jm})=m\hbar (\hat{l}Y_{jm})\;</MATH>|30.52a|Obramuj}}
| 2 = {{CentrujWzór|<math>\hat{j}^2(\hat{l}Y_{jm})=j(j+1)\hbar^2(\hat{l}Y_{jm})\;</MATH>|30.53|Obramuj}}
}}
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
4m3c62gzq59tuw9etjqp58hmeypm7w2
Ogólna teoria względności/Zasada wariacyjna w ogólnej teorii względności
0
16167
558858
548297
2026-10-07T14:02:53Z
Persino
2851
558858
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
'''Ogólna teoria względności według Hilberta''' polega na całce działania Eulera-Lagrange, która przyjmuje najmniejszą wartość i w oparciu o rachunek wariacyjny wyprowadzimy równania grawitacji Einsteina-Hilberta. Również wyprowadzimy wedle tej samej zasady lokalną zasadę zachowania energii, a także wyprowadzimy równanie linii geodezyjnej z odpowiedniej definicji funkcji Langrange'a.
== Równania grawitacji Einsteina-Hilberta ==
Całka działania w przestrzeni Minkowskiego jest to całka, w której funkcją podcałkową jest gęstość Lagrangianu {{Formuła|<MATH>\mathfrak{L}\;</MATH>}} liczoną względem infinitezymalnej objętości w przestrzeni czterowymiarowej.
{{CentrujWzór|<MATH>S=\int \mathfrak{L}d{x^'}^4\;</MATH>|4.1}}
Możemy uwzględnić policzoną na liczbach ogólnych objętość elementarną w lokalnie płaskim układzie współrzędnym względem tej samej objętości w krzywoliniowym układzie współrzędnej wedle sposobu {{LinkWzór|3.9|Właściwości_skalaru_tensora_metrycznego}} podstawiając go do całki Lagrange'a {{LinkWzór|4.1}}:
{{CentrujWzór|<MATH>S=\int\underbrace{\sqrt{-g}\mathfrak{L}}_{\mathfrak{L}^'}dx^4\;</MATH>|4.2}}
Aby powyższa całka przyjmowała najmniejszą wartość, to należy napisać równanie Eulera-Lagranga, którego postać względem parametru φ i ∂{{Sub|μ}}φ jest.
{{CentrujWzór|<MATH>\partial_{\mu}{{\partial \mathfrak{L}^'}\over{\partial(\partial_{\mu}\varphi)}}-{{\partial\mathfrak{L}^'}\over{\partial\varphi}}=0\;</MATH>|4.3}}
Gęstość lagrangianu można rozpisać jako sumę na dwie jego części, tzn.: na część przestrzenną i masową jako sumę tychże wielkości:
{{CentrujWzór|<MATH>\mathfrak{L}=\mathfrak{L}_g+\mathfrak{L}_m\;</MATH>|4.4}}
Rozważmy teraz część przestrzenną Lagrangianu {{LinkWzór|4.4}} rozwijając go w szereg Taylora względem skalaru krzywizny, co można go przestawić:
{{CentrujWzór|<MATH>\mathfrak{L}_g=a+bR+cR^2+...\;</MATH>|4.5}}
Wprowadźmy wstępne oznaczenia na stałe "a" i "b" poprzez stałą kosmologiczną Λ i przez stałą κ występującego w prawie grawitacji Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}}.
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>a=-{{\Lambda}\over{\pm \kappa}}\;</MATH>|4.6}}
| 2 = {{CentrujWzór|<MATH>b={{1}\over{\pm 2\kappa}}\;</MATH>|4.7}}
}}
* Znak w {{LinkWzór|4.6}} i {{LinkWzór|4.7}} jest dla znaku na górze dla przyciągania grawitacyjnego, a ujemna na dole dla odpychania grawitacyjnego. Tzn. gdy chcermy opisywać przyciąganie grawitacyjne, to stała {{Formuła|<MATH>\kappa\;</MATH>}} jest dodatnia, a jeśli odpychanie, to zamiast {{Formuła|<MATH>\kappa\;</MATH>}} wstawiamy {{Formuła|<MATH>-\kappa\;</MATH>}}, a ta stała {{Formuła|<MATH>\kappa\;</MATH>}} w nim jest dodatnia, a więc tak mozna przejść od przyciągania do odpychania we stałych {{LinkWzór|4.6}} i {{LinkWzór|4.7}}, tzn. zamieniając w nich {{Formuła|<MATH>+\;</MATH>}} na {{Formuła|<MATH>-\;</MATH>}}, i dlatego tam piszemy dla obu rodzajów oddziaływań grawitacyjnych {{Formuła|<MATH>\pm\;</MATH>}}.
Część przestrzenna Lagrangianu {{LinkWzór|4.5}} wedle oznaczeń {{LinkWzór|4.6}} i {{LinkWzór|4.7}} po dokonanych podstawieniach za "a" i "b", przy którym dalsze współczynniki przyjmujemy za równe zero, przyjmuje postać.
{{CentrujWzór|<MATH>\mathfrak{L}_g={{1}\over{\pm 2\kappa}}(R-2\Lambda)\;</MATH>|4.8}}
Można udowodnić, że dla czasoprzestrzeni zakrzywionej mamy g<0, a zatem całkę działania {{LinkWzór|4.2}}, wykorzystując przy tym wzór na całkowity Lagrangian {{LinkWzór|4.4}}, która jest sumą Lagrangianu przestrzennego {{LinkWzór|4.8}} i masowego, jest napisana wzorem:
{{CentrujWzór|<MATH>S=\int d^4x\sqrt{-g}\left\{{{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right\}\;</MATH>|4.9}}
* gdzie:{{Formuła|<MATH>g=-\operatorname{\det}(g_{\alpha\beta})\;</MATH>}}
Ale {{Formuła|<MATH>\sqrt{-g}\;</MATH>}} jest to Jakobian, który pozwala przejść do układu krzywoliniowej w ogólnej teorii względności z układu lokalnie płaskiego Minkowskiego.
Nowa gęstość lagrangianu zdefiniowana na podstawie punktu {{LinkWzór|4.9}} w stosunku do {{LinkWzór|4.4}} jest zdefiniowana:
{{CentrujWzór|<MATH>\mathfrak{L}^'=\sqrt{-g}\mathfrak{L}=\sqrt{-g}\left\{{{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right\}\;</MATH>|4.10}}
Równanie Eulera Einsteina {{LinkWzór|4.3}} względem nowego Lagrangianu {{Formuła|<MATH>\mathfrak{L}^'\;</MATH>}}, jest iloczynem gęstości Lagrangianu tego starego {{Formuła|<MATH>\mathfrak{L}\;</MATH>}} przez pierwiastek z wyznacznika macierzy metrycznej wziętej z minusem, zatem jeśli przyjmować będziemy {{Formuła|<MATH>\varphi=g^{\alpha\beta}\;</MATH>}} przy {{LinkWzór|4.3}}, to równanie Eulera-Lagrange przyjmuje wtedy postać:
{{CentrujWzór|<MATH>\partial_{\mu}{{\partial \mathfrak{L}\sqrt{-g}}\over{\partial(\partial_{\mu}g^{\alpha\beta})}}-{{\partial \mathfrak{L}\sqrt{-g}}\over{\partial g^{\alpha\beta}}}=0\;</MATH>|4.11}}
Jeśli Lagrangian nie zależy od pochodnych elementów tensora metrycznych względem współrzędnych x{{Sup|μ}} w przestrzeni nieuklidesowej, to pierwszy wyraz w {{LinkWzór|4.11}} zapisujemy:
{{CentrujWzór|<MATH>\partial_{\mu}{{\partial \mathfrak{L}\sqrt{-g}}\over{\partial(\partial_{\mu}g^{\alpha\beta})}}=0\;</MATH>|4.12}}
A zatem równanie Eulera Einsteina po uwzględnieniu powyższej tożsamości {{LinkWzór|4.12}}, czyli pierwszy wyraz w {{LinkWzór|4.11}} znika, zatem dostajemy z omawianego równania:
{{CentrujWzór|<MATH>{{\partial}\over{\partial g^{\alpha\beta}}}\left(\sqrt{-g}\mathfrak{L}\right)=0\;</MATH>|4.13}}
Jeśli skorzystamy z twierdzenia o pochodnej iloczynu względem jakieś zmiennej ściśle określonej oraz wykorzystujemy wzór {{LinkWzór|3.18|Właściwości_skalaru_tensora_metrycznego}}, wtedy mamy:
{{CentrujWzór|<MATH>\sqrt{-g}{{\partial\mathfrak{L}}\over{\partial g^{\alpha\beta}}}+\mathfrak{L}{{\partial\sqrt{-g}}\over{\partial g^{\alpha\beta}}}=0\Rightarrow
\sqrt{-g}{{\partial\mathfrak{L}}\over{\partial g^{\alpha\beta}}}+\mathfrak{L}{{gg_{\alpha\beta}}\over{2\sqrt{-g} }}=0\;</MATH>|4.14}}
Całkowity Lagrangian po podstawieniu {{LinkWzór|4.8}} do {{LinkWzór|4.4}} przyjmuje postać:
{{CentrujWzór|<MATH>\mathfrak{L}={{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\;</MATH>|4.15}}
Ostatnie równanie, które wynika z równania Eulera-Lagrangian {{LinkWzór|4.14}} ma się po podstawieniu do niej za całkowitą gęstość lagrangianu {{LinkWzór|4.15}}:
{{CentrujWzór|<MATH>\sqrt{-g}{{\partial}\over{\partial g^{\alpha\beta}}}\left({{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right)+
\left({{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right){{1}\over{2\sqrt{-g}}}gg_{\alpha\beta}=0\;</MATH>|4.16}}
Po podzieleniu obustronnie równości {{LinkWzór|4.16}} przez pierwiastek wyznacznika macierzy tensora metrycznego wziętej z minusem, czyli {{Formuła|<MATH>\sqrt{-g}\;</MATH>}}:
{{CentrujWzór|<MATH>-{{1}\over{\pm 4\kappa}}g_{\alpha\beta}(R-2\Lambda)-{{1}\over{2}}g_{\alpha\beta}\mathfrak{L}_m+
{{\partial}\over{\partial g^{\alpha\beta}}}\left({{1}\over{\pm 2\kappa}}(R-2\Lambda)+\mathfrak{L}_m\right)=0\;</MATH>|4.17}}
Jeśli wiadomo,że zachodzi wzór na skalar Ricciego {{Formuła|<MATH>R=g^{\alpha\beta}R_{\alpha\beta}\;</MATH>}}, i tensor Ricciego {{Formuła|<MATH>{{\partial R}\over{\partial g^{\alpha\beta}}}=R_{\alpha\beta}\;</MATH>}}, a także na podstawie powyższej równości {{LinkWzór|4.17}} mamy:
{{CentrujWzór|<MATH>-{{1}\over{\pm 4\kappa}}g_{\alpha\beta}(R-2\Lambda)-{{1}\over{2}}g_{\alpha\beta}\mathfrak{L}_m+{{1}\over{\pm 2\kappa}}R_{\alpha\beta}+{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}=0\Rightarrow{{1}\over{\pm 2\kappa}}\left[\left(R_{\alpha\beta}-{{1}\over{2}}g_{\alpha\beta}R\right)+g_{\alpha\beta}\Lambda\right]=
-{{1}\over{2}}\left(2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}-g_{\alpha\beta}\mathfrak{L}_m\right)\;</MATH>|4.18}}
Następnie podzielmy ostatnią równość, czyli zapisaną w punkcie {{LinkWzór|4.18}}, przez {{Formuła|<MATH>-{{1}\over{2\kappa}}\;</MATH>}}, otrzymujemy dla sygnatury dodatniej:
{{CentrujWzór|<MATH>R_{\alpha\beta}-{{1}\over{2}}g_{\alpha\beta}R+g_{\alpha\beta}\Lambda=\pm \kappa\left(-2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}+g_{\alpha\beta}\mathfrak{L}_m\right)\;</MATH>|4.19}}
* Powyższe równanie jest dla sygnatury dodatniej.
Ponieważ przyjęliśmy że definicja tensora Einsteina jest wedle {{LinkWzór|1.37|Wprowadzenie do ogólnej teorii względności}}, a rozszerzony tensor Einsteina jest w postaci {{LinkWzór|1.40|Wprowadzenie do ogólnej teorii względności}}, a tensor gęstości energii-pędu przyjmuje postać według naszych rozważań według {{LinkWzór|4.19}} dla sygnatury dodatniej (dla sygnatury ujemnej tensor gęstości energii-pędu różni się od tego samego dla sygnatury dodatniej minusem, bo zamieniamy w tym tensorze {{Formuła|<MATH>g^{\mu\nu}\;</MATH>}} na {{Formuła|<MATH>-g^{\mu\nu}\;</MATH>}}, tzn. formalnie, by dla obu sygnator względem siebie ten tensor miał przeciwną, tylko formalnie, postać), pierwsza dla sygnatury dodatniej, a druga dla ujemnej, przechodząc z sygnatury dodatniej do ujemnej, a te tensory kolejno mamy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>T_{\alpha\beta}=-2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}+g_{\alpha\beta}\mathfrak{L}_m\;</MATH>|4.20}}
| 2 = {{CentrujWzór|<MATH>T_{\alpha\beta}=2{{\partial\mathfrak{L}_m}\over{\partial g^{\alpha\beta}}}-g_{\alpha\beta}\mathfrak{L}_m\;</MATH>|4.20S}}
}}
Wiąząc sygnaturę tensora Minkowskiego z przyciąganiem lub odpychaniem, to ostatecznie równanie grawitacji wyprowadzonej przez Hilberta z zasady wariacyjnej, ze stałą kosmologiczną dla sygnatury dodatniej i ujemnej są kolejno przedstawione:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>G_{\alpha\beta}+g_{\alpha\beta}\Lambda=\kappa T_{\alpha\beta}\;</MATH>|4.21}}
| 2 = {{CentrujWzór|<MATH>G_{\alpha\beta}+g_{\alpha\beta}\Lambda=-\kappa T_{\alpha\beta}\;</MATH>|4.2122}}
}}
Wyprowadzając równanie {{LinkWzór|4.19}} (przy stałej proporcjalności przy {{Formuła|<MATH>\kappa\;</MATH>}} z plusem) mając gęstość lagrangianu przestrzennego {{LinkWzór|4.8}}, biorąc przy nim {{Formuła|<MATH>\kappa\;</MATH>}} z tylko z jednym znakiem, tzn. z plusem, - a więc trochę inaczej - to wtedy wychodzą wzory {{LinkWzór|4.20}} (który jest dla przyciągania grawitacyjnego - sygnatura dodatnia) i {{LinkWzór|4.20S}} (który jest dla odpychania grawitacyjnego - sygnatura ujemna), a ten pierwszy wzór jest dla sygnatury dodatniej, a drugi dla ujemnej, co na tej podstawie wychodząc wzory: {{LinkWzór|4.21}} i {{LinkWzór|4.2122}}, a teraz weźmy znak przy tej stałej z minusem w {{LinkWzór|4.19}}, wtedy otrzymujemy równanie o takiej samej postaci co {{LinkWzór|4.21}}, a tam tensor gęstości energii-pędu jest wtedy o sygnaturze ujemnej, a dla drugiej sygnatury otrzymujemy równanie {{LinkWzór|4.2122}}, a tam tensor gęstości energii-pędu jest dla sygnatury dodatniej, a teraz znak przy {{Formuła|<MATH>\kappa\;</MATH>}} przyjmijmy taki: {{Formuła|<MATH>\mp\;</MATH>}}, to wtedy dla jej znaku minus w równaniu {{LinkWzór|4.19}}, to wtedy tensor gęstości energii-pędu jest dla sygnatury ujemnej w równaniu o postaci {{LinkWzór|4.21}}, a dla jej znaku dodatniego też dla sygnatury ujemnej w równaniu {{LinkWzór|4.20S}}. Sygnaturę tensora gęstości energii-pędu: {{LinkWzór|4.20}} i {{LinkWzór|4.20S}} można zmienić na przeciwną, jeżeli dokonamy podstawienia w tym tensorze według: {{Formuła|<MATH>g^{\mu\nu}\rightarrow-g^{\mu\nu}\;</MATH>}}. Do powyższych tych wniosków dośliśmy z dokładnością, co do znaku przy stałej kosmologicznej {{Formuła|<MATH>\Lambda\;</MATH>}}.
Ten same tensory gęstości energii-pędu, co przedstawiony w punktach: {{LinkWzór|4.20}} i {{LinkWzór|4.20S}}, ale później udowodnimy go z zasady wariacyjnej, ale jeszcze dodatkowo wspomniemy o własności lokalnej zasady zachowania tensora gęstości energii-pędu dla układu lokalnie płaskiego, tzn.: T{{Sup|μν}}{{Sub|,ν}}=0, mając {{LinkWzór|1.49|Wprowadzenie_do_ogólnej_teorii_względności}}, co później można udowodnić lokalną zasadę zachowania tensora gęstości energii-pędu ogólnie dla układu zakrzywionego {{LinkWzór|1.50|Wprowadzenie_do_ogólnej_teorii_względności}} na podstawie {{LinkWzór|2.27|Tensor gęstości energii-pędu}} z rachunku tensorowego, nie wariacyjnego (według zasady wariacyjnej to samo wychodzi, co z rachunku tensorowego, tzn. lokalną zachowawczość gęstości tensora energii-pędu).
== Lokalna zachowawczość tensora gęstości energii-pędu ==
Będziemy tutaj wyprowadzać lokalną zachowawczość dla wszystkich rodzajów układów i pokażemy, że ogólna teoria względności jest spełniona dla układów lokalnie płaskich i zakrzywionych.
==== Lokalna zachowawczość (przypadek ogólny) ====
Określmy gęstość lagranianu w czasoprzestrzeni lokalnie płaskiej, który jest funkcją współrzędnych uogólnionych i ich pierwszych pochodnych względem współrzędnych czasoprzestrzennych x{{Sup|α}}, i jego miano jest takie J/m{{Sup|3}}, ale aby policzyć właściwy Lagrangian należy gęstość Lagrangianu przecałkować po całej przestrzeni trójwymiarowej, wtedy możemy określić jego całkę działania, wiedząc, że dla układów lokalnie płaskich i zakrzywionych {{Formuła|<MATH>g_{\mu\nu}\;</MATH>}} ({{Formuła|<MATH>g\;</MATH>}} tylko zależy od zmiennych {{Formuła|<MATH>g_{\mu\nu}\;</MATH>}}), {{Formuła|<MATH>{x^{\mu}}\;</MATH>}}, {{Formuła|<MATH>{x^{\mu}}_{,\alpha}\;</MATH>}} i {{Formuła|<MATH>q^{\alpha}\;</MATH>}} są zmiennymi niezależnymi względem siebie, zapisaną wedle sposobu w układzie lokalnie płaskim:
{{CentrujWzór|<MATH>S=c\int^{t_2}_{t_1}dt\int \mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha},q^{\alpha}) dV=\int \mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha},q^{\alpha})dVd(ct)</MATH>|4.22}}
* Oznaczając przy tym dτ=dVd(ct)=dx{{Sup|0}}dx{{Sup|1}}dx{{Sup|2}}dx{{Sup|3}} jako elementarna gęstość w przestrzeni czterowymiarowej (czasoprzestrzeni)
* gdzie dx{{Sup|0}}=cdt jest to różniczka współrzędnej czasowej liczonych w metrach, który jest jako iloczyn prędkości światła i różniczki czasu znanej z codziennego życia, który jest mierzony w sekundach,
* x{{Sup|i}} to są współrzędne przestrzenne liczone są w tylko metrach.
Po powyższych przekształceniach wiedząc na oznaczenie w elementarnej infinitezymalnej objętości, wtedy całkę działania {{LinkWzór|4.22}} można przedstawić wedle sposobu:
{{CentrujWzór|<MATH>S=c\int\mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha}, q^{\alpha})dVdt=\int\mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha}, q^{\alpha})d\tau=\int\sqrt{-g}\mathfrak{L}({x^{\mu}},{x^{\mu}}_{,\alpha}, q^{\alpha})d^4q^{\alpha}</MATH>|4.23}}
W powyższym wzorze oznaczeniem q{{Sup|μ}} oznaczyliśmy współrzędne uogólnione, które opisują układ zanurzony w kartezjańskim układzie współrzędnych.
Znając całkę działania {{LinkWzór|4.23}} możemy napisać równanie Eulera-Lagrange'a, pamiętając o niezależności pewnych zmiennych względem siebie, wedle sposobu:
{{CentrujWzór|<MATH>{{\partial}\over{\partial q^{\alpha}}}{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}-{{\partial \sqrt{-g}\mathfrak{L}}\over{\partial {x^{\mu}}}}=0\Rightarrow {{\partial}\over{\partial q^{\alpha}}}{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}-{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}}}=0</MATH>|4.24}}
Rozpiszmy teraz z definicji różniczki zupełnej pochodną cząstkową Lagrangianu względem współrzędnej kontrawariantnej q{{Sup|β}} w przestrzeni Minkowskiego na wyrażenie zapisaną za pomocą pochodnej tego samego lagrangianu względem współrzędnej uogólnionej x{{Sup|μ}} i względem pochodnej wspomnianej współrzędnej względem współrzędnej uogólnionej q{{Sup|α}}, czyli x{{Sup|μ}}{{Sub|,α}}:
{{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={{\partial \mathfrak{L}}\over{\partial {x^{\mu}}}}{x^{\mu}}_{,\beta}+{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\alpha,\beta}</MATH>|4.25}}
Z zasady wariacyjnej {{LinkWzór|4.24}} można napisać tak by po przenoszeniu drugiego wyrazu na prawą stronę i odwracając stronami, po tej operacji dostajemy:
{{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}}}={{\partial}\over{\partial q^{\alpha}}}{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}</MATH>|4.26}}
Podstawiamy równanie {{LinkWzór|4.26}} do pierwszego wyrazu z prawej strony równania {{LinkWzór|4.25}} i dokonując zwinięcia pewnych wyrazów, w której wystepują pod pochodną względem jakieś współrzędnej:
{{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={{\partial}\over{\partial q^{\alpha}}}{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}+{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\alpha,\beta}\Rightarrow{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={{\partial}\over{\partial q^{\alpha}}}\left({{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}\right)</MATH>|4.27}}
Wiemy jednak, z definicji delty Kroneckera możemy zapisać pochodną lagrangianu względem zmiennej q{{Sup|β}} troszkę w innej postaci przy pomocy ostatnio wspomnianego obiektu.
{{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial q^{\beta}}}={\delta^{\alpha}}_{\beta}{{\partial \mathfrak{L}}\over{\partial q^{\alpha}}}</MATH>|4.28}}
Równanie {{LinkWzór|4.27}} możemy napisać po podstawieniu do niego udowodnionej tożsamości {{LinkWzór|4.28}}, wtedy otrzymujemy równanie wyłączając operator pochodnej cząstkowej względem x{{Sup|α}}, zatem:
{{CentrujWzór|<MATH>0={{\partial}\over{\partial q^{\alpha}}}\left({{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}-{\delta^{\alpha}}_{\beta}\mathfrak{L}\right)</MATH>|4.29}}
Równanie {{LinkWzór|4.29}} mnożymy przez g;{{Sup|βγ}}, otrzymujemy:
{{CentrujWzór|<MATH>0={{\partial}\over{\partial q^{\alpha}}}\left({{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}g^{\gamma\beta}-g^{\gamma\alpha}\mathfrak{L}\right)\;</MATH>|4.30}}
Udowodnijmy tensor gęstości energii-pędu {{LinkWzór|4.20}} wychodząc z przedstawienia {{LinkWzór|4.30}} pod nawiasem, zatem przekształcajmy pierwszy wyraz pod pochodną w {{LinkWzór|4.30}} wiedząc, że tensor metryczny podwójnie kontrawariantny jest zapisany jako g{{Sup|εξ}}=q{{Sup|ε,ν}}q{{Sup|ξ}}{{Sub|,ν}}, otrzymujemy:
{{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial {x^{\mu}}_{,\alpha}}}{x^{\mu}}_{,\beta}g^{\gamma\beta}={{\partial\mathfrak{L}}\over{\partial g_{\epsilon\xi}}}{{\partial g_{\epsilon\xi}}\over{\partial {x^{\mu}}_{,\alpha}}} {x^{\mu}}_{,\beta} g^{\gamma\beta} =
{{\partial\mathfrak{L}}\over{\partial g_{\epsilon\xi}}}{{\partial \left(x^{\nu}_{,\epsilon}x_{\nu,\xi}\right)}\over{{\partial x^{\mu}}_{,\alpha} }} {x^{\mu}}_{,\beta} g^{\gamma\beta}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\xi}}}{x_{\mu,\xi}}{x^{\mu}}_{,\beta} g^{\gamma\beta}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\xi}}}g_{\xi\beta} g^{\gamma\beta}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\xi}}}{\delta^{\gamma}}_{\xi}=2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\gamma}}}\;</MATH>|4.35}}
A więc na podstawie obliczeń na liczbach ogólnych tożsamość {{LinkWzór|4.35}} podstawiamy to wzoru {{LinkWzór|4.30}}, wtedy:
{{CentrujWzór|<MATH>0={{\partial}\over{\partial q^{\alpha}}}\left(2{{\partial\mathfrak{L}}\over{\partial g_{\alpha\gamma}}}-g^{\alpha\gamma}\mathfrak{L}\right)\;</MATH>|4.35a}}
Równanie {{LinkWzór|4.35a}} jest słuszne dla układów lokalnie płaskich i układów zakrzywionych.
==== Przypadek układów lokalnie płaskich z gęstością lagrangianu masowego oraz przypadek układów zakrzywionych z gęstością całkowitego lagrangianu ====
Dla tych układów na podstawie {{LinkWzór|4.35a}} tensor gęstości energii podwójnie kowariantny możemy przedstawić względem lagrangianu oraz tensora metrycznego prostego i odwrotnego dla sygnatury tensora metrycznego Minkowskiego dodatniej i ujemnej, mamy koleno:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>T^{\gamma\omega}=-2{{\partial\mathfrak{L}}\over{\partial g_{\gamma\omega}}}+g^{\gamma\omega}\mathfrak{L}\;</MATH>|4.36|Obramuj}}
| 2 = {{CentrujWzór|<MATH>T^{\gamma\omega}=2{{\partial\mathfrak{L}}\over{\partial g_{\gamma\omega}}}-g^{\gamma\omega}\mathfrak{L}\;</MATH>|4.3611|Obramuj}}
}}
Wtedy zachowawczość w układach lokalnie płaskich jest w postaci:
{{CentrujWzór|<MATH>{{\partial}\over{\partial q^{\gamma}}}T^{\gamma\omega}=0\Rightarrow{T^{\gamma\omega}}_{,\gamma}=0\;</MATH>|4.35ba}}
==== Zachowawczość tensora gęstości energii-pędu w układach zakrzywionych ====
Dla układów zakrzywionych równość {{LinkWzór|4.35a}} przedstawimy wiedząc, że zachodzi {{LinkWzór|4.4}} i wzór na gęstość lagrangianu przestrzennego {{LinkWzór|4.8}}, i znając wzór na tensor gęstości energii-pędu dla układów zakrzywionych {{LinkWzór|4.20}} (sygnatura dodatnia) i {{LinkWzór|4.20S}} (sygnatura ujemna), a więc dla postaci równania dla przyciągania i odpychania grawitacyjnego oraz uwzględniając znaki przy stałej {{Formuła|<MATH>\kappa\;</MATH>}} (ono jest dodatnie), są cztery ogólne możliwości, weźmy sygnaturę dodatnią tego tensora, wtedy znak przy {{Formuła|<MATH>\kappa\;</MATH>}} w równaniu Hilberta-Einsteina przjmujemy wtedy z plusem, a dla sygnatury ujemnej jest wtedy znak przy tej stałej z minusem w tym samym równaniu, czyli dla sygnatury dodatniej jest wtedy przyciąganie grawitacyjne opisane tensorowym równaniem {{LinkWzór|4.21}} przy definicji tensora gęstości energii-pędu {{LinkWzór|4.20}}, a dla jej, ale ujemnej, równaniem {{LinkWzór|4.2122}} przy tym tensorze, ale według {{LinkWzór|4.20S}}, jest wtedy odpychanie grawitacyjne. A to wszystko można udowodnić w obliczeniach:
{{CentrujWzór|<MATH>0={T^{\gamma\omega}}_{,\gamma}+{{\partial}\over{\partial q^{\gamma}}}\left(\mp 2{{\partial\mathfrak{L}_g}\over{\partial g_{\gamma\omega}}}\pm g^{\gamma\omega}\mathfrak{L}_g\right)={T^{\gamma\omega}}_{,\gamma}+{{\partial}\over{\partial q^{\gamma}}}\left(\mp 2{{1}\over{2\kappa}}R^{\gamma\omega}\pm g^{\gamma\omega}{{R}\over{2\kappa}}\mp g^{\gamma\omega}{{2\Lambda}\over{2\kappa}}\right)={T^{\gamma\omega}}_{,\gamma}\mp{{1}\over{\kappa}}{{\partial}\over{\partial q^{\gamma}}}\Big(R^{\gamma\omega}-{{1}\over{2}}g^{\gamma\omega}R+\;</MATH>{{Br}}<MATH>+ g^{\gamma\omega}\Lambda\Big)={T^{\gamma\omega}}_{,\gamma}\mp{{1}\over{\kappa}}{{\partial}\over{\partial q^{\gamma}}}O^{\gamma\omega}={T^{\gamma\omega}}_{,\gamma}\mp{{1}\over{\kappa}}\left({O^{\gamma\omega}}_{;\gamma}- O^{\gamma\mu}{\Gamma^{\omega}}_{\mu\gamma}- O^{\mu\omega}{\Gamma^{\gamma}}_{\mu\gamma}\right)={T^{\gamma\omega}}_{,\gamma}+T^{\gamma\mu}{\Gamma^{\omega}}_{\mu\gamma}+T^{\mu\omega}{\Gamma^{\gamma}}_{\mu\gamma}={T^{\gamma\omega}}_{;\gamma}
\;</MATH>|4.36a}}
Powyżej udowodniliśmy, że dla sygnatury dodatniej i ujemnej są kolejno: przyciąganie i odpychanie grawitacyjne, weźmy w obliczeniach {{LinkWzór|4.36a}} zamiast {{Formuła|<MATH>\kappa\;</MATH>}} (ta stała jest dodatnia) inną stałą proporcjalności, tzn.: {{Formuła|<MATH>-\kappa\;</MATH>}} (stała {{Formuła|<MATH>\kappa\;</MATH>}} w nim jest dodatnia, a z minusem ujemna), co wtedy udowodnimy, że dla sygnatury dodatniej i ujemnej są kolejno: odpychanie i przyciąganie grawitacyjne. Czyli dwoma sygnaturami są opisane dwa rodzaje oddziaływań grawitacyjnych.
Zachowawczość tensora gęstości energii T{{Sup|γω}} przy jego definicji: {{LinkWzór|4.20}} i {{LinkWzór|4.20S}}, na podstawie tożsamości różniczkowej {{LinkWzór|4.36a}}, przedstawia się dla obu sygnatur:
{{CentrujWzór|<MATH>{T^{\gamma\omega}}_{;\gamma}=0\;</MATH>|4.6b}}
Równanie {{LinkWzór|4.6b}} dla sygnatury ujemnej jest takie samo jak on dla sygnatury dodatniej, co do postaci, tylko jest troszkę inna definicja tensora gęstości energii-pędu, tzn.: {{LinkWzór|4.20}} - sygnatura dodatnia, i {{LinkWzór|4.20S}} - sygnatura ujemna.
Równanie {{LinkWzór|4.6b}} wyprowadziliśmy z równości {{LinkWzór|4.35ba}} korzystając z definicji gęstości całkowitego lagrangianu {{LinkWzór|4.15}} będącej sumą gęstości lagrangianu masowego i przestrzennego {{LinkWzór|4.8}}, czyli otrzymaliśmy lokalną zachowawczość tensora gęstości energii-pędu, gdzie definicja tego tensora jest napisana w punkcie {{LinkWzór|1.48|Wprowadzenie do ogólnej teorii względności}} dla sygnatury dodatniej i {{LinkWzór|1.48|Wprowadzenie do ogólnej teorii względności}} dla sygnatury ujemnej. Lokalną zachowawczość tensora gęstości energii-pędu z przecinkiem otrzymaliśmy ze szczególnej teorii względności napisaną w punkcie {{LinkWzór|3.19aa11|Lokalna zachowawczość tensora gęstości energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} i {{LinkWzór|4.35ba11|Lokalna zachowawczość tensora gęstości energii(masy)-pędu z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, pisząc je dla obu sygnatur, z gęstością tensora siły zewnętrznej dla tego pierwszego równej zero, by te oba równania były równoważne, co dla układów zakrzywionych po transformacji do nich przecinek zastępujemy średnikiem i otrzymujemy równość {{LinkWzór|4.6b}}.
== Lokalna zasada zachowania energii-pędu ==
Lokalną zasadę zachowania możemy napisać wychodząc ze szczególnej teorii względności z uwzględnieniem gęstości lagrangianu masowego z równania {{LinkWzór|g43|Lokalna zasada zachowania tensora pędu, z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} patrząc na równość {{LinkWzór|JH3|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}}, tylko zamiast tensora gęstości energii-pędu kinematycznego jest tensor gęstości energii-pędu masowy:
{{CentrujWzór|<MATH>\gamma\sqrt{-g}\left(\rho v^{\mu}\right)_{;0}=-{{\gamma}\over{c}}\sqrt{-g}{T^{\mu j}}_{;j}+{{dK^{\mu}_z}\over{dV}}\;</MATH>|JHG12}}
Gdzie w {{LinkWzór|JHG12}} jest w nim tensor gęstości energii-pędu zdefiniowany wzorem {{LinkWzór|4.36}} dla sygnatury dodatniej lub {{LinkWzór|4.3611}} dla sygnatury ujemnej.
== Dowód równania Hilberta-Einsteina grawitacji nie z teorii lagrangianowej ==
Równania Hilberta-Einsteina grawitacji {{LinkWzór|4.21}} - przyciąganie grawitacyjne, {{LinkWzór|4.2122}} - odpychanie grawitacyjne, wykorzystując wzór na lokalną zachowawczość gęstości tensora energii-pędu {{LinkWzór|4.6b}} wymnażając obie strony przez stałą {{Formuła|<MATH>\pm\kappa\;</MATH>}}, {{Formuła|<MATH>\sqrt{-g}\;</MATH>}} i {{Formuła|<MATH>\overline e_{\omega}\;</MATH>}}, która w układach lokalnie płaskich jest wersorem lokalnie stałym, oraz całkując obustronnie względem całki objętościowej w czasoprzestrzeni zakrzywionej wykorzystując, że zachodzi własność dla rozszerzonego tensora Einsteina {{Formuła|<MATH>O^{\mu\nu}\;</MATH>}}, tzn.: {{LinkWzór|1.41|Wprowadzenie do ogólnej teorii względności}}, i doprowadzając obustronnie całkę z układów zakrzywionych do lokalnie płaskich, co później wykorzystując [[w:Twierdzenie Ostrogradskiego-Gaussa|twierdzenie Ostrogradskiego-Gaussa]] otrzymując w tym układzie całkę powierzchniową w układzie lokalnie płaskim, dalej z twierdzenia transformacji doprowadzamy całkę powierzchniową do układów zakrzywionych, otrzymujemy:
{{CentrujWzór|<MATH>{\overline T^{\omega\gamma}}_{;\gamma}=0\Rightarrow \pm\kappa {\overline T^{\omega\gamma}}_{;\gamma}=0\Rightarrow \pm\kappa\int_{\tau}\sqrt{-g}\overline e_{\omega}{\overline T^{\omega\gamma}}_{;\gamma}d\tau=\int_{\tau}\sqrt{-g}\overline e_{\omega}\cdot 0\cdot d\tau\Rightarrow \pm\kappa\int_{\tau}\sqrt{-g}\overline e_{\omega}{\overline T^{\omega\gamma}}_{;\gamma}d\tau=\int_{\tau}\sqrt{-g}\overline e_{\omega}{\overline O^{\omega\gamma}}_{;\gamma}d\tau\Rightarrow \;</MATH>{{Br}}<MATH>\Rightarrow \pm\kappa\int_{\tau^'}e_{\omega^'}{T^{\omega^'\gamma^'}}_{,\gamma^'}d\tau^'=\int_{\tau^'}e_{\omega^'}{O^{\omega^'\gamma^'}}_{,\gamma^'}d\tau^' \Rightarrow\pm\kappa\oint_{\Sigma}e_{\omega^'}T^{\omega^'\gamma^'}d\Sigma_{\gamma^'}=\oint_{\Sigma}e_{\omega^'}O^{\omega^'\gamma^'}d\Sigma_{\gamma^'}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\pm\kappa\oint_{\overline \Sigma}\overline e_{\omega}\overline T^{\omega\gamma}d\overline \Sigma_{\gamma}=\oint_{\overline \Sigma}\overline e_{\omega}\overline O^{\omega\gamma}d\overline \Sigma_{\gamma}\Rightarrow\oint_{\overline \Sigma}\overline e_{\omega}\left(\pm\kappa \overline T^{\omega\gamma}-\overline O^{\omega\gamma}\right)d\overline \Sigma_{\gamma}=0\;</MATH>|HH}}
Równanie ostatnie w {{LinkWzór|HH}} jest spełnione dla dowolnych powierzchni zamkniętych {{Formuła|<MATH>\overline \Sigma\;</MATH>}} i wersorów {{Formuła|<MATH>\overline e_{\omega}\;</MATH>}} w bazie, wtedy z tego równania dochodzimy do równości tensorowej, którym jest równaniem, które chcemy otrzymać, pisząc bez nadkreśleń:
{{CentrujWzór|<MATH>\pm\kappa T^{\omega\gamma}-O^{\omega\gamma}=0\Rightarrow O^{\omega\gamma}=\pm\kappa T^{\omega\gamma}\Rightarrow G^{\omega\gamma}+\Lambda g^{\omega\gamma}=\pm\kappa T^{\omega\gamma}</MATH>|HH1}}
Końcowe równanie w {{LinkWzór|HH1}} wyprowadzone jest z zachowawczości tensora gęstości energii-pędu {{LinkWzór|4.6b}}, jeżeli od zewnątrz nie działają na układ żadne siły zewnętrzne.
== Szczególne postacie gęstości Lagrangianu ==
Wiedząc jaka jest gęstość lagrangianu przedstawionego w punkcie {{LinkWzór|1.122a1|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} w zerowym polu elektromagnetycznym, wtedy przepisując to dla tego przypadku i dokonując przekształceń, wtedy otrzymamy wzór taki sam jak w punkcie {{LinkWzór|4.360b|Lagrangian masowy kinematyczny w mechanice Einsteina i Newtona|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} dla sygnatury dodatniej i ujemnej (pojawia się tutaj dodatkowy minus) tensora metrycznego Minkowskiego przedstawiamy kolejno dla pierwszej sygnatury:
{{CentrujWzór|<MATH>\mathfrak{L}=-\rho_0c^2=-\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\left[{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}\eta_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)\eta^{\alpha\dot\mu}\eta_{\dot\mu\alpha}\right]\;</MATH>|4.360b}}
Dla drugiej (zamiast {{Formuła|<MATH>\eta^{\mu\nu}\;</MATH>}} wstawiamy tensor {{Formuła|<MATH>-\eta^{\mu\nu}\;</MATH>}} do gęstości lagrangianu kinematycznego {{LinkWzór|4.360b}}):
{{CentrujWzór|<MATH>\mathfrak{L}=-\rho_0c^2=\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\left[-{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}\eta_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)\eta^{\alpha\dot\mu}\eta_{\dot\mu\alpha}\right]\;</MATH>|4.360b111}}
We wzorze {{LinkWzór|4.360b}} sumowanie jest tylko po {{Formuła|<MATH>\mu\;</MATH>}} i {{Formuła|<MATH>\nu\;</MATH>}}, a względem {{Formuła|<MATH>\alpha\;</MATH>}} już nie.
W przypadku wzoru na gęstości lagrangianu: {{LinkWzór|4.360b}} i {{LinkWzór|4.360b111}} zakładamy, że jest on również słuszny dla układów zakrzywionych, wtedy możemy napisać lagrangian masowy na podstawie {{LinkWzór|3.9|Właściwości skalaru tensora metrycznego}} w układach ogólnie zakrzywionych, biorąc gęstość lagrangianu z punktu {{LinkWzór|4.360b}}, nazywając ją według procedury {{Formuła|<MATH>\mathfrak{L}\rightarrow \mathfrak{L}_m\;</MATH>}}, a także pisząc {{Formuła|<MATH>L\rightarrow L_m\;</MATH>}}, wtedy też piszemy inne zastąpienie {{Formuła|<MATH>\eta^{\mu\nu}\rightarrow g^{\mu\nu}\;</MATH>}}, zatem:
{{CentrujWzór|<MATH>L_m=\int\mathfrak{L}_mdV^'=\int\sqrt{-g}\mathfrak{L}_mdV\;</MATH>|4.360b1}}
Widzimy, że we wzorze {{LinkWzór|4.360b1}} gęstość lagrangianu masowego przechodzi w formułę {{LinkWzór|4.360b}} i {{LinkWzór|4.360b111}}, (w gęstość lagrangianu), dla {{Formuła|<MATH>g_{\mu\nu}=\eta_{\mu\nu}\;</MATH>}}.
== Najważniejsze wnioski w odpowiednich klasach układów z lokalnie stałymi jakimiś wielkościami ==
Jest spełniona równość w odpowiednich klasach układów lokalnie spoczynkowych:
{{CentrujWzór|<MATH>{{\partial u^{\mu}}\over{\partial x^{\nu}}}=0\wedge u^{i}\rightarrow 0\wedge u^0=1\;</MATH>|qw20}}
Jest spełniona równość w odpowiednich klasach układów lokalnie stałym tensorze prędkości:
{{CentrujWzór|<MATH>{{\partial u^{\mu}}\over{\partial x^{\nu}}}=0\;</MATH>|qw201}}
Jest spełniona równość dla odpowiednich klasach układów z lokalnie stałą gęstością spoczynkową:
{{CentrujWzór|<MATH>{{\partial\rho_0}\over{\partial x^{\mu}}}=0\;</MATH>|qw2}}
Jest również spełniona równość dla ciśnienia w odpowiednich klasach układów z lokalnie stałym ciśnieniem:
{{CentrujWzór|<MATH>{{\partial p}\over{\partial x^{\mu}}}=0\;</MATH>|qw3}}
Wniosek {{LinkWzór|1.42|Wprowadzenie do ogólnej teorii względności}}, {{LinkWzór|qw20}}, {{LinkWzór|qw2}} i {{LinkWzór|qw3}} są spełnione ogólnie dla układów lokalnie płaskich lokalnie spoczynkowych z lokalną stałością tensorów prędkości, gęstości masy spoczynkowej i ciśnienia, co taką klasę układów można użyć też do częściowego udowodnienia ogólnej teorii względności, np. do dowodu lokalnej zachowawczości tensora gęstości energii-pędu, jak w szczególnej teorii względności w {{LinkWzór|3.20|Lokalna zachowawczość tensora gęstości energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, lub mając ten sam układ biorąc zamiast {{LinkWzór|qw20}} warunek lokalności {{LinkWzór|qw201}}, wtedy mamy taką samą klasę układów współrzędnych z różnicą, że te układy nie są lokalnie spoczynkowymi, tylko lokalnie ze stałym tensorem prędkości, które można wykorzystać też do takiej samej teorii, ale dla układów lokalnie płaskich.
== Tensor gęstości energii-pędu dla układów ogólnie zakrzywionych ==
Wykorzystajmy gęstość langrangianu masowego {{LinkWzór|4.360b}} (ostatnia równość) dla układów lokalnie płaskich zamieniając w nim według formuły: {{Formuła|<MATH>\eta^{\mu\nu}\rightarrow g^{\mu\nu}\;</MATH>}}, co wynika z definicji transformacji tensorów, wtedy otrzymamy gęstość lagrangianu masowego dla układów zakrzywionych dla sygnatury dodatniej tensora metrycznego Minkowskiego w postaci:
{{CentrujWzór|<MATH>\mathfrak{L}_m=-\rho_0c^2=-\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\rho_0c^2u^{\dot \mu}g_{\dot\mu\dot\nu}u^{\dot\nu}=-\left[{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}g_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\dot\mu}g_{\dot\mu\alpha}\right]\;</MATH>|4.360b11}}
Dla drugiej (tutaj widzimy, że się pojawia dodatkowy minus przy gęstości lagrangianu masowego i minus przy tensorze metrycznym - drugie przedstawienie jego, przedstawienie względem {{LinkWzór|4.360b11}}):
{{CentrujWzór|<MATH>\mathfrak{L}_m=-\rho_0c^2=\rho_0c^2u^{\dot \mu}u_{\dot\mu}=-\left[-{{1}\over{2}}\left(\rho_0 c^2+p\right)u^{\dot\mu}g_{\dot\mu\dot\nu}u^{\dot\nu}+{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\dot\mu}g_{\dot\mu\alpha}\right]\;</MATH>|4.360b112}}
W takiem razie tensor gęstości energii-pędu z jego definicji {{LinkWzór|4.20}} za pomocą lagrangianu masowego {{LinkWzór|4.360b11}} jest ona napisana dokładnie dla pierwszej sygnatury:
{{CentrujWzór|<MATH>T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}+(\rho_0c^2-p)g^{\alpha\beta}-{{1}\over{2}}\left(\rho_0 c^2+p\right)g^{\alpha\beta}-{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\beta}\Rightarrow T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}-pg^{\alpha\beta}</MATH>|4.36b}}
Dla drugiej (tutaj widzimy, że pojawia się minus przy tensorze metrycznym układu zakrzywionego) względem {{LinkWzór|4.36b}}:
{{CentrujWzór|<MATH>T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}-(\rho_0c^2-p)g^{\alpha\beta}+{{1}\over{2}}\left(\rho_0 c^2+p\right)g^{\alpha\beta}+{{1}\over{2}}(\rho_0c^2-p)g^{\alpha\beta}\Rightarrow T^{\alpha\beta}=\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}+pg^{\alpha\beta}</MATH>|4.36b2}}
Co otrzymaliśmy taki sam tensor gęstości energii-pędu w {{LinkWzór|4.36b}} - sygnatura dodatnia, i {{LinkWzór|4.36b2}} - sygnatura ujemna, co kolejno w punktach {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} i {{LinkWzór|1.45|Wprowadzenie do ogólnej teorii względności}}. Są to tensory gęstości energii-pędu, które możemy wykorzystać w lokalnej zachowawczości tensora gęstości energii-pędu {{LinkWzór|4.6b}} i w równaniu Hilberta-Einsteina w {{LinkWzór|4.21}} dla sygnatury dodatniej i {{LinkWzór|4.2122}} dla sygnatury ujemnej. A jeżeli zastosujemy silną zasadę równoważności, to równości: {{LinkWzór|4.36b}} i {{LinkWzór|4.36b2}}, powinny być równoważne z tym tensorem, w szczególnej teorii względności, jako: {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} i {{LinkWzór|1.45|Wprowadzenie do ogólnej teorii względności}}, które otrzymujemy z analogicznych sposobów jak kolejno z {{LinkWzór|4.360b11}} i {{LinkWzór|4.360b112}} do {{LinkWzór|4.36b}} i {{LinkWzór|4.36b2}}, a dla szczególnej teorii względności mamy kolejno z {{LinkWzór|4.360b}} i {{LinkWzór|4.360b111}} do {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} i {{LinkWzór|1.45|Wprowadzenie do ogólnej teorii względności}}, tylko zamiast tensora metrycznego Minkowskiego jest tensor metryczny układu ogólnie zakrzywionego, dla obu kolejno sygnatur.
== Linie geodezyjne, a zasady równoważności ==
Wyprowadzimy tutaj równania geodezyjne dla układów punktowych i rozciągłych, a także z równań dla układów rozciągłych udowodnimy równanie dla układów punktowych, że sa one co do siebie równoważne, a także udowodnimy słabą i silną zasadę równoważności.
=== Przypadek linii geodezyjnych, tzn.: w pierwszym sposobie wyprowadzania, a silna zasada równoważności (dowód) ===
Wyprowadzimy tutaj z drugiej zasady Lagrange'a prawa ruchu ogólnej teorii względności dla układów punktowych i rozciągłych.
==== Układy punktowe ====
Weźmy lagrangian układu zakrzywionego, pisząc go dla obu sugnatur korzystając z definicji jedynki z {{LinkWzór|1.9|Wprowadzenie do ogólnej teorii względności}}, co na tej podstawie możemy lagrangian kinematyczny tensorowy przekształcić do postaci:
{{CentrujWzór|<MATH>L_k=-{{1}\over{2}}m_0c^2=\mp{{1}\over{2}}m_0c^2\dot q^{\mu}g_{\mu\nu}\dot q^{\nu}\;</MATH>|JJ1}}
Całkę działania dla lagrangianu kinematycznego dla układu zakrzywionego piszemy jako całkę po interwale czasoprzestrzennym z lagrangianu kinematycznego:
{{CentrujWzór|<MATH>S=\int_s L_kds\;</MATH>|JJ2}}
Napiszmy równanie na drugą zasad Lagrange'a mając lagrangian i ogólniony tensor siły, wiedząc, że całka działania {{LinkWzór|JJ2}} wtedy przyjmuje wartość najmniejszą:
{{CentrujWzór|<MATH>{{d}\over{ds}}{{\partial L_k}\over{\partial \dot{q}^{\alpha}}}-{{\partial L_k}\over{\partial q^{\alpha}}}=Q_k</MATH>|JJ3}}
Teraz policzmy kolejne wyrazy występujące w wyrażeniu Lagrange'a {{LinkWzór|JJ3}}, ale najpierw przejdźmy do drugiego składnika występujący w naszym wspomnianym wyrażeniu, czyli policzmy wyrażenie z dokładnością z dokładnością do czynników stałych jako pochodną cząstkową lagrangianu kinematycznego względem uogólnionego położenia:
{{CentrujWzór|<MATH>\mp{{1}\over{m_0c^2}}{{\partial L_k}\over{\partial q^{\alpha}}}={{\partial}\over{\partial q^{\alpha}}}\left({{1}\over{2}}g_{\mu\nu}\dot{q}^{\mu}\dot{q}^{\nu}\right)={{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}</MATH>|JJ4}}
Wyraz występujący pod pochodną zupełną po interwale czasoprzetrzennym pochodnej różniczkowej względem prędkości uogólnionej, który występuje w równaniu Eulera-Lagrange'a {{LinkWzór|JJ3}}, możemy przekształcić z dokładnością do czynników stałych do:
{{CentrujWzór|<MATH>\mp{{1}\over{m_0c^2}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{1}\over{2}}\left(g_{\mu\nu}{\delta^{\nu}}_{\alpha}\dot{q}^{\mu}+\rho_0g_{\mu\nu}{\delta^{\mu}}_{\alpha}\dot{q}^{\nu}\right)={{1}\over{2}}\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\alpha\nu}\dot{q}^{\nu} \right)={{1}\over{2}}\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\mu\alpha}\dot{q}^{\mu} \right)={{1}\over{2}}\left(2g_{\alpha\mu}\dot{q}^{\mu}\right)=g_{\alpha\mu}\dot{q}^{\mu}</MATH>|JJ5}}
Wyznaczmy pochodną zupełną względem interwału czasoprzestrzennego wuyrażenia obliczonego {{LinkWzór|JJ5}}, dzięki któremu napiszmy:
{{CentrujWzór|<MATH>\mp{{1}\over{m_0c^2}}{{d}\over{ds}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{d}\over{ds}}\left(g_{\alpha\mu}\dot{q}^{\mu} \right)=g_{\alpha\mu}\ddot{q}^{\mu}+{{dg_{\alpha\mu}}\over{ds}}\dot{q}^{\mu}=g_{\alpha\mu}\ddot{q}^{\mu}+
{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}</MATH>|JJ6}}
Połączmy wyrażenia {{LinkWzór|JJ5}} i {{LinkWzór|JJ6}}, oraz podstawmy je odpowiednio do wzoru {{LinkWzór|JJ3}}, w takim przypadku napiszmy równość do przekształcenia matematycznego:
{{CentrujWzór|<MATH>g_{\alpha\mu}\ddot{q}^{\mu}+
{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}=\mp{{1}\over{m_0c^2}}Q^{\mu}\;</MATH>|JJ7}}
Ale mamy z definicji tensora metrycznego prostego i odwrotnego mamy dwie tożsamości, które przestawimy poniżej w postaci dwóch tożsamości, które wynikają z własności ogólnie tensora metrycznego.
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>g^{\beta\alpha}g_{\alpha\mu}={\delta^{\beta}}_{\mu}</MATH>|4.46}}
| 2 = {{CentrujWzór|<MATH>g^{\beta\alpha}g_{\alpha\mu}\ddot{q}^{\mu}=\delta^{\beta}_k\ddot{q}^{\mu}=\ddot{q}^{\beta}</MATH>|4.47}}
}}
Z przemienności wskaźników tensora metrycznego wynikającego z jego definicji, tzn. drugi wyraz w tożsamości {{LinkWzór|4.45}}, możemy napisać:
{{CentrujWzór|<MATH>g^{\beta\alpha}{{\partial g_{\alpha\mu}}\over{\partial \dot{q}^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}={{1}\over{2}}g^{\beta\alpha}\left({{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}+{{\partial g_{\alpha\nu}}\over{\partial q^{\mu}}}\right)\dot{q}^{\mu}\dot{q}^{\nu}</MATH>|4.48}}
Symbole Christoffela możemy przedstawić wedle jej definicji występującego w równaniu tensorowym {{LinkWzór|4.49}}:
{{CentrujWzór|<MATH>{\Gamma^{\beta}}_{\mu\nu}={{1}\over{2}}g^{\beta\alpha}\left( {{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}+{{\partial g_{\alpha\nu}}\over{\partial q^{\mu}}}-{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\right)</MATH>|4.50}}
Pomnóżmy równość {{LinkWzór|JJ7}} przez element {{Formuła|<MATH>g^{\beta\alpha}\;</MATH>}}, dalej wykorzystajmy obliczenia na liczbach ogólnych {{LinkWzór|4.47}} i {{LinkWzór|4.48}} i wykorzystując definicję symboli Christoffela {{LinkWzór|4.50}} z rachunku tensorowego, wtedy:
{{CentrujWzór|<MATH>\ddot{q}^{\beta}+{\Gamma^{\beta}}_{\mu\nu}\dot{q}^{\nu}\dot{q}^{\mu}=\mp{{1}\over{m_0c^2}}Q^{\beta}\Rightarrow{\dot q^{\beta}}_{;\alpha}\dot q^{\alpha}=\mp{{1}\over{m_0c^2}}Q^{\beta}\;</MATH>|JJ8}}
Ale definicja uogólnionego tensora siły jest w drugiej zasadzie Lagrange'a dla układów punktowych dla obu sygnatur taka:
{{CentrujWzór|<MATH>Q^{\beta}=\mp c K^{\beta}\;</MATH>|JJ9}}
Wykorzystajmy definicję {{LinkWzór|JJ9}} na definicję uogólnionego tensora siły do równości {{LinkWzór|JJ8}}:
{{CentrujWzór|<MATH>m_0c{\dot q^{\beta}}_{;\alpha}\dot q^{\alpha}=K^{\beta}\;</MATH>|JJ10}}
Równość {{LinkWzór|JJ10}} dla układów lokalnie płaskich możemy przepisać z rachunku tensorowego z praw transformacji tensorowej:
{{CentrujWzór|<MATH>m_0c{\dot q^{\beta}}_{,\alpha}\dot q^{\alpha}=K^{\beta}\Rightarrow m_0c{{du^{\beta}}\over{ds}}=K^{\beta}\;</MATH>|JJ11}}
Końcowe równanie jest takie same jak równość na '''drugą zasadę dynamiki Einsteina''', czyli '''silna zasada równoważności''' dla układów punktowych jest spełniona.
==== Układy rozciągłe ====
Będziemy tutaj wyprowadzać linie geodezyjne dla wszystkich rodzajów układów rozciągłych i pokażemy, że ogólna teoria względności jest spełniona dla układów lokalnie płaskich i zakrzywionych.
Napiszmy lagrangian w układach rozciągłych płaskich i zakrzywionych, wiedząc, że {{Formuła|<MATH>q^{\alpha}\;</MATH>}} i {{Formuła|<MATH>\dot{q}^{\alpha}\;</MATH>}} są zmiennymi niezależnymi względem siebie, wtedy w układzie zakrzywionym napiszmy całkowity lagrangian, z którego wyznaczymy gęstość lagrangianu kinematycznego tensorowego dla obu sygnatur tensora metrycznego, wychodząc od układu lokalnie płaskiego (opisywana przez szczególną teorię względności) do układu współrzędnych opisującego przestrzeń zakrzywioną (opisywaną przez ogólną teorię względności):
{{CentrujWzór|<MATH>L_k=-{{1}\over{2}}m_0c^2=\mp{{1}\over{2}}c^2\int_V\rho_0dV_0=-{{1}\over{2}}c^2\int_V\rho_0\gamma\sqrt{1-{{v^2}\over{c^2}}}dV_0=-{{1}\over{2}}c^2\int_V\rho_0\gamma dV\Rightarrow\mathfrak{L}=-{{1}\over{2}}\rho_0\gamma c^2=\mp{{1}\over{2}}\rho_0\gamma c^2\dot q^{\mu}g_{\mu\nu}\dot q^{\nu}</MATH>|4.37}}
* We wzorze {{LinkWzór|4.37}} znak u góry to sygnatura dodatnia, a u dołu ujemna, tensora metrycznego.
Zakładamy, że mamy pewną metrykę z definiowaną przez tensory metryczne g{{Sub|αν}} i obliczamy jaka jest najmniejsza linia między punktami A i B w czasoprzestrzeni Einsteina (ogólnie w n-wymiarowej czasoprzestrzeni, nie musi być cztery tak jak w czasoprzestrzeni Einsteina), po której cząstka ma się poruszać, czyli policzmy wariację wyrażenia Lagrangianu {{LinkWzór|4.37}}:
{{CentrujWzór|<MATH>S=\int_s\int_{V_p}\mathfrak{L}_kdV_pds=\int_s\int_V\sqrt{-g}\mathfrak{L}_kdVds</MATH>|4.39}}
* Gdzie: {{Formuła|<MATH>V_p\;</MATH>}} jest to obiętość ukłądów płaskich, a {{Formuła|<MATH>V\;</MATH>}} zakrzywionych.
Napiszmy wzór na drugą zasadę Lagrange'a dla układów zakrzywionych mając gęstość lagrangianu kinematycznego {{LinkWzór|4.37}} i gęstość uogólnionego tensora siły w układzie zaskrzywionym:
{{CentrujWzór|<MATH>{{d}\over{ds}}{{\partial \sqrt{-g}\mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}-{{\partial \sqrt{-g}\mathfrak{L}_k}\over{\partial q^{\alpha}}}={{dQ_{\alpha}}\over{dV}}</MATH>|4.40a}}
Teraz policzmy kolejne wyrazy występujące w równaniu Lagrange'a {{LinkWzór|4.40a}}, ale najpierw przejdźmy do drugiego składnika występujący w naszym wspomnianym wyrażeniu:
{{CentrujWzór|<MATH>\mp{{1}\over{c^2}}{{\partial \mathfrak{L}_k}\over{\partial q^{\alpha}}}={{\partial}\over{\partial q^{\alpha}}}\left({{1}\over{2}}\rho_0\gamma g_{\mu\nu}\dot{q}^{\mu}\dot{q}^{\nu}\right)={{1}\over{2}}\rho_0\gamma{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}+{{1}\over{2}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma</MATH>|4.41}}
Wyraz występujący pod pochodną zupełną czasową, który występuje wyrażeniu Eulera-Lagrange'a {{LinkWzór|4.40a}}, możemy przekształcić do:
{{CentrujWzór|<MATH>\mp{{1}\over{c^2}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{1}\over{2}}\rho_0\gamma\left(g_{\mu\nu}{\delta^{\nu}}_{\alpha}\dot{q}^{\mu}+\rho_0g_{\mu\nu}{\delta^{\mu}}_{\alpha}\dot{q}^{\nu}\right)+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma=
{{1}\over{2}}\rho_0\gamma\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\alpha\nu}\dot{q}^{\nu} \right)+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma={{1}\over{2}}\rho_0\gamma\left(g_{\alpha\mu}\dot{q}^{\mu}+g_{\mu\alpha}\dot{q}^{\mu} \right)+\;</MATH>{{Br}}<MATH>+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma={{1}\over{2}}\rho_0\gamma\left(2g_{\alpha\mu}\dot{q}^{\mu}\right)+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0=\rho_0\gamma g_{\alpha\mu}\dot{q}^{\mu}+{{1}\over{2}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma</MATH>|4.42}}
Następnie wyznaczmy pochodną wyrażenia {{LinkWzór|4.42}} względem pewnego parametru {{Formuła|<MATH>s\;</MATH>}} (interwał czasoprzestrzenny), czyli pierwszy wyraz w {{LinkWzór|4.40a}}, który jest liczony względem s, który jest dla nas długością linii światła, czyli musimy policzyć pochodną zupełną policzonego wyrażenia {{LinkWzór|4.42}}.
{{CentrujWzór|<MATH>\mp{{1}\over{c^2}}{{d}\over{ds}}{{\partial \mathfrak{L}_k}\over{\partial \dot{q}^{\alpha}}}={{d}\over{ds}}\left(\rho_0\gamma g_{\alpha\mu}\dot{q}^{\mu} \right)+{{1}\over{2}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma=\rho_0\gamma g_{\alpha\mu}\ddot{q}^{\mu}+g_{\alpha\mu}\dot{q}^{\mu}{{d}\over{ds}}\rho_0\gamma+\rho_0\gamma{{dg_{\alpha\mu}}\over{ds}}\dot{q}^{\mu}+{{1}\over{2}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma=\;</MATH>{{Br}}<MATH>=\rho_0\gamma g_{\alpha\mu}\ddot{q}^{\mu}+g_{\alpha\mu}\dot{q}^{\mu}{{d}\over{ds}}\rho_0\gamma+
\rho_0\gamma{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}+{{1}\over{2}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma</MATH>|4.43}}
A więc nasze równanie Lagrangianu {{LinkWzór|4.40a}}, której części są przedstawione i policzone w punktach {{LinkWzór|4.41}} i {{LinkWzór|4.43}}, czyli równanie Eulera-Lagrange'a dla naszego przypadku przy zdefiniowanym gęstości lagrangianu {{LinkWzór|4.37}}, przedstawia się po podzieleniu przez {{Formuła|<MATH>\sqrt{-g}\;</MATH>}}, {{Formuła|<MATH>\rho_0\;</MATH>}} i {{Formuła|<MATH>\gamma\;</MATH>}} obustronnie:
{{CentrujWzór|<MATH>g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\sqrt{-g}}}{{d\sqrt{-g}}\over{ds}}+{{1}\over{2\sqrt{-g}\rho_0\gamma}}{{d\sqrt{-g}}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+g_{\alpha\mu}\ddot{q}^{\mu}+g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\rho_0\gamma}}{{d}\over{ds}}\rho_0\gamma+{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}+\;</MATH>{{Br}}<MATH>+{{1}\over{2\rho_0\gamma}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2\rho_0\gamma}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma-{{1}\over{2\sqrt{-g}}}{{\partial}\over{\partial q^{\alpha}}}\sqrt{-g}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ_{\alpha}}\over{dV}}</MATH>|4.44a}}
Podzielmy na dwie grupy wyrazów w {{LinkWzór|4.44a}}, jednej z lewej strony równania, a drugie z prawej, wtedy:
{{CentrujWzór|<MATH>g_{\alpha\mu}\ddot{q}^{\mu}+{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}\pm{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ_{\alpha}}\over{dV}}=-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\sqrt{-g}}}{{d\sqrt{-g}}\over{ds}}-{{1}\over{2\sqrt{-g}\rho_0\gamma}}{{d\sqrt{-g}}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+\;</MATH>{{Br}}<MATH>-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\rho_0\gamma}}{{d}\over{ds}}\rho_0\gamma-{{1}\over{2\rho_0\gamma}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+{{1}\over{2\rho_0\gamma}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma+{{1}\over{2\sqrt{-g}}}{{\partial}\over{\partial q^{\alpha}}}\sqrt{-g}\;</MATH>|4.44ba}}
Obierzmy cechowanie zerując prawą stronę równości {{LinkWzór|4.44ba}}, bo ona w układzie lokalnie płaskim o lokalnie stałych parametrach jest równa zero, by na podstawie jej otrzymać poprawne równanie ruchu (geodezyjne):
{{CentrujWzór|<MATH>-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\sqrt{-g}}}{{d\sqrt{-g}}\over{ds}}-{{1}\over{2\sqrt{-g}\rho_0\gamma}}{{d\sqrt{-g}}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma-g_{\alpha\mu}\dot{q}^{\mu}{{1}\over{\rho_0\gamma}}{{d}\over{ds}}\rho_0\gamma-{{1}\over{2\rho_0\gamma}}{{d}\over{ds}}{{\partial}\over{\partial \dot{q}^{\alpha}}}\rho_0\gamma+{{1}\over{2\rho_0\gamma}}{{\partial}\over{\partial q^{\alpha}}}\rho_0\gamma+\;</MATH>{{Br}}<MATH>+{{1}\over{2\sqrt{-g}}}{{\partial}\over{\partial q^{\alpha}}}\sqrt{-g}=0\;</MATH>|4.44ab}}
Przy cechowaniu {{LinkWzór|4.44ab}} wzór na linie geodezyjne {{LinkWzór|4.44ba}} przyjmuje postać:
{{CentrujWzór|<MATH>g_{\alpha\mu}\ddot{q}^{\mu}+{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}=\mp{{1}\over{\sqrt{-g}\rho_0c^2}}{{dQ_{\alpha}}\over{dV}}\;</MATH>|4.44b}}
Pomnóżmy teraz równanie {{LinkWzór|4.44b}} przez jakiś element tensora metrycznego w czasoprzestrzeni Einsteina, czyli przez element {{Formuła|<MATH>g^{\beta\alpha}\;</MATH>}}:
{{CentrujWzór|<MATH>g^{\beta\alpha}g_{\alpha\mu}\ddot{q}^{\mu}+g^{\beta\alpha}{{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}\dot{q}^{\mu}\dot{q}^{\nu}-g^{\beta\alpha}{{1}\over{2}}{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\dot{q}^{\mu}\dot{q}^{\nu}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}g^{\beta\alpha}{{dQ_{\alpha}}\over{dV}}</MATH>|4.45}}
Wykorzystajmy obliczenia w punktach {{LinkWzór|4.46}}, {{LinkWzór|4.47}} i {{LinkWzór|4.48}}, napiszmy równanie ruchu:
{{CentrujWzór|<MATH>\ddot{q}^{\beta}+{{1}\over{2}}g^{\beta\alpha}\left( {{\partial g_{\alpha\mu}}\over{\partial q^{\nu}}}+{{\partial g_{\alpha\nu}}\over{\partial q^{\mu}}}-{{\partial g_{\mu\nu}}\over{\partial q^{\alpha}}}\right)\dot{q}^{\nu}\dot{q}^{\mu}=\mp{{1}\over{\sqrt{-g}\rho_0c^2}}g^{\beta\alpha}{{dQ_{\alpha}}\over{dV}}</MATH>|4.49}}
Wykorzystajmy dfinicję symboli Christoffela, a zatem nasze równanie {{LinkWzór|4.49}}, na podstawie definicji symboli Christoffela {{LinkWzór|4.50}}, przedstawia się:
{{CentrujWzór|<MATH>\ddot{q}^{\beta}+{\Gamma^{\beta}}_{\mu\nu}\dot{q}^{\nu}\dot{q}^{\mu}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}g^{\beta\alpha}{{dQ_{\alpha}}\over{dV}}\Rightarrow {\dot q^{\beta}}_{;\alpha}\dot q^{\alpha}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ^{\beta}}\over{dV}}</MATH>|4.51}}
Udowodniliśmy w ten sposób że równanie {{LinkWzór|1.74|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} wyprowadzone z zasad czysto geometrycznych jest takie samo jak z twierdzenia Eulera-Lagrange'a {{LinkWzór|4.51}} policzonego za pomocą rachunku wariacyjnego, gdy siły zewnętrzne niegrawitacyjne się zerują. Przedstawmy równanie końcowe {{LinkWzór|4.51}} w układzie zakrzywionym, mając definicję ogólnionego tensora siły {{LinkWzór|JJ9}}, ale tym razem dla różniczek, a nie dla wielkości skończonych, wtedy:
{{CentrujWzór|<MATH>{q^{\beta}}_{;\alpha}\dot q^{\alpha}=\mp{{1}\over{\sqrt{-g}\rho_0\gamma c^2}}{{dQ^{\beta}}\over{dV}}\Rightarrow\sqrt{-g}\rho_0c^2{q^{\beta}}_{;\alpha}\dot q^{\alpha}=c{{dK^{\beta}}\over{dV}}\Rightarrow \sqrt{-g}\rho_0\gamma c{q^{\beta}}_{;\alpha}\dot q^{\alpha}={{dK^{\beta}}\over{dV}}\;</MATH>|4.52}}
To równanie, tzn. {{LinkWzór|4.52}} przypiszmy w postaci, przekształcając je do układów lokalnie płaskich zamieniając je na układy lokalnie płaskie, w których panuje teoria dla układów płaskich:
{{CentrujWzór|<MATH>\sqrt{-g}\rho_0\gamma c{q^{\beta}}_{;\alpha}\dot q^{\alpha}={{dK^{\beta}}\over{dV}}\Rightarrow \rho_0c{{du^{\beta}}\over{ds}}={{dK^{\beta}}\over{dV_0}}\;</MATH>|4.54}}
Na podstawie otrzymanej równości {{LinkWzór|4.54}} można udowodnić '''silną zasadę równoważności''' dla układów rozciągłych, tzn. prawa w układzie lokalnie płaskim, wtedy tam jest spełniona szczególna teoria względności, mając je dla układów zakrzywionych, mają taką samą postać, co dla układów lokalnie płaskich, tylko zamiast tensora metrycznego Minkowskiego jest tensor metryczny czasoprzestrzeni zakrzywionej, a zamiast przecinka jest średnik.
=== Słaba zasada równoważności (dowód) ===
W układach inercjalnych rozciągłych panują prawa szczególnej teorii względności {{LinkWzór|4.54}} (z którego możemy policzyć tensor siły działający na rozciągłe ciało), a jeśli mamy obserwatora w poruszającej się w windzie, w inercjalnym układzie odniesienia (układ lokalnie płaski), poruszający się z przyśpieszeniem {{Formuła|<MATH>\vec a=\vec g\;</MATH>}}, to on porusza się wraz z windą, a on sam odczuwa siłę bezwładności do dołu windy w układzie nieinercjalnym poruszający się wraz z windą względem tego układu ostatniego, rozważając inaczej, weźmy inercjalny układ odniesienia poruszający się wraz z windą, wtedy pojawiają się tensory metryczne, które są jakimiś funkcjami, nierówne tensorowi metrycznemu Minkowskiego, i pojawia się wtedy tensor siły grawitacji pochodzący od tego układu opisany w równaniu dla układu dyskretnego {{LinkWzór|1.77ca11|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} (z którego możemy policzyć tensor siły działający na ciało) lub rozciągłego {{LinkWzór|LLL2|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} (z którego możemy policzyć gęstość tensora siły grawitacji), stąd obserwator nie może rozróżnić tego układu inercjalnego od nieinercjalnego, bo opisywać można też ten sam ruch tak samo w układzie inercjalnym i nieinercjalnym, stąd prawa sformułowane tensorowo w układzie inercjalnym w szczególnej teorii względności są słuszne również w układzie nieinercjalnym po zamienieniu w układzie inercjalnym tensora metrycznego Minkowskiego tensorem metrycznym tego układu nieinercjalnego, a przecinki średnikami, co wtedy otrzymujemy prawa ruchu dla układów nieinercjalnych, co można też to udowodnić z teorii transformacji przechodząc z układu inercjalnego do nieinercjalnego. A więc to dowodzi '''słabą zasadę równoważności''' Alberta Einsteina.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
512cba21a1zk0vrmal8p9svg5mdpwet
Ogólna teoria względności/Właściwości skalaru tensora metrycznego
0
16171
558857
513506
2026-10-07T13:55:25Z
Persino
2851
558857
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Przedstawimy tu jakim wzorem przedstawia się elementarna infinitezymalna objętość w czterowymiarowej czasoprzestrzeni, a także elementarne wiadomości o tensorach metrycznych, a mianowicie o ich wyznacznikach wyznaczając ich pochodne względem elementów tensora metrycznego i pytamy siebie jakie są właściwości tego tensora.
== Element objętości w układzie współrzędnych w ogólnej teorii względności ==
Macierz iloczynu skalarnego w przestrzeni Minkowskiego jest napisana tak jak w punkcie {{LinkWzór|1.5|Wprowadzenie do ogólnej teorii względności}} i oznaczamy go przez znak grecki (η) i można udowodnić, że ten wyznacznik tensora Minkowskiego jest napisany wedle:
{{CentrujWzór|<MATH>\operatorname{det}(\eta)=-1\;</MATH>|3.1}}
W układzie lokalnie inercjalnym opisywanej przez macierz iloczynu skalarnego (tensor metryczny, który jest symetryczny) w przestrzeni Minkowskiego można przetransformować do układów krzywoliniowego, to macierz tensora metrycznego przechodzi w macierz tensora metrycznego Minkowskiego dla małych gęstości materii w tejże geometrii.
Transformacja z układu współrzędnych lokalnie inercjalnego opisywanej przez macierz (g) do innego rodzaju współrzędnych ma się jako:
{{CentrujWzór|<MATH>{x^{i}}^{'}=\Lambda^i_{j}x^j\;</MATH>|3.2}}
* gdzie Λ{{Sup|i}}{{Sub|j}} jest macierzą przejścia.
Transformacja macierzy iloczynu skalarnego z układu lokalnie płaskiej do innego układu względem macierzy transformacji piszemy z wiadomości z algebry:
{{CentrujWzór|<MATH>(g)=(\Lambda)^T(\eta)(\Lambda)\;</MATH>|3.3}}
Wyznacznik macierzy, dzięki któremu budujemy transformacje w wyniku podobieństwa macierzy z układu lokalnie płaskiego w krzywoliniowy {{LinkWzór|3.3}}:
{{CentrujWzór|<MATH>g=\operatorname{det}(g)=\operatorname{det}(\Lambda)\operatorname{det}(\eta)\operatorname{det}(\Lambda)\;</MATH>|3.4}}
Ale wyznacznik tensora metrycznego Minkowskiego ma wartość wedle {{LinkWzór|3.1}}, wtedy wyrażenie {{LinkWzór|3.4}}, na wyznacznik macierzy (g), możemy zapisać:
{{CentrujWzór|<MATH>g=\operatorname{det}(g)=-\operatorname{det}^2(\Lambda)\;</MATH>|3.5}}
Otrzymujemy więc wyznacznik macierzy transformacji, który jest pierwiastkiem z minus jedynki wyznacznika tensora metrycznego (g), który obowiązuje w układzie krzywoliniowym:
{{CentrujWzór|<MATH>\sqrt{-g}=|\operatorname{det}(\Lambda)|\;</MATH>|3.6}}
W układzie Minkowskiego, który obowiązuje w układzie lokalnie płaskim, nieskończenie mały element objętości zapisujemy:
{{CentrujWzór|<MATH>d^4x'=dx_0'dx_1'dx_2'dx_3'\;</MATH>|3.7}}
W naszym przypadku moduł Jakobianu jest modułem wyznacznika macierzy przejścia do układu krzywoliniowego w przestrzeni Minkowskiego, a zatem ta sama objętość pod względem wartości zapisujemy w krzywoliniowym układzie współrzędnych:
{{CentrujWzór|<MATH>d^4x'=|J|d^4x=|\operatorname{det}(\Lambda)|d^4x=\sqrt{-g}d^4x\;</MATH>|3.8}}
Ostatecznie patrząc na wzór {{LinkWzór|3.8}}, w postaci skróconej, nasz wzór na objętość w przestrzeni czterowymiarowej (czasoprzestrzeni) jest wyrażony wzorem poniżej.
{{CentrujWzór|<MATH>d^4x'=\sqrt{-g}d^4x\;</MATH>|3.9}}
Widzimy, że objętość opisywanej wedle szczególnej teorii względności zależy od wyznacznika macierzy tensora metrycznego obowiązującego w tymże układzie współrzędnych krzywoliniowym.
== Pochodna wyznacznika tensora metrycznego względem elementów tensora metrycznego ==
Mamy sobie wyznacznik macierzy tensora metrycznego, który obowiązuje w szczególnej teorii względności i rozwińmy go względem kolumny o numerze β wedle twierdzenia Laplace'a:
{{CentrujWzór|<MATH>g=\sum_{\alpha}(-1)^{\alpha+\beta}g_{\alpha\beta}A_{\alpha\beta}\;</MATH>|3.10}}
Podzielmy wyrażenie {{LinkWzór|3.10}} przez wyznacznik macierzy tensora metrycznego przez g, wtedy otrzymujemy wyrażenie z którego wywnioskujemy dalsze dysputy.
{{CentrujWzór|<MATH>1=\sum_{\alpha}g_{\alpha\beta}\underbrace{g^{-1}(-1)^{\alpha+\beta}A_{\alpha\beta}}_{g^{\alpha\beta}}\;</MATH>|3.11}}
Wprowadzamy podwójnie kontrawariantny tensor metryczny, tak by prawa strona w {{LinkWzór|3.11}} była równa lewej stronie tego równania, korzystając przy tym z jego definicji tego tensora, a także z definicji tensora Kroneckera, i mówiąc ogólnie, że w dowodzie powyższym nie obowiązuje konwencja Einsteina. Zatem podwójnie kontrawariatna macierz tensora metrycznego na podstawie wcześniejszej tożsamości przestawia się:
{{CentrujWzór|<MATH>g^{\alpha\beta}=g^{-1}(-1)^{\alpha+\beta}A_{\alpha\beta}\;</MATH>|3.12}}
Wyznaczmy pochodną wyznacznika macierzy tensora metrycznego względem jakiegoś elementu tego samego tensora, co można zapisać:
{{CentrujWzór|<MATH>{{\partial g}\over{\partial g^{\gamma\omega}}}=
{{\partial g}\over{\partial g_{\alpha\beta}}}{{\partial g_{\alpha\beta}}\over{\partial g^{\gamma\omega}}}=
(-1)^{\alpha+\beta}A_{\alpha\beta}{{\partial g_{\alpha\beta}}\over{\partial g^{\gamma\omega}}}=gg^{\alpha\beta}{{\partial g_{\alpha\beta}}\over{\partial g^{\gamma\omega}}}\;</MATH>|3.13}}
W powyższym równaniu {{LinkWzór|3.13}} mnożąc obustronnie przez {{Formuła|<MATH>{{\partial g^{\gamma\omega}}\over{\partial g_{\xi\zeta}}}\;</MATH>}}, wtedy otrzymujemy:
{{CentrujWzór|<MATH>{{\partial g}\over{\partial g_{\gamma\omega}}}=gg^{\gamma\omega}\;</MATH>|3.14}}
Co dalej można otrzymać równoważne równanie, ale tym razem mnożąc {{LinkWzór|3.13}} przez pochodną {{Formuła|<MATH>{{\partial g^{\gamma\omega}}\over{\partial x^{\mu}}}\;</MATH>}} i sumując obustronnie względem wskaźników {{Formuła|<MATH>\gamma\;</MATH>}} i {{Formuła|<MATH>\omega\;</MATH>}}, wtedy otrzymujemy:
{{CentrujWzór|<MATH>g_{,\mu}=gg^{\alpha\beta}g_{\alpha\beta,\mu}\;</MATH>|3.15}}
Dalej przekształcając prawą strona równości {{LinkWzór|3.15}}, tak by zebrać pewne dwa czynniki czynniki pod pochodną względem parametru x{{Sup|μ}}:
{{CentrujWzór|<MATH>g_{,\mu}=g^{\alpha\beta}g_{\alpha\beta,\mu}=g\left[\left(g^{\alpha\beta}g_{\alpha\beta}\right)_{,\mu}-{g^{\alpha\beta}}_{,\mu}g_{\alpha\beta}\right]=
-gg_{\alpha\beta}{g^{\alpha\beta}}_{,\mu}</MATH>|3.16}}
Pierwszy wyraz występujący w wyrażeniu {{LinkWzór|3.16}} pod pochodną liczony względem współrzędnej x{{Sup|μ}} jest wielkością stałą, to ta jego pochodna jest wielkością zerową:
{{CentrujWzór|<MATH>g_{,\mu}=-gg_{\alpha\beta}{g^{\alpha\beta}}_{,\mu}</MATH>|3.17}}
Powyższe równanie na tensorach metrycznych można zapisać równoważnie:
{{CentrujWzór|<MATH>{{\partial g}\over{\partial g^{\gamma\omega}}}=-gg_{\gamma\omega}</MATH>|3.18}}
Wzory {{LinkWzór|3.14}} i {{LinkWzór|3.18}}, to są dwa podstawowe wzory oparte na tensorach metrycznych, pierwsza pochodna wyznacznika tensora metrycznego względem elementu tensora metrycznego podwójnie kowariantnego, a drugi względem podwójnie kontrawariantnego.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
b2hb016mel68sf73h17chq7zlueo8k9
Ogólna teoria względności/Słabe pola grawitacyjne
0
16184
558860
470270
2026-10-07T14:17:10Z
Persino
2851
558860
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Słabe pole grawitacyjne jest opisane przez teorię grawitacji Newtona. Metryka w słabych polach grawitacyjnych jest opisywana prawie przez metrykę Minkowskiego z małą poprawką.
Tensor metryczny w ogólnej teorii względności dla słabych pól grawitacyjnych zapisujemy w postaci:
{{CentrujWzór|<MATH>g_{\alpha\beta}=\eta_{\alpha\beta}+h_{\alpha\beta}\;</MATH>|5.1}}
* gdzie η{{Sub|αβ}} jest to tensor metryczny w przestrzeni Minkowskiego, która określa metrykę o formie kwadratowej, która jest nieujemna.
A także zachodzi dla słabego pola grawitacyjnego, której moduł poprawki do tensora metrycznego Minkowskiego jest o wiele mniejsza niż jeden, co zapisujemy:
{{CentrujWzór|<MATH>|h_{\alpha\beta}|<<1\;</MATH>|5.2}}
== Lorentzowskie przekształcenia tła ==
Mamy sobie szczególną teorię względności, w którym jest napisany pewny tensor przekształcenia {{Formuła|<MATH>{\Lambda^{\alpha}}_{\beta}\;</MATH>}} przechodząc ze starego do nowego układu współrzędnych, to pisząc pewny tensor metryczny obowiązującego w nowym układzie współrzędnym względem tensora metrycznego obowiązującego w starym układzie współrzędnym, dochodzimy do wniosku korzystając przy tym z {{LinkWzór|5.1}}:
{{CentrujWzór|<MATH>{g^'}_{\alpha\beta}={\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}g_{\mu\nu}={\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}\left(\eta_{\mu\nu}+h_{\mu\nu}\right)={\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}\eta_{\mu\nu}+{\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}h_{\mu\nu}\;</MaTh>|5.3}}
Ponieważ również zachodzi dla tensora g{{Sup|'}}{{Sub|αβ}} przybliżenie {{LinkWzór|5.1}} przy warunku {{LinkWzór|5.2}}, zatem możemy powiedzieć na podstawie {{LinkWzór|5.3}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<Math>{\eta^'}_{\alpha\beta}={\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}\eta_{\mu\nu}\;</MATH>|5.4}}
| 2 = {{CentrujWzór|<MATH>{h^'}_{\alpha\beta}={\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}h_{\mu\nu}\;</MATH>|5.5}}
}}
Napiszmy sobie przekształcenie Lorentza: {{Formuła|<MATH>{\Lambda^{\alpha}}_{\beta}\;</MATH>}}, który w szczególnej teorii względności jest:
{{CentrujWzór|<MATH>{\Lambda^{\alpha}}_{\beta}=\begin{pmatrix}
\gamma&-\beta\gamma&0&0\\
-\beta\gamma&\gamma&0&0\\
0&0&1&0\\
0&0&0&1
\end{pmatrix}\;\;</MATH>|5.6}}
Wtedy na podstawie tensora przekształcenia {{LinkWzór|5.6}} napiszmy, czy wedle {{LinkWzór|5.4}} tensor Minkowskiego przechodzi sam w siebie:
{{CentrujWzór|<MAth>{\eta^'}_{\alpha\beta}=\begin{pmatrix}
\gamma&-\beta\gamma&0&0\\
-\beta\gamma&\gamma&0&0\\
0&0&1&0\\
0&0&0&1
\end{pmatrix}\begin{pmatrix}
1&0&0&0\\
0&-1&0&0\\
0&0&-1&0\\
0&0&0&-1
\end{pmatrix}\begin{pmatrix}
\gamma&-\beta\gamma&0&0\\
-\beta\gamma&\gamma&0&0\\
0&0&1&0\\
0&0&0&1
\end{pmatrix}
=\begin{pmatrix}
\gamma&\beta\gamma&0&0\\
-\beta\gamma&-\gamma&0&0\\
0&0&-1&0\\
0&0&0&-1
\end{pmatrix}
\cdot\;</MATH>{{Br}}<MATH>
\cdot\begin{pmatrix}
\gamma&-\beta\gamma&0&0\\
-\beta\gamma&\gamma&0&0\\
0&0&1&0\\
0&0&0&1
\end{pmatrix}=\begin{pmatrix}
\gamma^2-\beta^2\gamma^2&0&0&0\\
0&\beta^2\gamma^2-\gamma^2&0&0\\
0&0&-1&0\\
0&0&0&-1
\end{pmatrix}=\begin{pmatrix}
1&0&0&0\\
0&-1&0&0\\
0&0&-1&0\\
0&0&0&-1
\end{pmatrix}=\eta_{\alpha\beta}
</Math>|5.7}}
Na podstawie obliczeń {{LinkWzór|5.7}} przekształcenie {{LinkWzór|5.4}} przekształca tensor metryczny Minkowskiego w sam siebie, a poprawka do tensora metrycznego, która występuje w punkcie {{LinkWzór|5.1}} przekształca się z jednego układu współrzędnej do drugiego wedle transformacji {{LinkWzór|5.5}}. Ta właściwość tensora metrycznego przy tensorze przekształcenia pozwala mówić o wygodnej fikcji, możemy mówić o słabo zakrzywionych czasoprzestrzeniach jako czasoprzestrzeni płaskiej ze zdefiniowanej nad nim tensorem {{Formuła|<MATH>h_{\mu\nu}\;</MATH>}}, co pozwala policzyć czterowskaźnikowy tensor krzywizny znając tylko poprawki do tensorów metrycznych {{LinkWzór|5.1}} spełniających warunek słabo zakrzywionej czasoprzestrzeni wedle {{LinkWzór|5.2}}.
Należy pamiętać, że mimo przekształcenia {{LinkWzór|5.4}} przy tensorze przekształcenia {{LinkWzór|5.6}} przestrzeń jest w istocie słabo zakrzywiona.
== Przekształcenia cechowania ==
Obierzmy sobie przekształcenie wiążące pierwszy układ współrzędnych, które jest rozwiązaniem równań grawitacji ogólnej teorii względności, z innym układem współrzędnych, która jest zapisana w postaci równania:
{{CentrujWzór|<MATH>{x^'}^{\alpha}=x^{\alpha}+\xi^{\alpha}(x^{\beta})\;</MaTH>|5.8}}
Dowolność współrzędnych równania Einsteina pozwala obrać możliwie mały wektor {{Formuła|<MaTH>\xi^{\alpha}(x^{\beta})\;</Math>}}, by przejść do innego układu współrzędnych, którego oba współrzędne, tzn. {{Formuła|<MATH>{x^'}^{\alpha}\;</MATH>}} i {{Formuła|<MATH>_{x^{\alpha}}\;</MATH>}} są rozwiązaniami równań Einsteina.
Możemy napisać sobie przekształcenie wiążące nowy tensor metryczny z jego starym odpowiednikiem:
{{CentrujWzór|<MATH>{g^'}_{\alpha\beta}=g_{\mu\nu}{\Lambda^{\mu}}_{\alpha}{\Lambda^{\nu}}_{\beta}\;</math>|5.9}}
Wypiszmy teraz przekształcenia {{Formuła|<MATH>{\Lambda^{\mu}}_{\alpha}\;</MAth>}}, że:
{{CentrujWzór|<MaTH>{\Lambda^{\mu}}_{\alpha}={{\partial x^{\mu}}\over{\partial {x^'}^{\alpha}}}=
{{\partial}\over{\partial {x^'}^{\alpha}}}\left({x^'}^{\mu}-\xi^{\mu}\right)=
{\delta^{\mu}}_{\alpha}-{\xi^{\mu}}_{,\alpha}\;</MATH>|5.10}}
Podstawmy elementy tensora transformacji Λ{{Sup|μ}}{{Sub|α}} jako tensora kowariantnego względem jego jakiegoś wskaźnika kowariantnego, zatem wtedy mając wzór {{LinkWzór|5.10}} przy przekształceniach tensorów metrycznych ze starego układu współrzędnych do nowego {{LinkWzór|5.9}}:
{{CentrujWzór|<MATH>{g^'}_{\alpha\beta}=g_{\mu\nu}\left({\delta^{\mu}}_{\alpha}-{\xi^{\mu}}_{,\alpha}\right)\left({\delta^{\nu}}_{\beta}-{\xi^{\nu}}_{,\beta}\right)=
g_{\mu\nu}\left({\delta^{\mu}}_{\alpha}{\delta^{\nu}}_{\beta}-{\delta^{\mu}}_{\alpha}{\xi^{\nu}}_{,\beta}-{\delta^{\nu}}_{\beta}{\xi^{\mu}}_{,\alpha}+{\xi^{\mu}}_{,\alpha}{\xi^{\nu}}_{,\beta}\right)=
g_{\mu\nu}{\delta^{\mu}}_{\alpha}{\delta^{\nu}}_{\beta}-g_{\mu\nu}{\delta^{\mu}}_{\alpha}{\xi^{\nu}}_{,\beta}+\;</MATH>{{Br}}<MATH>-g_{\mu\nu}{\delta^{\nu}}_{\beta}{\xi^{\mu}}_{,\alpha}+g_{\mu\nu} {\xi^{\mu}}_{,\alpha}{\xi^{\nu}}_{,\beta}=g_{\alpha\beta}-g_{\alpha\nu}{\xi^{\nu}}_{,\beta}-g_{\mu\beta}{\xi^{\mu}}_{,\alpha}+g_{\mu\nu} {\xi^{\mu}}_{,\alpha}{\xi^{\nu}}_{,\beta}\;\;</MATH>|5.11}}
Weźmy sobie takie przekształcenie ze starego układu współrzędnych do nowego {{LinkWzór|5.8}}, by zachodziło {{Formuła|<MATH>\left|{\xi^{\alpha}}_{,\beta}(x^{\gamma})\right|<<1\;</MATH>}} oraz {{LinkWzór|5.1}} przy warunku {{LinkWzór|5.2}}, czyli warunku słabego pola grawitacyjnego, zatem przekształcenia tensora metrycznego ze starego układu współrzędnych do nowego względem przekształcenia opisywanych względem współrzędnych {{LinkWzór|5.8}}, wyrażenie {{LinkWzór|5.11}} możemy zapisać:
{{CentrujWzór|<MATH>{g^'}_{\alpha\beta}\simeq\eta_{\alpha\beta}+h_{\alpha\beta}-\eta_{\alpha\nu}{\xi^{\nu}}_{,\beta}-\eta_{\mu\beta}{\xi^{\mu}}_{,\alpha}=
\eta_{\alpha\beta}+h_{\alpha\beta}-\xi_{\alpha,\beta}-\xi_{\beta,\alpha}\;</MATH>|5.12}}
Zatem poprawka do tensora metrycznego Minkowskiego wedle równania {{LinkWzór|5.1}} transformuje się wedle schematu:
{{CentrujWzór|<math>{h^'}_{\alpha\beta}=h_{\alpha\beta}-\xi_{\alpha,\beta}-\xi_{\beta,\alpha}\;</MaTh>|5.13}}
Przekształcenie tensorów metrycznych lub jego poprawki, czyli tensora metrycznego Minkowskiego z układu o współrzędnych kontrawariantnej bezpromowania do układu ze współrzędnymi primowanymi tego samego typu tensora, jest napisane wedle równania {{LinkWzór|5.12}} lub {{LinkWzór|5.13}} dla metryki prawie płaskiej.
== Tensor krzywizny dla słabego pola grawitacyjnego ==
Aby mieć pełny tensor Einsteina, trzeba znać tensor krzywizny dwuwskaźnikowy, i skalar krzywizny Ricciego, które można wyznaczyć z czterowskaźnikowego tensora krzywizny.
Należy zauważyć, że tutaj w wykładzie pochodna zachowuje się jak tensor, bo η{{Sub|αβ}} jest stałą macierzą, i tylko z tego względu, bo w ogólności nie jest spełnione dla dowolnych tensorów metrycznych, tzn. czy pochodna cząstkowa jest tensorem.
Tensor krzywizny w czterowymiarowej czasoprzestrzeni jest opisany wzorem w zależności od tensorów metrycznych obowiązującej w naszej czasoprzestrzeni (czterowymiarowej przestrzeni absolutnej):
{{CentrujWzór|<MATH>R_{\alpha\beta\mu\nu}={{1}\over{2}}\left(g_{\alpha\nu,\beta,\mu}-g_{\nu\beta,\alpha,\mu}-g_{\alpha\mu,\beta,\nu}+g_{\mu\beta,\alpha,\nu}\right)\;</MATH>|5.14}}
Można {{Formuła|<MATH>g_{\alpha\beta}\;</MATH>}} zastąpić przez {{Formuła|<MATH>\eta_{\alpha\beta}\;</MATH>}} w tensorze Einsteina, ponieważ poprawka do tensora metrycznego jest taka, że {{Formuła|<MAth>|h_{\alpha\beta}|<<1\;</MATH>}}, czyli praktycznie tensor absolutnej przestrzeni czterowymiarowej jest to samo zdefiniowany w przybliżeniu co tensor przestrzeni Minkowskiego. Ale za to w tensorze krzywizny należy zastąpić {{Formuła|<MATH>g_{\alpha\beta}\;</MATH>}} tensorem {{Formuła|<MATH>h_{\alpha\beta}\;</MATH>}} przy pochodnych, ponieważ dowolna pochodna tensora Minkowskiego jest równa zero, zatem tutaj odgrywa dużą rolę pochodna poprawki do tensora krzywizny, to tensor krzywizny jest:
{{CentrujWzór|<MATH>R_{\alpha\beta\mu\nu}={{1}\over{2}}\left(h_{\alpha\nu,\beta,\mu}-h_{\nu\beta,\alpha,\mu}-h_{\alpha\mu,\beta,\nu}+h_{\mu\beta,\alpha,\nu}\right)\;</MATH>|5.15}}
Ponieważ jak powiedzieliśmy wcześniej tensor przestrzeni absolutnej jest równy tensorowi przestrzeni Minkowskiego, zatem powinno zachodzić po takim zastąpieniu:
{{CentrujWzór|<MATH>R_{\beta\nu}=\eta^{\alpha\mu}R_{\alpha\beta\mu\nu}\;</MATH>|5.16}}
Biorąc te same uwagi, co do tensora dwuwskaźnikowego tensora krzywizny {{LinkWzór|5.16}}, skalar Ricciego zapisujemy wedle:
{{CentrujWzór|<MATH>R=\eta^{\beta\nu}R_{\beta\nu}\;</MATH>|5.17}}
Wyznaczmy teraz tensor krzywizny Ricciego mając już napisany czterowskaźnikowy tensor krzywizny {{LinkWzór|5.15}}:
{{CentrujWzór|<MATH>R_{\beta\nu}=\eta^{\alpha\mu}R_{\alpha\beta\mu\nu}=
\eta^{\alpha\mu}{{1}\over{2}}\left(h_{\alpha\nu,\beta,\mu}-h_{\nu\beta,\alpha,\mu}-h_{\alpha\mu,\beta,\nu}+h_{\mu\beta,\alpha,\nu}\right)={{1}\over{2}}\left(
{h_{\alpha\nu,\beta}}^{,\alpha}-{h_{\nu\beta,\alpha}}^{,\alpha}-{{h_{\alpha}}^{\alpha}}_{,\beta,\nu}+{h^{\alpha}}_{\beta,\alpha,\nu}
\right)\;</MATH>|5.18}}
A przybliżony skalar Ricciego liczymy według {{LinkWzór|5.17}}, tutaj korzystamy z definicji tensora Ricciego zdefiniowanego w punkcie {{LinkWzór|5.18}}:
{{CentrujWzór|<MATH>R=\eta^{\beta\nu}{{1}\over{2}}\left(
{h_{\alpha\nu,\beta}}^{,\alpha}-{h_{\nu\beta,\alpha}}^{,\alpha}-{{h_{\alpha}}^{\alpha}}_{,\beta,\nu}+{h^{\alpha}}_{\beta,\alpha,\nu}
\right)={{1}\over{2}}\left(
{h_{\alpha\nu}}^{,\nu,\alpha}-{{{h_{\nu}}^{\nu}}_{,\alpha}}^{,\alpha}-{h_{\alpha}^{\alpha,\nu}}_{,\nu}+{h^{\alpha\nu}}_{,\alpha,\nu}
\right)\;</MATH>|5.19}}
Mając już wszystkie policzone tensory krzywizny (czterowskaźnikowy i dwuwskaźnikowy skalar krzywizny), a także skalar Ricciego, to możemy przejść do dalszych etapów liczenia innych tensorów występujących w ogólnej teorii Einsteina.
== Równania Einsteina dla słabego pola grawitacyjnego ==
Mamy już wyznaczony tensor krzywizny oraz skalar krzywizny Ricciego, to policzmy teraz tensor Einsteina zdefiniowanej w module {{LinkWzór|1.37|Wprowadzenie do ogólnej teorii względności}}, zastępując w tym tensorze ogólny tensor metryczny tensorem metrycznym przestrzeni Minkowskiego, bo tutaj zachodzi warunek {{LinkWzór|5.1}}, a ponadto mając warunek na przybliżenie dla poprawki tensora metrycznego dla przestrzeni, w której obowiązuje słabe pola grawitacyjne:
{{CentrujWzór|<MATH>G_{\beta\nu}=R_{\beta\nu}-{{1}\over{2}}\eta_{\beta\nu}R={{1}\over{2}}\left(
{h_{\alpha\nu,\beta}}^{,\alpha}-{h_{\nu\beta,\alpha}}^{,\alpha}-{{h_{\alpha}}^{\alpha}}_{,\beta,\nu}+{h^{\alpha}}_{\beta,\alpha,\nu}
\right)-{{1}\over{2}}\eta_{\beta\nu}{{1}\over{2}}\left(
{h_{\alpha\nu}}^{,\nu,\alpha}-{{{h_{\nu}}^{\nu}}_{,\alpha}}^{,\alpha}-{h_{\alpha}^{\alpha,\nu}}_{,\nu}+{h^{\alpha\nu}}_{,\alpha,\nu}
\right)=\;</MATH>{{Br}}
<MATH>={{1}\over{2}}\left(
{h_{\alpha\nu,\beta}}^{,\alpha}-{h_{\nu\beta,\alpha}}^{,\alpha}-{{h_{\alpha}}^{\alpha}}_{,\beta,\nu}+{h^{\alpha}}_{\beta,\alpha,\nu}
\right)-{{1}\over{4}}\eta_{\beta\nu}\left(
{h_{\alpha\nu}}^{,\nu,\alpha}-{{{h_{\nu}}^{\nu}}_{,\alpha}}^{,\alpha}-{h_{\alpha}^{\alpha,\nu}}_{,\nu}+{h^{\alpha\nu}}_{,\alpha,\nu}
\right)=\;</MATH>{{Br}}
<MATH>={{1}\over{2}}\left(
{h_{\alpha\nu,\beta}}^{,\alpha}-{h_{\nu\beta,\alpha}}^{,\alpha}-{{h_{\alpha}}^{\alpha}}_{,\beta,\nu}+{h^{\alpha}}_{\beta,\alpha,\nu}
\right)-{{1}\over{2}}\eta_{\beta\nu}\left(
{h_{\alpha\nu}}^{,\nu,\alpha}-{{{h_{\nu}}^{\nu}}_{,\alpha}}^{,\alpha}
\right)\;</MATH>|5.20}}
Zdefiniujmy inny nowy tensor w oparciu o poprawkę do tensora metrycznego Minkowskiego h{{Sub|αβ}}, który jest częścią ogólnego tensora metrycznego obowiązującej w przestrzeni w ogólnej teorii względności, ale dla słabego pola grawitacyjnego:
{{CentrujWzór|<MATH>h^{\alpha\beta}=\overline{h}^{\alpha\beta}-{{1}\over{2}}\eta^{\alpha\beta}\overline{h}\;</MATH>|5.21}}
Końcowe obliczenia dla tensora Einsteina w słabym polu grawitacyjnym {{LinkWzór|5.20}}, korzystając z zależności tensora poprawki do tensora Minkowskiego poprzez nowe tensory, zatem korzystając z {{LinkWzór|5.21}}, wtedy nasz tensor Einsteina można zapisać w takim razie w postaci:
{{CentrujWzór|<MATH>G_{\beta\nu}={{1}\over{2}}\left(
{(\overline{h}_{\alpha\nu}-{{1}\over{2}}\eta_{\alpha\nu}\overline{h})_{,\beta}}^{,\alpha}-{(\overline{h}_{\nu\beta}-{{1}\over{2}}\eta_{\nu\beta}\overline{h})_{,\alpha}}^{,\alpha}-({{\overline{h}_{\alpha}}^{\alpha}}-{{1}\over{2}}{\eta_{\alpha}}^{\alpha}\overline{h})_{,\beta,\nu}+({\overline{h}^{\alpha}}_{\beta}-{{1}\over{2}}{\eta^{\alpha}}_{\beta}\overline{h})_{,\alpha,\nu}\right)+\;</MATH>{{Br}}
<MATH>-{{1}\over{2}}\eta_{\beta\nu}\left(
(\overline{h}_{\alpha\nu}-{{1}\over{2}}\eta_{\alpha\nu}\overline{h})^{,\nu,\alpha}-({\overline{h}_{\nu}}^{\nu}-{{1}\over{2}}{\eta_{\nu}}^{\nu}{\overline{h})_{,\alpha}}^{,\alpha}
\right)=\;</MATH>{{Br}}<MATh>={{1}\over{2}}\left(
{{\overline{h}_{\alpha\nu}}_{,\beta}}^{,\alpha}-{{1}\over{2}}\eta_{\alpha\nu}{\overline{h}_{,\beta}}^{,\alpha}
-{{\overline{h}_{\nu\beta}}_{,\alpha}}^{,\alpha}+{{1}\over{2}}\eta_{\nu\beta}{\overline{h}_{,\alpha}}^{,\alpha}-{{\overline{h}_{\alpha}}^{\alpha}}_{,\beta,\nu}+{{1}\over{2}}4\overline{h}_{,\beta,\nu}+{\overline{h}^{\alpha}}_{\beta,\alpha,\nu}-{{1}\over{2}}{\delta^{\alpha}}_{\beta}\overline{h}_{,\alpha,\nu}
\right)+\;</MATH>{{Br}}
<MATH>-{{1}\over{2}}\eta_{\beta\nu}\left(
{\overline{h}_{\alpha\nu}}^{,\nu,\alpha}-{{1}\over{2}}\eta_{\alpha\nu}\overline{h}^{,\nu,\alpha}-{{{\overline{h}_{\nu}}^{\nu}}_{,\alpha}}^{,\alpha}+{{1}\over{2}}4{\overline{h}_{,\alpha}}^{,\alpha}
\right)\;</MATH>{{Br}}<MATH>={{1}\over{2}}\left(
{\overline{h}_{\alpha\nu,\beta}}^{,\alpha}-{{1}\over{2}}\overline{h}_{,\beta,\nu}-{\overline{h}_{\nu\beta,\alpha}}^{,\alpha}+{{1}\over{2}}\eta_{\nu\beta}{\overline{h}_{,\alpha}}^{,\alpha}-\overline{h}_{,\beta,\nu}+2\overline{h}_{,\beta,\nu}+{\overline{h}^{\alpha}}_{\beta,\alpha,\nu}-{{1}\over{2}}\overline{h}_{,\beta,\nu}
\right)+\;</MATH>{{Br}}<MATH>-{{1}\over{2}}\eta_{\beta\nu}\left(
{\overline{h}_{\alpha\nu}}^{,\nu,\alpha}-{{1}\over{2}}{\overline{h}_{,\alpha}}^{,\alpha}-{\overline{h}_{,\alpha}}^{,\alpha}+2{\overline{h}_{,\alpha}}^{,\alpha}
\right)={{1}\over{2}}\left(
{\overline{h}_{\alpha\nu,\beta}}^{,\alpha}-{\overline{h}_{\nu\beta,\alpha}}^{,\alpha}+{\overline{h}^{\alpha}}_{\beta,\alpha,\nu}-\eta_{\beta\nu}{\overline{h}_{\alpha\nu}}^{,\nu,\alpha}
\right)=\;</MATH>{{Br}}<MATH>={{1}\over{2}}\left(
{\overline{h}_{\alpha\nu,\beta}}^{,\alpha}-{\overline{h}_{\nu\beta,\alpha}}^{,\alpha}+{{\overline{h}_{\alpha\beta}}^{,\alpha}}_{,\nu}-\eta_{\beta\nu}{\overline{h}_{\alpha\nu}}^{,\nu,\alpha}
\right)
\;</MATH>|5.22}}
Wzór na tensor metryczny Einsteina {{LinkWzór|5.22}} dla słabego pola grawitacyjnego jest tensorem bardzo skomplikowanym, więc wprowadźmy pewne cechowanie, które wprowadzimy później w tym module.
=== Klasa funkcji cechowań Lorentza dla słabego pola grawitacyjnego ===
Wzór na tensor Einsteina jest wzorem bardzo skomplikowanym, więc przydało by się go uprościć do najprostszej postaci, w tym celu wprowadzimy pewną klasę cechowań, w którym ten tensor spełnia owe warunki i udowodnimy, że jeśli takie cechowanie istnieje to istnieje układ współrzędnych spełniających to cechowanie.
Weźmy sobie równanie {{LinkWzór|5.21}} i podstawmy do niego tożsamość {{LinkWzór|5.13}}, ale najpierw przekształcając go do postaci podwójnie kowariantnej:
{{CentrujWzór|<MatH>{\overline{h}^'}_{\alpha\beta}-{{1}\over{2}}\eta_{\alpha\beta}\overline{h}^'={\overline{h}}_{\alpha\beta}-{{1}\over{2}}\eta_{\alpha\beta}\overline{h}-\xi_{\alpha,\beta}-\xi_{\beta,\alpha}\Rightarrow {\overline{h}^'}_{\alpha\beta}={\overline{h}}_{\alpha\beta}-\xi_{\alpha,\beta}-\xi_{\beta,\alpha}+{{1}\over{2}}\eta_{\alpha\beta}\left(\overline{h}^'-\overline{h}\right)\;</MATH>|5.23}}
Z własności {{LinkWzór|5.21}} wyznaczmy ślad poprawki h{{Sub|αβ}} do tensora metrycznego Minkowskiego. Zatem na podstawie poniższych obliczeń jest on równy skalarowi {{Formuła|<MATH>\overline{h}\;</MATH>}} z minusem.
{{CentrujWzór|<MATH>h={h^{\alpha}}_{\alpha}={\overline{h}^{\alpha}}_{\alpha}-{{1}\over{2}}{\delta^{\alpha}}_{\alpha}\overline{h}=\overline{h}-{{1}\over{2}}4\overline{h}=-\overline{h}\Rightarrow h=-\overline{h}\;</MATH>|5.24}}
Wtedy równość {{LinkWzór|5.23}} (ostatni wyraz), na podstawie końcowego wyniku wynikowego {{LinkWzór|5.24}} przy wykorzystaniu własności {{LinkWzór|5.13}}, zapisujemy:
{{CentrujWzór|<MATH>{\overline{h}^'}_{\alpha\beta}={\overline{h}}_{\alpha\beta}-\xi_{\alpha,\beta}-\xi_{\beta,\alpha}-{{1}\over{2}}\eta_{\alpha\beta}\left({h^'}-h\right)=
{\overline{h}}_{\alpha\beta}-\xi_{\alpha,\beta}-\xi_{\beta,\alpha}-{{1}\over{2}}\eta_{\alpha\beta}\left(
-{\xi^{\mu}}_{,\mu}-{\xi^{\mu}}_{,\mu}
\right)\Rightarrow{\overline{h}^'}_{\alpha\beta}={\overline{h}}_{\alpha\beta}-\xi_{\alpha,\beta}-\xi_{\beta,\alpha}+\eta_{\alpha\beta}{\xi^{\mu}}_{,\mu}\;</math>|5.25}}
Stosować będziemy definicję operatora d'Alemberta, zapisanej za pomocą drugich zupełnych pochodnych względem czasu i względem współrzędnych położenia:
{{CentrujWzór|<MATH>\square=-{{\partial^2}\over{c^2\partial t^2}}+\nabla^2\;</MATH>|5.26}}
Napiszmy pewną tożsamość, korzystając z definicji tensora metrycznego Minkowskiego i operatora d'Alemberta {{LinkWzór|5.26}}, która będzie nam później potrzebna:
{{CentrujWzór|<math>{f^{,\alpha}}_{,\alpha}={{\partial}\over{\partial x^{\mu}}}\eta_{\mu\nu}{{\partial}\over{\partial x^{\nu}}}f=\left({{\partial^2}\over{c^2\partial t^2}}-\nabla^2\right)f=-\square f\;</MATH>|5.27}}
Wtedy równanie {{LinkWzór|5.25}} działamy pochodną cząstkową względem zmiennej o wskaźniku {{Formuła|<MATH>\beta\;</MATH>}} obustronnie, korzystając z tożsamości {{LinkWzór|5.27}}, możemy napisać:
{{CentrujWzór|<math>{{\overline{h}^'}^{\alpha\beta}}_{,\beta}={{\overline{h}}^{\alpha\beta}}_{,\beta}-{\xi^{\alpha,\beta}}_{,\beta}-{\xi^{\beta,\alpha}}_{,\beta}+\eta^{\alpha\beta}{\xi^{\mu}}_{,\mu,\beta}\Rightarrow
{{\overline{h}^'}^{\alpha\beta}}_{,\beta}={{\overline{h}}^{\alpha\beta}}_{,\beta}-{\xi^{\alpha,\beta}}_{,\beta}-{\xi^{\beta,\alpha}}_{,\beta}+{{\xi^{\mu}}_{,\mu}}^{,\alpha}\Rightarrow{{\overline{h}^'}^{\alpha\beta}}_{,\beta}={{\overline{h}}^{\alpha\beta}}_{,\beta}-{\xi^{\alpha,\beta}}_{,\beta}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow{{\overline{h}^'}^{\alpha\beta}}_{,\beta}={{\overline{h}}^{\alpha\beta}}_{,\beta}+\square\xi^{\alpha}
\;</MaTH>|5.28}}
Obierzmy sobie nowy układ współrzędnych, w których zawsze zachodzi wyrażenia poniżej przy naszym cechowaniu, którego to wyrażenie tożsamościowo jest równe zero:
{{CentrujWzór|<MATH>{{\overline{h}^'}^{\alpha\beta}}_{,\beta}= 0\;</MATH>|5.29}}
Jeśli powyższe cechowanie zawsze zachodzi, to ono jest prawdziwe bez względu na punkt, w którym spełnione jest to cechowanie, czyli każda następna pochodna cząstkowa lewej strony {{LinkWzór|5.29}} daje nam zawsze wartość zerową. Równanie {{LinkWzór|5.28}} na podstawie cechowania {{LinkWzór|5.29}} przyjmuje postać:
{{CentrujWzór|<MATH>0={{\overline{h}}^{\alpha\beta}}_{,\beta}-{\xi^{\alpha,\beta}}_{,\beta}\Rightarrow {{\overline{h}}^{\alpha\beta}}_{,\beta}=-\square\xi^{\alpha}\;</MATH>|5.30}}
Końcowe równanie {{LinkWzór|5.30}} jest rozwiązaniem w postaci {{Formuła|<MATH>g=\square f\;</Math>}}, którego dla określonego g istnieje zawsze rozwiązanie f, ale f nie jest jedynym rozwiązaniem, które to równanie spełnia. W rzeczywistości możemy obrać taką tensorową funkcję {{Formuła|<MATH>\eta^{\alpha}\;</Math>}}, by ono spełniało równanie jednorodne:
{{CentrujWzór|<MATH>\square \eta^{\mu}=0\;</MATH>|5.31}}
wtedy rozwiązanie końcowe {{LinkWzór|5.30}} na podstawie równania jednorodnego {{LinkWzór|5.31}} można napisać:
{{CentrujWzór|<MATH>{{\overline{h}}^{\alpha\beta}}_{,\beta}=-\square\left(\eta^{\alpha}+\xi^{\alpha}\right)\;</Math>|5.32}}
Wedle {{LinkWzór|5.32}}, cechowanie prowadzi do klasy funkcji cechowań, które spełniają w ogólności wspomniane równanie, i to tej klasy nie należy tylko jedna funkcja, ale tych funkcji jest nieskończenie wiele.
Zatem, jeśli mamy pewien układ współrzędnych, w którym istnieje słabe pole grawitacyjne, to można zawsze wybrać układ współrzędnych, w którym spełnione jest cechowanie {{LinkWzór|5.29}}, ponieważ zawsze można znaleźć taki tensor {{Formuła|<MATH>\xi^{\alpha}\;</Math>}}, których jest nieskończenie wiele spełniających równanie tensorowe różniczkowe napisane ostatnio.
=== Tensor Einsteina dla słabego pola grawitacyjnego przy wybranym cechowaniu ===
Prowadźmy cechowanie dla słabego pola grawitacyjnego w tensorze Einsteina w końcowej równości {{LinkWzór|5.22}}, bo jak powiedzieliśmy na podstawie poprzedniego podrozdziału zawsze istnieje układ współrzędnych, w których jest spełnione cechowanie:
{{CentrujWzór|<MATH>{\overline{h}_{\alpha\nu}}^{,\nu}=0\;</MATH>|5.33}}
Ponieważ w stacjonarnym polu {{Formuła|<MATH>\overline{h}_{\alpha\nu}\;</MATH>}} powinno zależeć tylko od położeń i nie powinno dla nieskończoności przyjmować stałej różnej od zera, stąd {{Formuła|<math>\overline{h}_{\alpha i}=0\;</MATH>}}, ale {{Formuła|<MATH>\overline{h}_{\alpha i}=\overline{h}_{i\alpha}\;</MATH>}}, stąd {{Formuła|<MATH>\overline{h}_{\alpha i}=\overline{h}_{i\alpha}=0\;</MATH>}}, a więc jedynymi elementem niezerowym jest {{Formuła|<MATH>\overline{h}_{00}\neq 0\;</MATH>}}.
który jest równoważny cechowaniu {{LinkWzór|5.29}} z własności przestrzeni Minkowskiego. Tensor Einsteina {{LinkWzór|5.22}} w oparciu o przyjęciu cechowania wedle {{LinkWzór|5.33}}, i biorąc poczynione uwagi dla cechowania w nowym układzie współrzędnych, którego istnieje {{LinkWzór|5.32}}, upraszcza się on do postaci:
{{CentrujWzór|<MATH>G_{\beta\nu}=-{{1}\over{2}}{\overline{h}_{\beta\nu,\alpha}}^{,\alpha}\;</MATH>|5.34}}
Dla sygnatury tensora metrycznego obowiązującej w szczególnej teorii względności jednej z dwóch, ale w tej książce uwzględniamy dwie sygnatury, wtedy wyrażenie {{LinkWzór|5.34}} możemy przedstawić wedle sposobu {{LinkWzór|5.27}}:
{{CentrujWzór|<MATH>G_{\beta\nu}=\mp{{1}\over{2}}\left({{\partial^2}\over{c^2\partial t^2}}-\nabla^2\right)\overline{h}_{\beta\nu}\Rightarrow G_{\beta\nu}=\pm{{1}\over{2}}\square \overline{h}_{\beta\nu}\;</MATH>|5.35}}
Jest to ogólny tensor Einsteina dla słabego pola grawitacyjnego, które stosujemy, gdy zaburzenie tensora metrycznego do tensora Minkowskiego jest nad wyraz małe.
=== Wyznaczanie stałej κ w równaniach grawitacji Einsteina ===
Wiedząc, że zachodzi co wynika z cechowania {{LinkWzór|5.33}}, że {{Formuła|<MATH>{\overline{h}^i}_i=0\;</MATH>}}, co wtedy możemy napisać wyrażenie na {{Formuła|<MATH>\overline h\;</MATH>}}:
{{CentrujWzór|<MATH>\overline{h}={\overline{h}^{\mu}}_{\mu}={\overline{h}^0}_0+{\overline{h}^i}_i={\overline{h}^0}_0=\pm\overline{h}_{00}\;</MATH>|5.36}}
Jeśli mamy definicję tensora h{{Sub|αβ}} poprzez tensor {{Formuła|<MATH>\overline{h}\;</MATH>}} w definicji {{LinkWzór|5.21}}, to wtedy podwojony element podwójnie kowariantny wspomnianego tensora, czyli h{{Sub|00}} jest równy tensorowi {{Formuła|<MATH>\overline{h}_{00}\;</MATH>}}
{{CentrujWzór|<MATH>h_{00}=\overline{h}_{00}-{{1}\over{2}}(\pm 1)\overline{h}=\overline{h}_{00}-{{1}\over{2}}\overline{h}_{00}
\Rightarrow 2h_{00}=\overline{h}_{00}\;</MATH>|5.37}}
Stosując powyższą definicję {{Formuła|<MATH>\overline{h}_{00}\;</MATH>}} {{LinkWzór|5.37}}, to nasz tensor Einsteina {{LinkWzór|5.35}} dla wskaźników podwójnie kowariantnych zerowych jest w postaci:
{{CentrujWzór|<MATH>G_{00}=\pm\square{h_{00}}\;</MATH>|5.38}}
Zastosujmy przybliżenia, że c{{Sup|-2}}<<1, mamy wtedy że {{Formuła|<MATH>\square\simeq \nabla^2\;</MATH>}}, zatem tensor Einsteina {{LinkWzór|5.38}} zapisujemy wedle sposobu poniżej, który nie zależy od pochodnych względem czasu:
{{CentrujWzór|<MATH>G_{00}=\pm\nabla^2h_{00}\;</MATH>|5.39}}
Ale z drugiej jednak strony wedle obliczeń dla {{LinkWzór|1.16|Wprowadzenie do ogólnej teorii względności}} (znaki u góry to sygnatura dodatnia,a u dołu sygnatura ujemna) oraz wedle {{LinkWzór|5.1}} dla {{LinkWzór|5.2}}, wtedy poprawka h{{Sub|00}} do tensora metrycznego Minkowskiego jest zapisywana wedle schematu (sygnatura dodatnia znak u góry, a ujemna u dołu):
{{CentrujWzór|<MATH>g_{00}=\pm 1\pm{{2\varphi}\over{c^2}}\Rightarrow h_{00}=\pm{{2\varphi}\over{c^2}}\;</MATH>|5.40}}
Tensor Einsteina ostatecznie dla dolnych zerowych wskaźników stosując {{LinkWzór|5.40}} do {{LinkWzór|5.39}}, to wtedy jego przedstawienie można zapisać:
{{CentrujWzór|<MATH>G_{00}={{2}\over{c^2}}\nabla^2\varphi\;</MATH>|5.41}}
Sygnaturę tensora metrycznego η{{Sub|αβ}}, jeśli mamy {{Formuła|<MATH>(-1,1,1,1)\;</MATH>}}, to również otrzymamy taką samą postać jak powyżej równania na tensor Einsteina G{{Sub|00}}, czyli dla obu sygnatur równanie {{LinkWzór|5.41}} jst prawdziwe, a on zależy od potencjału skalarnego grawitacji dla słabych pól grawitacyjnych.
Z prawa Gausa dla grawitacji, co można udowodnić dla przyciągania grawitacyjnego (znak u góry), a analogicznie piszemy dla odpychania grawitacyjnego (znak u dołu), ale my to zapiszemy bez dowodu:
{{CentrujWzór|<MATH>\nabla^2\varphi=\pm 4\pi G\rho_0\;</MATH>|5.42}}
W przyrodzie niestwierdzono odpychania grawitacyjnego, ale my tak piszemy równanie {{LinkWzór|5.42}}, by to uwzględniało, ono jest słuszne również dla obu sygnatur, nie tylko jednej sygnatury.
Wyrażenie {{LinkWzór|5.42}} możemy podstawić do wzoru na tensor Einsteina o zerowych wskaźnikach {{LinkWzór|5.41}}:
{{CentrujWzór|<MATH>G_{00}=\pm{{2}\over{c^2}}4\pi G\rho_0\Rightarrow G_{00}=\pm{{8\pi G\rho_0}\over{c^2}}\;</MATH>|5.43}}
Tensor gęstości napięć-energii {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} będziemy obliczać dla wskaźników zerowych dla prędkości dążących do zera, a więc dla prędkości, które są o wiele mniejsze od prędkości światła i dla zaniedbywalnego ciśnienia (p=0), ale ponieważ zachodzi ds=cdt, dla interwału czasoprzestrzennego i {{Formuła|<MATH>x_{0}=x^{0}\;</MATH>}}, co jest słuszne dla słabego pola grawitacyjnego:
{{CentrujWzór|<MATH>T_{00}=T^{00}\eta_{00}\eta_{00}=T^{00}=\rho_0 c^2u^0u^0=\rho_0 c^2\;</MATH>|5.44}}
Mając równania Einsteina {{LinkWzór|1.51|Wprowadzenie_do_ogólnej_teorii_względności}}, ale stosując go dla dolnych wskaźników zerowych, czyli łącząc {{LinkWzór|5.43}} z {{LinkWzór|5.44}} i zaniedbując stałą kosmologiczną, wedle naszego równania grawitacji Einsteina dostajemy wzór:
{{CentrujWzór|<MATH>\pm{{8\pi G\rho_0}\over{c^2}}=\pm\kappa \rho_0 c^2\;</MATH>|5.45}}
Ponieważ mamy do czynienia z gęstościami materii o niezerowej wartości, zatem stała κ po podzieleniu równania {{LinkWzór|5.45}} przez ρ jest równa dla obu sygnatur:
{{CentrujWzór|<MATH>\kappa={{8\pi G}\over{c^4}}\;</MATH>|5.46}}
Widzimy, że stała proporcjonalności κ {{LinkWzór|5.46}} w prawie grawitacji Einsteina zależy tylko od stałych fizycznych, tzn. prędkości światła "c" i stałej grawitacyjnej "G" występującej w prawie grawitacji Newtona.
=== Ogólne równania pola wedle równań Einsteina ze stałą kosmologiczną ===
Otrzymaliśmy zatem, że równania Einsteina wedle {{LinkWzór|1.51|Wprowadzenie_do_ogólnej_teorii_względności}} z dodatkiem o stałą kosmologiczną przyjmują postać dla przyciągania i odpychania grawitacyjnego kolejno w postaci:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>G_{\alpha\beta}+\Lambda g_{\alpha\beta}={{8\pi G}\over{c^4}}T_{\alpha\beta}\;</MATH>|5.47}}
| 2 = {{CentrujWzór|<MATH>G_{\alpha\beta}+\Lambda g_{\alpha\beta}=-{{8\pi G}\over{c^4}}T_{\alpha\beta}\;</MATH>|5.47r}}
}}
Co w postaci bezwskaźnikowej powyższe równania {{LinkWzór|5.47}} (przyciąganie grawitacyjne) i {{LinkWzór|5.47r}} (odpychanie grawitacyjne) oraz ze względu, że one są to równania tensorowe można je zapisać dla obu sygnatur:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\mathbf{G}+\Lambda\mathbf{g}={{8\pi G}\over{c^4}}\mathbf{T}\;</MATH>|5.48}}
| 2 = {{CentrujWzór|<MATH>\mathbf{G}+\Lambda\mathbf{g}=-{{8\pi G}\over{c^4}}\mathbf{T}\;</MATH>|5.48r}}
}}
Powyższe równania tensorowe nazywamy równaniami grawitacji Einsteina, jak widzieliśmy stałą κ, która jest również słuszna dla słabego pola grawitacyjnego wyprowadziliśmy właśnie mając na myśli słabe pola grawitacyjne i w przybliżeniu dla prędkości o wiele mniejsze od prędkości światła, i w ten sposób wyprowadziliśmy równania Einsteina dla wszystkich pół grawitacyjnych, tzn. dla słabych i silnych pól grawitacyjnych.
== Metryka dla słabego pola grawitacyjnego ==
Naszym celem jest wyznaczenie interwału czasoprzestrzennego, dla słabych pól grawitacyjnych.
Otrzymaliśmy, że równania dla słabego pola grawitacyjnego na podstawie zależności między poprawką do tensora metrycznego Minkowskiego dla pól słabych grawitacyjnych przy definicji tensora Einsteina dla tych pól {{LinkWzór|5.35}}, to równania dla tych pól {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} zapisujemy jako:
{{CentrujWzór|<MATH>\underbrace{{{1}\over{2}}\square\overline{h}_{\beta\nu}}_{G^{\beta\nu}}=\kappa T_{\beta \nu}\;</MATH>|5.49}}
=== Stacjonarne słabe pole grawitacyjne a poprawka do tensora metrycznego Minkowskiego ===
Biorąc, że nasze pole jest stacjonarne nie zależy od czasu czyli pochodne czasowe w {{LinkWzór|5.49}}, są równe zero, zatem owe równanie dla miejsc w których nie ma masy, a ciśnienie jest zaniedbywalne, przejawia się w postaci:
{{CentrujWzór|<MATH>\nabla^2\overline{h}_{\beta\nu}=0\;</MATH>|5.50}}
Można udowodnić, że powyższe równanie ma rozwiązanie w zależności od stałego tensora A{{Sup|μν}}:
{{CentrujWzór|<MATH>\overline{h}_{\beta\nu}={{A_{\beta\nu}}\over{r}}\;</MATH>|5.51}}
Stosując warunek cechowania {{LinkWzór|5.33}} względem równania (rozwiązania) tensorowego, czyli biorąc pochodną poprawki do tensora Minkowskiego względem współrzędnych przestrzennych, otrzymujemy:
{{CentrujWzór|<MATH>0={\overline{h}^{\mu\nu}}_{,\nu}={{A^{\mu i}x_i}\over{r^3}}\;</MATH>|5.52}}
Stała tensorowa A{{Sup|αβ}} jest z oczywistych powodów niezależna od czasu w powyższym równaniu, co zostało zastosowane, ponieważ rozpatrujemy rozwiązania stacjonarne {{Formuła|<MATH>\overline{h}_{\mu\nu}\;</MATH>}} równania grawitacji Einsteina dla słabego pola grawitacyjnego.
Aby równanie tensorowe {{LinkWzór|5.52}} było tożsamościowo równe zero, to musi być spełniony warunek:
{{CentrujWzór|<MATH>A^{\mu i}=0\;</MATH>|5.53}}
Ale ponieważ stała A{{Sup|μ0}} nie zależy od czasu jak zakładaliśmy, tzn. zachodzi warunek 0=A{{Sup|α 0}}{{Sub|,0}}, dochodzimy więc do wniosku, że A{{Sup|α0}}≠0.
Ponieważ zachodzi symetryczność między tensorami A{{Sup|μν}}, tzn.:
A{{Sup|βν}}=A{{Sup|νβ}}, to jedynym tensorem, który jest nie równy zero dla A{{Sup|00}}, bo x{{Sub|i}} jest dowolne i z własności przestrzeni Minkowskiego dla tensora podwójnie kowariantnego jedynym tensorem, który jest nie równy zero, to A{{Sub|00}}.
Zatem udowodniliśmy, że jedynym niezerowym tensorem dla {{LinkWzór|5.52}} wedle {{LinkWzór|5.53}} jest element tensora:
{{CentrujWzór|<MATH>\overline{h}_{00}={{A_{00}}\over{r}}\;</MATH>|5.54}}
Gdy mamy ciało jako źródło grawitacji, które jest prawie punktowe i nieporuszające się (zerowy element czterowektora prędkości jest równy zero) i w tym punkcie, w którym znajduje się ciało o masie M panuje zaniedbywalnie ciśnienie, to jego tensor gęstości energii spełnia warunek:
{{CentrujWzór|<MATH>T_{00}=T^{00}\eta_{00}\eta_{00}=T^{00}=\rho c^2 u^0u^0- \eta^{00}p=\rho c^2=\underbrace{M\delta^3(\vec{r})}_{\rho}c^2=Mc^2\delta^3(\vec{r})\Rightarrow T_{00}=Mc^2\delta^3(\vec{r})\;</MATH>|5.55}}
Wykorzystajmy wzór na grawitację Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} przy stałej κ równej {{LinkWzór|5.45}}, i niech całkowanie objętościowe będzie po kuli, a całkowanie powierzchniowe po sferze należącym do tej kuli, zatem dla współczynników zerowych podwójnie dolnych tensora Einsteina mamy:
{{CentrujWzór|<MATH>G_{00}=\pm{{1}\over{2}}\nabla^2{{A_{00}}\over{r}}\Rightarrow \int G_{00}dV=\pm{{1}\over{2}}\int \nabla^2{{A_{00}}\over{r}}dV=\pm{{1}\over{2}}\int \nabla{{A_{00}}\over{r}}d\vec{S}=\mp{{A_{00}}\over{2}}\int{{\vec{r}}\over{r^3}}d\vec{S}=\mp{{A_{00}}\over{2}}\int_{S}{{1}\over{r^2}}dS=\mp{{A_{00}}\over{2}}{{1}\over{r^2}}4\pi r^2=\;</MATH>{{Br}}<MATH>=\mp 2\pi A_{00}\Rightarrow\int G_{00}dV=\mp 2\pi A_{00}\Rightarrow G_{00}=\mp 2\pi A_{00}\delta^3(\vec{r})</MATH>|5.56}}
To możemy napisać na podstawie prawa grawitacji {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} i definicji tensora Einsteina dla słabych pól grawitacyjnych, a właściwie dla jej dolnych wskaźników zerowych {{LinkWzór|5.56}}, dla obu sygnatur (znak u góry sygnatura dodatnia, a u dołu ujemna) dla obu rodzajów oddziaływania grawitacyjnego, to:
{{CentrujWzór|<MATH>G_{00}=\kappa T_{00}\Rightarrow \mp 2\pi A_{00}\delta^3(\vec{r})={{8\pi G}\over{c^4}}Mc^2\delta^3(\vec{r})\wedge \mp 2\pi A_{00}\delta^3(\vec{r})=-{{8\pi G}\over{c^4}}Mc^2\delta^3(\vec{r})\Rightarrow A_{00}=\mp{{4GM}\over{c^2}}\wedge A_{00}=\pm{{4GM}\over{c^2}}\;</MATH>|5.57}}
Równościach końcowych w {{LinkWzór|5.57}} pierwszy wzór na {{Formuła|<MATH>A_{00}\;</MATH>}} jest słuszny dla przyciągania grawitacyjnego, a drugi dla odpychania, znak u góry jest dla sygnatury dodatniej, u dołu ujemnej.
Na podstawie obliczeń dochodzimy do wniosku, że zachodzi dla {{LinkWzór|5.51}} przy niezerowej stałej tensorowej A{{Sup|00}}, korzystając z definicji potencjału grawitacyjnego dla pola grawitacyjnego klasycznego, mamy:
{{CentrujWzór|<MATH>\varphi=\mp{{GM}\over{r}}\;</MATH>|5.58}}
* W równaniu {{LinkWzór|5.58}} znak u góry przyciąganie grawitacyjne, a u dołu odpychanie grawitacyjne.
Zatem {{LinkWzór|5.51}} przy definicji A{{Sub|00}} {{LinkWzór|5.57}}, wykorzystując definicję potencjału skalarnego grawitacyjnego {{LinkWzór|5.58}}, i podstawiając do wzoru na {{Formuła|<MATH>\overline{h}_{00}\;</MATH>}}, dostajemy dla przyciągania grawitacyjnego:
{{CentrujWzór|<MATH>\overline{h}_{00}={{A_{00}}\over{r}}=\begin{cases}\mp{{4GM}\over{c^2r}}\\\pm{{4GM}\over{c^2r}}\end{cases}=\begin{cases}\pm{{4\varphi}\over{c^2}}\\\pm{{4\varphi}\over{c^2}}\end{cases}=\pm{{4\varphi}\over{c^2}}\;</MATH>|5.59}}
We wzorze przedkońcowym na {{Formuła|<MATH>\overline{h}_{00}\;</MATH>}} wzór na górze jest dla przyciagania grawitacyjnego, a u dołu dla odpychania, znak u góry jest dla sygnatury dodatniej, a u dołu ujemnej, a dla obu sygnatur, co do znaków, i sygnatur podobnie jest w końcowym wyniku tam.
Widzimy, że w powyższym wzorze jedynym niezerowym elementem tensora {{Formuła|<MATH>\overline{h}^{\mu\nu}\;</MATH>}} jest element zależny od potencjału skalarnego grawitacyjnego, który jest opisany w grawitacji wedle jej przestawienia klasycznego (dla słabego pola grawitacyjnego) w sposób {{LinkWzór|5.59}}.
=== Interwał czasoprzestrzenny słabego pola grawitacyjnego Newtona dla obu sygnatur tensora Minkowskiego i rodzajów oddziaływania grawitacyjnego ===
Z tożsamości {{LinkWzór|5.36}} i {{LinkWzór|5.59}}, której poprawka do tensora metrycznego Minkowskiego, a właściwie względem jej podwójnie dolnych elementów zerowych h{{Sub|00}} jest wyrażona przy pomocy potencjału grawitacyjnego wedle:
{{CentrujWzór|<MATH>\overline{h}={\overline{h}^0}_{0}=\pm\overline{h}_{00}=\pm 2h_{00}={{4\varphi}\over{c^2}}\Rightarrow h_{00}=\pm{{2\varphi}\over{c^2}}\;</MATH>|5.60}}
Korzystając z powyższych wniosków, a także z tego, że {{Formuła|<MATH>\overline{h}_{ii}\;</MATH>}} jest równe zero, co uzyskaliśmy w poprzednim rozdziale na podstawie cechowania {{LinkWzór|5.33}}, zatem można powiedzieć:
{{CentrujWzór|<MATH>h_{33}=h_{22}=h_{11}=\overline{h}_{11}-{{1}\over{2}}\eta_{11}\overline{h}=
0-{{1}\over{2}}(\mp 1){{4\varphi}\over{c^2}}=\pm{{2\varphi}\over{c^2}}\;</MATH>|5.61}}
Składniki tensora metrycznego mają się jak dla pozostałych wskaźników tensora metrycznego dla słabego pola grawitacyjnego:
{{CentrujWzór|<MATH>g_{ii}=\mp 1\pm{{2\varphi}\over{c^2}}\;</MATH>|5.62}}
Możemy wykorzystać definicję tensora dla wskaźników dolnych zerowych wedle {{LinkWzór|1.16|Wprowadzenie do ogólnej teorii względności}} oraz to, że elementy tensora metrycznego dla współrzędnych przestrzennych są {{LinkWzór|5.62}}, wtedy interwał czasoprzestrzenny dla słabego pola grawitacyjnego zapisujemy:
{{CentrujWzór|<MATH>ds^2=\left(1+{{2\varphi}\over{c^2}}\right)c^2dt^2+\left(-1+{{2\varphi}\over{c^2}}\right)\left(dx^2+dy^2+dz^2\right)\;</MATH>|5.63}}
Po krótkich przekształceniach w {{LinkWzór|5.63}} możemy napisać wzór jako równoważny do poprzedniego:
{{CentrujWzór|<MATH>ds^2=\left(1+{{2\varphi}\over{c^2}}\right)c^2dt^2-\left(1-{{2\varphi}\over{c^2}}\right)dl^2\;</MATH>|5.64}}
Dla słabego pola grawitacyjnego, wiedząc że potencjał skalarny zapisujemy wedle {{LinkWzór|5.57}}, wobec tego interwał czasoprzestrzenny {{LinkWzór|5.64}} wedle definicji potencjału skalarnego pola grawitacyjnego wspomnianego wcześniej wygląda:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>ds^2=\left(1-{{2GM}\over{c^2r}}\right)c^2dt^2-\left(1+{{2GM}\over{c^2r}}\right)dl^2\;</MATH>|5.65}}
| 2 = {{CentrujWzór|<MATH>ds^2=\left(1+{{2GM}\over{c^2r}}\right)c^2dt^2-\left(1-{{2GM}\over{c^2r}}\right)dl^2\;</MATH>|5.65a}}
}}
Równanie {{LinkWzór|5.65}} jest dla przyciągania grawitacyjnego, a {{LinkWzór|5.65a}} dla odpychania, gdzie: {{Formuła|<MATH>dl^2=d\vec r^2=[dx,dy,dz]^2=dx^2+dy^2+dz^2\;</MATH>}}.
Z powyższego równania interwał czasoprzestrzenny jest prawie taki sam jak interwał czasoprzestrzenny Minkowskiego, tzn. gdy φ<<c{{Sup|2}}, czyli wtedy można stosować szczególną teorię względności.
=== Pola grawitacyjne stacjonarne od odległych źródeł relatywistycznych dla obu sygnatur tensora Minkowskiego i rodzajów oddziaływania grawitacyjnego ===
Tensor Einsteina {{LinkWzór|1.37|Wprowadzenie do ogólnej teorii względności}} dla pól grawitacyjnego, korzystając ze wzoru {{LinkWzór|5.1}}, wygląda:
{{CentrujWzór|<MATH>G_{\beta\nu}=R_{\beta\nu}-{{1}\over{2}}g_{\beta\nu}R=R_{\beta\nu}-{{1}\over{2}}(\eta_{\beta\nu}+h_{\beta\nu})R=R_{\beta\nu}-{{1}\over{2}}\eta_{\beta\nu}R+O(r^{-2})\;</MATH>|5.66}}
Powyżej skorzystaliśmy, że η{{Sub|αβ}}, to tensor przestrzeni metrycznej Minkowskiego, a h{{Sub|αβ}}, to poprawka do tensora przestrzeni Minkowskiego, tak by nasza przestrzeń, była lekko zakrzywiona, podobna do przestrzeni płaskiej Minkowskiego z poprawką O(r{{Sup|-2}}) przedstawiona dla elementu tensora metrycznego o wskaźnikach zerowych:
{{CentrujWzór|<MATH>g_{00}=\pm 1\pm{{2\varphi}\over{c^2}}+O(r^{-2})=\pm 1\pm\begin{cases}-{{2GM}\over{c^2r}}\\{{2GM}\over{c^2r}}\end{cases}+O(r^{-2})\;</MATH>|5.67}}
dla elementów tensora metrycznego dla macierzy diagonalnej o podwójnie i-tych (przestrzennych) wskaźnikach:
{{CentrujWzór|<MATH>g_{ii}=\mp 1\pm{{2\varphi}\over{c^2}}+O(r^{-2})=\mp 1\pm\begin{cases}-{{2GM}\over{c^2r}}\\{{2GM}\over{c^2r}}\end{cases}+O(r^{-2})\;</MATH>|5.68}}
Kwadrat różniczki interwału czasoprzestrzennego dla dużej odległości od źródła relatywistycznego, znając już elementy tensora metrycznego, tzn. {{LinkWzór|5.67}} i {{LinkWzór|5.68}}, dla której kwadrat różniczki interwału czasoprzestrzennego przedstawiamy wedle sposobu {{LinkWzór|1.3|Wprowadzenie do ogólnej teorii względności}}, przedstawia się dla przyciągania grawitacyjnego metryką:
{{CentrujWzór|<MATH>ds^2=\left(1-{{2GM}\over{c^2r}}+O(r^{-2})\right)c^2dt^2-\left(1+{{2GM}\over{c^2r}}+O(r^{-2})\right)dl^2\;</MATH>|5.69}}
I dla odpychania metryką:
{{CentrujWzór|<MATH>ds^2=\left(1+{{2GM}\over{c^2r}}+O(r^{-2})\right)c^2dt^2-\left(1-{{2GM}\over{c^2r}}+O(r^{-2})\right)dl^2\;</MATH>|5.69ac}}
Równanie {{LinkWzór|5.69}} jest dla przyciągania grawitacyjnego, a {{LinkWzór|5.69ac}} dla odpychania, gdzie: {{Formuła|<MATH>dl^2=d\vec r^2=[dx,dy,dz]^2=dx^2+dy^2+dz^2\;</MATH>}}.
Widzimy, że dla dużych odległości od źródła relatywistycznego interwał czasoprzestrzenny jest prawie taki sam jak dla zwykłych źródeł {{LinkWzór|5.65}}, czyli dla słabych pól grawitacyjnych.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
hdboix4avxg7y3757ykreg2o1jlszeo
Ogólna teoria względności/Fizyka w słabozakrzywionych czasoprzestrzeniach
0
16249
558861
546696
2026-10-07T14:21:37Z
Persino
2851
558861
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tutaj będziemy rozpatrywać czy równania grawitacji Einsteina (Ogólnej teorii względności) przechodzą w równania Newtona. Jaki jest warunek zachowawczy dla pól grawitacyjnych, oraz czy wzór na energię całkowitą w przybliżeniu małych pól i małych pędów, czy przechodzi na energię cząstki w polu grawitacyjnym znanego z mechaniki klasycznej.
=== Fizyka w słabych stacjonarnych polach grawitacyjnych ===
Teraz będziemy rozpatrywać metrykę w słabo zakrzywionych czasoprzestrzeniach, które wcześniej wyznaczyliśmy dla słabych pól grawitacyjnych Newtonowskich, którego interwał czasoprzestrzenny dla słabego pola grawitacyjnego jest już wyznaczony i jest w postaci {{LinkWzór|5.65|Słabe_pola_grawitacyjne}}, nasz rozważany interwał jest zależny o potencjału skalarnego pola Newtowskiego.
Stosując definicję czterowektora prędkości, którą w ogólnej teorii względności tak samo zapisujemy jak szczególnej teorii względności, tylko że w tym pierwszym przypadku interwał czasoprzestrzenny jest ściśle określany, i zapisujemy go wedle sposobu {{LinkWzór|1.7|Wprowadzenie do ogólnej teorii względności}}.
Różniczka interwału czasoprzestrzennego występującego w pochodnej przy definicji czterowektora prędkości jest zdefiniowany tak by kwadrat był zdefiniowany wedle sposobu {{LinkWzór|1.3|Wprowadzenie do ogólnej teorii względności}}, wtedy możemy napisać część przestrzenna czteroprędkości przy pomocy pochodnej względem czasu:
{{CentrujWzór|<MATH>u^{i}={{dx^{i}}\over{dt}}{{dt}\over{ds}}</MATH>|6.1}}
Naszą metrykę {{LinkWzór|5.65|Słabe_pola_grawitacyjne}} przedstawiamy wyłączając przed pierwiastek wyrażenie cdt w naszej różniczce interwału czasoprzestrzennego, którego czas t jest liczony w sekundach:
{{CentrujWzór|<MATH>ds=cdt\sqrt{\left(1+{{2\varphi}\over{c^2}}\right)-\left(1-{{2\varphi}\over{c^2}}\right){{v^2}\over{c^2}}}</MATH>|6.2}}
Pochodna czterowektora położenia dla współrzędnych przestrzennych w naszej rozważanej metryce jest:
{{CentrujWzór|<MATH>u^{i}=v^i{{dt}\over{cdt\sqrt{\left(1+{{2\varphi}\over{c^2}}\right)-\left(1-{{2\varphi}\over{c^2}}\right){{v^2}\over{c^2}}}}}={{v^i}\over{c}}\left(\left(1+{{2\varphi}\over{c^2}}\right)-
\left(1-{{2\varphi}\over{c^2}}\right){{v^2}\over{c^2}}\right)^{-{{1}\over{2}}}</MATH>|6.3}}
Części przestrzenna czterowektora prędkości są równa zero, bo zachodzi v<<c dla prędkości o wiele mniejszych od prędkości światła, wtedy wyrażenie w nawiasie w {{LinkWzór|6.3}} dla słabych pól grawitacyjnych jest równe zero. Cześć czasowa czterowektora prędkości przybliżeniu jest równa jeden:
{{CentrujWzór|<MATH>u^0={{dx^0}\over{ds}}={{dx^0}\over{dt}}{{dt}\over{ds}}\simeq{{cdt}\over{dt}}{{dt}\over{cdt}}=1</MATH>{{Tekst|,a także }}<MATH>u^i\simeq 0</MATH>{{Tekst|, bo }}<MATH>{{v}\over{c}}<<1</MATH>|6.4}}
co to wynika z wyrażenia na u{{Sup|i}} opisanej powyżej dla słabych pól grawitacyjnych, ale też musi być spełnione: {{Formuła|<MATH>{{\varphi}\over{c^2}}<<1</MATH>}}, aby prędkość zerowa czerowektora prędkości była równa w przybliżeniu jeden.
Z własności prędkości w czterowektorze, można udowodnić, że można pominąć prędkości dla μ≠ 0, rozważyć tylko będziemy przypadek μ=0, dla którego u{{Sup|0}}≈1, stąd drugi wyraz w równaniu na linie geodezyjne na ruch po stycznej można przedstawić:
{{CentrujWzór|<MATh>{\Gamma^{\mu}}_{\alpha\beta}u^{\alpha}u^{\beta}={\Gamma^{\mu}}_{00}u^0u^0=
{\Gamma^{\mu}}_{00}</MATH>|6.5}}
Na podstawie {{LinkWzór|6.5}} równanie ruchu cząstki po stycznej wedle równania na linie geodezyjne {{LinkWzór|1.75|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} jest wyrażone:
{{CentrujWzór|<MATH>{{du^{\mu}}\over{ds}}+{\Gamma^{\mu}}_{\alpha\beta}u^{\alpha}u^{\beta}\Rightarrow {{du^{\mu}}\over{ds}}+{\Gamma^{\mu}}_{00}=0</MATH>|6.6}}
To co nam pozostało do policzenia w równaniu {{LinkWzór|6.6}} jest policzenie elementów tensora Christoffela, tzn. elementów Γ{{Sup|μ}}{{Sub|00}}. Tutaj policzymy najpierw Γ{{Sup|0}}{{Sub|00}}, i dalej elementy tensora Γ{{Sup|i}}{{Sub|00}}.
Policzmy tensor Christoffela dla μ=0, a więc:
{{CentrujWzór|<MATH>{\Gamma^0}_{00}={{1}\over{2}}g^{00}\left(g_{00,0}+g_{00,0}-g_{00,0}\right)={{1}\over{2}}g^{00}g_{00,0}</MATH>|6.7}}
Według naszej metryki {{LinkWzór|5.63|Słabe_pola_grawitacyjne}}, mamy składowe tylko diagonalne tensora metrycznego dla omawianego słabego pola grawitacyjnego Newtonowskiego, dzięki którego elementy tensora metrycznego tworzą interwał czasoprzestrzenny opisującego słabe pole Newtonowskie {{LinkWzór|5.65|Słabe_pola_grawitacyjne}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>g_{00}=1+{{2\varphi}\over{c^2}}\;</MaTH>|6.8}}
| 2 = {{CentrujWzór|<MATH>g_{ij}=\left(-1+{{2\varphi}\over{c^2}}\right)\delta_{ij}</MATH>|6.9}}
}}
Ogólnie mówiąc pochodna tensora metrycznego względem x{{Sup|μ}} dla metryki newtonowskiej obowiązującego w ogólnej teorii względności dla słabych pól grawitacyjnych, dla wszystkich jego składowych, piszemy:
{{CentrujWzór|<MATH>g_{\alpha\beta,\mu}={{2}\over{c^2}}\varphi_{,\mu}\delta_{\alpha\beta}</MATH>|6.10}}
Elementy odwrotne tensora metrycznego liczymy podobnie jak w punkcie {{LinkWzór|6.8}} i {{LinkWzór|6.9}}, które potrzebne będą nam do policzenia elementów tensora Christoffela wraz z elementami tensora prostego metrycznego:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>g^{00}=\left(1+{{2\varphi}\over{c^2}}\right)^{-1}\;</MATH>|6.11}}
| 2 = {{CentrujWzór|<MATH>g^{ij}=\left(-1+{{2\varphi}\over{c^2}}\right)^{-1}\delta^{ij}</MATH>|6.12}}
}}
Tensor Christoffela dla wszystkich wskaźników zerowych w tym tensorze {{LinkWzór|6.7}} po wykorzystaniu policzonego elementu tensora metrycznego odwrotnego też o zerowych wskaźnikach {{LinkWzór|6.11}}, a także na podstawie policzonego elementu tensora prostego metrycznego zapisane w punkcie {{LinkWzór|6.8}}, możemy napisać:
{{CentrujWzór|<MATH>{\Gamma^0}_{00}={{1}\over{2}}\left(1+{{2\varphi}\over{c^2}}\right)^{-1}{{2}\over{c^2}}\varphi_{,0}=
{{\varphi_{,0}}\over{c^2+2\varphi}}=
{{\varphi_{,0}}\over{c^2}}=
{{\partial\varphi}\over{\partial x_0}}{{1}\over{c^2}}=
{{1}\over{c^3}}{{\partial \varphi}\over{\partial dt}}={{1}\over{c^3}}{{\partial \varphi}\over{\partial dt}}</MATH>|6.13}}
Dla małych prędkości względem prędkości światła, wykorzystując wzór {{LinkWzór|6.6}} w czasoprzestrzeni prawie płaskiej czasoprzestrzeni Minkowskiego dla wskaźnika μ zerowego, można napisać tożsamość na linie geodezyjne:
{{CentrujWzór|<MATH>{{du^0}\over{ds^2}}+{\Gamma^0}_{00}=0</MATH>|6.14}}
Mnożymy równanie {{LinkWzór|6.14}} obustronnie przez m{{Sub|0}}c i wykorzystując definicję czterowektora pędu {{LinkWzór|1.8|Wprowadzenie do ogólnej teorii względności}} poprzez czterowektor prędkości, otrzymujemy:
{{CentrujWzór|<MATH>{{dp^0}\over{ds^2}}=-{\Gamma^0}_{00}m_0 c</MATH>|6.15}}
Następnie wyrażamy czteropęd cząstki, o zerowej współrzędnej kontrawariantnej względem jej energii, i korzystając że tensor kowariantny jest równy tensorowi kontrwariantnemu, bo zachodzi dla słabych pól grawitacyjnych (pól Newtonowskich):
{{CentrujWzór|<MATH>p^0=p_0g^{00}={{p_0}\over{1+{{2\varphi}\over{c^2}}}}\simeq p_0\left(1-{{2\varphi}\over{c^2}}\right)\simeq p_0={{E}\over{c}}\Rightarrow p^0\simeq {{E}\over{c}}</MATH>|6.16}}
Mając definicję tensora pędu o zerowej współrzędnej kontrawariantnej czterowektora pędu poprzez energii cząstki {{LinkWzór|6.16}}, która ta tożsamość zachodzi w przybliżeniu, podstawiamy go do równania {{LinkWzór|6.15}} i mnożąc jednocześnie go przez prędkość światła "c", otrzymujemy:
{{CentrujWzór|<MATH>{{dE}\over{ds}}=-{\Gamma^0}_{00}m_0 c^2</MATH>|6.17}}
Dla płaskiej przestrzeni dla prędkości nierelatywistycznych, zachodzi ds=cdt w przybliżeniu na podstawie definicji różniczki interwału czasoprzestrzennego {{LinkWzór|6.2}}:
{{CentrujWzór|<MATH>{{dE}\over{dt}}=-{\Gamma^0}_{00}m_0 c^3</MATH>|6.18}}
Podstawiając w równaniu {{LinkWzór|6.18}} za element tensora Christoffela {{LinkWzór|6.13}} i w rezultacie otrzymujemy:
{{CentrujWzór|<MATH>{{dE}\over{dt}}=-{{1}\over{c^3}}{{\partial \varphi}\over{\partial dt}} m_0 c^3</MATH>|6.19}}
Dokonując pewnych przekształceń w równaniu {{LinkWzór|6.19}} uniezależniamy się od prędkości światła w prawej stronie wspomnianego wcześniej równania, czyli po pewnych skróceniach dostajemy tożsamość:
{{CentrujWzór|<MATH>{{dE}\over{dt}}=-m_0{{\partial\varphi}\over{\partial t}}</MATH>|6.20}}
Powyższe równanie mówi, o ile pole grawitacyjne (wielkość skalarnego potencjału słabego pola grawitacyjnego) nie zależy od czasu, to energia całkowita (mechaniczna) cząstki jest zachowana.
Następnym naszym krokiem jest policzenie następnych elementów o wskaźniku dolnych niezerowych, która jest jednym ze składowych tensora Chrostoffela, tzn. dla 0≠μ=i, przy czym należy pamiętać, że metryka dla słabego pola grawitacyjnego jest taka, w której występują tylko diagonalne elementy tensora metrycznego, a więc:
{{CentrujWzór|<MATH>{\Gamma^i}_{00}={{1}\over{2}}g^{ij}(g_{j0,0}+g_{0j,0}-g_{00,j})=-{{1}\over{2}}g^{ij}g_{00,j}
\Rightarrow{\Gamma^i}_{00}=-{{1}\over{2}}\left(-1+{{2\varphi}\over{c^2}}\right)^{-1}{{2}\over{c^2}}\varphi_{,j}\delta^{ij}={{1}\over{c^2}}\varphi_{,j}\delta^{ij}</MATH>|6.21}}
Poniżej mamy równanie na linie geodezyjne po którym poruszało się ciało, czyli korzystając z równania tensorowego {{LinkWzór|6.6}} dla wskaźników dolnych przestrzennych tensora Christoffela:
{{CentrujWzór|<MATH>{{du^i}\over{ds}}=-{\Gamma^i}_{00}</MATH>|6.22}}
Równość {{LinkWzór|6.22}}, z definicji czterowektora pędu dla współrzędnych przestrzennych {{LinkWzór|1.8|Wprowadzenie do ogólnej teorii względności}} zdefiniowanych poprzez czterowektor prędkości, zapisujemy:
{{CentrujWzór|<MATH>{{dp^i}\over{ds}}=-{\Gamma^i}_{00}m_0 c</MATH>|6.23}}
Dla prędkości nierelatywistycznych oczywiste jest, że w przybliżeniu mamy dla słabego pola grawitacyjnego, że ds≈c dt, jednocześnie możemy pomnożyć obustronnie równanie {{LinkWzór|6.23}} przez prędkość światła w próżni "c":
{{CentrujWzór|<MATH>{{dp^i}\over{dt}}=-{\Gamma^i}_{00}m_0 c^2</MATH>|6.24}}
Podstawiając do {{LinkWzór|6.24}} policzony tensor Γ{{Sup|i}}{{Sub|00}} {{LinkWzór|6.21}}, wtedy otrzymujemy równanie ruchu w zależne od rozkładu potencjału skalarnego pola grawitacyjnego w przestrzeni.
{{CentrujWzór|<MATH>{{dp^i}\over{dt}}=-{{1}\over{c^2}}\varphi_{,j}\delta^{ij}m_0 c^2</MATH>|6.25}}
Po pewnych skróceniach w równaniu {{LinkWzór|6.25}} likwiduje się zależność od prędkości światła z prawej stronie wspomnianego równanie, wtedy to nasze równanie ruchu cząstki przyjmuje kształt:
{{CentrujWzór|<MATH>{{dp^i}\over{dt}}=-m_0\varphi_{,j}\delta^{ij}</MATH>|6.26}}
Jeśli oznaczymy jako energię potencjalną cząstki przez oznaczenie zależne od jej potencjału grawitacyjnego i jej masy spoczynkowej, czyli od energii potencjalnej ciała o masie m{{Sub|0}}, czyli: E{{Sub|p}}=φ m{{Sub|0}}, to z własności pochodnej cząstkowej, można zapisać prawą stronę {{LinkWzór|6.26}} bez minusa:
{{CentrujWzór|<MATH>m_0\varphi_{,j}=(m_0\varphi)_{,j}={{\partial E_p}\over{\partial x^j}}</MATH>|6.27}}
To mamy równanie ruchu, które jest zależne od gradientu energii potencjalnej, które opisuje ruch naszego ciała w potencjalnym skalarnym polu grawitacyjnym, wtedy równanie {{LinkWzór|6.26}} przy zachodzącej tożsamości {{LinkWzór|6.27}} zapisujemy:
{{CentrujWzór|<MATH>{{dp^i}\over{dt}}=-{{\partial E_p}\over{\partial x^j}}\delta^{ij}</MATH>|6.28}}
Widzimy, że jest to pewna forma równania ruchu cząstki w zależności współrzędnej pędu i rozkładu pola grawitacyjnego. Lewa strona jest równaniem Newtona, a prawa jest siłą pola grawitacyjnego w danym punkcie przestrzeni trójwymiarowej.
Przy czym należy pamiętać że składowe kowariantne i kontrkowariantne w metryce euklidesowej są nierozróżnialne, bo g{{Sub|ij}}≈ 1δ{{Sub|ij}}, dla słabych pól grawitacyjnych.
Wstawiając za definicja gradientu, to powyższe równanie ruchu można przedstawić w postaci:
{{CentrujWzór|<MATH>{{d\vec{p}}\over{dt}}=-\operatorname{grad}E_p</MATH>|6.29}}
Dla naszych rozważanych prędkości, pęd cząstki można opisać wzorem dla przypadku nierelatywistycznego p{{Sup|i}}=m{{Sub|0}} v{{Sup|i}}, a także jego przyspieszenie {{Formuła|<MATH>\vec{a}={{d\vec{v}}\over{dt}}\;</MATH>}}, ostatecznie otrzymujemy najprostszą postać równania ruchu cząstki w polu potencjalnym sił grawitacyjnych.
{{CentrujWzór|<MATH>m_0\vec{a}=-\operatorname{grad}E_p</MATH>|6.30}}
Powyższe równanie można przedstawić jako dwa równania, pierwsze jako druga zasada dynamiki Newtona, a drugie opisujące siły grawitacyjne w polu skalarnym sił grawitacyjnych poprzez potencjał grawitacyjny φ:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{F}=m_0\vec{a}</MATH>|6.31}}
| 2 = {{CentrujWzór|<MATH>\vec{F}=-\operatorname{grad}E_p=-m_0\operatorname{grad}\varphi</MATH>|6.32}}
}}
Udowodniliśmy, że dla ogólnej teorii względności dla słabych pól grawitacyjnych, dla prędkości nierelatywistycznych ogólna teoria względności sprowadza się do drugiego prawa Newtona i teorii grawitacji Newtona.
=== Zachowawczy charakter wielkości fizycznych ===
Skorzystajmy z równania na linie geodezyjne w pewnej czasoprzestrzeni i równocześnie na równanie ruchu cząstki masowej {{LinkWzór|1.74|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} mnożąc to równanie przez wyrażenie (m{{Sub|0}}c){{Sup|2}} i po z korzystaniu z definicji czterowektora pędu {{LinkWzór|1.8|Wprowadzenie do ogólnej teorii względności}}, wtedy dostajemy równość tensorową:
{{CentrujWzór|<MATH>m_0c{{dp_{\alpha}}\over{ds}}-{\Gamma^{\gamma}}_{\alpha\beta}p^{\beta}p_{\gamma}=m_0c K_{\alpha}\;</MATH>|6.33}}
Zajmijmy się odjemnikiem występującej w równaniu na linię geodezyjne zapisanej za pomocą czterowektora pędu w powstałym równaniu {{LinkWzór|6.33}} przekształcając ten wyraz:
{{CentrujWzór|<MATH>{\Gamma^{\gamma}}_{\alpha\beta}p^{\beta}p_{\gamma}=
{{1}\over{2}}g^{\gamma\mu}(g_{\alpha\mu,\beta}+g_{\beta\mu,\alpha}-g_{\alpha\beta,\mu})p^{\beta}p_{\gamma}=
{{1}\over{2}}(g_{\alpha\mu,\beta}+g_{\beta\mu,\alpha}-g_{\alpha\beta,\mu})p^{\beta}p^{\mu}={{1}\over{2}}\left(g_{\alpha\mu,\beta}p^{\beta}p^{\mu}+g_{\beta\mu,\alpha}p^{\beta}p^{\mu}-g_{\alpha\beta,\mu}p^{\beta}p^{\mu}\right)=</MATH>{{Br}}
<MATH>=
{{1}\over{2}}\left(
g_{\alpha\beta,\mu}p^{\mu}p^{\beta}+g_{\beta\mu,\alpha}p^{\beta}p^{\mu}-g_{\alpha\beta,\mu}p^{\beta}p^{\mu}
\right)={{1}\over{2}}g_{\beta\mu,\alpha}p^{\beta}p^{\mu}</MATH>|6.34}}
Na podstawie obliczeń {{LinkWzór|6.34}} dla drugiego wyrazu występującego w równaniu tensorowym {{LinkWzór|6.33}}, wtedy równanie na linie geodezyjne zapisujemy przy pomocy czteropędu i pewnej pochodnej cząstkowej elementu tensora metrycznego:
{{CentrujWzór|<MATH>m_0c{{dp_{\alpha}}\over{d s}}-{{1}\over{2}}g_{\beta\mu,\alpha}p^{\beta}p^{\mu}=m_0cK_{\alpha}</MATH>|6.35}}
Stąd równanie {{LinkWzór|6.35}} można zapisać w innej równoważnej postaci przenosząc drugi wyraz w rozważanym równaniu na jego prawą stronę:
{{CentrujWzór|<MATH>m_0c{{dp_{\alpha}}\over{d s}}={{1}\over{2}}g_{\beta\mu,\alpha}p^{\beta}p^{\mu}+m_0c K_{\alpha}</MAth>|6.36}}
Można stąd wywnioskować wedle równania {{LinkWzór|6.36}}, że jeśli jakieś elementy tensora metrycznego dla ciała poruszającego się wzdłuż jakieś ściśle określonej trajektorii nie zależą od jakieś współrzędnej x{{Sup|α}}, wtedy wielkość p{{Sub|α}}=m{{Sub|0}}cu{{Sub|α}} pozostaje stały wzdłuż tej trajektorii cząstki dla współrzędnej α.
=== Całkowita energia cząstki w polu grawitacyjnym ===
Z wykładu ogólnej teorii względności, w której występuje wzór {{LinkWzór|1.11|Wprowadzenie do ogólnej teorii względności}} z definicji metryki dla słabego pola grawitacyjnego {{LinkWzór|5.65|Słabe_pola_grawitacyjne}} wiedząc, że elementy tego tensora nie zależą od czasu, bo mamy doczynienia z polem stacjonarnym. Wedle równania {{LinkWzór|6.36}} kowariantny pęd o współczynniku zerowym dla masowej cząstki jest stały względem zmiany interwału czasoprzestrzennego, a dla słabych pól grawitacyjnych jest stały względem czasu, co możemy napisać tą równość sposobem:
{{CentrujWzór|<MATH>m_0^2c^2=p_{\mu}p^{\mu}=p^{\alpha}p^{\beta}g_{\alpha\beta}=
\left(1+{{2\varphi}\over{c^2}}\right)(p^0)^2-\left(1-{{2\varphi}\over{c^2}}\right)\left((p^x)^2+(p^y)^2+(p^z)^2\right)\;</MATH>|6.37}}
Jeśli oznaczymy że kwadrat całkowitego pęd cząstki jest równy sumie kwadratów pędu cząstki jej współrzędnych przestrzennych:
{{CentrujWzór|<MATH>(p^x)^2+(p^y)^2+(p^z)^2=p^2\;</MATH>|6.38}}
wtedy równanie {{LinkWzór|6.37}} na podstawie zachodzącej tożsamości {{LinkWzór|6.38}} wyznaczając stąd wyraz z kwadratem współrzędnej zerowej czterowektora pędu, wtedy to nasze wspomniane wcześniej równanie przyjmuje postać:
{{CentrujWzór|<MATH>m_0^2c^2=\left(1+{{2\varphi}\over{c^2}}\right)(p^0)^2-\left(1-{{2\varphi}\over{c^2}}\right)p^2\;\Rightarrow \left(1+{{2\varphi}\over{c^2}}\right)(p^0)^2=m_0^2c^2+\left(1-{{2\varphi}\over{c^2}}\right)p^2\;</MATH>|6.39}}
Dzielimy obie strony równości {{LinkWzór|6.39}} przez zawsze niezerowe wyrażenie {{Formuła|<MATH>1+{{2\varphi}\over{c^2}}\;</MATH>}}, wtedy otrzymujemy równość, z którego możemy wyznaczyć kwadrat zerowej współrzędnej czterowektora pędu:
{{CentrujWzór|<MATH>(p^0)^2=\left(m_0^2c^2+\left(1-{{2\varphi}\over{c^2}}\right)p^2\right)\left(1+{{2\varphi}\over{c^2}}\right)^{-1}\;</MATH>|6.40}}
Ponieważ mamy doczynienia z słabym polem grawitacyjnym, to powinno wtedy zachodzić {{Formuła|<MATH>{{2\varphi}\over{c^2}}<<1\;</MATH>}}, to przyjmując na podstawie ostatniego przybliżenia równość {{LinkWzór|6.40}}, otrzymujemy:
{{CentrujWzór|<MATH>({p^0})^2=\left(m_0^2c^2+\left(1-{{2\varphi}\over{c^2}}\right)p^2\right)\left(1-{{2\varphi}\over{c^2}}\right)\Rightarrow(p^0)^2=m_0^2c^2+\left(1-{{2\varphi}\over{c^2}}\right)p^2-{{2\varphi}\over{c^2}}\left(m_0^2c^2+\left(1-{{2\varphi}\over{c^2}}\right)p^2\right)\;</MATH>|6.41}}
Możemy dokonać odpowiednich wymnożeń w równaniu {{LinkWzór|6.41}} po jego prawej stronie przy opuszczaniu nawiasu i biorąc w końcu wyrażenie m{{Sub|0}}{{Sup|2}}c{{Sup|2}} przed nawias, wtedy dostajemy równość na kwadrat czasowego elementu czterowektora pędu:
{{CentrujWzór|<MATH>(p^0)^2=m_0^2c^2\left(
1+{{p^2}\over{m_0^2c^2}}-{{2\varphi}\over{m_0^2c^4}}p^2-{{2\varphi}\over{c^2}}
-{{2\varphi}\over{m_0^2c^4}}p^2+{{4\varphi^2}\over{m_0^2c^6}}\right)\;</MATH>|6.42}}
Dokonując przybliżeń w powyższym równaniu, czyli wybierając wyrazy rzędu c{{Sup|0}} oraz rzędu c{{Sup|-2}}, a wyrazy o większym rzędzie pomijamy w prawej stronie równości {{LinkWzór|6.42}}, wtedy:
{{CentrujWzór|<MATH>(p^0)^2\simeq m_0^2c^2\left(1+{{p^2}\over{m^2_0c^2}}-{{2\varphi}\over{c^2}}\right)\;</MATH>|6.43}}
Policzmy samo {{Formuła|<MATH>p^0\;</MATH>}} względem równości {{LinkWzór|6.43}} zakładając, że p{{Sub|0}}≥0, czyli przyjmuje on wartość nieujemną, który jest element zerowym czterowektora pędu, a więc do dzieła:
{{CentrujWzór|<MATH>p^0=m_0c\sqrt{1+{{p^2}\over{m^2_0c^2}}-{{2\varphi}\over{c^2}}}\;</MATH>|6.44}}
Biorąc przybliżenie {{Formuła|<MATH>\sqrt{1+x}\simeq 1+{{1}\over{2}}x\;</MATH>}} w równaniu {{LinkWzór|6.44}}, wtedy po rozpisaniu pierwiastka w równaniu {{LinkWzór|6.44}}, wtedy ta nasza tożsamość przyjmuje wygląd:
{{CentrujWzór|<math>p^0=m_0c\left(1+{{p^2}\over{2m_0^2c^2}}-{{\varphi}\over{c^2}}\right)\;</MATH>|6.45}}
Po zastosowaniu twierdzenia rozdzielności mnożenia względem dodawania {{LinkWzór|6.45}}, otrzymujemy:
{{CentrujWzór|<MATH>p^0=m_0c+{{p^2}\over{2mc}}-m_0{{\varphi}\over{c}}\;</MATH>|6.46}}
Obniżmy wskaźnik przy p{{Sup|0}} w równaniu {{LinkWzór|6.46}}, czyli będziemy mówić o kontrawariantności zerowej współrzędnej, przy której przejdźmy do kowariantności zerowej współrzędnej czterowektora pędu, oraz korzystając z tego, że macierz tensora metrycznego dla słabych pól grawitacyjnych jest diagonalna, a więc to przejście można dokonać w sposób bardzo łatwy, tzn. tylko wymnażając p{{Sup|0}} przez element tensora metrycznego prostego g{{Sub|00}} w metryce słabego pola grawitacyjnego.
{{CentrujWzór|<MATH>p_0=p^{\alpha}g_{\alpha 0}=\left(m_0c+{{p^2}\over{2mc}}-m_0{{\varphi}\over{c}}\right)\left(1+{{2\varphi}\over{c^2}}\right)\Rightarrow p_0=m_0c+{{p^2}\over{2mc}}-m_0{{\varphi}\over{c}}+\left(m_0c+{{p^2}\over{2mc}}-m_0{{\varphi}\over{c}}\right){{\varphi}\over{c^2}}\Rightarrow\;</MATH>{{Br}}
<MATH>\Rightarrow p_0=m_0c+{{p^2}\over{2m_0c}}-m_0{{\varphi}\over{c}}+m_0{{2\varphi}\over{c}}+{{p^2}\over{2mc}}{{2\varphi}\over{c^2}}-m_0{{2\varphi^2}\over{c^3}}\;</MATH>|6.47}}
Dokonując odpowiednich przybliżeń, czyli wybierając wyrazy nie wyższe niż rzędu c{{Sup|-1}} w ostatnim równaniu wynikowym {{LinkWzór|6.47}}, otrzymujemy:
{{CentrujWzór|<MATH>p_0=m_0c+{{p^2}\over{2m_0c}}+m_0{{\varphi}\over{c}}\;</MATH>|6.48}}
Równanie {{LinkWzór|6.48}} wymnażamy przez prędkość światła c i zastosowaniu definicji energii cząstki poprzez iloczyn pęd kowariantnego wymnożonej przez prędkość światła {{Formuła|<MATH>p_0={{E}\over{c}}\;</MATH>}}.
{{CentrujWzór|<MATH>E=m_0c^2+m_0\varphi+{{p^2}\over{2m_0}}\;</MATH>|6.49}}
Widzimy, że wielkość podana z prawej strony składa się z energii spoczynkowej, energii potencjalnej w polu grawitacyjnym oraz energii kinetycznej znanej z mechaniki klasycznej.
== Elementy czterowektora pędu w układach kulistym i walcowym układu współrzędnych ==
Zapoznamy się tutaj ze współrzędnymi kulistymi i walcowymi, w których napiszemy z definicji pędu kontrawariantnego {{LinkWzór|1.8|Wprowadzenie do ogólnej teorii względności}} jako funkcję ich mas relatywistycznych i odpowiednich pochodnych czasowych.
=== Współrzędne kuliste ===
Możemy wykorzystać definicję współrzędnych tensora pędu {{LinkWzór|1.8|Wprowadzenie do ogólnej teorii względności}}, ale weźmy go dla współrzędnych kontrawariantnych, dla współrzędnych kowariantnych pędu można je otrzymać ze współrzędnych kontrawariantnych przez proste własności tensora metrycznego przyjmując, że różniczka interwału czasoprzestrzennego wynikającego z metryki Minkowskiego {{LinkWzór|1.6|Wprowadzenie do ogólnej teorii względności}} jest:
{{CentrujWzór|<MaTh>ds=\sqrt{1-{{v^2}\over{c^2}}}cdt=\gamma^{-1}cdt\;</MATH>|6.50}}
Wtedy pęd kontrawariantny radialny możemy przedstawić poprzez pochodną radialną względem czasu i też jest zależna od masy relatywistycznej, co można udowodnić z definicji czterowektora pędu:
{{CentrujWzór|<MATH>p^r=m_0c{{dr}\over{ds}}=m_0c{{dr}\over{\gamma^{-1} cdt}}=m_0\gamma{{dr}\over{dt}}=m\dot{r}\;</MaTH>|6.51}}
Pęd kontrawariantny θ-owy jest równy funkcji zależnej od masy relatywistycznej i pochodnej zupełnej kąta θ-owego względem czasu, co można udowodnić z definicji czterowektora pędu:
{{CentrujWzór|<MATH>p^{\theta}=m_0c{{d\theta}\over{ds}}=m_0c{{d\theta}\over{\gamma^{-1}cdt}}=m_0\gamma\dot{\theta}=m\dot{\theta}\;</math>|6.52}}
Pęd kontrawariantny ψ-owy jest równy funkcji zależnej od masy relatywistycznej i pochodnej kąta φ-owego względem czasu, co można udowodnić z definicji czterowektora pędu:
{{CentrujWzór|<MATH>p^{\phi}=m_0c{{d\phi}\over{ds}}=m_0\gamma\dot{\phi}=m\dot{\phi}\;</Math>|6.53}}
Końcowe wzory dla poszczególnych pędów kontrawariantnych {{LinkWzór|6.50}}, {{LinkWzór|6.51}} i {{LinkWzór|6.52}} są słuszne tylko dla szczególnej teorii względności, ale te końcowe wzory możemy uogólnić na przypadek innej dowolnej metryki i dla fotonów (cząstek o zerowej masie spoczynkowej), którą wyliczymy z ogólnej teorii względności.
=== Współrzędne walcowe i radialne ===
Podobnie jak poprzednio definicję kontrawariantnego pędu, ale tym razem dla współrzędnych walcowych, podobnie przyjmujemy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>p^r=m\dot{r}\;</MATH>|6.54}}
| 2 = {{CentrujWzór|<MATH>p^{\theta}=m\dot{\theta}\;</MatH>|6.55}}
| 3 = {{CentrujWzór|<MATH>p^z=m\dot{z}\;</math>|6.56}}
}}
Oczywiste jest ze wzory {{LinkWzór|6.54}}, {{LinkWzór|6.55}} i {{LinkWzór|6.56}} możemy uogólnić na przypadek dowolnej metryki wyliczonej z równania grawitacji Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} lub {{LinkWzór|1.58|Wprowadzenie do ogólnej teorii względności}}, a także dla fotonów, czyli cząstek o zerowej masie spoczynkowej.
Wzory dla współrzędnych radialnych wyglądają tak samo jak dla współrzędnych walcowych, tylko nie ma tutaj współrzędnej zetowej kontrawariantnego czteropędu, bo ten układ współrzędnych jest przedstawieniem położeń za pomocą współrzędnych (r,θ) na płaszczyźnie.
== Kowariantny pęd θ-owy i φ-owy a współrzędne klasycznego momentu pędu ==
Rozpatrzmy słabe pole grawitacyjne według metryki Newtona {{LinkWzór|5.65|Słabe_pola_grawitacyjne}}, widzimy, że na podstawie definicji potencjału grawitacyjnego {{LinkWzór|5.65|Słabe_pola_grawitacyjne}} znanego z teorii grawitacji Newtona, że jeśli tensory metryczne nie zależą od zmiennych kątowych, to pędy kowariantne względem tychże wielkości kątowych są wielkościami niezależnymi od kątów w metryce słabego pola grawitacyjnego, metrykę {{LinkWzór|5.65|Słabe pola grawitacyjne}} w zmiennych kulistych możemy zapisać:
{{CentrujWzór|<MATH>ds^2=\left(1+{{2\varphi}\over{c^2}}\right)c^2dt^2-\left(1-{{2\varphi}\over{c^2}}\right)\left(dr^2+r^2\sin^2\phi d\theta^2+r^2d\phi^2\right)\;</MATH>|6.57}}
Co po odpowiednich wymnożeniach w {{LinkWzór|6.50}}, wydzielając odpowiednie elementy diagonalne tensora metrycznego, mamy:
{{CentrujWzór|<Math>ds^2=\underbrace{\left(1+{{2\varphi}\over{c^2}}\right)}_{g_{tt}}c^2dt^2\underbrace{-\left(1-{{2\varphi}\over{c^2}}\right)}_{g_{rr}}dr^2\underbrace{-\left(1-{{2\varphi}\over{c^2}}\right)r^2\sin^2\phi}_{g_{\theta\theta}} d\theta^2\underbrace{-\left(1-{{2\varphi}\over{c^2}}\right)r^2}_{g_{\phi\phi}}d\phi^2\;</Math>|6.58}}
Pędy kowariantne wedle metryki słabego pola grawitacyjnego we współrzędnych kulistych {{LinkWzór|6.51}} są zdefiniowane jako wielkości stałe, o ile tensor metryczny nie zależy od zmiennej x{{Sup|θ}}=θ, wtedy ta wielkość bardzo przypomina θ-owy moment pędu znanej z mechaniki klasycznej Newtona:
{{CentrujWzór|<MATH>p_{\theta}=p^{\theta}g_{\theta\theta}=-m{{d\theta}\over{dt}}\left(1-{{2\varphi}\over{c^2}}\right)r^2\sin^2\phi\simeq-(r\sin\phi) [mr\sin(\phi)\dot{\theta}]=-r_{\theta}mv_{\theta}=L_{\theta}\;</MaTH>|6.59}}
Kowariantny pęd jak udowodnimy jest wielkością stałą względem zmiennej o wskaźniku dolnym x{{Sup|φ}}=φ, bo tensor metryczny prosty nie zależy od zmiennej położeniu o tym wskaźniku, wtedy ta wielkość bardzo przypomina φ-owy moment pędu znanej z mechaniki klasycznej Newtona:
{{CentrujWzór|<MATH>p_{\phi}=p^{\phi}g_{\phi\phi}=-m{{d\phi}\over{dt}}\left(1-{{2\varphi}\over{c^2}}\right)r^2\simeq -m{{d\phi}\over{dt}}r^2=-r mr{{d\phi}\over{dt}}=-r mv_{\phi}=L_{\phi}\;</MATH>|6.60}}
Widzimy na podstawie {{LinkWzór|6.59}} (pęd kowariantny θ-owy) i {{LinkWzór|6.60}} (pęd kowariantny ψ-owy) są w przybliżeniu równe współrzędnym odpowiednio momentowi pędu θ-owego lub φ-owego dla metryki słabego pola grawitacyjnego, ale także również dla innych metryk, które w granicy słabego pola grawitacyjnego przechodzą w metrykę Minkowskiego.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
6z2zmxho0nkm07bik8fdh2tw3rlg4kv
Ogólna teoria względności/Promieniowanie grawitacyjne
0
16258
558862
546541
2026-10-07T14:35:54Z
Persino
2851
558862
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tutaj będziemy się zajmować ''falami grawitacyjnymi'', tzn. co to są fale grawitacyjne, czy to jest fala poprzeczna czy podłużna, dlaczego prędkość grupowa jest równa prędkości fazowej, jak można wykryć fale grawitacyjną za pomocą rezonatora grawitacyjnego, jak je wytwarzać.
== Propagacja fal grawitacyjnych ==
Udowodnimy, że dla naszego pola grawitacyjnego niestacjonarnego w dużej odległości od źródła, pole grawitacyjne rozchodzi się na w sposób fali.
Tensor Einsteina dla słabych pól grawitacyjnych daleko od źródła grawitacyjnego przedstawia się wedle schematu {{LinkWzór|5.35|Słabe_pola_grawitacyjne}} i daleko od źródła tensor gęstości energii znika T{{Sup|αβ}}=0, bo w rozważanym punkcie gęstość jest już równa zero, a także ciśnienie jest zaniedbywalnie małe. Z równania grawitacji Einsteina, dla zerowego tensora gęstości energii-pędu powyższego równania, oczywiste jest, że tensor Einsteina G{{Sup|αβ}}=0.
Z zerowania się tensora gęstości energii i równanie grawitacji Einsteina {{LinkWzór|1.51|Wprowadzenie_do_ogólnej_teorii_względności}} po pomnożeniu jego przez dwa i korzystając z definicji operatora d'Alemberta mamy z oczywistych powodów:
{{CentrujWzór|<MATH>0=\square \overline{h}_{\alpha\beta}\Rightarrow\left(-{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}+\nabla^2\right)\overline{h}^{\alpha\beta}=0</MATH>|7.1}}
Końcowe równanie {{LinkWzór|7.1}} jest równaniem falowym, a poniżej podamy jego rozwiązanie w postaci poniżej, którego to zapis zależy od czterowektora kontrawariantnego położenia x{{Sup|μ}}i czterowektora kowariantnego liczby falowej k{{Sup|μ}}:
{{CentrujWzór|<MATH>\overline{h}^{\alpha\beta}=A^{\alpha\beta}e^{ik_{\mu}x^{\mu}}</MATH>|7.2}}
Końcowe równanie falowe {{LinkWzór|7.1}} po podstawieniu do niego rozwiązania falowego {{LinkWzór|7.2}} i zakładając przy tym, że stała tensorowa A{{Sup|αβ}} występująca w naszym wspomnianym rozwiązaniu jest stałą dowolną:
{{CentrujWzór|<MATH>\eta^{\mu\nu}{\overline{h}^{\mu\nu}}_{,\mu,\nu}=0\Rightarrow\eta^{\mu\nu}k_{\mu}k_{\nu}\overline{h}^{\alpha\beta}=0\Rightarrow\eta^{\mu\nu}k_{\mu}k_{\nu}=0\Rightarrow k_{\mu}k^{\mu}=0\;</MATH>|7.3}}
Wielkość występująca w {{Formuła|<MATH>\overline{h}^{\alpha\beta}</MATH>}} pod eksponensem zapisanej w punkcie {{LinkWzór|7.2}} można rozpisać w zależności od czasu i wektora {{Formuła|<MATH>\vec{r}\;</math>}} wedle sposobów w zależności wprost proporcjonalnej od częstotliwości kołowej i zwykłej liczby falowej k.
{{CentrujWzór|<MATH>k_{\alpha}x^{\alpha}=k_0 ct+\mathbf{k}\vec{r}</MATH>|7.4}}
Jeśli weżniemy, że zachodzi dla fotonu podróżującego wzdłuż wektora przestrzennego {{Formuła|<MATH>\vec{k}\;</MATH>}}, którego elementy są to składowe czterowektora k{{Sup|μ}} bez jej współrzędnej czasowej:
{{CentrujWzór|<MATH>x^{\alpha}(\lambda)=k^{\alpha}\lambda+l^{\alpha}\;</MATH>|7.5}}
Ależ wiadomo jednak, że l{{Sup|λ}} jest stałym tensorem (wektorem).
Możemy podstawić {{LinkWzór|7.5}} do {{LinkWzór|7.4}} i się przekonamy, że względem rozwiązania {{LinkWzór|7.5}} wyrażenie {{LinkWzór|7.4}} jest wielkością stałą na podstawie końcowego wyrażenia {{LinkWzór|7.3}}, że długość czterowektora {{Formuła|<MATH>k^{\mu}\;</MATH>}} w czasoprzestrzeni jest wielkością stałą:
{{CentrujWzór|<MATH>k_{\alpha}x^{\alpha}=k_{\alpha}k^{\alpha}\lambda+k_{\alpha}l^{\alpha}=\operatorname{const}\Rightarrow k_{\alpha}x^{\alpha}=k_{\alpha}l^{\alpha}</MATH>|7.6}}
Znając definicję częstotliwości kołowej i liczby falowej poprzez długość fali grawitacyjnej, które można zapisać te wielkości fizyczne wedle:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>k_0={{\omega}\over{c}}\;</MATH>|7.7}}
| 2 = {{CentrujWzór|<MATH>k=|\vec{k}|={{2\pi}\over{\lambda}}\;</Math>|7.8}}
}}
Możemy wykorzystać z równości końcowej {{LinkWzór|7.3}} i wykorzystując dwie tożsamości {{LinkWzór|7.7}} oraz {{LinkWzór|7.8}}, wtedy to nasze wyrażenie rozpiszmy na część czasową i przestrzenną , wtedy możemy powiedzieć, że fala grawitacyjna rozchodzi się z prędkością fazową równą prędkości światła c:
{{CentrujWzór|<MATH>k_{\mu}k^{\mu}=0\Rightarrow k_0k_0-k_ik_i=0\Rightarrow k_0^2=\sum^3_{i=1}k_i^2\Rightarrow
{{\omega^2}\over{c^2}}=\vec{k}^2\Rightarrow\omega=\left|\vec{k}\right|c\Rightarrow \omega=kc\;</math>|7.9}}
Dla {{LinkWzór|7.7}} (współrzędna czasowa liczby falowej) i {{LinkWzór|7.8}} (długość liczby falowej w przestrzeni) przy k{{Sup|μ}}, na którą składa się na jej część czasową i przestrzenną, wtedy równanie {{LinkWzór|7.2}} piszemy:
{{CentrujWzór|<MATH>\overline{h}^{\alpha\beta}=A^{\alpha\beta}
e^{i\left({{\omega}\over{c}}ct+\vec{k}\vec{r}\right)}\Rightarrow
\overline{h}^{\alpha\beta}=A^{\alpha\beta}e^{i\left(\omega t+\vec{k}\vec{r}\right)}\;</MATH>|7.10}}
Wykorzystując definicję prędkości fazowej i grupowej znanej z fizyki ogólnej i zależności końcowej {{LinkWzór|7.9}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>v_f={{\omega}\over{k}}={{kc}\over{k}}=c\;</Math>|7.11}}
| 2 = {{CentrujWzór|<MATH>v_g={{d\omega}\over{dk}}={{dkc}\over{dk}}=c\;</Math>|7.12}}
}}
Na podstawie obliczeń {{LinkWzór|7.11}} i {{LinkWzór|7.12}} udowodniliśmy, że prędkość grupowa i fazowa fal grawitacyjnych są sobie równe, ze względu na właściwości czterowektora falowego w czasoprzestrzeni.
Do naszego rozwiązania {{LinkWzór|7.2}} należy dodać cechowanie pola grawitacyjnego {{LinkWzór|5.33|Słabe_pola_grawitacyjne}}, czyli wielkości {{Formuła|<MATH>\overline{h}^{\alpha\beta}</MATH>}}, czyli z tego cechowania wynika końcowa tożsamość:
{{CentrujWzór|<MATH>{\overline{h}^{\alpha\beta}}_{,\beta}=0\Rightarrow A^{\alpha\beta}k_{\beta}e^{ik_{\alpha}x^{\alpha}}=0\Rightarrow A^{\alpha\beta}k_{\beta}=0</MATH>|7.13}}
Wedle powyższych rozważań udowodniliśmy, że fale grawitacyjne są falami poprzecznymi, bo iloczyn skalarny między czterowektorem liczby falowej i tensorem amplitudy fali grawitacyjnej {{LinkWzór|7.2}} jest równy zero.
== Bezśladowe cechowanie poprzeczne Lorentza ==
Mamy sobie nowy układ współrzędnych względem starego układu, w obu układach panuje cechowanie Lorentza {{LinkWzór|5.29|Słabe_pola_grawitacyjne}}, dla równości różniczkowej {{LinkWzór|5.28|Słabe_pola_grawitacyjne}} znajdźmy sobie taki tensor ξ{{Sup|α}} przy tych cechowaniach w starym i w nowym układzie współrzędnych, który spełnia równanie różniczkowe {{LinkWzór|5.28|Słabe_pola_grawitacyjne}} tożsamościowo, zatem nasz wspomniany tensor musi zatem spełniać w takim przypadku równanie różniczkowe:
{{CentrujWzór|<MATH>\square \xi^{\alpha}=0\;</MATH>|7.14}}
Rozwiązaniem równania {{LinkWzór|7.14}} jest rozwiązaniem w postaci funkcji zależnej od czterowektora falowego k{{Sub|μ}} wedle:
{{CentrujWzór|<math>\xi^{\alpha}=B^{\alpha}e^{ik_{\mu}x^{\mu}}\;</MaTH>|7.15}}
Mając rozwiązaniem równania falowego {{LinkWzór|7.2}} i rozwiązanie w postaci funkcji ξ {{LinkWzór|7.15}} równania {{LinkWzór|7.14}}, wtedy równość końcową {{LinkWzór|5.25|Słabe_pola_grawitacyjne}} możemy zapisać na podstawie:
{{CentrujWzór|<MATH>{A'}_{\alpha\beta}=A_{\alpha\beta}-iB_{\alpha}k_{\beta}-iB_{\beta}k_{\alpha}+i\eta_{\alpha\beta}B^{\mu}k_{\mu}\;</MaTh>|7.16}}
Obierzmy sobie dodatkowe cechowania obowiązujące w nowym układzie współrzędnych wedle sposobów:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{A'}^{\alpha}}_{\alpha}=0\;</MATH>|7.17}}
| 2 = {{CentrujWzór|<MATH>{A^{'}}_{\alpha\beta}U^{\beta}=0\;</MATH>|7.18}}
}}
Przedstawmy teraz tożsamości wynikające z {{LinkWzór|7.17}} oraz z {{LinkWzór|5.21|Słabe_pola_grawitacyjne}}, wtedy na podstawie tego otrzymujemy dwa poniższe warunki:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<math>\overline{h}={\overline{h}^{\alpha}}_{\alpha}=0\;</MATH>|7.19}}
| 2 = {{CentrujWzór|<MATH>h_{\alpha\beta}=\overline{h}_{\alpha\beta}\;</Math>|7.20}}
}}
Równość tensorową {{LinkWzór|7.16}} na podstawie pierwszego cechowania {{LinkWzór|7.17}} możemy napisać w postaci:
{{CentrujWzór|<MATH>0={A^{\alpha}}_{\alpha}-iB^{\alpha}k_{\alpha}-iB_{\alpha}k^{\alpha}+i{\delta^{\alpha}}_{\alpha}B^{\mu}k_{\mu}\Rightarrow 0={A^{\alpha}}_{\alpha}+2iB^{\alpha}k_{\alpha}\;</MaTH>|7.21}}
Mamy cztery wartości tensora B{{Sup|α}} przy jakiś wartościach A{{Sub|αβ}}, czyli mamy jedno tensorowe równanie więzów z czterema niewiadomymi.
Weźmy sobie pod lupę cechowanie {{LinkWzór|7.17}} na podstawie obrania nowego układu spełniającego to cechowanie, wtedy na podstawie {{LinkWzór|7.16}} dostajemy znów inną tożsamość:
{{CentrujWzór|<MATH>0=A_{\alpha\beta}U^{\beta}-iB_{\alpha}k_{\beta}U^{\beta}-iB_{\beta}k_{\alpha}U^{\beta}+i\eta_{\alpha\beta}B^{\mu}k_{\mu}U^{\beta}\Rightarrow A_{\alpha\beta}U^{\beta}=iB_{\alpha}k_{\beta}U^{\beta}+iB_{\beta}k_{\alpha}U^{\beta}-i\eta_{\alpha\beta}B^{\mu}k_{\mu}U^{\beta}\;</MATH>|7.22}}
Jeśli pomnożyć końcowe równanie {{LinkWzór|7.22}} przez k{{Sup|α}}, to lewa strona tejże wspomnianej równości wedle warunku na poprzeczność fal grawitacyjnych wynikające z warunku cechowania Lorentza {{LinkWzór|7.13}} co stąd wynika, że ta strona naszego równania jest zawsze równa zero, ale przy jakich B{{Sub|α}}, zatem z {{LinkWzór|7.22}} mamy:
{{CentrujWzór|<math>0=k^{\alpha}iB_{\alpha}k_{\beta}U^{\beta}+k^{\alpha}iB_{\beta}U^{\beta}k_{\alpha}-ik^{\alpha}\eta_{\alpha\beta}U^{\beta}B^{\mu}k_{\mu}\Rightarrow
0=k^{\alpha}iB_{\alpha}k_{\beta}U^{\beta}-ik_{\beta}U^{\beta}B^{\mu}k_{\mu}\Rightarrow 0=0\;</MATH>|7.23}}
Na podstawie {{LinkWzór|7.23}} jest ona spełniona bez względu jakie wartości przyjmuje B{{Sub|α}}, zatem dostajemy na podstawie wiadomości z algebry, że równość tensorowa {{LinkWzór|7.22}} ma w sobie trzy niezależne równania z czterema niewiadomymi B{{Sub|α}}. Jeśli połączymy równanie {{LinkWzór|7.22}} z {{LinkWzór|7.21}} dostajemy cztery niezależne równania z czteroma niewiadomymi, którymi są elementy tensora B{{Sub|α}}, których jest cztery, zatem na podstawie znanych A{{Sub|αβ}} możemy wyznaczyć właśnie elementy tensora B{{Sub|α}} jednoznacznie. Dochodzimy do wniosku, że cechowania {{LinkWzór|7.17}} i {{LinkWzór|7.18}} są spełnione w jakimś tam układach odniesienia, których jest nieskończenie wiele jak przy cechowaniu Lorentza {{LinkWzór|5.33|Słabe_pola_grawitacyjne}}.
Jeśli założymy, że cząstka spoczywa, to wtedy mamy U{{Sup|β}}=δ{{Sup|β}}{{Sub|0}}, wtedy na podstawie równania {{LinkWzór|7.18}} mamy 0=A{{Sub|αβ}}δ{{Sup|β}}{{Sub|0}}=A{{Sub|α 0}}, zatem na podstawie symetryczności A{{Sub|αβ}} pierwsza kolumna i wiersz są zerowymi wielkościami.
Jeśli przyjąć, że cząstka porusza się w kierunku osi zetowej, czyli jego czterowektor liczby falowej jest:
{{CentrujWzór|<MATH>k^{\mu}=(k^1={{\omega}\over{c}},0,0,k)\;</math>|7.24}}
wtedy warunek {{LinkWzór|7.13}} implikuje 0=A{{Sub|αβ}}k{{Sup|β}}=k{{Sup|3}}A{{Sub|α3}}, zatem na podstawie tego rozważania i symetryczności A{{Sub|αβ}} dostajemy, że trzecia kolumna i wiersz są wielkościami zerowymi. Jeśli weźmiemy dodatkowo warunek {{LinkWzór|7.18}}, z poprzednimi rozważaniami: 0=A{{Sup|α}}{{Sub|α}}=A{{Sub|xx}}+A{{Sub|yy}}⇒A{{Sub|yy}}=-A{{Sub|xx}}, zatem naszą macierz A{{Sub|αβ}} możemy zapisać:
{{CentrujWzór|<MATH>A^{TT}_{\alpha\beta}=\begin{pmatrix}
0&0&0&0\\
0&A_{xx}&A_{xy}&0\\
0&A_{xy}&-A_{xx}&0\\
0&0&0&0\\
\end{pmatrix}</MATH>|7.25}}
== Wpływ fal grawitacyjnych na swobodną cząstkę ==
Cząstka spoczywająca nie ma elementów przestrzennych czterowektora prędkości, wtedy wzór na linię geodezyjną {{LinkWzór|1.74|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}}, gdy parametr {{Formuła|<MATH>\lambda\;</MATH>}} jest interwałem czasoprzestrzennym, możemy zapisać:
{{CentrujWzór|<MATH>{{du^{\alpha}}\over{ds}}=-{\Gamma^{\alpha}}_{00}\;</MaTH>|7.26}}
Do wzoru {{LinkWzór|7.26}} bardzo nam są potrzebne elementy tensora Christoffela na podstawie {{LinkWzór|7.2}} i na podstawie elementów amplitudy tensorowej A{{Sup|αβ}}{{LinkWzór|7.25}}, które to Γ{{Sup|α}}{{Sub|00}} następnie wyznaczymy, zatem do dzieła:
{{CentrujWzór|<math>{\Gamma^{\alpha}}_{00}={{1}\over{2}}\eta^{\alpha\beta}\left(h_{\beta 0,0}+h_{0\beta,0}-h_{00,\beta}\right)\;</MAtH>|7.27}}
Zatem na podstawie równania na fale grawitacyjne przy obranym cechowaniu {{LinkWzór|7.17}} i {{LinkWzór|7.18}} oraz macierzy tensora amplitud {{LinkWzór|7.25}}, a także względem równania fali {{LinkWzór|7.2}}, przy obranym cechowaniu zachodziłoby {{LinkWzór|7.20}} oraz że te amplitudy nie mają wierszy oraz kolumn o numerze zerowym oraz jego elementy nie zależą od czasu, zatem elementy tensora Christoffela {{LinkWzór|7.27}} są wielkościami zerowymi, czyli znikają, zatem na podstawie {{LinkWzór|7.26}} cząstka spoczywająca współrzędnościowo pozostanie nadal cząstką spoczywającą, ponieważ cząstka która ma czteroprędkość a właściwie jej część przestrzenną, która równa jest nadal zero, dalej będzie miała ten sam czteroprędkość, którego zmiana jest równa zero wedle naszej metryki przy przyjętych cechowaniu. Zatem dochodzimy do wniosku, że fala grawitacyjna wcale nie wpływa na ruch punktowej masy wedle współrzędnych czteropołożenia położenia, ale to nic nie znaczy. Fala grawitacyjna może zmieniać odległość właściwą między dwoma punktami w sposób wedle {{LinkWzór|1.13|Wprowadzenie do ogólnej teorii względności}}:
{{CentrujWzór|<MATH>\Delta l=\int \left|ds^2\right|^{{{1}\over{2}}}=\int \left|g_{\alpha\beta}dx^{\alpha}dx^{\beta}\right|^{{{1}\over{2}}}=\int^{x_2}_{x_1}\left|g_{xx}\right|^{{{1}\over{2}}}dx=\int^{x_2}_{x_1} \left|\eta_{xx}+h_{xx}\right|^{{{1}\over{2}}}dx\simeq x_2-x_1-{{1}\over{2}}h_{xx}(x_2-x_1)\;</MATH>|7.28}}
Również jak się przekonamy, że za pomocą zmiany długości właściwej Δl można wykryć budując pewne układu fizyczne, mimo że fala grawitacyjna nie działa na punktowe masy.
=== Równanie dewiacji a odległość wektorowa pomiędzy obydwa spoczywającymi współrzędnościowo cząstkami ===
Równanie dewiacji z którego będziemy korzystać jest to {{LinkWzór|1.95|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}}, i w nim zakładamy, że cząstka spoczywa współrzędnościowo, bo prędkości współrzędnościowe przestrzenne jako są równe zero, i będziemy badali odległość przestrzenną iksową odległości pomiędzy dwoma cząstkami, wtedy czterowektor prędkości i odległość początkowa pomiędzy dwoma cząstkami przestawiamy jako U{{Sup|μ}}=(1,0,0,0),ξ{{Sup|μ}}=(0,ε,0,0). W takim wypadku równanie dewiacyjne możemy napisać poniżej wykorzystując przy tym twierdzenie {{LinkWzór|2.106|Rachunek_tensorowy|Metody_matematyczne_fizyki|MMF}}:
{{CentrujWzór|<MATH>{{d^2\xi^{\lambda}}\over{d\lambda^2}}={{1}\over{c^2}}{{d^2\xi^{\lambda}}\over{d t^2}}=\epsilon {R^{\alpha}}_{00x}=-\epsilon {R^{\alpha}}_{0x0}\;</MATH>|7.29}}
Dla słabego pola grawitacyjnego mamy {{LinkWzór|5.1|Słabe_pola_grawitacyjne}}, wtedy czterowskaźnikowy tensor krzywizny R{{Sup|α}}{{Sub|0x0}} {{LinkWzór|2.101|Rachunek_tensorowy|Metody_matematyczne_fizyki|MMF}} możemy napisać z definicji tensora fali grawitacyjnego {{LinkWzór|7.2}} i definicji tensora amplitudy {{LinkWzór|7.25}}:
{{CentrujWzór|<MATH>
\begin{cases}{R^x}_{0x0}=R_{x0x0}=-{{1}\over{2}}h_{xx,0,0}\\
{R^y}_{0x0}=R_{y0x0}=-{{1}\over{2}}h_{xy,0,0}\\
{R^y}_{0y0}=R_{y0y0}=-{{1}\over{2}}h_{yy,0,0}=-{R^x}_{0x0}
\end{cases}\;</MATH>|7.30}}
Wszystkie pozostałe elementy tensora krzywizny inne niż policzone powyżej są równe zero, i ich nie podaliśmy, bo dowód zerowania się ich jest trywialny. Równania dewiacyjne w kierunku osi iksowej piszemy jako:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial^2}\over{\partial t^2}}\xi^x={{1}\over{2}}\epsilon{{\partial^2}\over{\partial t^2}}h_{xx}\;</MATH>|7.30a}}
| 2 = {{CentrujWzór|<MATH>{{\partial^2}\over{\partial t^2}}\xi^{y}={{1}\over{2}}\epsilon{{\partial^2}\over{\partial t^2}}h_{xy}\;</MATH>|7.31}}
}}
Jeśli tensor ξ{{Sup|α}} jest zdefiniowany w kierunku osi igrekowej, wtedy otrzymujemy dwa równania dewiacyjne:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial^2}\over{\partial t^2}}\xi^y={{1}\over{2}}{{\partial^2}\over{\partial t^2}}h_{yy}=-{{1}\over{2}}\epsilon{{\partial^2}\over{\partial t^2}}h_{xx}\;</MATH>|7.32}}
| 2 = {{CentrujWzór|<MATH>{{\partial^2}\over{\partial t^2}}\xi^x={{1}\over{2}}\epsilon{{\partial^2}\over{\partial t^2}}h_{xy}\;</MATH>|7.33}}
}}
=== Ścisła fala grawitacyjna wynikająca z praw grawitacji Einsteina ===
Wszystkie fale grawitacyjne, których chcemy zaobserwować na Ziemi są to fale, które są opisywane przy pomocy teorii zlinearyzowanej, ale chcemy opisać fale grawitacyjne przy pomocy teorii dokładnej, czyli opisywanej przy pomocy dokładnego równania grawitacji Einsteina.
Obierzmy teraz dwie zmienne nowe zdefiniowane przy pomocy zmiennych t i z, których definicje są:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>u=ct-z\;</MATH>|7.34}}
| 2 = {{CentrujWzór|<MATH>v=ct+z\;</MATH>|7.35}}
}}
Mamy sobie zdefiniowany interwał czasoprzestrzenny w przestrzeni Minkowskiego {{LinkWzór|1.6|Wprowadzenie_do_ogólnej_teorii_względności}} i wykorzystując równania na zmienne u {{LinkWzór|7.34}} i {{LinkWzór|7.35}}, z których wyznaczmy wzory na zmienne "u" i "ct", co w ten sposób możemy napisać ten nasz interwał czasoprzestrzenny w tychże zmiennych:
{{CentrujWzór|<MATH>ds^2={{1}\over{4}}d(u+v)^2-dx^2-dy^2-{{1}\over{4}}d(v-u)^2={{1}\over{4}}\left(du^2+dv^2+2dudv\right)-dx^2-dy^2-{{1}\over{4}}\left(du^2+dv^2-2dudv\right)=\;</MATH>{{Br}}<MATH>=dvdu-dx^2-dy^2\;</MATH>|7.36}}
Zobaczymy, że fale grawitacyjne wpływają na odległości prostopadłe w stosunku do biegu fali grawitacyjnej przy jej opisie, która wynika z jej teorii dokładnej, czyli z równań grawitacji Einsteina. W tym celu napiszmy interwał czasoprzestrzenny, w których wprowadzimy funkcje f(u) i g(u), które są zależne od zmiennej "u":
{{CentrujWzór|<MATH>ds^2=dudv-f^2(u)dx^2-g^2(u)dy^2\;</MATH>|7.37}}
Napiszemy teraz wszystkie niezerowe elementy tensora Christoffela i niezerowe elementy tensory czterowskaźnikowego tensora krzywizny:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{\Gamma^x}_{xu}={{\dot{f}}\over{f}}\;</MATH>|7.38}}
| 2 = {{CentrujWzór|<MATH>{\Gamma^y}_{yu}={{\dot{g}}\over{g}}\;</MATH>|7.39}}
| 3 = {{CentrujWzór|<MATH>{\Gamma^v}_{xx}={{1}\over{2}}\dot{f}f\;</MATH>|7.40}}
| 4 = {{CentrujWzór|<MATH>{\Gamma^v}_{yy}={{1}\over{2}}\dot{g}g\;</MATH>|7.41}}
}}
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{R^x}_{uxu}=-{{\ddot{f}}\over{f}}\;</MATH>|7.42}}
| 2 = {{CentrujWzór|<MATH>{R^y}_{uyu}=-{{\ddot{g}}\over{g}}\;</MATH>|7.43}}
| 3 = {{CentrujWzór|<MATH>R=R_{uu}=-{{\ddot{f}}\over{f}}-{{\ddot{g}}\over{g}}\;</MATH>|7.44}}
}}
Z powyższych wnioskach możemy napisać tensory Einsteina i dowiemy się, że tensor Einsteina G{{Sub|μν}} posiada również elementy niediagonalne oprócz jej elementów diagonalnych:
{{CentrujWzór|<math>
G_{uu}=R_{uu}-{{1}\over{2}}g_{uu}R=-{{\ddot{f}}\over{f}}-{{\ddot{g}}\over{g}}-{{1}\over{2}}\cdot 0\cdot R=-{{\ddot{f}}\over{f}}-{{\ddot{g}}\over{g}}\;</MATH>|7.45}}
{{CentrujWzór|<MATH>G_{uv}=R_{uv}=R_{vu}-{{1}\over{2}}g_{uv}R=-{{1}\over{2}}(-1)R=-{{1}\over{2}}{{1}\over{2}}\left(-{{\ddot{f}}\over{f}}-{{\ddot{g}}\over{g}}\right)={{1}\over{4}}\left({{\ddot{f}}\over{f}}+{{\ddot{g}}\over{g}}\right)\;</math>|7.46}}
Będziemy badać fale rozprzestrzeniające tam gdzie nie ma masy, wtedy z równania grawitacji Einsteina {{LinkWzór|1.51|Wprowadzenie_do_ogólnej_teorii_względności}}, gdy tensor napięć-energii jest równy zero, mamy:
{{CentrujWzór|<MATH>{{\ddot{f}}\over{f}}+{{\ddot{g}}\over{g}}=0\;</MATH>|7.47}}
Jako funkcję f(u) możemy przyjąć jako dowolną funkcję i rozwiązać równanie dla g(u). Możemy funkcję f(u) w taki sposób napisać jako funkcję opisującą pewnego rodzaju falę podobną do {{LinkWzór|7.2}} i zapytać siebie jaka jest funkcja przy tak postawionych warunkach, czyli g(u). Dla przypadku prawie liniowego funkcja f(u) jest bliska jedności:
{{CentrujWzór|<MATH>f\simeq 1+\epsilon(u)\;</MATH>|7.48}}
wtedy funkcja g(u) jest prawie liniowa i w zależności od funkcji prawie liniowej f(u) {{LinkWzór|7.46}} możemy napisać jej rozwiązanie:
{{CentrujWzór|<MATH>g\simeq 1-\epsilon(u)\;</MATH>|7.49}}
== Detekcja fal grawitacyjnych ==
{{Rysunek|Fale grawitacyjne.jpg|sjp|Detektor rezonansowy dla wykrycia fal grawitacyjnych.}}
Załóżmy, że mamy układ o współczynnik tłumienia ν i sprężyny o stałej sprężystości k, który jest oscylatorem harmonicznym tłumionym. Dla pierwszej i drugiej kulki rozważanego układu, równanie ruchu ma się:
{{CentrujWzór|
<MATH>\begin{cases}
mx_{1,0,0}=k(x_2-x_1-l_0)-\nu(x_1-x_2)_{,0}\\
mx_{2,0,0}=-k(x_2-x_1-l_0)-\nu(x_2-x_1)_{,0}
\end{cases}\;\;</MATH>|7.50}}
Możemy odejmować dwa równania {{LinkWzór|7.50}} od siebie w naszym układzie równań otrzymując wynikowe równanie, które należy rozwiązać:
{{CentrujWzór|<MATH>m(x_2-x_1)_{,0,0}=-2k(x_2-x_1-l_0)-2\nu(\dot{x_2}-\dot{x_1})\;\;</MATH>|7.51}}
Wprowadźmy nowe oznaczenia (parametry), które wykorzystamy do równania różniczkowego {{LinkWzór|7.51}}, tzn. parametr ξ (która jest zależna od położenia obu kulek i długości własnej użytej sprężynki), częstotliwości własnej układu ω{{Sub|0}} (zależna od stałej sprężystości sprężynki i masy tej sprężynki), a także od stałej γ (która jest zależna od stałej tłumienia γ i masy sprężynki), zatem te podstawienia:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\xi=x_2-x_1-l_0\;\;</MATH>|7.52}}
| 2 = {{CentrujWzór|<MATH>\omega_0^2={{2k}\over{m}}\;\;</MATH>|7.53}}
| 3 = {{CentrujWzór|<MATH>\gamma={{\nu}\over{m}}\;\;</MATH>|7.54}}
}}
Na podstawie oznaczeń ξ {{LinkWzór|7.52}}, ω{{Sub|0}}{{Sup|2}} {{LinkWzór|7.53}} i γ {{LinkWzór|7.54}}, wtedy równanie {{LinkWzór|7.51}} przechodzi przy tych nowych oznaczeniach w równoważną postać:
{{CentrujWzór|<MATH>\xi_{,0,0}+\omega_0^2\xi+2\gamma\xi_{,0}=0\;\;</MATH>|7.55}}
W równaniach ruchu dla dwóch kulek {{LinkWzór|7.50}} zastosowaliśmy równania ruchu Newtona, bo mamy do czynienia z prędkościami bardzo małymi (o wiele mniejszymi od prędkości światła).
Ponieważ mamy do czynienia z ogólną teorią względności, czyli mamy do czynienia z teorią grawitacją Einsteina, to powyższe wywody nie są w ogólności spełnione i chwilową długość sprężyny jest inna niż zakładana, bo sprężyna jest w układzie dwóch kulek, których fala grawitacyjna zakłóca prawdziwą długość sprężyny, długość sprężyny według rozważanej metryki jest inna niż metryce Minkowskiego (czasoprzestrzeń płaska), jeśli sprężyna jest położona wzdłuż osi iksowej w przestrzeni, ma długość na podstawie {{LinkWzór|7.28}} wyrażonej według:
{{CentrujWzór|<MATH>l(t)=x_2-x_1-{{1}\over{2}}h_{xx}(x_2-x_1)\;\;</MATH>|7.56}}
Należy pamiętać, że długość l{{Sub|0}} jest bardzo mała w porównaniu z długością jakim światło może przebyć w ciągu jednej sekundy.
Równania {{LinkWzór|7.50}} możemy zapisać w bardziej ogólny sposób uwzględniając jako sprężynę w ruchu, który ma w tej chwili długość l i zapisać je nie jako różnica położeń dwóch kul z dokładnością do znaku, ale jako różnica aktualnej długości kulki l i jej długości początkowej, bo tutaj nie mamy przestrzeni płaskiej tylko przestrzeń zakrzywioną i uwzględniając jakoby fala grawitacyjna nie oddziaływuje współrzędnościowo z punktowymi masami jako osobno, co tutaj jest ważne, ale kulki oddziałują ze sobą tylko za pomocą sprężynki przez promieniowanie grawitacyjne, które to kulki były początkowo w spoczynku przed dotarciem do nich tej rozważanej fali:
{{CentrujWzór|<MATH>\begin{cases}
mx_{1,0,0}=k(l-l_0)+\nu(l-l_0)_{,0}\\
mx_{2,0,0}=-k(l-l_0)-\nu(l-l_0)_{,0}
\end{cases}\;</MaTh>|7.57}}
Wprowadźmy nowe oznaczenia, która jest funkcją iksowych położeń kul, i poprawki do tensora metrycznego Minkowskiego i długości początkowej sprężyny nierozciągniętej i jest oznaczona ona przez tożsamość:
{{CentrujWzór|<MATH>\xi=l-l_0=x_2-x_1-l_0-{{1}\over{2}}h_{xx}(x_2-x_1)\;\;</MATH>|7.58}}
Na podstawie powyższej tożsamości możemy napisać przekształcenia wyznaczając różnicę współrzędnych iksowych dwóch rozważanych kulek:
{{CentrujWzór|<MATH>x_2-x_1\simeq\xi+l_0+{{1}\over{2}}h_{xx}l_0\;\;</MATH>|7.59}}
Powyżej przyjęliśmy, że zmiana długości własnej sprężynki stojąca przy h{{Sub|xx}} dla słabego pola grawitacyjnego jest bardzo mała, zatem różnica położeń kulek jest w przybliżeniu równa długości sprężynki.
Równość {{LinkWzór|7.50}} z poprawką na chwilową długość sprężyny, która jest nie równa różnicy współrzędnych iksowych kulek w zakrzywionej czasoprzestrzeni:
{{CentrujWzór|<MATH>m(x_2-x_1)_{,0,0}=-2k(l-l_0)-2\nu(l-l_0)_{,0}\;\;</MATH>|7.60}}
Wykorzystując oznaczenia na parametry ξ {{LinkWzór|7.58}}, oraz na ω{{Sub|0}}{{Sup|2}} {{LinkWzór|7.53}} i γ {{LinkWzór|7.54}}, to równanie różniczkowe {{LinkWzór|7.60}} zapisujemy poniżej, który również zawiera poprawkę do tensora metrycznego Minkowskiego dla tychże rozważanych kulek, a także zawiera zmianę długości sprężyny l-l{{Sub|0}} zapisanej według {{LinkWzór|7.59}}:
{{CentrujWzór|<MATH>\xi_{,0,0}+\omega_0^2\xi+2\gamma\xi_{,0}=-{{1}\over{2}}h_{xx,0,0}l_0\;\;</MATH>|7.61}}
Powyższe równanie jest równaniem oscylatora harmonicznego tłumionego z przyłożoną siłą, która zmienia się w sposób harmoniczny (w tym przypadku promieniowanie grawitacyjne, które działa na kule poprzez sprężynkę).
Fala kulista w dużej odległości od źródła jest falą w przybliżeniu płaską, a zatem jeśli {{Formuła|<MATH>\overline{h}_{\alpha\beta}\;\;</MATH>}} opisuje falę płaską wedle definicji tensora Einsteina {{LinkWzór|5.35|Słabe_pola_grawitacyjne}} dla tensora gęstości energii równej zero, wtedy równania grawitacji Einsteina opisują {{Formuła|<MATH>\overline{h}_{\alpha\beta}\;</MATh>}} wedle {{LinkWzór|7.2}}, jeśli częstotliwość tej fali jest jakaś tam, to częstotliwość fali {{Formuła|<MATH>h_{xx}\;</MATH>}}, wedle równości {{LinkWzór|5.20|Słabe_pola_grawitacyjne}} jest taka sama, zatem jeśli pierwsza zmienia się względem funkcji kosinus (dla {{Formuła|<MATH>\overline{h}_{\alpha\beta}\;</MATH>}}), to druga też, zatem niech będą funkcje {{Formuła|<math>h_{xx}\;</MaTH>}} i {{Formuła|<MATH>\xi\;</Math>}}, która zmieniają się względem czasu z częstotliwością Ω:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>h_{xx}=A\cos(\Omega t)\;\;</MATH>|7.62}}
| 2 = {{CentrujWzór|<MATH>\xi=R\cos(\Omega t+\varphi)\;\;</MATH>|7.63}}
}}
Powyższe dwa równania są prawdziwe, bo można tak wybrać przesunięcie fazowe oraz Ω, by były spełnione równania ruchu dwóch kulek w polu grawitacyjnym, których drgania kulek maja się jak promieniowanie grawitacyjne.
Podstawiamy za h{{Sub|xx}} równania fali grawitacyjnej {{LinkWzór|7.62}} i przemieszczenia harmonicznego kulek {{LinkWzór|7.63}}, którego zmianę powoduje fala grawitacyjna (promieniowanie grawitacyjne) o takiej samej częstotliwości co fala grawitacyjna, do równości {{LinkWzór|7.61}}, co w rezultacie ono przyjmuje postać:
{{CentrujWzór|<MATH>-\Omega^2 R\cos(\Omega t+\varphi)+\omega_0^2 R\cos(\Omega t+\varphi)-2\gamma R\Omega\sin(\Omega t+\varphi)={{1}\over{2}}l_0 A\Omega^2 \cos(\Omega t)\;\;</MATH>|7.64}}
Co po krótkich przestawianiach wyrazów w tożsamości {{LinkWzór|7.64}}, czyli grupując wyrazy stojące przy funkcji sinus i kosinus:
{{CentrujWzór|<MATH>\cos(\Omega t+\varphi)R\left[-\Omega^2+\omega_0^2\right]-2\gamma R\Omega\sin(\Omega t+\varphi)={{1}\over{2}}l_0 A\Omega^2 \cos(\Omega t)\;\;</MATH>|7.65}}
Wykorzystując z własności kosinusów i sinusów sumy składników pod tymi funkcjami trygonometrycznymi możemy zapisać {{LinkWzór|7.65}} rozwijając w odjemnej naszej tożsamości funkcji kosinus i odjemniku funkcję sinus:
{{CentrujWzór|<MATH>\left(\cos(\Omega t)\cos\varphi-\sin(\Omega t)\sin\varphi\right)R(\omega_0^2-\Omega^2)-2\gamma R\Omega\left(\cos(\Omega t)\sin\varphi+\sin(\Omega t)\cos\varphi\right)=\;</MATH>{{Br}}
<MATH>={{1}\over{2}}l_0A\Omega^2\cos(\Omega t)\;</MATH>|7.66}}
Grupujemy wyrazy z kosinusami i sinusami, których argumentem jest Ω t we wzorze {{LinkWzór|7.66}} i aby ona zachodziła dla dowolnych chwili czasu t, to nasze wspomniane równanie przechodzi w dwa równania równoważne pierwotnemu.
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MaTH>(\omega_0^2-\Omega^2)R\cos\varphi-2\gamma R\Omega\sin\varphi={{1}\over{2}}l_0 A\Omega^2\;</MATH>|7.67}}
| 2 = {{CentrujWzór|<MATH>-(\omega_0^2-\Omega^2)R\sin\varphi-2\gamma R\Omega\cos\varphi=0\;</MATH>|7.68}}
}}
Z tożsamości uzyskanej w punkcie {{LinkWzór|7.68}} możemy wyznaczyć tanges przesunięcia fazowego kulek względem fali promieniowania grawitacyjnego, który jak udowodnimy zależy tylko od częstotliwości fali grawitacyjnej Ω i częstotliwości własnej detektora fali grawitacyjnej:
{{CentrujWzór|<MATH>\operatorname{tg}(\varphi)={{2\gamma\Omega}\over{\Omega^2-\omega_0^2}}\;\;</MATH>|7.69}}
Pomnóżmy równanie {{LinkWzór|7.67}} przez wyrażenie {{Formuła|<MATH>2\gamma\Omega\;\;</MATH>}}, czyli podwojony iloczyn stałej tłumienia γ i częstotliwości drgań fali grawitacyjnej, wtedy dostajemy tożsamość:
{{CentrujWzór|<MATH>(\omega_0-\Omega^2)2\gamma\Omega R\cos\varphi-4R\gamma^2\Omega^2\sin\varphi=l_0A\gamma\Omega^3\;\;</MATH>|7.70}}
a także wykorzystując również tożsamość {{LinkWzór|7.68}}, którą podstawiamy do tożsamości {{LinkWzór|7.70}}, wtedy oczywiście dostajemy wniosek:
{{CentrujWzór|<MATH>-(\omega_0^2-\Omega^2)(\omega_0^2-\Omega^2)R\sin\varphi-4R\gamma^2\Omega^2\sin\varphi=l_0A\gamma\Omega^3\Rightarrow
\left[(\omega_0^2-\Omega^2)^2+4\gamma^2\Omega^2\right]R\sin\varphi=-l_0A\gamma\Omega^3\;</MATH>|7.71}}
Policzmy teraz czemu jest równa funkcja sinφ wyrażając kwadrat kotangensa względem kwadratu funkcji sinus φ, korzystając z definicji tangensa kąta, który jest ilorazem sinusa kąta φ przez jego kosinus tego samego kąta, i jeszcze korzystając z definicji jedynki trygonometrycznej, możemy napisać:
{{CentrujWzór|<math>\operatorname{ctg}^2\varphi={{\cos^2\varphi}\over{\sin^2\varphi}}=
{{1-\sin^2\varphi}\over{\sin^2\varphi}}=\sin^{-2}\varphi-1\Rightarrow
\sin^{-2}\varphi=\operatorname{ctg}^{2}\varphi+1\Rightarrow
\sin^2\varphi={{1}\over{\operatorname{ctg}^2\varphi+1}}\;</MATH>|7.72}}
Ze wzoru na <MATH>\sin^2\varphi\;</MATH> w ostatnim rozważanym wyrażeniu {{LinkWzór|7.72}} przechodzimy do wzoru na funkcję trygonometryczną dla naszego zadania:
{{CentrujWzór|<MATH>\sin^2\varphi={{1}\over{1+({{\Omega^2-\omega_0^2)}\over{2\gamma\Omega}})^2}}=
{{1}\over{{{4\gamma^2\Omega^2+(\Omega^2-\omega_0^2)^2}\over{4\gamma^2\Omega^2}}}}=
{{4\gamma^2\Omega^2}\over{(\Omega^2-\omega_0^2)^2+4\gamma^2\Omega^2}}\;</MAth>|7.73}}
Równość {{LinkWzór|7.73}} możemy spierwiastkować obustronnie, tak by po lewej stronie wspomnianego równania otrzymać sam sinus kata φ, wtedy otrzymujemy wyrażenie:
{{CentrujWzór|<MATH>\sin\varphi={{2\gamma\Omega}\over{\sqrt{(\Omega^2-\omega_0^2)^2+4\gamma^2\Omega^2}}}\;</MATH>|7.74}}
Wyznaczony wzór na funkcję sinφ zapisanej i udowodnionej w punkcie {{LinkWzór|7.74}} podstawiamy do wzoru uzyskanego wcześniej w punkcie {{LinkWzór|7.71}}, wtedy można otrzymać tożsamość, którą poddamy dalszej obróbce:
{{CentrujWzór|<MATH>\left[(\Omega^2-\omega_0^2)^2+4\gamma^2\Omega^2\right]R{{2\gamma\Omega}\over{\sqrt{(\Omega^2-\omega_0^2)^2+4\gamma^2\Omega^2}}}=-l_0A\gamma\Omega^3\Rightarrow
2\gamma\Omega R\sqrt{(\Omega^2-\omega_0^2)^2+4\gamma^2\Omega^2}=-l_0A\gamma\Omega^3\;</MATH>|7.75}}
Zatem amplituda drgań dla oscylatora harmonicznego tłumionego jest napisana wedle wzoru poniżej, która jest zależna od częstotliwości kołowej drgań fali grawitacyjnej Ω, częstotliwości własnej układu własnego ω{{Sub|0}} i współczynnika tłumienia γ:
{{CentrujWzór|<MATH>R=-{{{{1}\over{2}}l_0A\Omega^2}\over{\sqrt{(\Omega^2-\omega_0^2)^2+4\gamma^2\Omega^2}}}\;</MATH>|7.76}}
Jest ona zależna od częstotliwości rezonansowej ω{{Sub|0}} i współczynnika pełniącego rolę współczynnika tłumienia γ.
Energia układu (oscylatora harmonicznego tłumionego) jest zdefiniowana jako energia kinetyczna obu kulek i energii potencjalnej sprężyny w polu grawitacyjnym, bo tutaj sprężynka znajduje się w polu promieniowania grawitacyjne oddziałujące ze sprężynką.
{{CentrujWzór|<MATH>E={{1}\over{2}}m(x_{1,0})^2+{{1}\over{2}}m(x_{2,0})^2+{{1}\over{2}}k\xi^2\;</MATH>|7.77}}
Jeśli dodamy do siebie dwa równania układu równań {{LinkWzór|7.57}} do siebie, wtedy otrzymamy równanie różniczkowe poniżej i założymy że nasz układ był w spoczynku, zanim dodarła do naszego badanego układu fala grawitacyjna, czyli przyjmujemy, że C=0, który jest warunkiem brzegowym:
{{CentrujWzór|<MATH>(x_2+x_1)_{,0,0}=0\Rightarrow x_{2,0}+x_{1,0}=C\Rightarrow x_{2,0}=-x_{1,0}+C\;</MATH>|7.78}}
Parametr {{LinkWzór|7.58}} można zapisać, jeśli przyjmiemy założenie, że mamy do czynienia z słabym polem grawitacyjnym w postaci fal grawitacyjnym, wtedy czwarty człon w nim możemy pominąć:
{{CentrujWzór|<MATH>\xi=l-l_0=x_2-x_1-l_0-{{1}\over{2}}h_{xx}l_0\simeq \xi=x_2-x_1-l_0\Rightarrow \xi_{,0}\simeq x_{2,0}-x_{1,0}=2x_{2,0}</MATH>|7.79}}
zatem wedle obliczeń {{LinkWzór|7.79}}, które dokonaliśmy w tymże punkcie i dla naszych warunków brzegowych możemy napisać tożsamość między prędkościami dwóch kulek.
{{CentrujWzór|<MATH>x_{1,0}=-x_{2,0}=-{{1}\over{2}}\xi_{,0}\;</MATH>|7.80}}
Energia układu {{LinkWzór|7.77}} po wykorzystaniu dwóch podstawień do którego będziemy wykorzystywali obliczenia {{LinkWzór|7.80}}, które wynika z punktu przestawionego wzorem {{LinkWzór|7.79}}, wtedy ową energię chwilową zapisujemy wedle schematu poniżej, która jest zależna od pochodnej zmiennej ξ względem czasu i samego przesunięcia ξ, którego to ξ jest to przesunięcie od położenia równowagi obu rozważanych w tym zadaniu kulek układu fizycznego:
{{CentrujWzór|<MATH>E={{1}\over{2}}m(-{{1}\over{2}}\xi_{,0})^2+{{1}\over{2}}m({{1}\over{2}}\xi_{,0})^2+
{{1}\over{2}}\omega_0^2({{1}\over{2}}\xi)^2\Rightarrow E={{1}\over{4}}m\left(\xi^2_{,0}+\omega_0^2\xi^2\right)\;</MATH>|7.81}}
Wykorzystujemy definicję parametru ξ napisanej w punkcie {{LinkWzór|7.63}}, które to podstawiamy do równości {{LinkWzór|7.81}} na energię układu, wtedy owe równanie ma wygląd:
{{CentrujWzór|<MATH>E={{1}\over{4}}m\left(R^2\Omega^2\sin^2(\Omega t+\varphi)+\omega_0^2R^2\cos^2(\Omega t+\varphi)\right)\;</MATH>|7.82}}
Wiemy jednak, że średnia wartość kwadratu kosinusa z definicji wartości średniej jest równa połowie jedynki względem czasu t, zatem co zapisujemy wzorem poniżej. Widzimy, że powyższa równość jest zależna od częstotliwości fali grawitacyjnej Ω i przesunięcia fazowego φ.
{{CentrujWzór|<MATH>\langle \cos^2(\Omega t+\varphi)\rangle=\langle\sin^2(\Omega t+\varphi)\rangle={{1}\over{2}}\;</MATH>|7.83}}
Średnia wartość energii oscylatora wedle wartości chwilowej {{LinkWzór|7.81}}, korzystając już z obliczonej wartości średniej kwadratu kosinusa, to średnią energię drgań układu dwóch kulek i sprężyny zapisujemy wedle:
{{CentrujWzór|<MATH>\langle E\rangle={{1}\over{8}}mR^2(\Omega^2+\omega_0^2)\;</MATH>|7.84}}
Amplituda rezonansowa nazywamy takie R w tożsamości {{LinkWzór|7.76}}, dla które zachodzi, gdy ω{{Sub|0}}=Ω, wtedy dochodzimy do wniosku, że mamy amplitudę rezonansową drgań przy udziale fal grawitacyjnych:
{{CentrujWzór|<MATH>R={{{{1}\over{2}}l_0\Omega^2 A}\over{\sqrt{4\Omega^2\gamma^2}}}=
{{{{1}\over{2}}l_0\Omega^2 A}\over{2\Omega\gamma}}={{1}\over{4}}l_0 A{{\Omega}\over{\gamma}}\;</MATH>|7.85}}
Energia rezonansowa średnia {{LinkWzór|7.84}} na podstawie amplitudy rezonansowej układu dwóch kulek połączonej sprężynką policzonej w punkcie {{LinkWzór|7.85}}, do której to podstawimy do wzoru na średnią energię:
{{CentrujWzór|<MATH>\langle E\rangle={{1}\over{8\cdot 16}}ml_0^2A^2\left({{\Omega}\over{\gamma}}\right)^2 2\Omega^2=
{{1}\over{8\cdot 8}}ml_0^2A^2\Omega^2\left({{\Omega}\over{\gamma}}\right)^2=
{{1}\over{64}}ml_0^2\Omega^2A^2\left({{\Omega}\over{\gamma}}\right)^2
\;</MATH>|7.86}}
Dobrocią oscylatora harmonicznego tłumionego nazywamy wielkość zdefiniowanej wedle sposobu poniżej, z której ją wyznaczymy dla częstotliwości rezonansowej, tzn. gdy <MATH>\Omega=\omega_0\;</Math>
{{CentrujWzór|<MATH>Q={{\omega_0}\over{2\gamma}}\Rightarrow 2Q={{\Omega}\over{\gamma}}\;</MATH>|7.87}}
Energia średnia rezonansowa {{LinkWzór|7.86}} w której podstawimy za stosunek {{Formuła|<MaTH>{{\Omega}\over{\gamma}}\;</MATH>}} podwojoną dobroć Q, czyli z korzystamy ze wzoru {{LinkWzór|7.87}}, zatem tą pierwszą wielkość fizyczną możemy napisać sposobem:
{{CentrujWzór|<MATH>{\langle E\rangle}_{rezonas}={{1}\over{16}}ml_0\Omega^2A^2Q^2\;</MATH>|7.88}}
I co kończy nasze rozważania na temat detekcji fal grawitacyjnych.
== Tensorowe twierdzenie wirialne a lokalna zasada zachowania energii ==
Naszym wzorem, które zechcemy udowodnić jest twierdzenie łączący tensor gęstości energii o wskaźnikach zerowych górnych (lewa strona) po przez wyrażenie z tensorem gęstości energii o wskaźnikach górnych o wartościach przestrzennych:
{{CentrujWzór|<MATH>{{1}\over{c^2}}{{d^2}\over{dt^2}}\int T^{00}x^lx^mdV=2\int T^{lm}dV\;</MATH>|7.89|Obramuj}}
Powyższy wzór jest wzorem, w której jest dokonane całkowanie po pewnej objętości, której ogranicza pewna powierzchnia zamknięta, na której powierzchni tensor gęstości energii jest równa zero, bo tak zamknięta powierzchnia jest poza obszarem, w której tensor gęstości energii jest różny od zera.
Dowód powyższego lematu opiera się na zasadzie zachowawczości tensora napięć-energii dla słabego pola grawitacyjnego {{LinkWzór|1.49|Wprowadzenie do ogólnej teorii względności}}:
{{CentrujWzór|<MATH>{T^{\mu\nu}}_{,\nu}=0\Rightarrow {T^{\mu 0}}_{,0}+{T^{\mu k}}_{,k}=0\Rightarrow {T^{\mu 0}}_{,0}=-{T^{\mu k}}_{,k}\;</MATH>}}
Zatem przejdźmy do głównego nurtu dowodu wiedząc, że T{{Sup|μν}} jest równe zero na zewnątrz źródła i będziemy korzystać z symetryczności tensora gęstości energii.
{{CentrujWzór|<mATH>{{1}\over{c^2}}{{d^2}\over{dt^2}}\int T^{00}x^lx^mdV=
{{1}\over{c}}{{d}\over{dt}}\int {T^{00}}_{,0}x^lx^mdV=
-{{1}\over{c}}{{d}\over{dt}}\int {T^{0k}}_{,k}x^lx^mdV
\;</MATH>|7.90}}
Rozwińmy tożsamość występująca we wzorze {{LinkWzór|7.90}}, zatem korzystając z twierdzenia o pochodnej iloczynu trzech składników można napisać tożsamość:
{{CentrujWzór|<MaTH>(T^{0k}x^lx^m)_{,k}={T^{0k}}_{,k}x^lx^m+T^{0k} {x^l}_{,k}x^m+T^{0k}x^l{x^m}_{,k}=
{T^{0k}}_{,k}x^lx^m+T^{0k}{\delta^l}_{k}x^m+T^{0k}x^l{\delta^m}_{k}
={T^{0k}}_{,k}x^lx^m+T^{0l}x^m+\;</MATH>{{Br}}<MATH>+T^{0m}x^l\Rightarrow {T^{0k}}_{,k}x^lx^m=(T^{0k}x^lx^m)_{,k}-T^{0l}x^m-T^{0m}x^l\;</MaTH>|7.91}}
Wyrażenie końcowe zapisane w rozważanej powyżej w punkcie {{LinkWzór|7.91}} możemy podstawić do tożsamości fizycznej {{LinkWzór|7.90}} wynikającej z zachowalności energii i pędu, wtedy dostajemy równanie:
{{CentrujWzór|<MaTH>{{1}\over{c^2}}{{d^2}\over{dt^2}}\int T^{00}x^lx^mdV=
-{{1}\over{c}}{{d}\over{dt}}\int\left[(T^{0k}x^lx^m)_{,k}-T^{0l}x^m-T^{0m}x^l\right]dV=-{{1}\over{c}}{{d}\over{dt}}\int T^{0k}x^lx^mdS_k+\int {T^{0l}}_{,0}x^mdV+\;</MATH>{{Br}}<MATH>+\int {T^{0m}}_{,0}x^ldV=-\int {T^{kl}}_{,k}x^mdV-\int {T^{km}}_{,k}x^ldV
\;</MATH>|7.92}}
W powyższym rozpisaniu korzystaliśmy z twierdzenia Ostrogradskiego-Gaussa zamiany całek objętościowych, w której jest całkowanej po ściśle określonej nam objętości, na całkę powierzchniową, w której jest całkowanie po powierzchni zamkniętej ograniczającą wcześniej wprowadzoną objętość.
Następnym krokiem jest udowodnienie poniżej tożsamości korzystając z twierdzenia z pochodnej iloczynu znanej z analizy:
{{CentrujWzór|<MATH>(T^{kl}x^m)_{,k}dV={T^{kl}}_{,k}x^m+T^{kl}{\delta^m}_{k}={T^{kl}}_{,k}x^m+T^{ml}\;</math>|7.93}}
Możemy wykorzystać tożsamość {{LinkWzór|7.93}} do dalszej części dowodu {{LinkWzór|7.92}}, wiedząc jednocześnie że pierwsza i trzecia ciałka jest równa zero przy wykorzystaniu twierdzenia Ostrogradzkiego-Gauusa, która jest całką po powierzchni zamkniętej, którego to T{{Sub|αβ}} jest równa zero na tej powierzchni, wtedy dochodzimy do wniosku:
{{CentrujWzór|<MATH>{{1}\over{c^2}}{{d^2}\over{dt^2}}\int T^{00}x^lx^mdV=
-\int (T^{kl}x^m)_{,k}dV+\int T^{ml}dV-\int (T^{km}x^l)_{,k}dV+\int T^{lm}dV=\int T^{ml}dV+T^{lm}dV=2\int T^{ml}dV\;</MaTH>|7.94}}
W powyższym dowodzie znów korzystaliśmy z twierdzenia Ostrogradskiego-Gaussa, w której na jej powierzchni całkowanej panuje zerowa wartość tensora gęstości energii.
Co kończy dowód twierdzenia {{LinkWzór|7.89}}.
== Wytwarzanie fal grawitacyjnych ==
Fala grawitacyjna rozchodząca się od niezerowego źródła, w której gęstość materii poza źródłem jest równa zero, a także ciśnienie jest zaniedbywalnie małe, zatem tensor gęstości energii dla punktu poza źródłem zapisujemy wedle:
{{CentrujWzór|<MATH>T^{\alpha\beta}=0\;</Math>|7.95}}
Zatem biorąc to do równania grawitacji Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} i z przybliżeniem słabości pola grawitacyjnego tensor Einsteina wedle końcowego przedstawienia {{LinkWzór|5.17|Słabe_pola_grawitacyjne}}, jeśli będziemy wykorzystywać {{LinkWzór|7.95}}, zapisujemy wtedy go łącząc to z prawem grawitacji Einsteina:
{{CentrujWzór|<MATH>G^{\alpha\beta}=\kappa T^{\alpha\beta}\Rightarrow G^{\alpha\beta}=0\Rightarrow {{1}\over{2}}\square\overline{h}_{\alpha\beta}=0\;</MATH>|7.96}}
Rozwiązaniem równań grawitacji Einsteina dla słabego pola grawitacji {{LinkWzór|7.96}} jest wyrażenie {{Formuła|<MATH>\overline{h}_{\alpha\beta}\;</MATH>}}, która jest zależna od stałej częstotliwości kołowej Ω i czasu t:
{{CentrujWzór|<MATH>\overline{h}_{\alpha\beta}=B_{\alpha\beta}e^{-i\Omega t}\;</MATH>|7.97}}
Aby sprawdzić jakie B{{Sub|αβ}} spełnia równanie {{LinkWzór|7.96}} dla odpowiedzi {{LinkWzór|7.97}}, to po podstawieniu naszego rozwiązania do rozważanego równania różniczkowego, mamy:
{{CentrujWzór|<MATH>\square B_{\alpha\beta}e^{-i\Omega t}=0\Rightarrow\left({{\Omega^2}\over{c^2}}+\nabla^2\right)B_{\alpha\beta}e^{-i\Omega t}=0\Rightarrow
\left({{\Omega^2}\over{c^2}}+\nabla^2\right)B_{\alpha\beta}=0\;</MATH>|7.98}}
Można udowodnić, że rozwiązanie w {{Formuła|<MATH>B_{\alpha\beta}\;</MATH>}} równania różniczkowego {{LinkWzór|7.98}} jest rozwiązanie w postaciach zależnych od dwóch niezależnych stałych występujące w dwóch składnikach osobno:
{{CentrujWzór|<MaTH>B_{\alpha\beta}={{A_{\alpha\beta}}\over{r}}e^{i{{\Omega}\over{c}}r}+{{Z_{\alpha\beta}}\over{r}}e^{-i{{\Omega}\over{c}}r}\;</MATH>|7.99}}
Sprawdźmy czy {{LinkWzór|7.99}} jest rzeczywiście jest rozwiązaniem równania {{LinkWzór|7.98}}, zatem jeśli
obierzemy definicję kwadratu Δ=∇{{Sup|2}} we współrzędnych kulistych, zatem operator Δ zapisujemy w postaci:
{{CentrujWzór|<MATH>\Delta=\nabla^2={{1}\over{r}}{{\partial^2}\over{\partial r^2}}(r)+{{1}\over{r^2}}\Lambda</MATH>}}
to policzmy, czy rozwiązanie {{LinkWzór|7.99}} jest poprawnym rozwiązaniem dla równania różniczkowego {{LinkWzór|7.98}} dla promienia od źródła, który się znajduje dla r=0, wtedy przejdźmy do właściwej idei dowodu:
{{CentrujWzór|<MATH>\left({{\Omega^2}\over{c^2}}+\nabla^2\right)B_{\alpha\beta}=\left({{\Omega^2}\over{c^2}}+{{1}\over{r}}{{\partial^2}\over{\partial r^2}}(r)+{{1}\over{r^2}}\Lambda\right)
\left({{A_{\alpha\beta}}\over{r}}e^{i{{\Omega}\over{c}}r}+{{Z_{\alpha\beta}}\over{r}}e^{-i{{\Omega}\over{c}}r}\right)=\left({{\Omega^2}\over{c^2}}+{{1}\over{r}}{{\partial^2}\over{\partial r^2}}(r)\right){{A_{\alpha\beta}}\over{r}}e^{i{{\Omega}\over{c}}r}+\;</MATH>{{Br}}<MATH>+\left({{\Omega^2}\over{c^2}}+{{1}\over{r}}{{\partial^2}\over{\partial r^2}}(r)\right){{Z_{\alpha\beta}}\over{r}}e^{-i{{\Omega}\over{c}}r}</MATH>|7.100}}
Wyznaczmy pierwszy składnik w {{LinkWzór|7.100}}, czyli ile jest on równy:
{{CentrujWzór|<MATH>\left({{\Omega^2}\over{c^2}}+{{1}\over{r}}{{\partial^2}\over{\partial r^2}(r)}\right){{A_{\alpha\beta}}\over{r}}e^{i{{\Omega}\over{c}}r}={{\Omega^2}\over{c^2}}{{A_{\alpha\beta}}\over{r}}e^{i{{\Omega}\over{c}}r}+{{1}\over{r}}{{\partial^2}\over{\partial r^2}}\left(r{{A_{\alpha\beta}}\over{r}}e^{i{{\Omega}\over{c}}r}\right)=
{{\Omega^2}\over{c^2}}{{A_{\alpha\beta}}\over{r}}e^{i{{\Omega}\over{c}}r}-{{\Omega^2}\over{c^2}}{{1}\over{r}}A_{\alpha\beta}e^{i{{\Omega}\over{c}}r}=0</MATH>|7.101}}
zatem ten nasz pierwszy składnik w {{LinkWzór|7.100}} wedle {{LinkWzór|7.101}} jest równy zero, dla drugiego wyrazu mamy podobnie, a dowód przebiega analogicznie jak dla {{LinkWzór|7.101}}, zatem dochodzimy do wniosku, że rozwiązanie {{LinkWzór|7.99}} jest rozwiązaniem {{LinkWzór|7.98}} poprawnym.
W rozwiązaniu w {{LinkWzór|7.99}} wybierzmy tylko pierwszy wyraz, a w przypadku drugiego wyrazu stałą w nim występującą wyzerujmy, bo to równanie ma dwie niezależne stałe w dwóch niezależnych składnikach, bo tak robimy, że interesuje nasz rozwiązania rozchodzące się od źródła:
{{CentrujWzór|<MATH>B_{\alpha\beta}={{A_{\alpha\beta}}\over{r}}e^{i{{\Omega}\over{c}}r}\;</MATH>|7.102}}
Wyznaczmy wyrażenia pomocnicze, które będą w przyszłości nam potrzebne.
Obierzmy kulę, która ma promień ε, którego promień jest zaniedbywalnie mały. Zakładamy, że źródło jest niezerowe tylko wewnątrz sfery o promieniu podanym wyżej, zatem przejdźmy do dzieła.
{{CentrujWzór|<MATH>\lim_{\epsilon\rightarrow 0}\oint {{\Omega^2}\over{c^2}}B_{\alpha\beta}d^3x\leq{{\Omega^2}\over{c^2}}(B_{\mu\nu})_{max}d^3x=\lim_{\epsilon\rightarrow 0}{{\Omega^2}\over{c^2}}(B_{\alpha\beta})_{max}{{4}\over{3}}\pi\epsilon^3=0</MATH>|7.103}}
Pozostało nam jeszcze do obliczenia całkę z działania operatora ∇ względem infinitezymalnej objętości, którego to B{{Sub|αβ}} jest zależna od trzech współrzędnych i czasu w kartezjańskim układzie współrzędnych, która jest przestrzenią zanurzoną w czasoprzestrzeni czterowymniarowej:
{{CentrujWzór|<MATH>\int \nabla^2B_{\alpha\beta}d^3x=\oint\nabla B_{\alpha\beta} d\vec{S}=\lim_{\epsilon\rightarrow 0}\oint\nabla B_{\alpha\beta} d\vec{S}=\lim_{\epsilon\rightarrow 0}4\pi\epsilon^2{{d}\over{dr}}B_{\alpha\beta}=\lim_{\epsilon\rightarrow 0}4\pi\epsilon^2{{d}\over{dr}}{{1}\over{r}}A_{\alpha\beta}e^{-i{{\Omega}\over{c}}r}=\;</MATH>{{Br}}<MATH>=\lim_{\epsilon\rightarrow 0}4\pi\epsilon^2A_{\alpha\beta}\left[
|-{{1}\over{r^2}}e^{-i{{\Omega}\over{c}}r}-{{1}\over{r}}i{{\Omega}\over{c}}e^{-i{{\Omega}\over{c}}r}|_{r=\epsilon}
\right]=
\lim_{\epsilon\rightarrow 0}\left[\left(-4\pi\epsilon^2A_{\alpha\beta}\right){{1}\over{\epsilon^2}} e^{-i{{\Omega}\over{c}}\epsilon}-4\pi\epsilon^2{{1}\over{\epsilon}}i{{\Omega}\over{c}}e^{-i{{\Omega}\over{c }}\epsilon}\right]=\;</MATH>{{Br}}<MATH>=\lim_{\epsilon\rightarrow 0}\left(-4\pi-4\pi\epsilon i {{\Omega}\over{c}}\right)A_{\alpha\beta}e^{-i{{\Omega}\over{c}}\epsilon}=-4\pi A_{\alpha\beta}</MATH>|7.104}}
Następnym wyrażeniem pomocniczym, która korzysta z udowodnionych tożsamości, którego to pierwsza jest równa zero, a druga jest równa stałej tożsamości, czyli za pomocą tożsamości {{LinkWzór|7.103}} i {{LinkWzór|7.104}} możemy wyznaczyć wyrażenie:
{{CentrujWzór|<MATH>\int\left({{\Omega^2}\over{c^2}}+\nabla^2\right)B_{\alpha\beta}dV=-4\pi A_{\alpha\beta}\;</MATH>|7.105}}
Równaniem grawitacji, którego to równanie jest zapisywane w punkcie {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}}, wewnątrz źródła jest opisane wedle wzoru ze stałą {{Formuła|<MATH>\kappa\;</MATH>}}, która jest równa {{LinkWzór|5.46|Słabe_pola_grawitacyjne}}, którego to zapis jest za pomocą tensora napięć-energii i tensora {{Formuła|<MATH>\overline{h}_{\alpha\beta}\;</MATH>}}, dla słabego pola grawitacyjnego jest wyrażona:
{{CentrujWzór|<MATH>{{1}\over{2}}\square\overline{h}_{\alpha\beta}={{8\pi G}\over{c^4}}T_{\alpha\beta}\Rightarrow
\left({{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}+\nabla^2\right)\overline{h}_{\alpha\beta}={{16\pi G}\over{c^4}}T_{\alpha\beta}\Rightarrow
\left({{\Omega^2}\over{c^2}}+\nabla^2\right)\overline{h}_{\alpha\beta}={{16\pi G}\over{c^4}}T_{\alpha\beta}\;</MATH>|7.106}}
Przecałkujmy wyrażenie {{LinkWzór|7.106}} obustronnie i wiedząc, że mamy definicję rozwiązania {{LinkWzór|7.97}} i w nim stałej {{LinkWzór|7.102}} dla rozmiarów kuli dążącej do prawie do zera, bo nasze źródło jest prawie punktowe:
{{CentrujWzór|<MATH>(-4\pi A_{\alpha\beta})e^{-i\Omega t}={{16\pi G}\over{c^4}}\int T_{\alpha\beta}dV\;</MaTH>|7.107}}
zatem możemy powiedzieć, że tensor A{{Sub|αβ}} jest zapisany jako całka z iloczynu tensora energii i napięć przez funkcję eksponencjalną , którego argumentem jest funkcja zależna od częstotliwości fali grawitacyjnej, a przed tą naszą rozważaną całką występują stałe mówiące o stałej grawitacji i prędkości światła c:
{{CentrujWzór|<MATH>A_{\alpha\beta}=-{{4G}\over{c^4}}\int T_{\alpha\beta}e^{i\Omega t}dV\;</MATH>|7.108}}
Jeśli oznaczymy definicję gęstości tensora energii poprzez amplitudę drgań tensora gęstości energii i częstotliwość kołowa tych drgań i całkę występującą po prawej stronie {{LinkWzór|7.108}} poprzez definicję {{LinkWzór|7.109}}, to możemy zdefiniować wyrażenie na J{{Sub|αβ}} jako całkę po pewnej objętości zamkniętej po amplitudzie drgać omawianego tensora gęstości energii:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>T_{\alpha\beta}=S_{\alpha\beta}e^{-i\Omega t}\;</MATH>|7.109}}
| 2 = {{CentrujWzór|<MATH>J_{\alpha\beta}=\int T_{\alpha\beta}e^{i\Omega t}\Rightarrow J_{\alpha\beta}=\int S_{\alpha\beta}dV\;</maTH>|7.110}}
}}
Wtedy stałą A{{Sub|αβ}} (po lewej stronie w {{LinkWzór|7.108}}) i wedle definicji tensora gęstości energii poprzez stałą amplitudy {{LinkWzór|7.109}} i wykorzystując przy tym fakt, że w definicji tensora J{{Sub|αβ}} zapisanej w punkcie {{LinkWzór|7.110}}, zatem tensor A{{Sub|αβ}} jest zapisany na podstawie tychże danych w zależności od tensora J{{Sub|αβ}} w postaci:
{{CentrujWzór|<MATH>A_{\alpha\beta}=-{{4G}\over{c^4}}J_{\alpha\beta}\;</MATH>|7.111}}
Jest to amplituda fal grawitacyjnych występująca we wyrażeniu {{LinkWzór|7.102}} i wyrażona jest przez całkę z amplitudy drgań tensora gęstości energii.
Rozwiązanie dla słabych pól grawitacyjnych wykorzystując wzór {{LinkWzór|7.111}}, przyjmuje postać:
{{CentrujWzór|<MATH>\overline{h}_{\alpha\beta}=-{{4G}\over{c^4}}J_{\alpha\beta}{{e^{i({{\Omega}\over{c}}r-\Omega t)}}\over{r}}\;</MATH>|7.112}}
Jest to rozwiązanie dla fal grawitacyjnych wytwarzanych przez źródła prawie punktowe i nierelatywistyczne, które wytwarzają te właśnie fale zwane promieniowaniem grawitacyjnym.
=== Właściwości fali grawitacyjnej dla jednego wskaźnika zerowego górnego ===
Jeśli wykorzystamy równanie {{LinkWzór|7.110}}, którego wielkość jest całką amplitudy po infinitezymalnej objętości tensora gęstości energii oraz korzystając z definicji tensora gęstości energii dla źródła fal grawitacyjnych {{LinkWzór|7.109}}, co można wykorzystać mnożąc {{LinkWzór|7.110}} przez niezerowe wyrażenie {{Formuła|<MATH>e^{-i\Omega t}\;</MATH>}}:
{{CentrujWzór|<MATH>J_{\mu\nu}e^{-i\Omega t}=\int T_{\alpha\beta}dV\;</MATH>|7.113}}
I jeśli zróżniczkujemy obie strony wyrażenia {{LinkWzór|7.113}} względem czasu w sekundach, ale przedtem podnosząc wszystkie wskaźniki do góry i biorąc jednocześnie drugi wskaźnik jako zerowy, wtedy mamy:
{{CentrujWzór|<MaTH>-i\Omega J^{\mu 0}e^{-i\Omega t}=\int {T^{\mu 0}}_{,0}dV=\int {T^{\mu k}}_{,k}dV=\oint T^{\mu k}n_kdS=0\;</MaTH>|7.114}}
Powyższe równanie zachodzi, bo tensor gęstości energii po za źródłem fal grawitacyjnych jest równy zero, a my całkujemy po powierzchni, która otacza nasze źródło naszego promieniowania.
W powyższych obliczeniach przyjęliśmy, że tensor gęstości energii na zewnątrz źródła jest równy zero na zewnątrz badanego źródła, bo wytwarzać fal grawitacyjnych jest bardzo mały, otrzymujemy:
{{CentrujWzór|<maTH>J^{\mu 0}=0\Rightarrow \overline{h}^{\mu 0}=0\;</MATH>|7.115}}
Dalsze zerowania się tensora metrycznego {{Formuła|<MATH>\overline{h}^{\mu \nu}\;</MATH>}} wynika stąd, gdy skorzystamy z symetryczności tensora {{LinkWzór|7.94}}, a także wynikającego z symetryczności tensora J{{Sup|μν}} {{LinkWzór|7.110}}, wynika poprzez to {{LinkWzór|7.112}} symetryczność tensora {{Formuła|<MATH>\overline{h}^{\mu\nu}\;</MATH>}}.
=== Tensor momentu kwadrupolowego rozkładu masy ===
Tensor momentu kwadrupolowego rozkładu masy definiujemy poprzez tensor gęstości energii o wskaźnikach dwóch górnych i zerowych i wyrazimy ją poprzez funkcję fali o częstotliwości kołowej Ω (eksponens z argumentu iΩt) i przez tensor D{{Sup|lm}}:
{{CentrujWzór|<MATH>I^{lm}=\int T^{00}x^lx^mdV=D^{lm}e^{-i\Omega t}\;</MATH>|7.116}}
Jeśli zachodzi tożsamość {{LinkWzór|7.113}}, to na podstawie tożsamości zdefiniowanej w {{LinkWzór|7.89}}, możemy napisać, dokonując pewnych przekształceń i wykorzystania wzoru {{LinkWzór|7.116}} dla wskażników l,m=1,2,3 w sposób:
{{CentrujWzór|<MATH>J^{lm}e^{-i\Omega t}=\int T^{lm}dV\Rightarrow
J^{lm}e^{-i\Omega t}={{1}\over{2c^2}}{{d^2}\over{dt^2}}\int T^{00}x^lx^mdV\Rightarrow
J^{lm}e^{-i\Omega t}=-{{\Omega^2}\over{2c^2}}D^{lm}e^{-i\Omega t}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow
J^{lm}=-{{\Omega^2}\over{2c^2}}D^{lm}\Rightarrow J_{lm}=-{{\Omega^2}\over{2c^2}}D_{lm}\;</MATH>|7.117}}
Rozwiązanie {{LinkWzór|7.112}} na podstawie obliczeń {{LinkWzór|7.116}}, wykorzystując fakt {{LinkWzór|7.115}}, który mówi, że jedynymi elementami tensora poprawki do tensora metrycznego Minkowskiego w postaci fal grawitacyjnych {{Formuła|<MaTh>\overline{h}_{\alpha\beta}\;</MaTh>}} są równe zero, gdy zachodzi dla α=0 lub β=0. Zatem wskaźniki przy naszym tensorze są równe 1,2,3, zatem dochodzimy wtedy do wniosku, że zachodzi ogólne rozwiązanie dla fal grawitacyjnych wytwarzane przez źródła prawie punktowe o niezerowych elementach:
{{CentrujWzór|<MATH>\overline{h}_{lm}={{2G\Omega^2}\over{c^6}}D_{lm}{{e^{i\left({{\Omega}\over{c}}r-\Omega t\right)}}\over{r}}\;</MaTH>|7.118}}
Tensory poprawki do tensora metrycznego Minkowskiego możemy obliczyć ze wzoru {{LinkWzór|5.21|Słabe_pola_grawitacyjne}}, gdy mamy już policzone {{LinkWzór|7.118}}.
=== Układ dwóch kulek jako układ prostego oscylatora ===
Widzimy, że na podstawie wzorów {{LinkWzór|7.116}}, że gdy I{{Sup|lm}}(t), to dla t=0 ono jest równe D{{Sup|lm}}, to wtedy mając cechowanie, w której dwuwskaźnikowe tensory krzywizny fali grawitacyjnej {{LinkWzór|7.2}}, w której w pewnym cechowaniu tensor amplitudy jest równy {{LinkWzór|7.25}}, wtedy tensory {{LinkWzór|7.118}} w tym cechowaniu możemy przepisać:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\overline{h}^{TT}_{zi}=0\;</MATH>|7.119}}
| 2 = {{CentrujWzór|<MATH>\overline{h}_{xx}^{TT}=-\overline{h}_{yy}^{TT}={{G\Omega^2}\over{c^6}}\left(\not{I}_{xx}-\not{I}_{yy}\right){{e^{\Omega\left({{r}\over{c}}-t\right)}}\over{r}}\;</MATH>|7.120}}
| 3 = {{CentrujWzór|<MATH>\overline{I}_{xy}^{TT}=2{{G\Omega^2}\over{c^6}}\not{I}_{xy}{{e^{\Omega\left({{r}\over{c}}-t\right)}}\over{r}}\;</MATH>|7.121}}
}}
Przy powyższych uwagach wprowadziliśmy tensor bezśladowy z definiowany w oparciu o tensor I{{Sup|lm}} {{LinkWzór|7.116}}:
{{CentrujWzór|<MATH>\not{I}_{lm}=I_{lm}-{{1}\over{3}}\delta_{lm}{I^l}_l\;</MATH>|7.122}}
Rozważmy teraz falę emitowaną przez prosty oscylator fal grawitacyjnych, których wykrywamy, za pomocą detektora pokazywanego w punkcie {{sr|#Detekcja fal grawitacyjnych|b=tak}}. Ten detektor też wytwarza fale grawitacyjne, w których obie masy drgają z częstotliwością ω i z amplitudą A wokół średniego położenia równowagi. W tym przykładzie detektora fal mamy tylko składową I{{Sub|xx}} nierównej zero, tą składową możemy policzyć mając na uwadze harmoniczne drgania:
{{CentrujWzór|<MATH>I_{xx}=mc^2\left[(x_1)^2+(x_2)^2\right]=mc^2\left[\left(-{{1}\over{2}}l_0-A\cos\omega t\right)^2+\left({{1}\over{2}}l_0+A\cos\omega t\right)^2\right]=\;</MATH>{{Br}}<MATH>
=mc^2{{1}\over{4}}l_0^2+A^2m\cos^2\omega t+l_0mc^2Acos\omega t+{{1}\over{4}}ml_0^2+A^2mc^2\cos^2\omega t+l_0Amc^2\cos\omega t=\;</math>{{Br}}<math>={{1}\over{2}}mc^2l_0^2+2mA^2\cos^2\omega t+2l_0Amc^2\cos\omega t={{1}\over{2}}mc^2l_0^2+2mA^2+mc^2A^2\cos 2\omega t+2l_0Amc^2\cos\omega t</MATH>|7.123}}
Zdefiniujmy teraz elementy tensora {{LinkWzór|7.122}} mając na uwadze element tensora I{{Sub|xx}} {{LinkWzór|7.123}} przy częstotliwości kołowej ω, czyli wykorzystując czwarty wyraz powyższych końcowych obliczeń możemy zdefiniować elementy tensora {{LinkWzór|7.122}}:
{{CentrujWzór|<MATH>\begin{cases}
\not{I}_{xx}=I_{xx}-{{1}\over{3}}{I^l}_{l}={{2}\over{3}}I_{xx}={{4}\over{3}}c^2ml_0Ae^{-i\omega t}\\
\not{i}_{yy}={I}_{zz}-{{1}\over{3}}I_{xx}={{1}\over{3}}I_{xx}=-{{2}\over{3}}ml_0c^2Ae^{-i\omega t}
\end{cases}\;</MATH>|7.124}}
Zdefiniujmy teraz tensory {{LinkWzór|7.119}}, {{LinkWzór|7.120}} i {{LinkWzór|7.121}} w oparciu o tensor {{LinkWzór|7.124}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\overline{h}_{xx}=-\overline{h}_{yy}={{2mG\omega^2l_0A}\over{c^4}}{{e^{i\omega\left({{r}\over{c}}-t\right)}}\over{r}}\;</MATH>|7.125}}
| 2 = {{CentrujWzór|<MATH>\overline{h}_{xy}=0\;</MATH>|7.126}}
}}
Jeśli uwzględnimy człon trzeci w końcowych obliczeniach {{LinkWzór|7.123}}, wtedy wzór na tensor {{Formuła|<MATH>\overline{I}_{xx}\;</MATH>}} i {{Formuła|<MATH>\overline{I}_{yy}\;</MATH>}}, który powstaje z {{LinkWzór|7.120}} po zastąpieniu Ω przez 2ω, wtedy otrzymujemy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\overline{h}_{xx}^{TT}=-\overline{h}_{yy}^{TT}={{4mG\omega^2A^2}\over{c^4}}{{e^{2i\omega\left({{r}\over{c}}-t\right)}}\over{r}}\;</MATH>|7.127}}
| 2 = {{CentrujWzór|<MATH>\overline{h}_{xy}^{TT}=0\;</MATH>|7.128}}
}}
Całkowite promieniowanie wytwarzane przez prosty oscylator jest częścią rzeczywistą sumy składników, tzn. {{LinkWzór|7.125}} i {{LinkWzór|7.127}}:
{{CentrujWzór|<MATH>\overline{h}_{xx}^{TT}={{2mG\omega^2l_0}\over{c^4}}{{\cos\omega\left({{r}\over{c}}-t\right)}\over{r}}+{{4mG\omega^2A^2}\over{c^4}}{{\cos 2\omega\left({{r}\over{c}}-t\right)}\over{r}}\;</MATH>|7.129}}
=== Układ podwójny gwiazd o jednakowych masach ===
Wygodniejszym przykładem jest podwójmy układ gwiezdny dwóch jednakowych gwiazd, które krążą po orbicie o promieniu {{Formuła|<MATH>{{1}\over{2}}l_0\;</MATH>}}, czyli wokół wspólnego środka masy, wtedy równanie ruchu z drugiej zasady dynamiki dynamiki Newtona jest:
{{CentrujWzór|<MATH>G{{m^2}\over{l_0^2}}=m\omega^2\left({{l_0}\over{2}}\right)\Rightarrow\omega=\left({{2Gm}\over{l_0^3}}\right)^{{{1}\over{2}}}\;</MATH>|7.130}}
Położenia układu dwóch gwiazd opiszemy przy odpowiednich wyborze współrzędnych, przy czym oznaczamy przez jedynkę pierwszą gwiazdę, a przez dwójkę drugą gwiazdę:
{{CentrujWzór|<MATH>\begin{cases}
x_1(t)={{1}\over{2}}l_0\cos\omega t&y_1(t)={{1}\over{2}}l_0\sin\omega t\\
x_2(t)=-x_1(t)&y_2(t)=-y_1(t)
\end{cases}\;</MATH>|7.131}}
Wiedząc, ze tensor kwadrupolowy definiujemy sposobem I{{Sub|ik}}=mc{{Sup|2}}x_ix_k według {{LinkWzór|7.116}}, wtedy te elementy tego tensora możemy napisać dla podwójnego układu gwiazd, których ich współrzedne zdefiniowane są sposobem {{LinkWzór|7.131}}:
{{CentrujWzór|<MATH>\begin{cases}
I_{xx}=m c^2(x^2_1(t)+x^2_2(t))={{1}\over{2}}mc^2l_0^2\cos^2\omega t={{1}\over{4}}mc^2l_0^2\cos2\omega t+\operatorname{const}\\
I_{yy}=mc^2(y^2_1(t)+y^2_2(t))={{1}\over{2}}mc^2l_0^2\sin^2\omega t=-{{1}\over{4}}mc^2l_0^2\cos2\omega t+\operatorname{const}\\
I_{xy}=mc^2x_1(t)y_1(y)={{1}\over{8}}c^2ml_0^2\sin2\omega t\\
\end{cases}\;</MATH>|7.132}}
Napiszmy teraz czemu są równe tensory {{Formuła|<MATH>\not{I}_{lm}\;</MATH>}} dla naszego badanego układu wykorzystując jego definicję {{LinkWzór|7.22}}, do którego wykorzystamy już policzone elementy tensora I{{Sub|lm}}, czyli I{{Sub|xx}}, I{{Sub|yy}} i I{{Sub|xy}}, wiedząc, że I{{Sup|l}}{{Sub|l}}=0 na podstawie definicji elementów I{{Sub|lm}} {{LinkWzór|7.132}}:
{{CentrujWzór|<MATH>\begin{cases}
\not{I}_{xx}=-\not{I}_{yy}={{1}\over{4}}mc^2l_0^2e^{-2i\omega t}\\
\not{I}_{xy}={{1}\over{4}}imc^2l_0^2e^{-2i\omega t}\\
\end{cases}\;</MATH>|7.133}}
Patrząc na wzory {{LinkWzór|7.120}} i {{LinkWzór|7.121}} dla Ω=2ω i na elementy tensora {{Formuła|<MATH>\not{I}_{lm}\;</MATH>}} {{LinkWzór|7.133}}, wtedy można zapisać wzory na promieniowanie rozchodzące się wzdłuż kierunku zetowego:
{{CentrujWzór|<MATH>\begin{cases}
\overline{h}_{xx}^{TT}=-\overline{h}_{yy}={{2mGl_0^2}\over{c^4}}\omega^2{{e^{2i\omega\left({{r}\over{c}}-t\right)}}\over{r}}\\
\overline{h}_{xy}^{TT}={{2imGl_0^2\omega^2}\over{c^4}}{{e^{2i\omega({{r}\over{c}}-t)}}\over{r}}\end{cases}\;</MATH>|7.134}}
=== Równanie falowe i jego ścisłe rozwiązanie ===
Ścisłe rozwiązanie falowe dla fali grawitacyjnej dla źródła punktowego jest {{LinkWzór|7.112}}, weźmy sobie pewne źródło składające się ze źródeł punktowych, i w ten sposób fala grawitacyjna dociera pokolei do kolejnych punktów tego ośrodka w czasie t'=t-R/c, wtedy mamy wzór na elementy tensora {{Formuła|<MATH>\overline{h}_{\mu\nu}\;,</MATH>}} dla tego niepunktowego źródła:
{{CentrujWzór|<MATH>\overline{h}_{\mu\nu}=-{{4G}\over{c^4}}\int J_{\mu\nu}(\vec{r},t^'){{e^{i\Omega\left({{R}\over{c}}-t\right)}}\over{R}}dV=-{{4G}\over{c^4}}\int {{T_{\mu\nu}(t^',x^i)}\over{R}}e^{i\Omega t^'}e^{i\Omega\left({{R}\over{c}}-t\right)}dV=-{{4G}\over{c^4}}\int{{T_{\mu\nu}\left(t-{{R}\over{c}},x^i\right)}\over{R}}d^3x\;</MATH>|7.135}}
Weźmy sobie punkt w którym będziemy obserwować falę grawitacyjną, który jest bardzo daleko od źródła fali grawitacyjnej, wtedy powiemy:
{{CentrujWzór|<MATH>\left[\sum_i(y^i)^2\right]^{{{1}\over{2}}}\equiv r>>\left[\sum_i(x^i)^2\right]^{{{1}\over{2}}}\;</MATH>|7.136}}
Przy tak zachodzącym warunku {{LinkWzór|7.136}} możemy napisać, pod którą pod całką występuje tensor napięć energii a przed całką jest odwrotność promienia r, która wyszła z całki, która była pod postacią R, bo dla małego źródła r i R praktycznie się nie różnią:
{{CentrujWzór|<MATH>\overline{h}_{\mu\nu}\simeq-{{4G}\over{c^4r}}\int T_{\mu\nu}d^3x\;</MATH>|7.137}}
Do wzoru {{LinkWzór|7.137}} możemy wykorzystać {{LinkWzór|7.89}} i definicję tensora kwadrupolowego {{LinkWzór|7.116}}, wtedy tensor fali grawitacyjnej przyjmuje wtedy kształt:
{{CentrujWzór|<MATH>\overline{h}_{lm}=-{{2G}\over{c^4r}}I_{lm,0,0}\left(t-{{r}\over{c}}\right)\;</MATH>|7.138}}
Jeśli w prowadzimy cechowanie TT, to wtedy wzór na elementy tensora fali grawitacyjnej są:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\overline{h}_{xx}^{TT}=-{{G}\over{c^4r}}\left[\not{I}_{xx,00}\left(t-{{r}\over{c}}\right)-\not{I}_{yy,00}\left(t-{{r}\over{c}}\right)\right]\;</MATH>|7.139}}
| 2 = {{CentrujWzór|<MATH>\overline{h}_{xy}^{TT}=-{{2G}\over{c^4r}}\not{I}_{xy,00}\left(t-{{r}\over{c}}\right)\;</MATH>|7.140}}
}}
== Energia przenoszona przez fale grawitacyjne wytwarzane przez układ oscylatorów grawitacyjnych ==
Przy pomocy wcześniejszych rozważań zorientowaliśmy się, że fale grawitacyjne przenoszą energię. Fale grawitacyjne unoszą energię od swych źródeł zabierając im energię. Rozważmy teraz ciało próbne, który nie wpływa na pole fali grawitacyjnej, czyli jego wpływ jest zaniedbywalny, wtedy takie podejście jest niekonsystentne, zatem jeśli przez ciało przechodzi fala grawitacyjna, to po przejściu jego przez układ mas, to fala grawitacyjna powinna być słabsza, tzn. układ ciał przez które przechodzi się fala grawitacyjna, sama staje się jego źródłem. Rozważmy teraz falę padającą o częstotliwości kołowej ω, to fala wyemitowana przez ciało jest emitowana z tą samą częstotliwością, więc fale przechodząca przez układ mas jest zatem sumą dwóch fal, tzn. fali padającej i fali wyemitowanej. Zobaczymy, że te dwie fale interferują one ze sobą dekonstruktywnie, obniżając wypadkową fali w tym kierunku. W innych kierunkach nie ma interferencji, i fale przechodzą jedno koło drugiej.
=== Fala grawitacyjna i jego strumień energii ===
Załóżmy, że mamy falę grawitacyjną wytwarzaną przez układ oscylatorów, który jest układem mas znajdujących się w pewnej płaszczyźnie, wtedy bardzo wygodnie jest rozważanie nie jako oscylatora harmonicznego wytwarzającego fale grawitacyjne, ale układ oscylatorów znajdujących się w płaszczyźnie dla z=0. Oscylatory w rozważanej płaszczyźnie są bardzo blisko siebie, więc je możemy uważać jako układ ciągły oscylatorów, i wprowadźmy przez σ jako liczbę oscylatorów przez jednostkę powierzchni. Fala padająca na układ oscylatorów znajdujących się na płaszczyźnie przy cechowaniu {{LinkWzór|7.25}} określamy przez wzory:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\overline{h}_{xx}^{TT}=A\cos\Omega\left({{z}\over{c}}-t\right)\;</MATH>|7.141}}
| 2 = {{CentrujWzór|<MATH>\overline{h}_{yy}^{TT}=-\overline{h}_{xx}^{TT}\;</MATH>|7.142}}
}}
Przy przejściu fali grawitacyjnej przez naszą rozważaną płaszczyznę układu oscylatorów, wtedy ten układ odpowie stabilną oscylacją:
{{CentrujWzór|<MATH>\xi=R\cos(\Omega t+\phi)\;</MATH>|7.143}}
Wielkości R i φ są to wielkości opisane poprzez wzory na φ {{LinkWzór|7.69}} i na R {{LinkWzór|7.76}}. Nasz rozważany ruch jest stabilny ponieważ energia dostarczana przez przechodzącą falę grawitacyjną poprzez sprężynkę jest rozpraszana w wyniku tarcia w oscylatorach w których energia jest kompensowana przez pracę wykonywaną na sprężynkach przez pływowe siły fali grawitacyjnej.
Fala grawitacyjna dostarcza energii każdemu oscylatorowi równą:
{{CentrujWzór|<MATH>{{dE}\over{dt}}=\nu\left({{\partial\xi}\over{\partial t}}\right)^2=m\gamma \left({{\partial\xi}\over{\partial t}}\right)^2\;</MATH>|7.144}}
Uśrednienie energii dostarczanej przez falę w ciągu jednego okresu równej T=2π/Ω dla wyrażenia {{LinkWzór|7.138}}, w wyniku tego mamy uśrednioną energię z definicji wartości średniej:
{{CentrujWzór|<MATH>\left\langle{{dE}\over{dt}}\right\rangle=
{{1}\over{{{2\pi}\over{\Omega}}}}\int_0^{{{2\pi}\over{\Omega}}}m\gamma\Omega^2R^2\sin^2(\Omega t+\phi)dt=
{{m\gamma\Omega^3R^2}\over{2\pi}}\int_0^{{{2\pi}\over{\Omega}}}{{1}\over{2}}(1-\cos\left(2\Omega t+2\phi)\right)={{m\gamma\Omega^3R^2}\over{2\pi}}{{1}\over{2}}{{2\pi}\over{\Omega}}={{1}\over{2}}m\gamma\Omega^2R^2\;</MATH>|7.145}}
Wzór {{LinkWzór|7.145}} przestawia energię dostarczaną do układu oscylatorów przez falę grawitacyjną, przy σ oscylatorach energia fali zmniejsza się przy przejściu przez płaszczyznę o wartość:
{{CentrujWzór|<MATH>\delta F=-{{1}\over{2}}\sigma m\gamma\Omega^2R^2\;</MATH>|7.146}}
Każdy oscylator ma tensor kwadrupolowy zapisanej przez wzór {{LinkWzór|7.123}}, w której zastąpimy ω t przez Ωt+φ, a A przez R/2. Ponieważ w naszym przypadku R jest niewielkie, to człon jego trzeci możemy pominąć, i w ten sposób otrzymujemy tensor kwadrupolowy:
{{CentrujWzór|<MATH>I_{xx}=mc^2l_0R\cos(\Omega t+\phi)\;</MATH>|7.147}}
Według wzoru {{LinkWzór|7.118}} każdy oscylator wytwarza falę grawitacyjną:
{{CentrujWzór|<MATH>\delta\overline{h}_{xx}={{2G\Omega^2ml_0R}\over{c^4}}{{\cos\left[\Omega({{r}\over{c}}-t)-\phi\right]}\over{r}}\;</MATH>|7.148}}
{{Rysunek|Geometria płaszczyzny potrzebna do obliczenia poprawki dla fali grawitacyjnego.png|bg1|Geometria płaszczyzny potrzebna do obliczenia poprawki dla fali grawitacyjnego|rozmiar=150px}}
Ilość oscylatorów na powierzchni {{Formuła|<MATH>\pi\tilde{\omega}^2\;</MATH>}} jest {{Formuła|<MATH>\pi\tilde{\omega}^2\sigma\;</MATH>}}, a ilość oscylatorów znajdujących się na powierzchni pomiędzy {{Formuła|<MATH>\tilde{\omega}\;</MATH>}}, a {{Formuła|<math>\tilde{\omega}+d\tilde{\omega}\;</MATH>}} jest wyrażona przez {{Formuła|<MATH>2\pi\sigma\tilde{\omega}d\tilde{\omega}\;</MATH>}}, wtedy całkowity tensor {{Formuła|<math>\overline{h}_{xx}\;\;</math>}} możemy wyrazić przez:
{{CentrujWzór|<math>\delta \overline{h}_{xx}^{all}={{2G\Omega^2ml_0R}\over{c^4}}2\pi\int_0^{\infty}\sigma\cos\left[\Omega\left({{r}\over{c}}-t\right)-\phi\right]{{\overline{\omega}d\overline{\omega}}\over{r}}\;</MATH>|7.149}}
Z rysunku obok należy zauważyć, że {{Formuła|<math>r^2=z^2+\tilde{\omega}^2\Rightarrow rdr=\tilde{\omega}d\tilde{\omega}\;</MATH>}}, i w ten sposób wykorzystując to do wzoru {{LinkWzór|7.149}}:
{{CentrujWzór|<MATH>\delta \overline{h}_{xx}^{all}={{2G\Omega^2ml_0R}\over{c^4}}2\pi\int_z^{\infty}\sigma\cos\left[\Omega\left({{r}\over{c}}-t\right)-\phi\right]dr\;</math>|7.150}}
Całka {{LinkWzór|7.150}} jest całką rozbieżną, gdy przyjmować będziemy σ jako stałą, więc σ możemy uczynić jako funkcję σ(z)e{{Sup|ε r}} i pozwoleniu by przy scałkowaniu dla ε dążyło do zera, i w ten sposób mamy całkę do policzenia:
{{CentrujWzór|<MATH>\delta \overline{h}_{xx}^{all}={{4\pi G\Omega^2ml_0R}\over{c^4}}\lim_{\epsilon\rightarrow 0}\int_z^{\infty}\sigma(z)e^{-\epsilon r}\cos\left[\Omega\left({{r}\over{c}}-t\right)-\phi\right]dr\;</MATH>|7.151}}
Wyznaczmy teraz dokładną całkę występującą we wzorze {{LinkWzór|7.151}} po prawej jego stronie:
{{CentrujWzór|<MATH>\int_z^{\infty}e^{-\epsilon r}\cos\left[\Omega\left({{r}\over{c}}-t\right)-\phi\right]dr=
-{{1}\over{\epsilon}}e^{-\epsilon r}\cos\left[\Omega\left({{z}\over{c}}-t\right)-\phi\right]\Bigg|_{z}^{\infty}-{{\Omega}\over{c\epsilon}}\int_z^{\infty}e^{-\epsilon r}\sin\left[\Omega\left({{r}\over{c}}-t\right)-\phi\right]dr=\;</MATH>{{Br}}<MATH>={{1}\over{\epsilon}}e^{-\epsilon z}\cos\left[\Omega\left({{z}\over{c}}-t\right)-\phi\right]-{{\Omega}\over{c\epsilon^2}}e^{-\epsilon r}\sin\left[\Omega\left({{r}\over{c}}-t\right)-\psi\right]-{{\Omega^2}\over{c^2\epsilon^2}}\int_z^{\infty}e^{-\epsilon r}\cos\left[\Omega\left({{r}\over{c}}-t\right)-\phi\right]dr\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow
{{c^2\epsilon^2+\Omega^2}\over{c^2\epsilon^2}}\int_z^{\infty}e^{-\epsilon r}\cos\left[\Omega\left({{r}\over{c}}-t\right)-\phi\right]dr={{1}\over{\epsilon}}e^{-\epsilon z}\cos\left[\Omega\left({{z}\over{c}}-t\right)-\phi\right]-{{\Omega}\over{c\epsilon^2}}e^{-\epsilon z}\sin\left[\Omega\left({{z}\over{c}}-t\right)-\phi\right]\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\int_z^{\infty}e^{-\epsilon r}\cos\left[\Omega\left({{r}\over{c}}-t\right)-\phi\right]dr={{c^2\epsilon}\over{c^2\epsilon^2+\Omega^2}}e^{-\epsilon z}\cos\left[\Omega\left({{z}\over{c}}-t\right)-\phi\right]-{{c\Omega}\over{c^2\epsilon^2+\Omega^2}}e^{-\epsilon z}\sin\left[\Omega\left({{z}\over{c}}-t\right)-\phi\right]</MATH>|7.152}}
Całkę policzoną w punkcie {{LinkWzór|7.152}} podstawiamy do wzoru {{LinkWzór|7.151}}, i w ostatecznych rozrachunkach dostajemy:
{{CentrujWzór|<MATH>\delta \overline{h}_{xx}^{all}=-{{4\pi G\Omega \sigma ml_0R}\over{c^3}}\sin\left[\Omega\left({{z}\over{c}}-t\right)-\phi\right]\;</MATH>|7.153}}
Aby porównać pole {{LinkWzór|7.153}} z falą padającą {{LinkWzór|7.135}} należy to przedostatnie napisać w cechowaniu TT, bo ono pierwotnie nie było w tym cechowaniu, otrzymujemy:
{{CentrujWzór|<MATH>\delta\overline{h}_{xx}^{TT}=-\delta\overline{h}_{yy}^{TT}=-{{2\pi G\Omega \sigma ml_0R}\over{c^3}}\sin\left[\Omega\left({{z}\over{c}}-t\right)-\phi\right]\;</MATH>|7.154}}
Wypdadkowa fala grawitacyjna piszemy jako sumę fali grawitacyjnej padającej {{LinkWzór|7.135}} na układ oscylatorów fali grawitacyjnej wytwarzanej przez układ oscylatorów w płaszczyźnie {{LinkWzór|7.154}} i w rezultacie otrzymujemy:
{{CentrujWzór|<MATH>\overline{h}_{xx}^{wypadkowe}=\overline{h}_{xx}^{TT}+\delta \overline{h}^{TT}_{xx}=A\cos \left[\Omega\left({{z}\over{c}}-t\right)\right]-{{2\pi G\Omega \sigma ml_0R}\over{c^3}}\sin\left[\Omega\left({{z}\over{c}}-t\right)-\phi\right]=\;</MATH>{{Br}}<MATH>=
A\cos\left[\Omega\left({{z}\over{c}}-t\right)-\psi+\psi\right]-{{2\pi G\Omega\sigma m l_0 R}\over{c^3}}\sin\left[\Omega\left({{z}\over{c}}-t\right)-\psi+\psi-\phi\right]=\;</MATH>{{Br}}<MATH>=
A\cos\left[\Omega\left({{z}\over{c}}-t\right)-\psi\right]\cos\psi-A\sin\left[\Omega\left({{z}\over{c}}-t\right)-\psi\right]\sin\psi-\;</MATH>{{Br}}<MATH>-{{2\pi G\Omega\sigma m l_0 R}\over{c^3}}\Bigg\{\sin\left[\Omega\left({{z}\over{c}}-t\right)-\psi\right]\underbrace{\cos(\psi-\phi)}_{\cos\psi\cos \phi+\sin\psi\sin\phi}+\cos\left[\Omega\left({{z}\over{c}}-t\right)-\psi\right]\underbrace{\sin(\psi-\phi)}_{\sin\psi\cos\phi-\cos\psi\sin\phi}\Bigg\}\;</MATH>|7.155}}
Powyższe obliczenia będziemy przeprowadzali dla małych wielkości R, czyli z dokładnością wyrazów pierwszego rzędu względem R, wtedy według powyższych obliczeń przeprowadzonych w punkcie {{LinkWzór|7.155}} możemy napisać :
{{CentrujWzór|<MATH>\overline{h}_{xx}^{wypadkowe}\simeq A\cos\psi\left(1+{{2\pi G\Omega \sigma ml_0R}\over{c^3}}\sin\phi\right)\cos\left[\Omega\left({{z}\over{c}}-t\right]-\psi\right)+\;</MATH>{{Br}}<MATH>+\sin\left[\Omega\left({{z}\over{c}}-t\right)-\psi\right]\left(A\sin\psi-{{2\pi G\Omega\sigma l_0R }\over{c^3}}\cos\psi\cos\phi\right)
</MATH>|7.156}}
W powyższych obliczeniach należy przyjąć zachodzący warunek na kąt ψ:
{{CentrujWzór|<MATH>A\sin\psi-{{2\pi G\Omega\sigma l_0R }\over{c^3}}\cos\psi\cos\phi=0\Rightarrow\operatorname{tg}\psi={{2\pi G\Omega \sigma l_0R}\over{Ac^3}}\cos\phi\;</MATH>|7.157}}
W ten sposób otrzymujemy zależność na tensor {{Formuła|<MATH>\overline{h}_{xx}^{wypadkowe}\;</MATH>}}, który przepisujemy z {{LinkWzór|7.156}} przy zachodzącej tożsamości {{LinkWzór|7.157}}:
{{CentrujWzór|<MATH>\overline{h}_{xx}^{wypadkowe}\simeq A\left(1+{{2\pi G\Omega \sigma ml_0R}\over{c^3}}\sin\phi\right)\cos\left[\Omega\left({{z}\over{c}}-t\right)-\psi\right]\;</MATH>|7.158}}
Wypadkowym efektem przy przejściu fali grawitacyjnej jest zmniejszenie jego amplitudy patrząc na {{LinkWzór|7.158}} o wartość (R ujemne według {{LinkWzór|7.76}}):
{{CentrujWzór|<MATH>\delta A={{2\pi G\Omega \sigma ml_0R}\over{c^3}}\sin\phi\;</MATH>|7.159}}
Zmniejszenie amplitudy o wartość {{LinkWzór|7.159}} towarzyszy temu zmiana strumienia energii opisanej przez {{LinkWzór|7.140}}, po skorzystaniu wzorów {{LinkWzór|7.76}} i z {{LinkWzór|7.74}}, co w rezultacie daje mam zastanawiający wynik:
{{CentrujWzór|<MATH>{{\delta F}\over{\delta A}}={{-{{1}\over{2}}\sigma m\gamma\Omega^2R^2}\over{{{2\pi G\Omega \sigma ml_0R}\over{c^3}}\sin\phi}}=-{{\gamma\Omega Rc^3}\over{4\pi Gl_0\sin\phi}}=-{{\gamma\Omega c^3}\over{4\pi Gl_0}}{{R}\over{\sin\phi}}={{\gamma\Omega c^3}\over{4\pi Gl_0}}{{l_0A\Omega^2}\over{4\gamma\Omega}}={{c^3}\over{16\pi G}}\Omega^2A\;</MATH>|7.160}}
Wzór {{LinkWzór|7.160}} możemy przecałkować względem argumentu A, i w ten sposób otrzymujemy całkowity strumień energii F w zależności od amplitudy fali A i częstości Ω:
{{CentrujWzór|<MATH>F={{c^3}\over{32\pi G}}\Omega^2A^2\;</MATH>|7.161}}
Średnią po kwadracie dla amplitudy A możemy napisać wzorem poniżej, a także po podstawieniu tego do {{LinkWzór|7.161}} mając na myśli tylko dwie niezależne składowe rozważanego tensora:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\langle{\overline{h}_{xx}^{TT}}^2\rangle={{1}\over{2}}A^2\;</MATH>|7.162}}
| 2 = {{CentrujWzór|<MATH>F={{c^3}\over{32\pi G}}\Omega^2\langle\overline{h}_{\mu\nu}^{TT}{\overline{h}^{\mu\nu}}^{TT}\rangle\;</MATH>|7.163}}
}}
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
e7jiu38cumrlo1cc7ei7ketqlys8x7t
Ogólna teoria względności/Tensor gęstości energii-pędu
0
16273
558856
513505
2026-10-07T13:53:40Z
Persino
2851
558856
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tensor gęstości energii-pędu poznaliśmy w podpunktach: {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} (sygnatura dodatnia) i {{LinkWzór|1.45|Wprowadzenie do ogólnej teorii względności}} (sygnatura ujemna), bez uzasadnienia jego definicji. Tutaj omówimy składowe tego tensora oraz jego właściwości.
== Gęstość masy w danym punkcie zależna od prędkości ==
Gęstość materii w pewnym punkcie, a ściślej - w infinitezymalnym otoczeniu danego punktu - jest zależna od prędkości materii względem obserwatora i rośnie wraz ze wzrostem prędkości. Gdy dane ciało spoczywa, to jego gęstość jest najmniejsza; gęstość tę nazywa się gęstością spoczynkową.
Wzrost gęstość w danym infinitezymalnym obszarze wraz z prędkością jest związany ze wzrostem masy tego obszaru oraz skróceniem długości l w kierunku, w którym ciało się porusza.
{{CentrujWzór|<MATH>\rho={{m}\over{V}}={{m}\over{S l}}={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}{{1}\over{S l_0\sqrt{1-{{v^2}\over{c^2}}}}}={{m_0}\over{Sl_0}}{{1}\over{1-{{v^2}\over{c^2}}}}=\rho_0\gamma^2\;</MATH>|2.1}}
Zatem gęstość zależy od gęstości spoczynkowej i od prędkości płynu w tym samym punkcie na podstawie przeprowadzonych obliczeń w punkcie {{LinkWzór|2.1}}:
{{CentrujWzór|<MATH>\rho=\rho_0\gamma^2\;</MATH>|2.2}}
* gdzie {{Formuła|<MATH>\gamma={{1}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\;</MATH>}} jest to pewna wielkość, która jest zależna od wartości prędkości danej cząstki płynu (w danym punkcie), która często występuje w szczególnej teorii względności.
== Koncentracja cząstek w danym punkcie zależna od prędkości ==
Koncentracja cząstek jest to liczba cząstek w jednostce objętości wyrażona jako iloraz liczby cząstek przez jej objętość zajmowaną przez nie. Tak jak zauważyliśmy przy liczeniu gęstości w danym punkcie, koncentracja cząstek w danym punkcie, który się porusza się z prędkością v jest:
{{CentrujWzór|<MATH>n={{N}\over{V}}={{N}\over{Sl}}={{N}\over{Sl_0\sqrt{1-{{v^2}\over{c^2}}}}}=
{{N}\over{S l_0}}{{1}\over{\sqrt{1-{{v^2}\over{c^2}}}}}=n_0\gamma</MATH>|2.3}}
Koncentracja cząstek w danym punkcie jest dana wzorem względem koncentracji spoczynkowej, tzn. gdy dana cząstka porusza się z prędkością zerową:
{{CentrujWzór|<MATH>n=n_0\gamma\;</MATH>|2.4}}
Definicja funkcji γ jest taka, że ona jest zależna od wartości prędkości cząstki, ale jego definicję już wcześniej pokazano w poprzednim rozdziale.
== Prawo zachowania ilości cząstek ==
Prawo ciągłości dla koncentracji cząstek w zależności od prędkości danej cząstki płynu jest zdefiniowana wzorem podobnym do {{LinkWzór|2.5}} dla ściśle określonego punktu:
{{CentrujWzór|<MATH>{{\partial n}\over{\partial t}}+\operatorname{div}(n\vec{v})=0</MATH>|2.5}}
Jeśli zdefiniujemy współrzędną czasową jako iloczyn prędkości światła i czasu, co zapisujemy x{{Sub|0}}=ct, to czterowektor koncentracji na podstawie wzoru {{LinkWzór|2.5}} wyraża się wzorem poniżej. Widzimy, że element czasowy czterowektora prędkości jest równe koncentrancji cząsteczek z dokładnością do stałej, a elementy przestrzenne są równe iloczynowi koncentracji cząsteczek przez i-tą współrzędną danej prędkości w danym punkcie dla płynu:
{{CentrujWzór|<MATH>N^{\mu}=(n c,nv^i)\;</MATH>|2.6}}
Po wprowadzeniu definicji współrzędnej czasowej i definicji tensora koncentracji {{LinkWzór|2.6}}, to równanie ciągłości {{LinkWzór|2.5}} zapisujemy w sposób równoważny wedle:
{{CentrujWzór|<MATH>{N^{\mu}}_{,\mu}=0</MATH>|2.7}}
Zdefiniujmy tensor koncentracji, poprzez koncentrację spoczynkową n{{Sub|0}} i przez czteroprędkość u{{Sup|μ}}, wedle:
{{CentrujWzór|<MATH>N^{\mu}=cn_0u^{\mu}\;</MATH>|2.8}}
Udowodnijmy, że ta definicja jest równoważna z wcześniejszą definicją tensora koncentracji N{{Sup|μ}}. Najpierw udowodnijmy przejście od {{LinkWzór|2.8}} do {{LinkWzór|2.6}} dla μ=0, czyli dla elementu czasowego wspomnianego tensora.
{{CentrujWzór|<MATH>N^0=c n_0 u^{0}=c n_0{{cdt}\over{cdt\sqrt{1-{{v^2}\over{c^2}}}}}=c{{n_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}=c n</MATH>|2.9}}
a teraz gdy 0≠ μ=i, udowodnijmy przejście od {{LinkWzór|2.8}} do {{LinkWzór|2.6}} dla tego ostatniego przypadku, czyli dla współrzędnych przestrzennych ostatnio wspomnianego czterowektora prędkości:
{{CentrujWzór|<MATH>N^i=c n_0 u^i=c n_0{{dx^i}\over{cdt\sqrt{1-{{v^2}\over{c^2}}}}}=c n_0 v^i {{1}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}=n_0v^i\gamma=nv^i</MATH>|2.10}}
Na podstawie obliczeń {{LinkWzór|2.9}} i {{LinkWzór|2.10}} udowodniliśmy, że koncentracja wyrażona tymi wzorami są ze sobą równoważne.
'''Co kończy dowód.'''
Jeśli zachodzi warunek {{LinkWzór|2.7}} przy definicji tensora koncentracji cząstek {{LinkWzór|2.8}}, to zachodzi również, gdy pominiemy stałą c:
{{CentrujWzór|<MATH>N^{\mu}=n_0 u^{\mu}\;</MATH>|2.11}}
Definicję {{LinkWzór|2.11}} przyjmijmy jako ostateczną definicję tensora koncentracji cząstek, który również spełnia warunek {{LinkWzór|2.7}}.
== W przestrzeniach Minkowskiego prawo zachowania energii i pędu ==
Wyprowadzimy tutaj prawo zachowania lokalne energii i pędu, a także wyprowadzimy wzór ogólny na tensor gęstości energii-pędu.
=== Lokalne prawo zachowania masy relatywistycznej czy energii relatywistycznej ===
Prawo ciągłości ilości masy materii (energii) jest wyrażona poprzez wzór poniżej, którego tutaj nie wyprowadzamy, co jest tematem mechaniki teoretycznej. Przedstawia się w zależności od gęstości płyny w danym punkcie względem czasu i położenia, jeśli dany punkt, którego dotyczy lokalne prawo ciągłości porusza się z prędkości {{Formuła|<MATH>\vec{v}\;</MATh>}}.
{{CentrujWzór|<MATH>{{\partial\rho}\over{\partial t}}+\operatorname{div}(\rho\vec{v})=0\;</MATH>|2.12}}
* gdzie {{Formuła|<MATH>\rho\;</MATH>}} jest to gęstość cząstki płynu w danym punkcie wyrażona przez wzór {{LinkWzór|2.2}} i która zależy od wartości prędkości i gęstości spoczynkowej masy.
* {{Formuła|<MATH>\vec{v}\;</MATH>}} to jej prędkość chwilowa danej cząstki.
Zdefiniujmy współrzędną czasową x{{Sub|0}} jako iloczyn prędkości światła i czasu, co zapisujemy jako x{{Sub|0}}=c t, a także zdefiniujmy gęstość prądu masy jako pewien tensor:
{{CentrujWzór|<MATH>j^{0\nu}=(\rho c^2,c\rho v^j)\;</MATH>|2.13}}
To prawo ciągłości {{LinkWzór|2.12}} na podstawie definicji gęstości prądu {{LinkWzór|2.13}} zapisujemy w bardzo prosty sposób:
{{CentrujWzór|<MATH>\partial_{\nu}j^{0\nu}=0\;</MATH>{{Tekst|, lub jako:}}<MATH>{j^{0\nu}}_{,\nu}=0\;</MATH>|2.14}}
Z definiujmy jako czterowektor prądu względem czterowektora prędkości jaki dany punkt posiada, i posiadający gęstość spoczynkową ρ{{Sub|0}}:
{{CentrujWzór|<MATH>j^{0\nu}=c^2\rho_0 u^0u^{\nu}\;</MATH>|2.15}}
Udowodnijmy przechodniość przestawienia {{LinkWzór|2.15}} do {{LinkWzór|2.13}} dla ν=0 czteroprądu kontrawariantnego czasowego (zerowego):
{{CentrujWzór|<MATH>j^{00}=c^2\rho_0{{cdt}\over{cdt\sqrt{1-{{v^2}\over{c^2}}}}}{{cdt}\over{cdt\sqrt{1-{{v^2}\over{c^2}}}}}=c^2{{\rho_0}\over{1-{{v^2}\over{c^2}}}}=c^2\rho_0\gamma^2=c^2\rho\;</MATH>|2.16}}
A teraz udowodnijmy znów przechodniość przestawienia {{LinkWzór|2.8}} do {{LinkWzór|2.6}} dla elementów przestrzennych czteroprądu prądu j{{Sub|μ}} , tzn. gdy jest spełnione 0≠μ=i:
{{CentrujWzór|<MATH>j^{0j}=c^2\rho_0 u^0u^j=c^2\rho_0{{cdt}\over{cdt\sqrt{1-{{v^2}\over{c^2}}}}}{{dx^j}\over{cdt\sqrt{1-{{v^2}\over{c^2}}}}}=c^2{{\rho_0}\over{1-{{v^2}\over{c^2}}}}{{v^j}\over{c}}=c\rho v^j\;</MATH>|2.17}}
Zatem elementy czterowektora według {{LinkWzór|2.9}} (elementy czasowe) i {{LinkWzór|2.17}} (elementy przestrzenne) czyli wzór na definicję czteroprądu {{LinkWzór|2.8}}, który jest przedstawiony w zależności od czteropędu cząstki i gęstości spoczynkowej jest równoważny z definicją początkową {{LinkWzór|2.13}}.
'''Co kończy dowód.'''
=== Lokalne prawo zachowania pędu ===
Prawo ciągłości ilości jakieś współrzędnej pędu materii (energii) jest wyrażona poprzez wzór poniżej, którego tutaj nie wyprowadzamy, co jest tematem mechaniki teoretycznej. Przedstawia się w zależności od gęstości płyny w danym punkcie względem czasu i położenia, jeśli dany punkt, którego dotyczy lokalne prawo ciągłości porusza się z prędkości {{Formuła|<MATH>\vec v\;</MATH>}}.
{{CentrujWzór|<MATH>{{\partial \mathfrak{p}^i}\over{\partial t}}+\operatorname{div}(\mathfrak{p}^i\vec{v})=0\;</MATH>|O1}}
* gdzie gęstość pędu {{Formuła|<MATH>p^i\;</MATH>}} jest to i-ta współrzędna gęstości pędu cząstki płynu w danym punkcie.
* {{Formuła|<MATH>\vec{v}\;</MATH>}} to jej prędkość chwilowa danej cząstki.
Zdefiniujmy współrzędną czasową x{{Sub|0}} jako iloczyn prędkości światła i czasu, co zapisujemy jako x{{Sub|0}}=c t, a także zdefiniujmy gęstość prądu masy jako pewien tensor:
{{CentrujWzór|<MATH>j^{i}=(\mathfrak{p}^ic,\mathfrak{p}^i\vec v)\;</MATH>|O2}}
To prawo ciągłości {{LinkWzór|O1}} na podstawie definicji gęstości prądu {{LinkWzór|O2}} zapisujemy w bardzo prosty sposób:
{{CentrujWzór|<MATH>\partial_{\nu}j^{i\nu}=0\;</MATH>{{Tekst|, lub jako:}}<MATH>{j^{i\nu}}_{,\nu}=0\;</MATH>|O3}}
Z definiujmy jako czterowektor prądu względem:
{{CentrujWzór|<MATH>j^{i\nu}=c^2\rho_0 u^iu^{\nu}\;</MATH>|O4}}
Udowodnijmy przechodniość przestawienia {{LinkWzór|O4}} do {{LinkWzór|O2}} dla ν=0 czteroprądu kontrawariantnego czasowego (zerowego):
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>j^{i0}=c^2\rho u^i=c\mathfrak{p}^i\;</MATH>|O5}}
| 2 = {{CentrujWzór|<MATH>j^{ij}=\rho v^iv^{j}=\mathfrak{p}^i\vec v\;</MATH>|O6}}
}}
Zatem na podstawie {{LinkWzór|O5}} i {{LinkWzór|O6}} wzór {{LinkWzór|O4}} jest prawdziwy i równoważny wzorowi {{LinkWzór|O2}}.
=== Tensor gęstości energii-pędu i jego lokalna zachowawczość ===
Zdefiniujmy tensor gęstości energii-pędu przy pomocy czterowektora prądu {{LinkWzór|2.15}} (wynikający z zasady zachowania energii relatywistycznej) i {{LinkWzór|O4}} (wynikający z zasady zachowania współrzędnej pędu):
{{CentrujWzór|<MaTH>T^{\mu\nu}=j^{\mu\nu}=\rho_0 c^2 u^{\mu}u^{\nu}\;</MATH>|2.18}}
Jeśli prawo ciągłości zachodzi dla j{{Sup|νμ}} {{LinkWzór|2.14}} dla energii relatywistycznej i {{LinkWzór|O3}} dla pędu relatywistycznego, to również zachodzi dla T{{Sup|νμ}} {{LinkWzór|2.18}}, a zatem mamy lokalną zasada zachowania dla tensora gęstości energii-pędu:
{{CentrujWzór|<MATH>{T^{\mu\nu}}_{,\nu}=0\;</MATH>|2.19}}
Tensor gęstości energii definiujemy jako strumień czteropędu względem powierzchni stałego x{{Sup|α}}. Zobaczymy, czy nasza definicja tensora energii-pędu opowiedziana przed chwilą jest zgodna z naszymi oczekiwaniami, zatem:
* T{{Sup|00}} jest strumieniem gęstości energii przepływająca przez powierzchnię t=const, co jest gęstością energii.
* a T{{Sup|0j}} jest strumieniem gęstości energii przepływająca przez powierzchnię x{{Sup|j}}.
* T{{Sup|i0}} jest i-tą współrzędną strumienia gęstości pędu przepływająca przez powierzchnię t=const, co jest i-tą współrzędną gęstości pędu.
* a T{{Sup|ij}} jest strumieniem i-tą gęstości pędu przepływająca przez powierzchnię x{{Sup|j}}.
Zatem w ogólnym przypadku T{{Sup|μν}} definiujemy jako strumień μ-tej współrzędnej tego gęstości pędu przez powierzchnię ν.
Tensor gęstości energii w postaci bez-wskaźnikowej definiujemy jako iloczyn tensora pędu cząstki relatywistycznej i tensora strumienia cząstek {{LinkWzór|2.6}}(lub {{LinkWzór|2.8}}) w sposób:
{{CentrujWzór|<math>\mathbf{T}=\mathbf{p}\cdot\mathbf{N}\;</MATH>|2.20}}
Biorąc za definicję czteropędu {{LinkWzór|1.8|Wprowadzenie_do_ogólnej_teorii_względności}}, a także definicję tensora koncentracji {{LinkWzór|2.8}}, zatem tensor {{LinkWzór|2.20}} definiujemy w postaci wskaźnikowej przez:
{{CentrujWzór|<MATH>T^{\mu\nu}=m_0cu^{\mu}cn_0u^{\nu}=m_0n_0c^2u^{\mu}u^{\nu}=\rho_0 c^2u^{\mu}u^{\nu}\;</MATH>|2.21}}
Równanie ciągłości dla gęstości energii (pędu), przy stałym pierwszym wskaźniku w tensorze energii-pędu T{{Sup|μν}}, piszemy wedle zasady:
{{CentrujWzór|<math>{{\partial}\over{\partial t}}{{T^{\mu 0}}\over{c}}+\nabla_i T^{\mu i}=0\;</MATH>|2.22}}
Równość {{LinkWzór|2.22}} możemy zapisać w postaci rozwiniętej zapisanej przy pomocy różniczkowania względem każdej zmiennej kontrawariantnej:
{{CentrujWzór|<MATH>{{\partial T^{\mu 0}}\over{d(ct)}}+{{\partial T^{\mu 1}}\over{dx^1}}+{{\partial T^{\mu 2}}\over{dx^2}}+{{\partial T^{\mu 3}}\over{dx^3}}=0\;</MATH>|2.23}}
Równość {{LinkWzór|2.23}} może być zapisana w sposób ogólny zapisanej w sposób tensorowy korzystając przy tym z definicji tensora położenia {{LinkWzór|1.2|Wprowadzenie_do_ogólnej_teorii_względności}} w sposób {{LinkWzór|2.19}}.
Tensor gęstości energii jest symetryczny ze względu na kontrawariantne wskaźniki (u góry tensora) przy definicji podwójnie kontrawariantnego tensora gęstości energii {{LinkWzór|2.21}}, zatem ma miejsce własność:
{{CentrujWzór|<MATH>T^{\mu\nu}=T^{\nu\mu}\;</MATH>|2.25}}
Równanie {{LinkWzór|2.19}} zawiera w sobie równanie obrazujące lokalną zasadę zachowania energii i pędu.
=== Ogólny wzór na tensor gęstości energii-pędu w układach płaskich (lokalnie płaskich) z lokalnością stałego ciśnienia i prędkości ===
Skorzystajmy ze wzoru {{LinkWzór|2.18}} na tensor energii-pędu i lokalnej zachowawczości tensora energii-pędu {{LinkWzór|2.19}} wiedząc, że ciało porusza się po linii prostej w układzie płaskim, bo {{LinkWzór|1.70|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}}, a także wiedząc, że pochodne ciśnienia względem współrzędnych tensora położenia są równe zero w układzie o lokalnie stałym ciśnieniu, bo w nim ciśnienie nie wpływa na ruch ciała. W poniższych obliczeniach znak u góry to sygnatura dodatnia, a u dołu ujemna. Oznaczając {{LinkWzór|2.18}} primem, wtedy:
{{CentrujWzór|<MATH>0={T^{'\mu\nu}}_{,\nu}=(\rho_0 c^2u^{\mu}u^{\nu})_{,\nu}=\left[(\rho_0 c^2+p)u^{\mu}u^{\nu}\mp p\eta^{\mu\nu}\right]_{,\nu}+(\pm p\eta^{\nu\mu}-pu^{\mu}u^{\nu})_{,\nu}=\;{T^{\mu\nu}}_{,\nu}+ p_{,\nu}(\pm \eta^{\mu\nu}-u^{\mu}u^{\nu})-p(u^{\mu}u^{\nu})_{,\nu}=</MATH>{{Br}}<MATH>={T^{\mu\nu}}_{,\nu}+p_{,\nu}(\pm\eta^{\mu\nu}-u^{\mu}u^{\nu})={T^{\mu\nu}}_{,\nu}</MATH>|A1}}
Zatem na podstawie obliczeń {{LinkWzór|A1}} tensor gęstości energii-pędu jest równy wzorowi:
{{CentrujWzór|<MATH>T^{\mu\nu}=(\rho_0 c^2+p)u^{\mu}u^{\nu}\mp p\eta^{\mu\nu}</MATH>|A2}}
Zatem tensor energii-pędu podany wzorem {{LinkWzór|A2}} spełnia lokalność zachowawczość energii-pędu {{LinkWzór|2.19}}, która jak widzimy spełnia też {{LinkWzór|2.25}} w obranym układzie.
== Przejście od układu współrzędnych lokalnie płaskiego do zakrzywionej czasoprzestrzeni ==
Tensor gęstości energii w układzie krzywoliniowym w zależności od tensora energii w przestrzeni Minkowskiego zapisujemy wedle rachunku tensorowego, w których względem zmiany układu współrzędnych czasoprzestrzeni z układu lokalnie płaskiego do krzywoliniowego wiedząc, że tylko on zależy od tensora położenia i również tensora metrycznego, zapisujemy w sposób:
{{CentrujWzór|<MATH>{\overline{T}}^{\mu\nu}=T^{\alpha\beta}{\overline{\Lambda}^{\mu}}_{\alpha}{\overline{\Lambda}^{\nu}}_{\beta}\;</MATH>|2.26}}
Wyznaczmy pochodną kowariantną lewej strony wyrażenia {{LinkWzór|2.26}}, korzystając przy tym z lokalnego zachowania energii {{LinkWzór|1.49|Wprowadzenie do ogólnej teorii względności}}, zatem wtedy:
{{CentrujWzór|<Math>{{\overline{T}}^{\mu\nu}}_{;\nu}=
{{T}^{\alpha\beta}}_{;\gamma}{{\Lambda}^{\gamma}}_{\nu}{{\overline{\Lambda}}^{\mu}}_{\alpha}{{\overline{\Lambda}}^{\nu}}_{\beta}=
{{T}^{\alpha\beta}}_{,\gamma}{{\Lambda}^{\gamma}}_{\nu}{{\overline{\Lambda}}^{\mu}}_{\alpha}{{\overline{\Lambda}}^{\nu}}_{\beta}=
{{T}^{\alpha\beta}}_{,\gamma}\left({{\Lambda}^{\gamma}}_{\nu}{{\overline{\Lambda}}^{\nu}}_{\beta}\right){{\overline{\Lambda}}^{\mu}}_{\alpha}=
{{T}^{\alpha\beta}}_{,\gamma}{\delta^{\gamma}}_{\beta}{{\overline{\Lambda}}^{\mu}}_{\alpha}={{T}^{\alpha\beta}}_{,\beta}{{\overline{\Lambda}}^{\mu}}_{\alpha}= 0\cdot {{\overline{\Lambda}}^{\mu}}_{\alpha}=0\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow {{\overline{T}}^{\mu\nu}}_{;\nu}=0\;</MATH>|2.27}}
Tensor gęstości energii (literka z górnym podkreśleniem) jest tensorem w krzywoliniowym układzie współrzędnym, a nie z pokreśleniem w lokalnie płaskiej przestrzeni Minkowskiego, skorzystaliśmy tutaj, że w układzie lokalnie płaskim pochodna kowariantna jest równa zwykłej pochodnej cząstkowej dla tensora gęstości bez podkreślenia i dlatego zastąpiliśmy średnik przez przecinek. Również skorzystaliśmy, że zwykła pochodna cząstkowa ta w układzie Minkowskiego tensora gęstości energii jest równa zero, stąd udowodniliśmy twierdzenie o zasadzie zachowania energii-pędu dla układów ogólnie zakrzywionych {{LinkWzór|1.50|Wprowadzenie do ogólnej teorii względności}}.
Tensor gęstości energii {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}}, ale dla przestrzeni Minkowskiego, w który obowiązuje tensor metryczny Minkowskiego bez zaniedbania ciśnienia p, go piszemy wzorem {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}}.
I udowodnijmy, że ten tensor dla układów lokalnie płaskich przechodzi w tensor gęstości energii dla układów ogólnie krzywoliniowych (zakrzywionych) {{LinkWzór|2.29}} i oznaczmy ten tensor z podkreśleniem (znak u góry to sygnatura dodatnia, a u dołu sygnatura ujemna):
{{CentrujWzór|<MaTH>{\overline{T}}^{\mu\nu}=T^{\alpha\beta}{\overline{\Lambda}^{\mu}}_{\alpha}{\overline{\Lambda}^{\nu}}_{\beta}=\left[\left(\rho_0 c^2+p\right)u^{\alpha}u^{\beta}\mp\eta^{\alpha\beta}p\right]{\overline{\Lambda}^{\mu}}_{\alpha}{\overline{\Lambda}^{\nu}}_{\beta}=\left(\rho_0 c^2+p\right){\overline{\Lambda}^{\mu}}_{\alpha}u^{\alpha}
{\overline{\Lambda}^{\nu}}_{\beta}u^{\beta}\mp p\eta^{\alpha\beta}{\overline{\Lambda}^{\mu}}_{\alpha}{\overline{\Lambda}^{\nu}}_{\beta}=\;</MATH>{{Br}}<MATH>=\left(\rho_0 c^2+p\right){\overline{u}}^{\mu}{\overline{u}}^{\nu}\mp{\overline{g}}^{\mu\nu}p\;</MATH>|2.29}}
Zatem udowodniliśmy, że tensor gęstości energii {{LinkWzór|2.29}} jest również słuszny nie tylko dla płaskiej przestrzeni Minkowskiego, ale również dla przestrzeni krzywoliniowych (zakrzywionej). Udowodnimy również, że jeśli {{LinkWzór|2.21}} spełnia warunek jako lokalną zasadę zachowania energii wedle {{LinkWzór|1.49|Wprowadzenie do ogólnej teorii względności}} (co udowodniliśmy dla układów posiadających ciśnienie o zaniedbywalnej wartości dla tensora gęstości energii-pędu {{LinkWzór|2.21}}, który to spełnia warunek {{LinkWzór|2.19}}) w układzie lokalnie płaskim, to również tensor gęstości energii-pędu napisanej w układzie krzywoliniowym (zakrzywionym) spełnia warunek {{LinkWzór|2.27}} na podstawie dowodu przejścia z układu Minkowskiego (który jest układem lokalnie płaskim) do układu krzywoliniowego (zakrzywionego).
== Płyny z uwzględnieniem zasad termodynamiki ==
Aby posługiwać wzorami opisującymi płyn, należy się posłużyć pierwszą zasadą termodynamiki, która przedstawia zmianę energii wewnętrznej układu w zależności od zmiany ciepła dostarczającego do ciała i pracy wykonanej nad układem przez zmianą objętości układu, przedstawiając je wzorem, z którego wyprowadzimy zmianę ciepła dostarczonego do ciała:
{{CentrujWzór|<MATH>\Delta U=\Delta Q-p\Delta V\Rightarrow\Delta Q=\Delta U+p\Delta V\;</MATH>|2.30}}
Wiadomo jednak, co jest oczywiste dla nas z definicji, że koncentracja cząsteczek wyrażona przez n napisaną poprzez liczbę cząstek należącej do układu N przez objętość V (w którym znajdują się cząstki), z którego wyznaczmy objętość układu zajmowanego przez nie w zależności od liczby cząstek i koncentracji. A potem wyznaczmy, jeśli zmiana koncentracji cząsteczek jest równa Δ n, to jaka jest zmiana objętości tego ciała przy stałej ilości cząsteczek N jakie układ zawiera.
{{CentrujWzór|<MATH>n={{N}\over{V}}\Rightarrow V={{N}\over{n}}\Rightarrow
\Delta V=-{{N}\over{n^2}}\Delta n\;</MATH>|2.31}}
Tutaj skorzystamy z postulatu Einsteina, o równoważności masy i energii ciała w postaci E=m c{{Sup|2}}, to energia układu w zależności od gęstości ciała i jego objętości wyrazimy wedle wzoru poniżej, z którego wyznaczymy zmianę energii całkowitej ciała:
{{CentrujWzór|<MATH>E=\rho_0 c^2 V\Rightarrow
\Delta E=\rho_0 c^2\Delta V+c^2V\Delta\rho_0\;</MATH>|2.32}}
Wykorzystując wzór na zmianę energii wewnętrznej ciała wedle końcowych obliczeń w wynikowym wzorze {{LinkWzór|2.32}}, i podstawiamy to do wzoru {{LinkWzór|2.30}}, wtedy zmiana ciepła dostarczonego do ciała jest wyrażona:
{{CentrujWzór|<MATH>\Delta Q=\rho_0 c^2\Delta V+c^2V\Delta\rho_0+p\Delta V
\Rightarrow\Delta Q=c^2V\Delta \rho_0+(\rho_0 c^2+p)\Delta V\;</MATH>|2.33}}
Teraz skorzystamy z definicji koncentracji {{LinkWzór|2.31}} i podstawimy go do końcowego wzoru w drugim wyrazie za zmianę objętości ciała, wtedy dostajemy wzór na tą samą zmianę ciepła:
{{CentrujWzór|<MATH>\Delta Q=c^2{{N}\over{n}}\Delta \rho_0-(\rho_0 c^2+p){{N}\over{n^2}}\Delta n\;</MATH>|2.34}}
Z definiujmy ciepło przypadająca na jeden cząstkę, który jest stosunkiem ciepła dostarczonego do ciała przez liczbę cząstek posiadanej przez ciało:
{{CentrujWzór|<MATH>q={{Q}\over{N}}\;</MATH>|2.35}}
Wykorzystując definicję ciepła przypadającego na jedną jednostkę czyli parametru q z definiowanego w punkcie {{LinkWzór|2.35}}, przy stałej ilości cząstek w układzie, wtedy mamy wedle wzoru {{LinkWzór|2.34}} następną równoważną równość:
{{CentrujWzór|<MATH> N\Delta q=c^2{{N}\over{n}}\Delta \rho_0-(\rho_0 c^2+p){{N}\over{n^2}}\Delta n\;</MATH>|2.36}}
Poprzednie równanie mnożymy przez {{Formuła|<MATH>{{n}\over{N}}\;</MATH>}}, wtedy dostajemy inną postać równania {{LinkWzór|2.36}}:
{{CentrujWzór|<MATH>n\Delta q=c^2\Delta \rho_0-(\rho_0 c^2+p){{\Delta n}\over{n}}\;</MATH>|2.37}}
Obierzmy z definicji, że nΔ q=TΔ S, czyli zmiana ciepła dostarczonego do ciała jest równa iloczynowi temperatury i zmiany entropii posiadanej przez ciało, ależ mamy układy quasistatyczne w którym entropia pozostaje stała, to dochodzimy do wniosku, że zmiana entropii ciała jest równa zero, czyli zachodzi Δ S=0, a zatem ostateczny wzór ma się, jak po uwzględnieniu wzoru {{LinkWzór|2.37}} dla układów izotropowych (brak zmiany entropii całkowitej układu):
{{CentrujWzór|<MATH>c^2\Delta \rho_0-(\rho_0 c^2+p){{\Delta n}\over{n}}=0\;</MATH>|2.38}}
Ten wzór będziemy wykorzystywać podczas dowodu lokalnej zasady zachowania energii-pędu {{LinkWzór|1.49|Wprowadzenie do ogólnej teorii względności}} dla definicji tensora metrycznego {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}}.
== Dowód poprawności tensora gęstości energii-pędu ==
Weźmy pod lupę wzór na tensor gęstości energii-pędu {{LinkWzór|1.44|Wprowadzenie do ogólnej teorii względności}} słuszny w szczególnej teorii względności i wykorzystajmy lokalną zachowawczość energii-pędu {{LinkWzór|1.49|Wprowadzenie do ogólnej teorii względności}} i wstawiając ten pierwszy wzór do tego drugiego, dostajemy równość (tutaj niezależnie jaka sygnatura to wyjdzie to samo, bo sygnaturę ujemną można otrzymać z jej dodatniej z zwykłego podstawienia {{Formuła|<MATH>\eta^{\mu\nu}\rightarrow -\eta^{\mu\nu}\;</MATH>}}):
{{CentrujWzór|<MATH>\left[(\rho_0 c^2+p)u^{\alpha}u^{\beta}-\eta^{\alpha\beta}p\right]_{,\beta}=0\;</MATH>.|2.39}}
Z korzystamy tu z definicji tensora koncentracji zdefiniowanej w punkcie {{LinkWzór|2.11}} i tożsamości określającej lokalną zasadę zachowania liczby cząstek {{LinkWzór|2.7}}, wtedy lewą stronę wzoru {{LinkWzór|2.39}} możemy poprzekształcać:
{{CentrujWzór|<MATH>\left[(\rho_0c^2+p)u^{\alpha}u^{\beta}\right]_{,\beta}=\left[{{\rho_0c^2+p}\over{n_0}}u^{\alpha}n_0u^{\beta}\right]_{,\beta}=
\left[{{\rho_0c^2+p}\over{n}}u^{\alpha}\right]_{,\beta}n_0u^{\beta}+{{\rho_0c^2+p}\over{n_0}}u^{\alpha}\underbrace{(n_0 u^{\beta})_{,\beta}}_{=0}=\left[{{\rho_0c^2+p}\over{n_0}}u^{\alpha}\right]_{,\beta}n_0u^{\beta}\;</MATH>|2.40}}
Ponieważ η{{Sup|αβ}} jest macierzą, którego elementy są stałymi elementami tensora metrycznego, to jego pochodna zupełna względem jakikolwiek zmiennej jest równa zero:
{{CentrujWzór|<MATH>(p\eta^{\alpha\beta})_{,\beta}=p_{,\beta}\eta^{\alpha\beta}+p{\eta^{\alpha\beta}}_{,\beta}=p_{,\beta}\eta^{\alpha\beta}\;</MATH>|2.41}}
Wykorzystując tożsamość {{LinkWzór|2.41}}, a także wniosek wynikający z obliczeń {{LinkWzór|2.40}}, to wtedy lokalną zasada zachowania energii-pędu {{LinkWzór|2.39}} możemy zapisać:
{{CentrujWzór|<MATH>n_0u^{\beta}\left[{{\rho_0c^2+p}\over{n_0}}u^{\alpha}\right]_{,\beta}-p_{,\beta}\eta^{\alpha\beta}=0\;</MATH>|2.42}}
Pomnóżmy obie strony ostatniego równania {{LinkWzór|2.42}} przez element czerowektora prędkości kowariantnego u{{Sub|α}}, i wykorzystując własności tensora metrycznego Minkowskiego, otrzymujemy:
{{CentrujWzór|<MATH>n_0u^{\beta}u_{\alpha}\left[{{\rho_0c^2+p}\over{n_0}}u^{\alpha}\right]_{,\beta}-p_{,\beta}\eta^{\alpha\beta}u_{\alpha}=0\Rightarrow n_0u^{\beta}u_{\alpha}\left[{{\rho_0c^2+p}\over{n_0}}u^{\alpha}\right]_{,\beta}-p_{,\beta}u^{\beta}=0\;</MATH>|2.43}}
Wydzielmy przed nawias tensor czterowekora prędkości u{{Sup|β}} w wyrażeniu {{LinkWzór|2.43}} i potem wykorzystując z wiadomości analizy matematycznej o pochodnej iloczynu, dochodzimy do:
{{CentrujWzór|<MATH>u^{\beta}\left[n_0u_{\alpha}\left[{{\rho_0c^2+p}\over{n_0}}u^{\alpha}\right]_{,\beta}-p_{,\beta}\right]=0\Rightarrow u^{\beta}\left[n_0u_{\alpha}{u^{\alpha}}_{,\beta}{{\rho_0c^2+p}\over{n_0}}+n_0u_{\alpha}u^{\alpha}\left[{{\rho_0c^2+p}\over{n_0}}\right]_{,\beta}-p_{,\beta}\right]=0\;</MATH>|2.44}}
Wiadomo jednak, że zachodzi w ogólnej teorii względności, że z tożsamości {{LinkWzór|1.9|Wprowadzenie do ogólnej teorii względności}} i definicji czterowektora prędkości {{LinkWzór|1.7|Wprowadzenie do ogólnej teorii względności}} otrzymujemy wzór poniżej, z którego wyznaczymy jej pochodną cząstkową obu stron względem parametru x{{Sup|β}}:
{{CentrujWzór|<MATH>u_{\alpha}u^{\alpha}=1\Rightarrow u_{\alpha}{u^{\alpha}}_{,\beta}=0\;</MATH>|2.45}}
Na podstawie zachodzących tożsamości {{LinkWzór|2.45}}, wtedy równość {{LinkWzór|2.44}} przechodzi w bardziej uproszczoną równość:
{{CentrujWzór|<MATH>u^{\beta}\left[n_0\left[{{\rho_0c^2+p}\over{n_0}}\right]_{,\beta}-p_{,\beta}\right]=0\Rightarrow u^{\beta}\left[n_0{{((\rho_0)_{,\beta}c^2+p_{,\beta})n_0-(\rho_0c^2+p)(n_0)_{,\beta}}\over{n_0^2}}-p_{,\beta}\right]=0\;</MATH>|2.46}}
Po dalszych dokonanych przekształceniach i grupowaniach wyrazów w równości {{LinkWzór|2.46}}, dochodzimy do bardziej zgrabnej równości wynikowej:
{{CentrujWzór|<MATH>u^{\beta}\left[(\rho_0)_{,\beta}c^2+p_{,\beta}-{{\rho_0c^2+p}\over{n_0}}(n_0)_{,\beta}-p_{,\beta}\right]=0\Rightarrow u^{\beta}\left[(\rho_0)_{,\beta}c^2-{{\rho_0c^2+p}\over{n_0}}(n_0)_{,\beta}\right]=0\;</MATH>|2.47}}
Zakładamy, że czterowektor u{{Sup|β}} jest wielkością, którego składowe są w ogólności niezerowe, wtedy wyrażenie w nawiasie równości {{LinkWzór|2.47}} równa się zero.
{{CentrujWzór|<MATH>(\rho_0)_{,\beta}c^2-{{\rho_0c^2+p}\over{n_0}}(n_0)_{,\beta}=0\;</MATH>|2.48}}
Ostatecznie wzór {{LinkWzór|2.48}} zapiszmy w postaci różniczek upuszczając w nim różniczkę ∂x{{Sup|β}}, która leży w mianowniku tego równania:
{{CentrujWzór|<MATH>d\rho_0 c^2-(\rho_0c^2+p){{dn_0}\over{n_0}}=0\;</MATH>|2.49}}
Widzimy, że taki sam wzór otrzymaliśmy rozpatrując z zasad termodynamiki {{LinkWzór|2.38}} biorąc w tym wzorze zamiast różnic różniczki, i mamy pierwszy powód ze tensor gęstości energii-pędu jest poprawny.
Wykonajmy obliczenia pomocnicze na tensorach czteroprędkości dla {{Formuła|<MATH>0\neq\alpha=i\;</MATH>}}, i gdy prędkość cząstki w układzie szczególnej teorii względności jest o wiele mniejsza niż prędkość światła dla małych prędkości, zatem można powiedzieć, że można napisać dwie tożsamości przybliżone na współrzędne czterowektora prędkości i pochodną części przestrzennej czterowektora prędkości względem parametru x{{Sup|β}}, które są zapisane warunkami przybliżonymi poniżej. Należy pamiętać że pierwsza z tych tożsamości jest w ogólności nierówna zero.
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>u^i={{dx^i}\over{cdt\sqrt{1-{{v^2}\over{c^2}} } }}\simeq{{v}\over{c}}\simeq 0\;</MATH>|2.50}}
| 2 = {{CentrujWzór|<MATH>{u^i}_{,\beta}\simeq{{v_{,\beta}}\over{c}}\;</MATH>|2.51}}
}}
Przybliżenie {{LinkWzór|2.50}} jest słuszne gdy zachodzi {{Formuła|<MATH>{{v}\over{c}}<<1\;</MATH>}}, wtedy wyrażenie {{LinkWzór|2.42}}, korzystając z udowodnionych własności, możemy zapisać:
{{CentrujWzór|<MATH>n_0u^{\beta}\left[{{\rho_0 c^2+p}\over{n_0}}u^{i}\right]_{,\beta}-p_{,\beta}\eta^{i\beta}=0\Rightarrow n_0u^{\beta}\left({{\rho_0c^2+p}\over{n_0}}\right)_{,\beta}u^i+n_0u^{\beta}{{\rho_0c^2+p}\over{n_0}}{u^i}_{,\beta}-p_{,\beta}\eta^{i\beta}=0\;</MATH>|2.52}}
Jeśli weźmiemy przybliżenie, którego napisaliśmy w dowodzie {{LinkWzór|2.50}}, to na podstawie tego końcowy wzór w punkcie {{LinkWzór|2.52}} przechodzi w bardziej uproszczoną przybliżoną tożsamość:
{{CentrujWzór|<MATH>n_0u^{\beta}{{\rho_0c^2+p}\over{n_0}}{u^i}_{,\beta}-p_{,\beta}\eta^{i\beta}=0\Rightarrow(\rho c^2+p){u^i}_{,\beta}u^{\beta}-p_{,\beta}\eta^{i\beta}=0\;</MATH>|2.53}}
Policzmy pewne wyrażenie, które występuje w punkcie {{LinkWzór|2.53}}, wyrażając je poprzez pochodne zupełne prędkości v{{Sup|i}} względem czasu rzeczywistego t.
{{CentrujWzór|<MATH>{u^i}_{,\beta}u^{\beta}\simeq{{ {v^i}_{;\beta}}\over{c}}u^{\beta}=c^{-1}{{\partial v^i}\over{\partial x^{\beta}}}{{dx^{\beta}}\over{cdt\sqrt{1-{{v^2}\over{c^2}}}}}\simeq
{{1}\over{c^2}}{{dv^i}\over{dt}}\;</MATH>|2.54}}
Znając elementy przestrzenne tensora metrycznego Minkowskiego wyrażone poprzez równość {{LinkWzór|2.54}}, dostajemy:
{{CentrujWzór|<MATH>\left(\rho_0 c^2+p\right){{a^i}\over{c^2}}+p_{,i}=0\Rightarrow\left(\rho_0+{{p}\over{c^2}}\right)a_i=-p_{,i}\;</MATH>|2.55}}
Ostatnie równanie równanie, czyli {{LinkWzór|2.55}} jest znane z nierelatywistycznej dynamiki płynów, tzn. gdy zachodzi warunek {{Formuła|<Math>{{p}\over{c^2}}<<1\;</MATH>}}, czyli ciśnienie panujące w danym punkcie w przestrzeni jest o wiele mniejsza niż kwadrat wartości prędkości światła.
Udowodniliśmy, że tensor gęstości energii-pędu {{Formuła|<MATH>T^{\alpha\beta}\;</MATH>}} {{LinkWzór|1.49|Wprowadzenie do ogólnej teorii względności}}, ma taką postać jaką podaliśmy wcześniej, a na podstawie {{LinkWzór|2.27}} jest słuszny w dowolnym układzie współrzędnym co jest zasadą zachowania w geometrii zakrzywionej, która wynika z lokalnej zachowawczości energii-pędu {{LinkWzór|1.49|Wprowadzenie do ogólnej teorii względności}} wedle {{LinkWzór|2.19}}, co kończy dowody dotyczące własności tensora gęstości energii-pędu.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
lokpy9mj6hwps6446jrt0vwyu1741ky
Ogólna teoria względności/Statyczne rozwiązanie Schwarzschilda w kulistosymetrycznym polu grawitacyjnym
0
16311
558863
470273
2026-10-07T14:41:57Z
Persino
2851
558863
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tutaj będziemy się zajmować statystyczno-sferycznymi aspektami dla gwiazd.
Właściwościami takich układów, że metryka ich nie zmienia się po zastąpieniu t przez -t, a reszta współrzędnych jest taka sama po przejściu z układu, tzn. K=(t,r,θ,φ) do K{{Sup|'}}=(-t,r,θ,φ).
== Metryka w statystycznych czasoprzestrzeniach sferycznie symetrycznych ==
Układem statycznym nazywamy układem, gdy po zamianie z t na -t, układ nie zmienia się, nazwijmy układem przed transformacją K(t,r,θ,φ), a układem po transformacji K{{Sup|'}}(-t,r,θ,φ). Transformacja wiążąca układy od K do K' jest przedstawiona wzorem:
{{CentrujWzór|<MATH>q_{K^'}^{\mu}={\Lambda^{\mu}}_{\nu}q_{K}^{\nu}\;\;</MaTH>|8.1}}
* gdzie q{{Sub|K{{Sup|'}}{{Sup|μ}}}}=(-t,r,φ,θ) jest to zestaw współrzędnych w nowym układzie współrzędnych
* q{{Sub|K{{Sup|ν}}}}=(t,r,φ,θ) jest to zestaw współrzędnych w starym układzie współrzędnych.
Z własności układów K i K{{Sup|'}} mamy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{\Lambda^i}_j={\delta^i}_{j}\;</MaTH>}}
| 2 = {{CentrujWzór|<MATH>{\Lambda^t}_{i}=0\;</MaTH>}}
| 3 = {{CentrujWzór|<MATH>{\Lambda^{i}}_t=0\;</MaTH>}}
| 4 = {{CentrujWzór|<MATH>{\Lambda^t}_{t}=-1\;</MaTH>}}
}}
Następnym krokiem jest wyznaczenie elementów tensora metrycznego, wiedząc że po transformacji z K na K{{Sup|'}} elementy tensora metrycznego nie zmieniają się i na podstawie powyższych elementów tensora (macierzy) transformacji Λ{{Sup|μ}}{{Sub|ν}}, dostajemy transformacje na nasz rozważany tensor:
{{CentrujWzór|<MATH>\begin{cases}
g_{tt}={\Lambda^{\mu}}_t{\Lambda^{\nu}}_{t}g_{\mu\nu}\Rightarrow g_{tt}=({\Lambda^t}_t)^{\phi}g_{tt}\Rightarrow g_{tt}=(-1)^2g_{tt}\Rightarrow g_{tt}=g_{tt}\Rightarrow g_{tt}\in R^1\\
g_{ti}={\Lambda^{\mu}}_t{\Lambda^{\nu}}_ig_{\mu\nu}\Rightarrow g_{ti}={\Lambda^t}_t{\Lambda^i}_ig_{ti}\Rightarrow g_{ti}=-1 g_{ti}\Rightarrow g_{ti}=g_{it}=0\\
g_{rr}={\Lambda^{\mu}}_r{\Lambda^{\nu}}_rg_{\mu\nu}\Rightarrow g_{rr}=({\Lambda^r}_r)^2g_{rr}\Rightarrow g_{rr}=1^2g_{rr}\Rightarrow g_{rr}\in R^1\\
g_{ij}=0 \mbox{ dla } i\neq j
\end{cases}\;</MaTH>|8.2}}
Dochodzimy do wniosku, że nasza metryka dla naszego badanego układu i wedle obliczeń {{LinkWzór|8.2}} metryka (kwadrat różniczki interwału czasoprzestrzennego) przedstawia się według:
{{CentrujWzór|<MATH>ds^2=e^{\Phi(r)}c^2dt^2-e^{\Lambda(r)}dr^2-r^2(\sin^2\phi d\theta^2+d\phi^2)\;</MaTH>|8.3}}
Ale w powyższym wzorze wyrażenie stojące się przy kwadracie promienia nazwijmy jako kwadrat różniczki pewnej funkcji:
{{CentrujWzór|<MATH>d\Omega^2=\sin^2\phi d\theta^2+d\phi^2\;</MaTH>|8.4}}
A zatem naszą metrykę {{LinkWzór|8.3}} wedle przedstawienia kwadratu różniczki pewnej funkcji {{LinkWzór|8.4}} i wiedząc jeszcze, że naszej metryce występują funkcje Φ(r) i Λ(r), które są zależne od promienia r, zatem ostateczna forma naszej metryki, która ma kształt metryki Schwarzschilda z niewyznaczonymi jeszcze z naszymi funkcjami:
{{CentrujWzór|<MATH>ds^2=e^{\Phi(r)}c^2dt^2-e^{\Lambda(r)}dr^2-r^2d\Omega^2\;</MaTH>|8.5}}
Naszym celem jest wyznaczenie funkcji Φ(r) i Λ(r) jako funkcje zależne tylko od promienia w układzie kulistym.
== Macierz tensora metrycznego układu krzywoliniowego statyczno-sferycznej ==
Macierz prosta i odwrotna tensora metrycznego w metryce statyczno-symetrycznej gwiazdy przedstawia się:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>g_{\alpha\beta}=\begin{bmatrix}
e^{\Phi}&0&0&0\\
0&-e^{\Lambda}&0&0\\
0&0&-r^2\sin^2\phi&0\\
0&0&0&-r^2
\end{bmatrix}\;</MATH>|8.6}}
| 2 = {{CentrujWzór|<MATH>g^{\alpha\beta}=\begin{bmatrix}
e^{-\Phi}&0&0&0\\
0&-e^{-\Lambda}&0&0\\
0&0&-{{1}\over{r^2\sin^2\phi}}&0\\
0&0&0&-{{1}\over{r^2}}
\end{bmatrix}\;</MATH>|8.7}}
}}
Ogólnie elementy 0,1,2,3 będziemy oznaczać przez nazwy odpowiednich zmiennych układu sferycznego i czasu, tzn. przez t,r,θ,φ.
== Odległość radialna, czas, zmierzona energia cząstki ==
Odległość radialną wedle {{LinkWzór|1.13|Wprowadzenie do ogólnej teorii względności}} możemy policzyć z definicji interwału czasoprzestrzennego, gdzie za infinitezymalny czas i różniczek współrzędnych kątowych podstawiamy wartość zero, czyli {{Formuła|<MATH>dt=d\theta=d\phi=0</MATH>}}, dostając wzór na odległość radialną:
{{CentrujWzór|<MATH>R=
\int^{r_2}_{r_1}\sqrt{-g_{rr}}dr=\int^{r_2}_{r_1}e^{{{1}\over{2}}\Lambda}dr</MATH>|8.8}}
Upływ czasu własnego wedle wzoru {{LinkWzór|1.12|Wprowadzenie do ogólnej teorii względności}} w polu grawitacyjnym wyraża się w zależności od czasu współrzędnościowego wzorem:
{{CentrujWzór|<MATH>\tau=\int^{t_2}_{t_1}\sqrt{g_{tt}}dt=\int^{t_2}_{t_1}e^{{{1}\over{2}}\Phi}dt</MATH>|8.9}}
Związek między czterowektorami pędu, a masą spoczynkową wyraża się wzorem {{LinkWzór|1.11|Wprowadzenie do ogólnej teorii względności}}, a dla cząstki ogólnie masowej, a w szczególności dla fotonu, oznaczając że jego energia wedle szczególnej teorii względności jest równa E=p{{Sub|0}}c, a energia zaobserwowana w układzie lokalnie płaskim jest wyrażona:
{{CentrujWzór|<MATH>{E^*}^2=m_0^2c^4-p_ip^ic^2=m_0^2c^4+\underbrace{(-p^jg_{ji}p^i)}_{p^2}=m_0^2c^4+c^2p^2\;</MatH>|8.10}}
* gdzie:{{Formuła|<maTh>p^2=-p^jg_{ji}p_i\;</MATH>}} jest to kwadrat długości pędu cząstki według jej długości przestrzennej (nie czasowej dla odróżnienia).
Na podstawie definicji {{LinkWzór|8.8}} i definicji całkowitej energii cząstki poprzez kowariantny pęd cząstki pomnożonej przez prędkość światła, która jest wielkością stałą ze względu, że elementy tensora metrycznego {{LinkWzór|8.6}} nie zależą od czasu, a więc energia cząstki jest zachowana na podstawie wzoru {{LinkWzór|6.36|Fizyka_w_słabozakrzywionych_czasoprzestrzeniach}}:
{{CentrujWzór|<MATH>p_{\mu}p^{\mu}=m_0c^2\Rightarrow p_{\mu}p^{\mu}c^2=m_0c^4\Rightarrow
p_tp^tc^2+p_ip^ic^2+m_0^2c^4\Rightarrow p_tp_tg^{tt}c^2=\underbrace{m_0^2c^4-p_ip^ic^2}_{E^*}\Rightarrow(p_tc)^2={E^*}^2g_{tt}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow p_tc=\sqrt{g_{tt}}E^*\Rightarrow E=\sqrt{g_{tt}}E^*\Rightarrow E=\sqrt{g_{tt}}E^*\Rightarrow E=e^{{{1}\over{2}}\Phi(r)}E^*\;</MATH>|8.11}}
Bardzo daleko od źródła energia zaobserwowanego przez obserwatora jest napisana wedle wzoru {{LinkWzór|8.11}}, tzn. gdy założymy, gdy {{Formuła|<MATH>\lim_{r\rightarrow 0}\Phi(r)=0\;</MATH>}} w układzie lokalnie inercjalnym zmierzymy energię: {{Formuła|<MATH>E^{*}\simeq E\;</MATH>}}, czyli energia zarejestrowana przez układ lokalnie płaski jest równa prawdziwej energii posiadanej przez ciało dla r bardzo dużego praktycznie niekończonego.
Gdy rozważać będziemy fotony, czyli posiadających masę spoczynkowej równą zero, to energia fotonów wyemitowanych w miejscu określonym promieniem r jest napisana:
{{Formuła|<MATH>E^*=h\nu_{em}\;</MATH>}}, a jego energia określona w układzie lokalnie inercjalnym (układ lokalnie płaski) przedstawia się według wzoru {{Formuła|<MATH>E=h\nu_{rej}\;</MATH>}}:
{{CentrujWzór|<MATH>h\nu_{rej}=h\nu_{em} e^{{{1}\over{2}}\Phi(r)}\Rightarrow \nu_{rej}=\nu_{em}e^{{{1}\over{2}}\Phi(r)} </MATH>|8.12}}
Jeśli przedstawimy zamiast częstotliwości ν długość fali wedle wzoru {{Formuła|<MATH>\lambda={{c}\over{\nu}}\;</MAtH>}}, wtedy zależność między długościami fali fotonów wyemitowanych a zarejestrowanych przedstawia się:
{{CentrujWzór|<MATH>\lambda_{rej}=\lambda_{em}e^{-{{1}\over{2}}\Phi(r)}\;</math>|8.13}}
Przesunięcie ku czerwieni między promieniowaniem wyemitowanym przez gwiazdę, a zarejestrowanym przez obserwatora lub przez detektor wyraża się:
{{CentrujWzór|<MATH>z={{\lambda_{rej}-\lambda_{em}}\over{\lambda_{em}}}=
{{\lambda_{rej}}\over{\lambda_{em}}}-1=e^{-{{1}\over{2}}\Phi(r)}-1</MATH>|8.14}}
== Elementy tensora Christoffela ==
Wyznaczmy wszystkie elementy tensora Christofela:
{{CentrujWzór|<MATH>{\Gamma^t}_{tr}={\Gamma^t}_{rt}={{1}\over{2}}g^{tt}\left(g_{tt,r}+g_{rt,t}-g_{tr,r}\right)=
{{1}\over{2}}g^{tt}g_{tt,r}={{1}\over{2}}e^{-\Phi}e^{\Phi}{\Phi}^'={{1}\over{2}}{\Phi}^'\;</MATH>|8.15}}
{{CentrujWzór|<MATH>{\Gamma^r}_{tt}={{1}\over{2}}g^{rr}\left(g_{tr,r}+g_{tr,t}-g_{tt,r}\right)=
-{{1}\over{2}}g^{rr}g_{tt,r}={{1}\over{2}}e^{-\Lambda}e^{\Phi}{\Phi}^'={{1}\over{2}}e^{\Phi-\Lambda}{\Phi}^'\;</MATH>|8.16}}
{{CentrujWzór|<MATH>{\Gamma^r}_{rr}={{1}\over{2}}g^{rr}\left(g_{rr,r}+g_{rr,r}-g_{rr,r}\right)=
{{1}\over{2}}g^{rr}g_{rr,r}={{1}\over{2}}e^{-\Lambda}e^{\Lambda}{\Lambda}^'={{1}\over{2}}{\Lambda}^'\;</MATH>|8.17}}
{{CentrujWzór|<MATH>{\Gamma^r}_{\theta \theta }={{1}\over{2}}g^{rr}\left(g_{\theta r,\theta }+g_{\theta r,\theta }-g_{\theta \theta ,r}\right)=
-{{1}\over{2}}g^{rr}g_{\theta \theta ,r}=-{{1}\over{2}}e^{-\Lambda}2r\sin^2\phi=-e^{-\Lambda}r\sin^2\phi\;</MATH>|8.18}}
{{CentrujWzór|<MATH>{\Gamma^r}_{\phi\phi}={{1}\over{2}}g^{rr}\left(g_{\phi r,\phi }+g_{\phi r,\phi }-g_{\phi \phi ,r}\right)=
-{{1}\over{2}}g^{rr}g_{\phi \phi ,r}=-{{1}\over{2}}e^{-\Lambda}2r=-re^{-\Lambda}\;</MATH>|8.19}}
{{CentrujWzór|<MATH>{\Gamma^{\theta}}_{r\theta }={{1}\over{2}}g^{\theta \theta }\left(g_{r\theta ,\theta }+g_{\theta \theta ,\phi }-g_{r\theta ,\theta }\right)=
{{1}\over{2}}g^{\theta \theta }g_{\theta \theta ,\phi }={{1}\over{2}}{{1}\over{r^2\sin^2\phi}}2r\sin^2\phi={{1}\over{r}}\;</MATH>|8.20}}
{{CentrujWzór|<MATH>{\Gamma^{\theta}}_{\theta \phi }={{1}\over{2}}g^{\theta \theta }\left(g_{\theta \theta ,\phi }+g_{\phi \theta ,\theta }-g_{\theta \phi ,\theta }\right)=
{{1}\over{2}}g^{\theta \theta }g_{\theta \theta ,\phi }={{1}\over{2}}{{1}\over{r^2\sin^2\phi}}r^22\sin\phi\cos\phi=\operatorname{ctg}\phi\;</MATH>|8.21}}
{{CentrujWzór|<MATH>{\Gamma^{\phi}}_{r\phi }={{1}\over{2}}g^{\phi \phi }\left(g_{r\phi ,\phi }+g_{\phi \phi ,r}-g_{r\phi ,\phi }\right)=
{{1}\over{2}}g^{\phi \phi }g_{\phi \phi ,r}={{1}\over{2}}{{1}\over{r^2}}2r={{1}\over{r}}\;</MATH>|8.22}}
{{CentrujWzór|<MATH>{\Gamma^{\phi}}_{\theta \theta }={{1}\over{2}}g^{\phi \phi }\left(g_{\theta \phi ,\theta }+g_{\theta \phi ,\theta }-g_{\theta \theta ,\phi }\right)=
-{{1}\over{2}}g^{\phi \phi }g_{\theta \theta ,\phi }=-{{1}\over{2}}{{1}\over{r^2}}r^22\sin\phi\cos\phi=-\sin\phi\cos\phi\;</MATH>|8.23}}
* gdzie powyżej znak prim('), oznacza pochodną po r.
Pozostałe tensory Christoffela są równe zero.
== Elementy tensora krzywizny ==
Policzmy tylko potrzebne czterowskaźnikowe tensory krzywizny, przy czym elementy tensora krzywizny, które w sposób trywialny są równe zero pomijamy, bo są mało ciekawe, zatem:
{{CentrujWzór|<MATH>{R^r}_{trt}={{\partial {\Gamma^r}_{tt}}\over{\partial x^r}}-{{\partial{\Gamma^r}_{tr}}\over{\partial x^t}}+{\Gamma^r}_{tt}{\Gamma^r}_{rr}-{\Gamma^r}_{tr}{\Gamma^r}_{rt}=
\left({{1}\over{2}}e^{\Phi-\Lambda}\Phi^'\right)_{,r}+
{{1}\over{2}}e^{\Phi-\Lambda}\Phi^'{{1}\over{2}}\Lambda^{'}-{{1}\over{2}}\Phi^'{{1}\over{2}}e^{\Phi-\Lambda}\Phi^'={{1}\over{2}}e^{\Phi-\Lambda}\Phi^{''}+\;</MATH>{{Br}}<MATH>+{{1}\over{2}}e^{\Phi-\Lambda}\Phi^'(\Phi-\Lambda)^'+{{1}\over{4}}e^{\Phi-\Lambda}\Phi^'\Lambda^'-{{1}\over{4}}e^{\Phi-\Lambda}(\Phi^{'})^2={{1}\over{2}}e^{\Phi-\Lambda}\Phi^{''}+{{1}\over{2}}e^{\Phi-\Lambda}(\Phi^')^2-{{1}\over{2}}e^{\Phi-\Lambda}\Phi^'\Lambda^'+{{1}\over{4}}e^{\Phi-\Lambda}\Phi^'\Lambda^'+\;</MATH>{{Br}}<MATH>-{{1}\over{4}}e^{\Phi-\Lambda}(\Phi^')^2={{1}\over{2}}e^{\Phi-\Lambda}\Phi^{''}+{{1}\over{4}}e^{\Phi-\Lambda}(\Phi^')^2-{{1}\over{4}}e^{\Phi-\Lambda}\Phi^'\Lambda^'={{1}\over{2}}e^{\Phi-\Lambda}\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'\right)\;</MATH>|8.24}}
{{CentrujWzór|<MATH>{R^{\theta}}_{t\theta t}={{\partial{\Gamma^{\theta}}_{tt}}\over{\partial x^{\theta}}}-{{\partial{\Gamma^{\theta}}_{t\theta }}\over{\partial x^t}}+{\Gamma^r}_{tt}{\Gamma^{\theta}}_{r\theta }-{\Gamma^r}_{t\theta }{\Gamma^{\theta}}_{rt}={{1}\over{2}}e^{\Phi-\Lambda}\Phi^'{{1}\over{r}}\;</MATH>|8.25}}
{{CentrujWzór|<MATH>{R^{\theta}}_{r\theta r}={{\partial{\Gamma^{\theta}}_{rr}}\over{\partial x^{\phi}}}-{{\partial{\Gamma^{\theta}}_{r\theta }}\over{\partial x^r}}+{\Gamma^r}_{rr}{\Gamma^{\theta}}_{r\theta }-{\Gamma^r}_{r\theta }{\Gamma^{\theta}}_{rr}={{1}\over{r^2}}+{{1}\over{2}}\Lambda^'{{1}\over{r}}-{{1}\over{r^2}}=
{{1}\over{2}}{{\Lambda^'}\over{r}}\;</MATH>|8.26}}
{{CentrujWzór|<MATH>{R^{\theta}}_{\phi \theta \phi }={{\partial{\Gamma^{\theta}}_{\phi \phi }}\over{\partial x^{\theta}}}-{{\partial{\Gamma^{\theta}}_{\phi \theta }}\over{\partial x^{\phi}}}+{\Gamma^r}_{\phi \phi }{\Gamma^{\theta}}_{r\theta }-{\Gamma^r}_{\phi \theta }{\Gamma^{\theta}}_{r\phi }=-{{\partial\operatorname{ctg}\phi}\over{\partial\phi}}-re^{-\Lambda}{{1}\over{r}}-\operatorname{ctg}\phi\operatorname{ctg}=
{{1}\over{\sin^2\phi}}-e^{-\Lambda}-{{1-\sin^2\phi}\over{\sin^2\phi}}=\;</MATH>{{Br}}<MATH>=
{{1-1+\sin^2\phi}\over{\sin^2\phi}}-e^{-\Lambda}=1-e^{-\Lambda}\;</MATH>|8.27}}
{{CentrujWzór|<MATH>{R^{\phi}}_{t\phi t}={{\partial{\Gamma^{\phi}}_{tt}}\over{\partial x^{\phi}}}-{{\partial{\Gamma^{\phi}}_{t\phi }}\over{\partial x^t}}+{\Gamma^r}_{tt}{\Gamma^{\phi}}_{r\phi }-{\Gamma^r}_{t\phi }{\Gamma^{\phi}}_{rt}={{1}\over{2}}e^{\Phi-\Lambda}\Phi^'{{1}\over{r}}\;</MATH>|8.28}}
{{CentrujWzór|<MATH>{R^{\phi}}_{r\phi r}={{\partial{\Gamma^{\phi}}_{rr}}\over{\partial x^\phi }}-
{{\partial{\Gamma^{\phi}}_{r\phi }}\over{\partial x^r}}+{\Gamma^r}_{rr}{\Gamma^{\phi}}_{r\phi }-{\Gamma^r}_{r\phi }{\Gamma^{\phi}}_{rr}=
+{{1}\over{r^2}}+{{1}\over{2}}\Lambda^'{{1}\over{r}}-{{1}\over{r^2}}=
{{1}\over{2}}\Lambda^'{{1}\over{r}}\;</MATH>|8.29}}
Dalsze obliczenia tensorów krzywizny wynikającego z wcześniejszych obliczeń:
{{CentrujWzór|<MATH>R_{trr}=R_{rtrt}={R^{r}}_{trt}g_{rr}=-e^{\Lambda}{{1}\over{2}}e^{\Phi-\Lambda}\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{4}}\Phi^'\Lambda^'\right)=-{{1}\over{2}}e^{\Phi}\left(\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'\right)\;</MATH>|8.30}}
{{CentrujWzór|<MATH>{R^{t}}_{rtr}=g^{tt}R_{trtr}=-e^{-\Phi}{{1}\over{2}}e^{\Phi}\left(\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'\right)=
-{{1}\over{2}}\left(\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'\right)\;</MATH>|8.31}}
{{CentrujWzór|<MATH>R_{\phi t\phi t}=g_{\phi \phi }{R^{\phi }}_{t\phi t}=-r^2{{1}\over{2}}e^{\Phi-\Lambda}\Phi^'{{1}\over{r}}=-{{r}\over{2}}e^{\Phi-\Lambda}\Phi^'\;</MATH>|8.32}}
{{CentrujWzór|<MATH>{R^{t}}_{\phi t\phi }=g^{tt}R_{t\phi t\phi }=g^{tt}R_{\phi t\phi t}=
e^{-\Phi}(-1){{r}\over{2}}e^{\Phi-\Lambda}\Phi^'=-{{r}\over{2}}e^{-\Lambda}\Phi^'\;</MATH>|8.33}}
{{CentrujWzór|<MATH>R_{\phi r\phi r}=g_{\phi \phi }{R^{\phi}}_{r\phi r}=-r^2{{1}\over{2}}\Lambda^'{{1}\over{r}}=-{{r}\over{2}}\Lambda^'\;</MATH>|8.34}}
{{CentrujWzór|<MATH>{R^r}_{\phi r\phi }=g^{rr}R_{r\phi r\phi }=g^{rr}R_{\phi r\phi r}=-e^{-\Lambda}(-{{r}\over{2}}\Lambda^')=e^{-\Lambda}{{r}\over{2}}\Lambda^'\;</MATH>|8.35}}
{{CentrujWzór|<MATH>R_{\theta t\theta t}=g_{\theta \theta }{R^{\theta }}_{t\theta t}=-r^2\sin^2\phi{{1}\over{2}}e^{\Phi-\Lambda}\Phi^'{{1}\over{r}}=
-{{r\sin^2\phi}\over{2}}e^{\Phi-\Lambda}\Phi^'</MATH>|8.36}}
{{CentrujWzór|<MATH>{R^t}_{\theta t\theta }=g^{tt}R_{t\theta t\theta }=g^{tt}R_{\theta t\theta t}=e^{-\Phi}(-1){{r\sin^2\phi}\over{2}}e^{\Phi-\Lambda}\Phi^'=
-{{r\sin^2\phi}\over{2}}e^{-\Lambda}\Phi^'</MATH>|8.37}}
{{CentrujWzór|<mATH>R_{\theta r\theta r}=g_{\theta \theta }{R^{\theta}}_{r\theta r}=-r^2\sin^2\phi {{1}\over{2}}{{\Lambda^'}\over{r}}=-{{r\sin^2\phi}\over{2}}\Lambda^'</MATH>|8.38}}
{{CentrujWzór|<MATH>{R^r}_{\theta r\theta }=g^{rr}R_{r\theta r\theta }=g^{rr}R_{\theta r\theta r}=
-e^{-\Lambda}(-1){{r\sin^2\phi}\over{2}}\Lambda^'=e^{-\Lambda}{{r\sin^2\phi}\over{2}}\Lambda^'</MATH>|8.39}}
{{CentrujWzór|<MATH>R_{\theta \phi \theta \phi }=g_{\theta \theta }{R^{\theta}}_{\phi \theta \phi }=-r^2\sin^2\phi(1-e^{-\Lambda})</MATH>|8.40}}
{{CentrujWzór|<MATH>{R^\phi }_{\theta \phi \theta }=g^{\phi \phi }R_{\phi \theta \phi \theta }=g^{\phi \phi }R_{\theta \phi \theta \phi }=-{{1}\over{r^2}}(-1)r^2\sin^2\phi(1-e^{-\Lambda})=\sin^2\phi(1-e^{-\Lambda})</MATH>|8.41}}
Następnym krokiem jest policzenie tensorów Ricciego:
{{CentrujWzór|<MATH>R_{tt}={R^{\alpha}}_{ t\alpha t}={R^{t}}_{ttt}+{R^r}_{trt}+{R^{\theta}}_{t\theta t}+{R^{\phi}}_{t\phi t}=0+{{1}\over{2}}e^{\Phi-\Lambda}\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'\right)+{{1}\over{2}}e^{\Phi-\Lambda}\Phi^'{{1}\over{r}}+{{1}\over{2}}e^{\Phi-\Lambda}\Phi^'{{1}\over{r}}=
</MATH>{{Br}}
<MATH>={{1}\over{2}}e^{\Phi-\Lambda}\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'+2{{\Phi^'}\over{r}}
\right)</MATH>|8.42}}
{{CentrujWzór|<MATH>R_{rr}={R^{\alpha}}_{r\alpha r}={R^t}_{rtr}+{R^{r}}_{rrr}+{R^{\theta}}_{r\theta r}+{R^{\phi}}_{r\phi r}=-{{1}\over{2}}\left(\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'\right)+{{1}\over{2}}{{\Lambda^'}\over{r}}+{{1}\over{2}}\Lambda^'{{1}\over{r}}=\;</MATH>{{Br}}<MATH>={{1}\over{2}}\left(
-\Phi^{''}-{{1}\over{2}}(\Phi^')^2+{{1}\over{2}}\Phi^'\Lambda^'+2{{1}\over{r}}\Lambda^'\right)</MATH>|8.43}}
{{CentrujWzór|<MATH>R_{\phi\phi}={R^{\alpha}}_{\phi \alpha \phi }={R^t}_{\phi t\phi }+{R^r}_{\phi r\phi }+{R^{\theta} }_{\phi \theta \phi }+{R^{\phi}}_{\phi \phi \phi }=-{{r}\over{2}}e^{-\Lambda}\Phi^'+
e^{-\Lambda}{{r}\over{2}}\Lambda^'+1-e^{-\Lambda}=-{{r(\Phi^'-\Lambda^')}\over{2}}e^{-\Lambda}+1-e^{-\Lambda}</MATH>|8.44}}
{{CentrujWzór|<MATH>R_{\theta \theta }={R^{\alpha}}_{\theta \alpha \theta }={R^t}_{\theta t\theta }+{R^r}_{\theta r\theta }+{R^{\theta}}_{\theta \theta \theta }+{R^{\phi}}_{\theta \phi \theta }=-{{r\sin^2\phi}\over{2}}e^{-\Lambda}\Phi^'+e^{-\Lambda}{{r\sin^2\phi}\over{2}}\Lambda^'+\sin^2\phi(1-e^{-\Lambda})=\;</MATH>{{Br}}<MATH>=
-{{r\sin^2\phi}\over{2}}e^{-\Lambda}(\Phi^'-\Lambda^')+\sin^2\phi(1-e^{-\Lambda})=\sin^2\phi\left(-{{r(\Phi^'-\Lambda^')}\over{2}}e^{-\Lambda}+1-e^{-\Lambda}\right)=\sin^2\phi R_{\phi \phi }</MATH>|8.45}}
Następnie policzymy skalar Ricciego:
{{CentrujWzór|<MATH>R={R^t}_t+{R^r}_r+{R^\phi }_\phi +{R^{\theta}}_\theta =g^{tt}R_{tt}+g^{rr}R_{rr}+g^{\theta \theta }R_{\theta \theta }+g^{\phi \phi }R_{\phi \phi }=e^{-\Phi}{{1}\over{2}}e^{\Phi-\Lambda}\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'+2{{\Phi^'}\over{r}}
\right)+\;</MATH>{{Br}}<MATH>-e^{-\Lambda}{{1}\over{2}}\left(
-\Phi^{''}-{{1}\over{2}}(\Phi^')^2+{{1}\over{2}}\Phi^'\Lambda^'+2{{1}\over{r}}\Lambda^'\right)-{{1}\over{r^2\sin^2\phi}}\sin^2\phi\left(-{{r(\Phi^'-\Lambda^')}\over{2}}e^{-\Lambda}+1-e^{-\Lambda}\right)+\;</MATH>{{Br}}<MATH>-{{1}\over{r^2}}\left(-{{r(\Phi^'-\Lambda^')}\over{2}}e^{-\Lambda}+1-e^{-\Lambda}\right)
={{1}\over{2}}e^{-\Lambda}\left(2\Phi^{''}+(\Phi^')^2-\Phi^'\Lambda^'+
2{{\Phi^'-\Lambda^'}\over{r}}\right)+
{{(\Phi^'-\Lambda^')}\over{r}}e^{-\Lambda}-{{2(1-e^{-\Lambda})}\over{r^2}}=</MATH>{{Br}}
<MATH>=e^{-\Lambda}\left(\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'+{{\Phi^'-\Lambda^'}\over{r}}\right)+
{{\Phi^'-\Lambda^'}\over{r}}e^{-\Lambda}-2{{1-e^{-\Lambda}}\over{r^2}}</MATH>|8.46}}
== Elementy tensora Einsteina ==
Wyznaczmy tylko diagonalne elementy tensora Einsteina, ponieważ wszystkie pozadiagonalne jego elementy znikają, że względu na to, że elementy tensora Ricciego i elementy tensora metrycznego mają diagonalne wyrazy, tzn.: niediagonalne wyrazy znikają.
{{CentrujWzór|<MATH>G_{tt}=R_{tt}-{{1}\over{2}}g_{tt}R={{1}\over{2}}e^{\Phi-\Lambda}\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'+2{{\Phi^'}\over{r}}
\right)-{{1}\over{2}}e^{\Phi}\Bigg\{e^{-\Lambda}\left(\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'+{{\Phi^'-\Lambda^'}\over{r}}\right)+\;</MATH>{{Br}}
<MATH>+{{\Phi^'-\Lambda^'}\over{r}}e^{-\Lambda}-2{{1-e^{-\Lambda}}\over{r^2}}\Bigg\}={{1}\over{2}}e^{\Phi-\Lambda}\left(
{{\Phi^'+\Lambda^'-\Phi^'+\Lambda^'}\over{r}}\right)+
{{1-e^{-\Lambda}}\over{r^2}}e^{\Phi}=e^{\Phi-\Lambda}{{\Lambda^'}\over{r}}-{{e^{\Phi-\Lambda}}\over{r^2}}+{{1}\over{r^2}}e^{\Phi}=\;</MATH>{{Br}}
<MATH>={e^{\Phi-\Lambda}}\left({{\Lambda^'}\over{r}}-{{1}\over{r^2}}\right)+{{1}\over{r^2}}e^{\Phi}=
{{1}\over{r^2}}e^{\Phi}{{d}\over{dr}}\left[r\left(1-e^{-\Lambda}\right)\right]\;</MATH>|8.47}}
{{CentrujWzór|<MATH>G_{rr}=R_{rr}-{{1}\over{2}}g_{rr}R={{1}\over{2}}\left(
-\Phi^{''}-{{1}\over{2}}(\Phi^')^2+{{1}\over{2}}\Phi^'\Lambda^'+2{{1}\over{r}}\Lambda^'\right)-{{1}\over{2}}(-1)e^{\Lambda}\Bigg\{e^{-\Lambda}\left(\Phi^'+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'+{{\Phi^'-\Lambda^'}\over{r}}\right)+\;</MATH>{{Br}}<MATH>+
{{\phi^'-\Lambda^'}\over{r}}e^{-\Lambda}-2{{1-e^{-\Lambda}}\over{r^2}}\Bigg\}={{1}\over{2}}{{+2\Lambda^'+\Phi^'-\Lambda+\Phi^'-\Lambda^'}\over{r}}-{{e^{\Lambda}}\over{r^2}}+{{1}\over{r^2}}=
{{\Phi^'}\over{r}}-{{e^{\Lambda}}\over{r^2}}+{{1}\over{r^2}}=-{{1}\over{r^2}}e^{\Lambda}\left(1-e^{-\Lambda}\right)+{{\Phi^'}\over{r}}\;</MATH>|8.48}}
{{CentrujWzór|<MATH>G_{\phi\phi}=R_{\phi \phi }-{{1}\over{2}}g_{\phi\phi}R=-{{r(\Phi^'-\Lambda^')}\over{2}}e^{-\Lambda}+1-e^{-\Lambda}-{{1}\over{2}}(-r^2)\Bigg[e^{-\Lambda}\left(\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'+{{\Phi^'-\Lambda^'}\over{r}}\right)+
{{\phi^'-\Lambda^'}\over{r}}e^{-\Lambda}+\;</MATH>{{Br}}<MATH>-2{{1-e^{-\Lambda}}\over{r^2}}\Bigg]={{r(-\Phi^'+\Lambda^'+\Phi^'-\Lambda^'+\Phi^'-\Lambda^')}\over{2}}e^{-\Lambda}
+1-e^{-\Lambda}-1+e^{-\Lambda}+{{1}\over{2}}r^2e^{-\Lambda}\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'
\right)=\;</MATH>{{Br}}
<MATH>={{1}\over{2}}r\left(\Phi^'-\Lambda^'\right)+{{1}\over{2}}r^2e^{-\Lambda}\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'\right)={{1}\over{2}}r^2e^{-\Lambda}\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2+{{\Phi^'}\over{r}}-{{1}\over{2}}\Phi^'\Lambda^'-{{\Lambda^'}\over{r}}\right)\;</MATH>|8.49}}
{{CentrujWzór|<MATH>G_{\theta \theta }=R_{\theta \theta }-{{1}\over{2}}g_{\theta \theta }R=\sin^2\phi\left(-{{r(\Phi^'-\Lambda^')}\over{2}}e^{-\Lambda}+1-e^{-\Lambda}\right)+\;</MATH>{{Br}}
<MATH>-{{1}\over{2}}(-r^2\sin^2\phi)\left\{e^{-\Lambda}\left(\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'+{{\Phi^'-\Lambda^'}\over{r}}\right)+
{{\phi^'-\Lambda^'}\over{r}}e^{-\Lambda}-2{{1-e^{-\Lambda}}\over{r^2}}\right\}=\;</MATH>{{Br}}
<MATH>=\sin^2\phi\Bigg[
{{r(-\Phi^'+\Lambda^'+\Phi^'-\Lambda^'+\Phi^'-\Lambda^')}\over{2}}e^{-\Lambda}
+1-e^{-\Lambda}-1+e^{-\Lambda}+{{1}\over{2}}e^{-\Lambda}r^2\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2-{{1}\over{2}}\Phi^'\Lambda^'\right)\Bigg]=\;</MATH>{{Br}}<MATH>=
{{1}\over{2}}r^2\sin^2\phi e^{-\Lambda}\left(
\Phi^{''}+{{1}\over{2}}(\Phi^')^2+{{\Phi^'}\over{r}}-{{1}\over{2}}\Phi^'\Lambda^'-{{\Lambda^'}\over{r}}
\right)=\sin^2\phi G_{\phi \phi }\;</MATH>|8.50}}
== Statyczne równanie Einsteina z płynem doskonałym ==
Wyznaczmy elementy czterowektorów prędkości dla statycznego sferycznego doskonałego płynu, przy czym pamiętając że elementy przestrzenne tego tensora są zawsze równe zero, a element czasowy jest natomiast różny od zera:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>u_t=u^tg_{tt}={{dx^t}\over{ds}}e^{\Phi}={{cdt}\over{cdt e^{{{1}\over{2}}\Phi}}}e^{\Phi}=e^{{{1}\over{2}}\Phi}\;</MATH>|8.51}}
| 2 = {{CentrujWzór|<MATH>u_r=u_{\phi}=u_{\theta}=u^ig_{ij}={{dx^i}\over{ds}}g_{ij}=0\;</MATH>|8.52}}
}}
Wyznaczmy wszystkie diagonalne elementy tensora gęstości energii w płynie doskonałym wedle sposobu:
{{CentrujWzór|<MATH>T_{tt}=(\rho c^2+p)u_tu_t-pg_{tt}=(\rho c^2+p)e^{\Phi}-pe^{\Phi}=\rho c^2 e^{\Phi}\;</math>|8.53}}
{{CentrujWzór|<MATH>T_{rr}=(\rho c^2+p)u_ru_r-pg_{rr}=(\rho c^2+p)0+pe^{-\Lambda}=pe^{-\Lambda}\Rightarrow T_{rr}=g_{rr}g_{rr}T^{rr}=pe^{\Lambda}\;</MATH>|8.54}}
{{CentrujWzór|<MATH>T_{\phi \phi }=(\rho c^2+p)u_{\phi}u_{\phi}-pg_{\phi \phi }=-pg_{\phi \phi }=r^2p\;</MATH>|8.55}}
{{CentrujWzór|<MATH>T_{\theta \theta }=(\rho c^2+p)u_{\theta}u_{\theta}-pg_{\theta \theta }=-pg_{\theta \theta }=r^2p\sin^2\phi=\sin^2\phi T_{\phi \phi }\;</MATH>|8.56}}
Elementy niediagonalne podwójnie kowariantnego tensora gęstości energii jak można udowodnić są równe zero ze względu na to, że metryka posiada tylko diagonalne elementy tensora metrycznego i elementy czterowektora prędkości przestrzenne są zawsze równe zero.
== Metryka na zewnątrz kulistej masy ==
Na zewnątrz kulistej masy mamy T{{Sub|αβ}}=0, gęstość masy i ciśnienie w rozważanych punktach jest zaniedbywalnie małe, a zatem rozpatrzmy dwa równania wynikającego z równania tensorowego grawitacji Einsteina o dwóch takich samych wskaźnikach dolnych czasowych (tensor Einsteina jest zdefiniowany wedle {{LinkWzór|8.47}} i radialnych (tensor Einsteina jest to wzór {{LinkWzór|8.48}}), zatem nasze równania są w postaci:
{{CentrujWzór|<MATH>\begin{cases}
G_{tt}=0\\
G_{rr}=0
\end{cases}\Rightarrow\begin{cases}
{e^{\Phi-\Lambda}}\left({{\Lambda^'}\over{r}}-{{1}\over{r^2}}\right)+{{1}\over{r^2}}e^{\Phi}=0\\
{{\Phi^'}\over{r}}-{{e^{\Lambda}}\over{r^2}}+{{1}\over{r^2}}=0
\end{cases}
\Rightarrow\begin{cases}{{\Lambda^'}\over{r}}-{{1}\over{r^2}}+{{e^{\Lambda}}\over{r^2}}=0\\
{{\Phi^'}\over{r}}-{{e^{\Lambda}}\over{r^2}}+{{1}\over{r^2}}=0
\end{cases}\Rightarrow \Lambda^'+\Phi^'=0\;
</MATH>|8.58}}
W powyższym równaniu, w którym występują funkcję zależne od r, czyli Λ(r) i Φ(r), która tam występują pochodne pierwszego rzędu i na podstawie tego suma tych funkcji jest wielkością stałą niezależną od jakikolwiek parametru, zatem zachodzi:
{{CentrujWzór|<MATH>\Lambda+\Phi=\operatorname{const}</MATH>}}
Ponieważ rozpatrujemy początek układu współrzędnych w którym znajduje się nasza gwiazda, zatem ta nasza rozważana stała jest równa zero, zatem powinno mieć miejsce równość:
{{CentrujWzór|<MATH>\Lambda+\Phi=0\Rightarrow \Lambda=-\Phi\;</MATH>|8.59}}
Obierzmy nową funkcję zależną od zmiennej r i zapisanej za pomocą parametru Λ i która ta funkcja jest zapisana wedle wzoru poniżej, i która jest zależna od promienia r od środka rozważanej gwiazdy:
{{CentrujWzór|<MATH>\gamma(r)={{1}\over{2}}r\left(1-e^{-\Lambda}\right)\;</MATH>|8.60}}
Wyprowadźmy z równania {{LinkWzór|8.60}} parametr Λ i wyznaczmy jego pochodną względem parametru współrzędnej radialnej r:
{{CentrujWzór|<MATH>{{2\gamma(r)}\over{r}}=1-e^{-\Lambda}\Rightarrow e^{\Lambda}={{1}\over{1-{{2\gamma(r)}\over{r}}}}\Rightarrow \Lambda=-\ln\left(1-{{2\gamma(r)}\over{r}}\right)\Rightarrow\Lambda^'=
{{{{2\gamma^'(r)r-2\gamma(r)}\over{r^2}}}\over{1-{{2\gamma(r)}\over{r}}}}\;</MATH>|8.61}}
Z obliczeń {{LinkWzór|8.61}} otrzymujemy pochodną parametru Λ względem jej argumentu czyli promienia sferycznego r, tzn. ona jest zależna od funkcji γ(r) i pochodnej funkcji γ(r) względem zmiennej r, a te funkcje natomiast zależą od promienia radialnego r, zatem ta nasza pochodna funkcji Λ(r) jest zapisana:
{{CentrujWzór|<MATH>\Lambda^'={{2\gamma^'(r)r-2\gamma(r)}\over{r(r-2\gamma(r))}}</MATH>|8.62}}
Rozpatrzmy równanie Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}}, w której parametr κ jest zdefiniowany wedle sposobu {{LinkWzór|5.46|Słabe_pola_grawitacyjne}}, zatem równanie wspomniane w tym zdaniu jako pierwsze jest równaniem zapisywanej w postaci wzoru dla wskaźników dolnych czasowych naszego równania:
{{CentrujWzór|<MATH>G_{tt}={{8\pi G}\over{c^4}}T_{tt}</MATH>|8.63}}
Po podstawieniu za G{{Sub|tt}} wedle {{LinkWzór|8.47}} i za T{{Sub|tt}} wedle {{LinkWzór|8.53}} w równaniu grawitacyjnym Einsteina dla wskaźników dolnych czasowych do {{LinkWzór|8.63}}, wtedy otrzymujemy tożsamość:
{{CentrujWzór|<MATh>{e^{\Phi-\Lambda}}\left({{\Lambda^'}\over{r}}-{{1}\over{r^2}}\right)+{{1}\over{r^2}}e^{\Phi}={{8\pi G}\over{c^4}}\rho c^2e^{\Phi}\Rightarrow
e^{-\Lambda}\left({{\Lambda^'}\over{r}}-{{1}\over{r^2}}\right)+{{1}\over{r^2}}={{8\pi G}\over{c^2}}\rho</MATH>|8.64}}
Ostatnie wyjściowe równanie pomnóżmy obustronnie przez wyrażenie r{{Sup|2}}, wtedy dostajemy równość z którego wyznaczymy wyrażenie związane z różniczkę funkcji γ(r) w zależności od różniczki promienia sferycznego r i gęstości gwiazdy panujące w odległości od środka masy przy tym samym promieniu co wcześniej:
{{CentrujWzór|<MATH>e^{-\Lambda}\left(\Lambda^' r-1\right)+1={{8\pi G}\over{c^2}}\rho r^2\Rightarrow{{(r-2\gamma(r))}\over{r}}\left({{2\gamma^'(r)r-2\gamma(r)}\over{r(r-2\gamma(r))}}r-1\right)+1={{8\pi G}\over{c^2}}\rho r^2\Rightarrow\;</MATH>{{Br}}
<MATH>\Rightarrow{{r-2\gamma(r)}\over{r}}{{2\gamma^'(r)r-2\gamma(r)-r+2\gamma(r)}\over{r-2\gamma(r)}}+1={{8\pi G}\over{c^2}}\rho r^2\Rightarrow{{2\gamma^'(r)r-r}\over{r}}+1={{8\pi G}\over{c^2}}\rho r^2\Rightarrow\;</MATH>{{Br}}
<MATH>\Rightarrow{{2\gamma^'(r)r-r+r}\over{r}}={{8\pi G}\over{c^2}}\rho r^2\Rightarrow 2\gamma^'(r)={{8\pi G}\over{c^2}}\rho r^2\Rightarrow{{d\gamma(r)}\over{dr}}={{4\pi G}\over{c^2}}\rho r^2
\Rightarrow {{d\gamma(r) c^2}\over{dr G}}=4\pi \rho r^2\Rightarrow d\gamma(r){{c^2}\over{G}}=\rho 4\pi r^2dr</MATH>|8.65}}
Przecałkujmy obie strony ostatniego równania wynikowego względem promienia sferycznego r dla r>R i wiedząc, że zachodzi dla tego r (poza gwiazdą), tzn. ρ=0, zatem powinno dla jego całki zachodzić: {{Formuła|<MaTH>\int_0^{r} 4\pi r^2 \rho dr=M\;</MATH>}}, zatem funkcja γ(r), dla naszego rozważanego r>R jest funkcją stałą.
{{CentrujWzór|<MATH>\gamma(r)={{G}\over{c^2}}M</MATH>|8.66}}
Korzystając z wyrażenia {{LinkWzór|8.61}}, wtedy do wyrażenia na Λ podstawiamy za funkcję γ(r), który jest wyrażeniem {{LinkWzór|8.66}}, wtedy funkcję e{{Sup|-Λ}} na podstawie już obliczonego wyrażenia na Λ przyjmuje bardzo prostą postać:
{{CentrujWzór|<MATH>e^{\Lambda}={{1}\over{1-{{2M G}\over{r c^2}}}}=e^{-\Phi}</MATH>|8.67}}
Wiedząc że zachodzi {{LinkWzór|8.59}} (zależność na parametr Φ(r) w zależności od Λ(r)), a także ze wzoru na eksponens {{LinkWzór|8.67}}, którego wykładnikiem jest funkcja Λ(r), zatem w takim przypadku nasza metryka Schwarzschilda {{LinkWzór|8.5}} przyjmuje bardzo prostą postać:
{{CentrujWzór|<MATH>ds^2=\left(1-{{r_g}\over{r}}\right)c^2dt^2-{{1}\over{1-{{r_g}\over{r}}}}dr^2-r^2d\Omega^2</MATH>|8.68}}
* gdzie:{{Formuła|<MATH>r_g={{2M G}\over{c^2}}</MATH>}} i jest to promień Schwarzschilda, przy której prawa ogólnej teorii względności załamują się i taki obiekt staje się czarną dziurą, którego fotony lecące się z prędkością c, nie mogą pokonać grawitacji takiego obiektu, zatem nasza metryka Schwarzschilda jest zapisana:
{{CentrujWzór|<MATH>ds^2=\left(1-{{2M G}\over{r c^2}}\right)c^2dt^2-{{1}\over{1-{{2M G}\over{r c^2}}}}dr^2-r^2d\Omega^2</MATH>|8.69}}
Dla bardzo dużych odległości, tzn. r>>R, metryka powyższa przechodzi w coś podobnego do metryki słabego pola grawitacyjnego, wiedząc że: {{Formuła|<MATH>{{1}\over{1-x}}\simeq 1+x</MATH>}} oraz z podstaw o teorii grawitacji Newtona, wiemy że {{LinkWzór|5.58|Słabe_pola_grawitacyjne}}:
{{CentrujWzór|<MATH>ds^2=\left(1+{{2\varphi}\over{c^2}}\right)c^2dt^2-\left(1-{{2\varphi}\over{c^2}}\right)dr^2-r^2d\Omega^2</MATH>|8.70}}
co jest bardzo podobne do metryki słabego pola grawitacyjnego dla teorii grawitacji dla dużych odległości od źródła pola grawitacyjnego. Tylko jest mała różnica w trzecim składniku sumy w metryce {{LinkWzór|8.70}}. A wiec metryka Schwarzschilda dla dużych odległości od źródła pola grawitacyjnego zachowuje się prawie (z drobną różnicą powiedzianą wcześniej) jak metryka słabego pola grawitacyjnego pola Newtonowskiego.
== Odległość radialna i czas własny w metryce Schwarzschilda ==
Czas własny w polu grawitacyjnym wedle wzoru {{LinkWzór|8.9}} na podstawie już obliczonych tensorów metrycznych, którego parametry g{{Sub|rr}}=-e{{Sup|Λ}} i g{{Sub|tt}}=e{{Sup|Φ}} zawarte w macierzy tensora metrycznego {{LinkWzór|8.6}}:
{{CentrujWzór|<MATH>\tau=\int^{t_2}_{t_1} e^{{{1}\over{2}}\Phi(r(t))}dt=\int^{t_2}_{t_1}\sqrt{1-{{r_g}\over{r(t)}}}dt\simeq\sqrt{1-{{r_g}\over{r}}}\Delta t</MATH>|8.71}}
Z powyższego rozważania, gdy r{{Sub|g}}=r wynika, że czas w polu grawitacyjnym w horyzoncie zdarzeń płynie nieskończenie powoli dla Δt skończonego. Odległość radialna w polu grawitacyjnym wedle wzoru {{LinkWzór|8.8}} wedle już obliczonego parametru {{LinkWzór|8.67}} wyraża się:
{{CentrujWzór|<MATH>R=\int^{r_2}_{r_1}e^{{{1}\over{2}}\Lambda(r)}dr=\int^{r_2}_{r_1}{{1}\over{\sqrt{1-{{r_g}\over{r}}}}}dr\simeq {{1}\over{\sqrt{1-{{r_g}\over{r}}}}}\Delta r</MATH>|8.72}}
Z powyższego wzoru wynika, że dla r→ r{{Sub|g}}, ale r>r{{Sub|g}}, odległość radialna w polu grawitacyjnym jest nieskończenie duża względem układu lokalnie inercjalnego, którego odległość radialna współrzędnościowo jest skończona i wynosi Δ r.
Widzimy, że czas {{LinkWzór|8.71}} i odległość radialna {{LinkWzór|8.72}}, która jest mierzona przez obserwatora są równe czasowi i odległości współrzędnościowej dla bardzo dużego promienia współrzędnościowego.
== Równania ruchu z płynem doskonałym ==
Zachowawczość tensora gęstości energii jest spełniona, gdy {{LinkWzór|1.50|Wprowadzenie do ogólnej teorii względności}} rozpiszemy go z definicji pochodnej kowariantnej tensora energii-napięć:
{{CentrujWzór|<MATH>0={T^{\alpha\beta}}_{;\beta}={T^{\alpha\beta}}_{,\beta}+{\Gamma^{\beta}}_{\mu\beta}T^{\alpha\mu}+{\Gamma^{\alpha}}_{\beta\mu}T^{\beta\mu}</math>|8.73}}
Z diagonalizacji tensora gęstości energii, a także dla α≠ r, wynika, że powyższe prawo jest spełnione tożsamościowo, bo dla tych przypadków elementy tensora, który opisuje prawą stronę równania tensorowego {{LinkWzór|8.73}} tożsamościowo są równe zero, ale dla przypadku α=r już tak nie jest, zatem zachodzi na podstawie takiego samego wspomnianego równania dla tego α:
{{CentrujWzór|<MATH>0={T^{r\beta}}_{;\beta}=(p e^{-\Lambda})_{,r}+\left(
{{1}\over{2}}\Phi^'+{{1}\over{2}}\Lambda^'+{{1}\over{r}}+{{1}\over{r}}
\right)(pe^{-\Lambda})+{{1}\over{2}}e^{\Phi-\Lambda}\Phi^'\rho_0 c^2 e^{-\Phi}+{{1}\over{2}}\Lambda^'(pe^{-\Lambda})-re^{-\Lambda}r^2p\left(-{{1}\over{r^2}}\right)\left(-{{1}\over{r^2}}\right)+\;</MATH>{{Br}}<MATH>-re^{-\Lambda}\sin^2\phi r^2p\sin^2\phi\left(-{{1}\over{r^2\sin^2\phi}}\right)\left(-{{1}\over{r^2\sin^2\phi}}\right)={{dp}\over{dr}}e^{-\Lambda}-pe^{-\Lambda}\Lambda^'+
{{1}\over{2}}\Phi^'pe^{-\Lambda}+{{1}\over{2}}\Lambda^'pe^{-\Lambda}+{{2}\over{r}}pe^{-\Lambda}+\;</MATH>{{Br}}<MATH>
+{{1}\over{2}}\rho_0 c^2 e^{-\Lambda}\Phi^'+{{1}\over{2}}pe^{-\Lambda}\Lambda^'-{{2p}\over{r}}e^{-\Lambda}=e^{-\Lambda}\left({{dp}\over{dr}}+{{1}\over{2}}\left(\rho_0 c^2+p\right){{d\Phi}\over{dr}}\right)</MATH>|8.74}}
Po przekształceniach równości {{LinkWzór|8.74}}, wtedy dochodzimy do wniosku, że funkcja w nawiasie we wspomnianej równości jest zawsze równa zero, zatem w tak otrzymanym wyrażeniu przenosimy w nim składniki w tym równaniu na przeciwne strony:
{{CentrujWzór|<MATH>-2{{dp}\over{dr}}=\left(\rho_0 c^2+p\right){{d\Phi}\over{dr}}</MATH>|8.75|Obramuj}}
Powyższe równanie opisuje, że jeśli mamy zmianę ciśnienia w zależności od promienia r, to możemy obliczyć funkcję Φ, zakładając jej ciągłość dla granicy r=R, bo rozwiązanie dla r>R dla funkcji Φ jest już znane.
== Wnioski wynikające z równania Einsteina ==
Z równań tensorowych grawitacji Einsteina możemy napisać tylko dla wskaźników dolnych erowych i otrzymać następne inne równanie różniczkowe niż {{LinkWzór|8.75}}:
{{CentrujWzór|<MATH>G_{rr}={{8\pi G}\over{c^4}}T_{rr}\;</MATH>|8.76}}
Podstawiamy za G{{Sub|rr}} {{LinkWzór|8.48}} i za T{{Sub|rr}} {{LinkWzór|8.54}} do naszego równania grawitacji {{LinkWzór|8.76}} dla obu wskaźników radialnych dolnych, które po tej operacji otrzymujemy tożsamość zapisaną:
{{CentrujWzór|<MATH>-{{1}\over{r^2}}e^{\Lambda}\left(1-e^{-\Lambda}\right)+{{\Phi^'}\over{r}}={{8\pi G}\over{c^4}}pe^{\Lambda}\;</MATH>.|8.77}}
Wedle końcowego równania {{LinkWzór|8.65}} możemy przestawić funkcję γ(r), którego jest zależna od promienia gwiazdy R, którą to funkcję γ(r) przestawimy w zależności od masy gwiazdy zawarta w promieniu mniejszym niż r:
{{CentrujWzór|<MATH>d\gamma(r){{c^2}\over{G}}=\rho 4\pi r^2dr\Rightarrow d\gamma(r){{c^2}\over{G}}=dm(r)\Rightarrow \gamma={{G}\over{c^2}}m(r)\;</MATH>|8.78}}
Mając równanie {{LinkWzór|8.67}} na funkcja eksponesu funkcji Λ i podstawiając do niego wzór {{LinkWzór|8.78}}, wtedy nas wspomniany eksponens funkcji Λ(r) wygląda wedle:
{{CentrujWzór|<math>e^{\Lambda}={{1}\over{1-{{2Gm(r)}\over{c^2r}}}}={{rc^2}\over{c^2r-2Gm(r)}}\;</MATH>|8.79}}
Przekształcamy nasze równanie Einsteina {{LinkWzór|8.77}}, tak by mieć w jednym miejscu funkcję Λ, by potem łatwo można by było podstawić eksponens funkcji Λ:
{{CentrujWzór|<MATH>-{{1}\over{r^2}}e^{\Lambda}+{{1}\over{r^2}}+{{\Phi^'}\over{r}}={{8\pi G}\over{c^4}}pe^{\Lambda}\Rightarrow e^{\Lambda}\left({{8\pi G}\over{c^4}}p+{{1}\over{r^2}}\right)={{1}\over{r^2}}+{{\Phi^'}\over{r}}\;</MATH>|8.80}}
Podstawmy do równania {{LinkWzór|8.80}} wyrażenie na e{{Sup|Λ}} napisane w punkcie {{LinkWzór|8.79}}, którą jest funkcją tylko promienia od środka gwiazdy, które pod to podstawienie przygotowaliśmy nasze wspomniane równanie:
{{CentrujWzór|<MATH>{{c^2r}\over{c^2r-2Gm(r)}}{{8\pi G p r^2+c^4}\over{c^4 r^2}}={{1}\over{r^2}}+{{\Phi^'}\over{r}}\Rightarrow {{c^2r^2}\over{c^2r-2Gm(r)}}{{8\pi G p r^2+c^4}\over{c^4 r^2}}-{{1}\over{r}}=\Phi^'\Rightarrow{{8\pi G pr^2+c^4}\over{c^2(c^2r-2Gm(r))}}-{{1}\over{r}}=\Phi^'\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow{{d\Phi}\over{dr}}={{8\pi G p r^3+c^4r-c^4 r+2Gc^2m(r)}\over{c^2 r(c^2r-2Gm(r))}}\Rightarrow{{d\Phi}\over{dr}}={{8\pi G p r^3+2Gc^2m(r) }\over{c^2r(c^2r-2Gm(r))}}\Rightarrow{{d\Phi}\over{dr}}=2G{{m(r)+{{4\pi }\over{c^2}}pr^3}\over
{r(c^2r-2Gm(r))}}\;</MATH>|8.81}}
Z końcowych równanań {{LinkWzór|8.81}} i z {{LinkWzór|8.75}} i mając jakieś prawa równowagi danej gwiazdy statycznej możemy wyznaczyć Φ(r), p(r) i m(r), a na samym koniec obliczyć gęstość gwiazdy w zależności od jej promienia.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
k7m60rz04sg0gfl98uv6qgg23dx7p89
Ogólna teoria względności/Geometria statycznych czasoprzestrzeni Schwarzschilda, a czarne dziury
0
16393
558865
470275
2026-10-07T14:55:13Z
Persino
2851
558865
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Poniżej przedstawimy w prawie wszystko związane z geometrią Schwarzschilda jako ciąg dalszy z poprzedniego rozdziału, a także wnioski, które będziemy rozpatrywać o czarnych dziurach w tejże geometrii.
== Tensor metryczny w geometrii Schwarzchilda ==
Tensor metryczny w geometrii Schwarzchilda ma tylko wyrazy diagonalne.
Tensor metryczny podwójnie kowariantny oraz podwójnie kontrawariantny, na podstawie {{LinkWzór|8.6|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}} i {{LinkWzór|8.7|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}} i przedstawienia funkcji Ψ(r) i Λ(r) na zewnątrz kulistosymetrycznej, jest napisany:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>g_{\mu\nu}=\begin{bmatrix}
1-{{2GM}\over{rc^2}}&0&0&0\\
0&-{{1}\over{1-{{2GM}\over{rc^2}}}}&0&0\\
0&0&-r^2\sin^2\phi&0\\
0&0&0&-r^2
\end{bmatrix}\;</MATH>|10.1}}
| 2 = {{CentrujWzór|<MaTH>g^{\mu\nu}=\begin{bmatrix}
{{1}\over{1-{{2GM}\over{rc^2}}}}&0&0&0\\
0&-\left(1-{{2GM}\over{rc^2}}\right)&0&0\\
0&0&-{{1}\over{r^2\sin^2\phi}}&0\\
0&0&0&-{{1}\over{r^2}}
\end{bmatrix}</MATH>|10.2}}
}}
== Wielkości zachowawcze dla cząstek o niezerowej masie spoczynkowej ==
Będziemy korzystać z wyrażenia, które wynika z definicji kwadratu różniczki interwału czasoprzestrzennego i definicji czteropędu wedle wzoru {{LinkWzór|1.11|Wprowadzenie do ogólnej teorii względności}}, które napiszemy:
{{CentrujWzór|<MATH>m_0^2c^2=p^{t}g_{tt}p^t+p^rg_{rr}p^r+p^{\theta}g_{\theta\theta}p^{\theta}\Rightarrow m_0^2c^2=p_tg^{tt}p_t+\left(p^r\right)^2g_{rr}+\left(p^{\theta}\right)^2g_{\theta\theta}\;</MATH>|10.3}}
Elementy tensora metrycznego prostego jak i odwrotnego {{LinkWzór|10.1}} i {{LinkWzór|10.2}} nie zależą od zmiennej czasowej jak i od zmiennej kątowej θ, wtedy kowariantny pęd czasowy i pęd θ-owy są wielkościami stałymi względem zmiany interwału czasoprzestrzennego, bo wedle twierdzenia {{LinkWzór|6.36|Fizyka_w_słabozakrzywionych_czasoprzestrzeniach}}, te wielkości zapiszemy w postaci zredukowanej względem parametrów względem ich mas spoczynkowych:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>p_tc=E=\tilde{E}m_0\;</MATH>|10.4}}
| 2 = {{CentrujWzór|<MATH>p_{\theta}=\tilde{L}m_0\;</MATH>|10.5}}
}}
Element radialny czterowektora pędu zapisujemy z definicji czterowektora pędu {{LinkWzór|1.8|Wprowadzenie do ogólnej teorii względności}}, zapisanej w zależności od elementu radialnego czterowektora prędkości i masy spoczynkowej rozważanego ciała fizycznego, w postaci:
{{CentrujWzór|<MATH>p^r=m_0c{{dr}\over{ds}}\;</MATH>|10.6}}
A także element trzeci prawej strony wyrażenia {{LinkWzór|10.3}} przy wykorzystaniu definicji stałej L, wiedząc jednocześnie że kowariantny θ-owy pęd ma charakter momentu pędu ruchu danej cząstki, którego to dowód, że tak jest, napisane jest przy punkcie {{LinkWzór|6.59|Fizyka_w_słabozakrzywionych_czasoprzestrzeniach}}, oznaczać je będziemy przez L{{Sub|θ}}, a kowariantntny ψ-owy element czterowektora pędu jest równy zero, możemy zapisać jako całkowity moment pędu równy L=L{{Sub|θ}}. Z własności elementów tensora metrycznego możemy zapisać ostatni wyraz wspomnianej równości {{LinkWzór|10.3}} w postaci:
{{CentrujWzór|<MATH>
\left(p^{\theta}\right)^2g_{\theta\theta}=\left(p_{\theta}g^{\theta\theta}\right)^2g_{\theta\theta}=\left(p_{\theta}\right)^2\left(g^{\theta\theta}\right)^2g_{\theta\theta}=\left(p_{\theta}\right)^2g^{\theta\theta}=-{{\left(p_{\theta}\right)^2}\over{r^2}}=-{{L^2}\over{r^2}}\;</MATH>|10.7}}
Dochodzimy więc do wniosku że równość {{LinkWzór|10.3}} dla cząstki, która ma masę spoczynkową nieznikającą, a także wedle definicji elementów tensora metrycznego {{LinkWzór|10.1}} i {{LinkWzór|10.2}}, oraz korzystając ze wzorów {{LinkWzór|10.4}} i {{LinkWzór|10.7}}, jest w postaci:
{{CentrujWzór|<MATH>m^2_0c^2=\left({{E}\over{c}}\right)^2\left(1-{{2MG}\over{rc^2}}\right)^{-1}-\left(m_0 c{{dr}\over{ds}}\right)^2\left(1-{{2MG}\over{rc^2}}\right)^{-1}-{{L^2}\over{r^2}}\;</MATH>|10.8}}
Z korzystajmy z definicji energii i momentu pędu zredukowanego wedle równości {{LinkWzór|10.4}} (który jest zredukowaną energią cząstki) i {{LinkWzór|10.5}} (która jest zredukowanym pędem danej cząstki fizycznej), wtedy wyrażenie {{LinkWzór|10.8}} możemy zapisać jako:
{{CentrujWzór|<MATH>m^2_0c^2=m_0^2\left({{\tilde{E}}\over{c}}\right)^2\left(1-{{2MG}\over{rc^2}}\right)^{-1}-m_0^2c^2\left({{dr}\over{ds}}\right)^2\left(1-{{2MG}\over{rc^2}}\right)^{-1}-{{m_0^2\tilde{L}^2}\over{r^2}}\;</MATH>|10.9}}
Następnym krokiem jest podzielenie obustronne powyższego równania przez niezerową masę spoczynkową cząstki m{{Sub|0}}, oczywiście tutaj nie mamy na myśli fotonów, wtedy piszemy:
{{CentrujWzór|<MATH>c^2={{\tilde{E}^2}\over{c^2}}\left(1-{{2MG}\over{rc^2}}\right)^{-1}-c^2\left({{dr}\over{ds}}\right)^2\left(1-{{2GM}\over{rc^2}}\right)^{-1}-{{\tilde{L}^2}\over{r^2}}\;</MATH>|10.10}}
Wyznaczmy teraz coś w rodzaju wyrażenia {{Formuła|<MATH>\left({{dr}\over{ds}}\right)^2\;</MATH>}} w równości {{LinkWzór|10.10}}, przenosząc tego typu wyrazy na lewą stronę omawianego równania, a pozostałe niech będą na prawej stronie naszego wzoru wraz z elementem stałym:
{{CentrujWzór|<MATH>c^2\left({{dr}\over{ds}}\right)^2\left(1-{{2GM}\over{rc^2}}\right)^{-1}={{\tilde{E}^2}\over{c^2}}\left(1-{{2GM}\over{rc^2}}\right)^{-1}-{{\tilde{L}^2}\over{r^2}}-c^2\;</MATH>|10.11}}
Następnym krokiem jest pomnożenie obustronnie równania {{LinkWzór|10.11}} przez wyrażenie: {{Formuła|<MATH>c^{2}\left(1-{{2GM}\over{rc^2}}\right)\;</MATH>}}, by pozostał tylko kwadrat pochodnej wyrażenia współrzędnej radialnej względem interwału czasoprzestrzennego, wtedy mamy:
{{CentrujWzór|<MATH>\left({{dr}\over{ds}}\right)^2={{\tilde{E}^2}\over{c^4}}-
\left({{\tilde{L}^2}\over{r^2c^2}}+1\right)\left(1-{{2GM}\over{rc^2}}\right)\;</MATH>|10.12}}
Określmy potencjał efektywny występujący w {{LinkWzór|10.12}} po prawej jego stronie jako odjemnik, który jest zależny od położenia cząstki masowej na orbicie wokół statystyczno-kulistej masy według geometrii Schwarzschilda:
{{CentrujWzór|<MATH>\tilde{V}\left(r\right)=\left({{\tilde{L}^2}\over{r^2c^2}}+1\right)\left(1-{{2GM}\over{rc^2}}\right)\;</MATH>|10.13}}
Wykorzystując definicję potencjału efektywnego zdefiniowanego w punkcie {{LinkWzór|10.13}} dla cząstek o niezerowej masie spoczynkowej, wtedy równość {{LinkWzór|10.12}} możemy napisać:
{{CentrujWzór|<MATH>\left({{dr}\over{ds}}\right)^2={{\tilde{E}^2}\over{c^4}}-\tilde{V}\left(r\right)\;</MATH>|10.14}}
Z różniczkujmy równanie {{LinkWzór|10.14}} względem interwału czasoprzestrzennego, wtedy po prawej stronie tego równania wyraz, który jest odjemną znika, bo jest funkcją stałą, ale odjemnik pozostaje i jest różniczkowany względem powiedzianego parametru:
{{CentrujWzór|<MATH>2\left({{dr}\over{ds}}\right){{d^2r}\over{ds^2}}=-{{d\tilde{V}\left(r\right)}\over{dr}}{{dr}\over{ds}}\;</MATH>|10.15}}
Ponieważ jak zakładamy wyrażenie {{Formuła|<math>{{dr}\over{ds}}\;</MATH>}} jest różna od zera, jak na ogół mówimy, wtedy wyrażenie {{LinkWzór|10.15}} po podzieleniu przez ten wyraz przyjmuje postać:
{{CentrujWzór|<MATH>{{d^2r}\over{ds^2}}=-{{1}\over{2}}{{d\tilde{V}\left(r\right)}\over{dr}}\;</MATH>|10.16}}
Rozpatrzmy orbity stabilne, gdy mamy minimum energii efektywnej lub maksimum, wtedy pochodna wielkości {{LinkWzór|10.13}} względem "r" przyrównanej do zera, z której to równości wyznaczymy wartość promienia współrzędnościowego:
{{CentrujWzór|<MATH>0={{d\tilde{V}\left(r\right)}\over{dr}}\Rightarrow</math>{{Br}}<math>\Rightarrow 0={{d}\over{dr}}\left[\left({{\tilde{L}^2}\over{r^2c^2}}+1\right)\left(1-{{2GM}\over{rc^2}}\right)\right]\Rightarrow 0=-2{{\tilde{L}^2}\over{c^2r^{3}}}\left(1-{{2GM}\over{rc^2}}\right)+\left({{\tilde{L}^2}\over{r^2c^2}}+1\right){{2GM}\over{c^2r^2}}</MATH>|10.17}}
Następnie opuszczamy wszystkie nawiasy występujące w równości końcowej {{LinkWzór|10.17}}, by potem po przegrupowaniu wszystkich wyrazów, które stoją tylko po prawej stronie równości, by otrzymać końcową równość:
{{CentrujWzór|<MATH>0=-2{{\tilde{L}^2}\over{c^2r^3}}+{{4GM\tilde{L}^2}\over{r^4c^4}}+{{2GM\tilde{L}^2}\over{r^4c^4}}+{{2GM}\over{c^2r^2}}\Rightarrow 0={{6GM\tilde{L}^2}\over{r^4c^4}}+{{2GM}\over{c^2r^2}}-2{{\tilde{L}^2}\over{c^2r^3}}</MATH>|10.18}}
Pomnóżmy obustronnie równość napisanej w punkcie {{LinkWzór|10.18}} przez czwartą potęgę współrzędnej radialnej, tzn. r{{Sup|4}} przy założeniu, że r jest nie równe zero:
{{CentrujWzór|<MATH>0={{6GM\tilde{L}^2}\over{c^4}}+{{2GM}\over{c^2}}r^2-2{{\tilde{L}^2}\over{c^2}}r\Rightarrow 0={{2GM}\over{c^2}}r^2-2{{\tilde{L}^2}\over{c^2}}r+{{6GM\tilde{L}^2}\over{c^4}}</MATH>|10.19}}
Pomnóżmy dalej obustronnie równanie {{LinkWzór|10.19}} przez czwartą potęgę prędkości światła, czyli przez c{{Sup|4}}, wtedy można to nasze wyrażenie napisać w postaci równoważnej do poprzedniego tutaj rozważanego równania:
{{CentrujWzór|<MATH>0=\underbrace{2GM c^2}_ar^2\underbrace{-2\tilde{L}^2 c^2 }_br+\underbrace{6GM\tilde{L}^2}_c</MATH>|10.20}}
Powyższe równanie jest równaniem kwadratowym znanej z lekcji matematyki ze szkoły średniej, którego wyróżnik trójmianu jest równy wyrażeniu zapisanej wedle:
{{CentrujWzór|<MATH>\Delta=4\tilde{L}^4c^4-4\cdot 2GMc^2 6GM\tilde{L}^2=4\left(\tilde{L}^4c^4-12 G^2M^2c^2\tilde{L}^2\right)=4\tilde{L}^4 c^4\left(1-{{12G^2M^2}\over{c^2\tilde{L}^2}}\right)</MATH>|10.21}}
Wtedy rozwiązanie równania kwadratowego {{LinkWzór|10.20}}, przy definicji wyróżnika tego samego wielomianu, przedstawiamy wedle:
{{CentrujWzór|<MATH>r={{2\tilde{L}^2c^2\pm{2\tilde{L}^2c^2}\sqrt{1-{{12G^2M^2}\over{c^2\tilde{L}^2}}}}\over{2\cdot 2GMc^2}}\Rightarrow r={{\tilde{L}^2}\over{2GM}}\left(1\pm\sqrt{1-{{12G^2M^2}\over{c^2\tilde{L}^2}}}\right)</MATH>|10.22}}
Jeśli mamy orbitę kołową, to musi być na pewno stały promień orbity, wtedy Δ zdefiniowanego wzorem {{LinkWzór|10.21}} musi przyjmować wartość zero, bo {{LinkWzór|10.20}} jako równanie kwadratowe musi mieć jedno podwójne rozwiązanie w postaci pewnego promienia radialnego, tzn.{{Formuła|<MATH>\tilde{L}^2={{12G^2M^2}\over{c^2}}</MATH>}}, to dla tego przypadku mamy orbitę kołową, ponieważ maksimum oddalenia jest równy minimum odchylenia od ciała o masie M, bo pierwiastek jest równy zero. Wtedy promień dla orbity kołowej jest równy:
{{CentrujWzór|<MATH>r={{\tilde{L}^2}\over{2GM}}={{12 G^2M^2}\over{c^2 2GM}}={{6GM}\over{c^2}}</MATH>|10.23}}
Jeśli ciało porusza się po okręgu, to jego promień orbity jest wyrażony wzorem {{LinkWzór|10.23}}.
== Wielkości zachowawcze dla cząstek bezmasowych (fotonów) ==
Następnym naszym wyzwaniem są fotony w przeciwieństwie do masowych cząstek mają masę spoczynkową równą zero m{{Sub|0}}=0. Wersję wzoru {{LinkWzór|1.11|Wprowadzenie do ogólnej teorii względności}} dla rozważanych cząstek piszemy jako:
{{CentrujWzór|<MATH>p_{\mu}p^{\mu}=0\;</MATH>|10.24}}
Pęd radialny jako element czterowektora pędu jest wyrażony w zależności od masy cząstki i pochodnej czasowej wielkości radialnej. Mając już wyprowadzoną jego wersję w punkcie {{LinkWzór|6.51|Fizyka_w_słabozakrzywionych_czasoprzestrzeniach}}, co w którym zdefiniujemy nowy parametr λ, dzieki którego możemy wprowadzić odpowiednie przestawienia i wprowadzić z kolei ten nasz wspomniany parametr:
{{CentrujWzór|<MATH>p^r=m{{dr}\over{dt}}={{dr}\over{{{1}\over{m}}dt}}={{dr}\over{d\lambda}}\;</MATH>|10.25}}
* gdzie m to masa relatywistyczna fotonu.
Skorzystajmy ze wzoru {{LinkWzór|10.25}} (na definicję elementu radialnego czterowektora pędu w zależności od parametru λ) oraz także korzystając ze wzoru {{LinkWzór|10.7}}, który jest zbudowany przy pomocy całkowitego kowariantnego θ-owego pędu, który spełnia rolę momentu pędu danego badanego fotonu, a także z definicji kowariantnego pędu czasowego, który jest energią fotonu podzielna przez prędkość światła, również z definicji dla elementów tensora metrycznego dla kulistosymetrycznej statystycznej geometrii Schwarzschilda równość {{LinkWzór|10.24}} możemy napisać jako:
{{CentrujWzór|<MATH>\left(1-{{2MG}\over{cr^2}}\right)^{-1}\left({{E}\over{c}}\right)^2-\left(1-{{2MG}\over{rc^2}}\right)^{-1}\left({{dr}\over{d\lambda}}\right)^2-{{L^2}\over{r^2}}=0\;</MATH>|10.26}}
Ze wzoru {{LinkWzór|10.26}} wyznaczmy wyraz z pochodną wielkości radialnej względem parametru {{Formuła|<MATH>\lambda\;</MAth>}}, otrzymujemy:
{{CentrujWzór|<MATH>\left(1-{{2MG}\over{rc^2}}\right)^{-1}\left({{dr}\over{d\lambda}}\right)^2=
\left(1-{{2MG}\over{cr^2}}\right)^{-1}\left({{E}\over{c}}\right)^2-{{L^2}\over{r^2}}\;</MATH>|10.27}}
W celu wyznaczenia wielkości wyrażonej wzorem {{Formuła|<MATH>\left({{dr}\over{d\lambda}}\right)^2\;</MATH>}} w równości {{LinkWzór|10.27}} pomnóżmy to równanie przez wyrażenie napisane wzorem {{Formuła|<MATH>1-{{2MG}\over{rc^2}}\;</MATH>}}, co można to zrobić, jeśli nasz promień r kołowej orbity kulistosymetrycznej gwiazdy nie jest równy promieniowi Schwarzschilda, więc wtedy otrzymujemy dalszą równość po opisywanych tutaj operacjach:
{{CentrujWzór|<MATH>\left({{dr}\over{d\lambda}}\right)^2=\left({{E}\over{c}}\right)^2-
\left(1-{{2MG}\over{rc^2}}\right){{L^2}\over{r^2}}\;</MATH>|10.28}}
Wprowadźmy wielkość zwaną potencjałem efektywnym występującej we wzorze {{LinkWzór|10.28}} jako odjemnik. Jest ona zależna od momentu pędu L, które to ten parametr charakteryzuje nasze rozważane ciało krążącej wokół naszej masy, jest ono oznaczane przez:
{{CentrujWzór|<MATH>V\left(r\right)=\left(1-{{2MG}\over{rc^2}}\right){{L^2}\over{r^2}}\;</MATH>|10.29}}
Ostatecznie z uwzględnieniem definicji na potencjał efektywny zdefiniowany w punkcie {{LinkWzór|10.29}} równość {{LinkWzór|10.28}} zapisujemy w ostatecznej postaci jako kwadrat funkcji pochodnej wielkości radialnej charakteryzujących odległość ciała od środka masy M względem parametru λ:
{{CentrujWzór|<MATH>\left({{dr}\over{d\lambda}}\right)^2=\left({{E}\over{c}}\right)^2-V^2\left(r\right)\;</MATH>|10.30}}
Zróżniczkujmy obie strony naszego równania {{LinkWzór|10.30}} względem wprowadzonego parametru λ dla cząstek bezmasowych, wiedząc, że w tej rozważanej równości po prawej jego stronie odjemna jest parametrem stałym, która znika przy różniczkowaniu:
{{CentrujWzór|<MATH>2{{dr}\over{d\lambda}}{{d^2r}\over{d\lambda^2}}=-{{dV\left(r\right)}\over{d\lambda}}{{dr}\over{d\lambda}}\;</MATH>|10.31}}
Następnym naszym krokiem jest podzielenie równania {{LinkWzór|10.31}} obustronnie przez wyrażenie {{Formuła|<MATH>2{{dr}\over{d\lambda}}\;</MATH>}}, który jak zakładamy jest na ogół różna od liczby zero, co jest spełnione w prawie większości przypadków dla orbit niekołowych:
{{CentrujWzór|<MATH>{{d^2r}\over{d\lambda^2}}=-{{1}\over{2}}{{dV\left(r\right)}\over{dr}}\;</MATH>|10.32}}
Rozpatrzmy minimum lub maksimum potencjału efektywnego {{LinkWzór|10.29}}, czyli: {{Formuła|<MATH>{{dV\left(r\right)}\over{dr}}=0\;</MATH>}}, a zatem mamy:
{{CentrujWzór|<MATH>0={{d}\over{dr}}\left[\left(1-{{2GM}\over{rc^2}}\right){{L^2}\over{r^2}}\right]\Rightarrow 0={{2GM}\over{r^2c^2}}{{L^2}\over{r^2}}-2\left(1-{{2GM}\over{rc^2}}\right){{L^2}\over{r^3}}\;</MATH>|10.33}}
Pomnóżmy obie strony ostatniego równania {{LinkWzór|10.33}} przez czwartą potęgę promienia sferycznego r{{Sup|4}} i zakładając przy tym że ten promień jest nie równy zero, i dalej skorzystajmy, że stała podczas ruchu na całej orbicie jako parametr L jest wielkością niezerową:
{{CentrujWzór|<MATH>0={{2GM}\over{c^2}}L^2-2rL^2+2{{2GM}\over{c^2}}L^2\Rightarrow 3{{2GM}\over{c^2}}L^2=2rL^2\Rightarrow r={{3GM}\over{c^2}}\;</MATH>|10.34}}
Dochodzimy do wniosku, że cząstka bezmasowa (foton), ma orbitę kołową o promieniu r bardziej zbliżoną środka statycznej masy niż orbita kołowa cząstki o niezerowej masie spoczynkowej.
== Okres obrotu a promień współrzędnościowy ==
Skorzystajmy ze wzoru {{LinkWzór|10.22}}, który przedstawia minimalny i maksymalny promień orbity cząstki masowej, z czego wyznaczymy wyrażenie na kwadrat zredukowanego momentu pędu<MATH>_{\tilde{L}^2}\;</Math> w dalszych obliczeniach, ale najpierw przekształćmy trochę nasz wzór by po prawej stronie był pierwiastek:
{{CentrujWzór|<MATH>r={{\tilde{L}^2}\over{2M G}}\left(1\pm\sqrt{1-{{12G^2M^2}\over{c^2\tilde{L}^2}}}\right)\Rightarrow r{{2MG}\over{\tilde{L}^2}}-1=\pm\sqrt{1-{{12G^2M^2}\over{c^2\tilde{L}^2}}}</MATH>|10.35}}
Z równości ostatniej wynikowej {{LinkWzór|10.35}} podnieśmy go do drugiej potęgi, aby zlikwidować pierwiastek występujący po prawej stronie równości:
{{CentrujWzór|<MATH>\left(r{{2MG}\over{\tilde{L}^2}}-1\right)^2=1-{{12G^2M^2}\over{c^2\tilde{L}^2}}\Rightarrow r^2{{4M^2G^2}\over{\tilde{L}^4}}+1-2r{{2MG}\over{\tilde{L}^2}}=1-{{12G^2M^2}\over{c^2\tilde{L}^2}}\Rightarrow r^2{{4M^2G^2}\over{\tilde{L}^4}}-2r{{2MG}\over{\tilde{L}^2}}=-{{12G^2M^2}\over{c^2\tilde{L}^2}}</MATH>|10.36}}
Równanie {{LinkWzór|10.36}} podzielmy obustronnie przez wyrażenie zależne od masy źródła pola grawitacyjnego {{Formuła|<MATH>{{4MG}\over{\tilde{L}^2}}</MATH>}}, by potem otrzymać równość pierwszą poniżej, by zaraz ją pomnożyć przez wyrażenie {{Formuła|<MATH>{{\tilde{L}^2}\over{r-{{3GM}\over{c^2}}}}</MATH>}}, by dostać następnie wyrażenie na {{Formuła|<maTh>\tilde{L}^2\;</MATH>}} (ostatnia równość zaraz poniżej), których schemat tych czynności przedstawiamy tutaj:
{{CentrujWzór|<MATH>r^2{{MG}\over{\tilde{L}^2}}-r=-{{3GM}\over{c^2}}\Rightarrow r^2{{GM}\over{\tilde{L}^2}}=r-{{3GM}\over{c^2}}\Rightarrow\tilde{L}^2={{r^2GM}\over{r-{{3GM}\over{c^2}}}}={{GM r}\over{1-{{3MG}\over{rc^2}}}}</MATH>|10.37}}
Jasne jest, że dla orbity kołowej, które mamy wedle równości {{LinkWzór|10.14}}, gdzie zawsze zachodzi: {{Formuła|<MATH>\left({{\tilde{E}}\over{c^2}}\right)^2=\tilde{V}\left(r\right)</MATH>}}, bo mamy ponadto: {{Formuła|<MATH>{{dr}\over{ds}}=0</MATH>}}, bo promień orbity nie zmienia się, i dlatego pochodna promienia radialnego względem dowolnego parametru charakteryzującej ten ruch (tutaj mamy interwał czasoprzestrzenny) jest równa zero:
{{CentrujWzór|<MATH>{{\tilde{E}^2}\over{c^4}}=\left(1-{{2GM}\over{rc^2}}\right)\left(1+{{\tilde{L}^2}\over{r^2c^2}}\right)\Rightarrow
{{\tilde{E}^2}\over{c^4}}=\left(1-{{2GM}\over{rc^2}}\right)
\left(1-{{1}\over{r^2c^2}}{{GMr}\over{1-{{3MG}\over{rc^2}}}}\right)\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow{{\tilde{E}^2}\over{c^4}}=\left(1-{{2GM}\over{rc^2}}\right){{1-{{3MG}\over{rc^2}}-{{GM}\over{rc^2}}}\over{1-{{3MG}\over{rc^2}}}}\Rightarrow{{\tilde{E}^2}\over{c^2}}=\left(1-{{2GM}\over{rc^2}}\right){{1-{{2GM}\over{rc^2}}}\over{1-{{3GM}\over{rc^2}}}}</MATH>|10.38}}
Co ostatecznie w {{LinkWzór|10.38}} dokonujemy odpowiednie działania w tymże wspomnianym wzorze, co potem możemy otrzymać wyrażenie, które jest wyrażeniem wymiernym licznika przez mianownik, które są z osobna różnymi wyrażeniami:
{{CentrujWzór|<MATH>{{\tilde{E}^2}\over{c^4}}={{\left(1-{{2GM}\over{rc^2}}\right)^2}\over{1-{{3GM}\over{rc^2}}}}</MATH>|10.39}}
Gdy cząstka porusza się w jednej płaszczyźnie, co zachodzi gdy obierzemy płaszczyznę, by {{Formuła|<MATH>\vec{L}</MATH>}} było prostopadłe do tej płaszczyzny, to prędkość kątowa na podstawie elementów tensora metrycznego {{LinkWzór|10.2}} przedstawiana jest:
{{CentrujWzór|<MATH>{{d\theta}\over{ds}}=u^{\theta}={{p^{\theta}}\over{m_0c}}=g^{\theta\theta}{{p_{\theta}}\over{m_0c}}=g^{\theta\theta}{{L}\over{m_0c}}=g^{\theta\theta}{{\tilde{L}}\over{c}}={{\tilde{L}}\over{cr^2}}</MATH>|10.40}}
Następnie policzmy element zerowy czterowektora prędkości, korzystając z elementu podwójnie kontrawariantnego podwójnie zerowego tensora metrycznego {{LinkWzór|10.2}}:
{{CentrujWzór|<MATH>{{cdt}\over{ds}}=u^0={{p^0}\over{m_0 c}}=g^{00}{{p_0}\over{m_0 c}}=
g^{00}{{E}\over{m_0 c^2}}=g^{00}{{\tilde{E}}\over{c^2}}={{\tilde{E}c^{-2}}\over{1-{{2GM}\over{rc^2}}}}</MATH>|10.41}}
Podzielmy obustronnie wyrażenie {{LinkWzór|10.41}} przez {{LinkWzór|10.40}}, by potem dobrze wykorzystać wzór {{LinkWzór|10.39}} (wyrażenie na {{Formuła|<MATH>\tilde{E}\;</MAth>}}) i {{LinkWzór|10.37}} (wyrażenie na {{Formuła|<MATH>\tilde{L}\;</MATH>}}), wtedy otrzymamy jako pochodną czasową względem kąta θ, czyli otrzymamy końcowe wyrażenie, która nas interesuje:
{{CentrujWzór|<MATH>{{cdt}\over{d\theta}}={{{{cdt}\over{ds}}}\over{{{d\theta}\over{ds}}}}=
{{{{\tilde{E}c^{-2}}\over{1-{{2GM}\over{rc^2}}}}}\over{{{\tilde{L}}\over{cr^2}}}}=
{{\tilde{E}}\over{\tilde{L}}}{{c^{-1}r^2}\over{1-{{2GM}\over{rc^2}}}}=
{{{{c^{-1}}{r^2}}}\over{1-{{2GM}\over{rc^2}}}} {{\tilde{E}}\over{\tilde{L}}}=
{{{{c^{-1}}{r^2}}}\over{1-{{2GM}\over{rc^2}}}} c^2\sqrt{{{{{\left(1-{{2GM}\over{rc^2}}\right)^2}\over{1-{{3GM}\over{rc^2}}}}}\over{{{GM r}\over{1-{{3MG}\over{rc^2}}}}}}}={{cr^2}\over{1-{{2GM}\over{rc^2}}}}{{1-{{2GM}\over{rc^2}}}\over{\sqrt{GMr}}}={{c\sqrt{r^3}}\over{\sqrt{GM}}}=\;</MATH>{{Br}}<MATH>=c\sqrt{{{r^3}\over{GM}}}\Rightarrow {{dt}\over{d\theta}}=\sqrt{{{r^3}\over{GM}}}</MATH>|10.42}}
Okres jest to powrót do tego samego punktu w ciągu jednego pełnego obrotu, zatem różniczka czasu względem różniczki kątowej θ jest napisana wzorem poniżej przy pomocy tożsamości końcowej wynikowej {{LinkWzór|10.42}}, i która po scałkowaniu jego obustronnie wyraża okres obiegu cząstki w ciągu jego okrążenia wokół kulistosymetrycznej masy o kąt 2π.
{{CentrujWzór|<MATH>dt=\sqrt{{{r^3}\over{GM}}}d\theta\Rightarrow \int_0^Tdt=\int^{2\pi}_0\sqrt{{{r^3}\over{GM}}}d\theta\Rightarrow T=2\pi\sqrt{{{r^3}\over{GM}}}</MATH>|10.43}}
I otrzymaliśmy taki sam wzór co {{LinkWzór|9.40|Ruch_cząstki_próbnej_wokół_masy_statycznie_sferycznej-rozwiązanie_ogólne}}, tylko innym sposobem, pierwszy z praw ruchu cząstki po prostej w przestrzeni czerowymiarowej (czasoprzestrzeni), wedle ruchu po stycznej do tej prostej, a drugi ze wzoru obrazujący związek czteropędu z jej masą spoczynkową dla cząstki masowej.
== Przesunięcie peryferium ==
Mając wzór na pochodną położenia radialnego względem interwału czasoprzestrzennego {{Formuła|<MATH>\left({{dr}\over{ds}}\right)^2\;</MATH>}}, czyli wyrażona wzorem {{LinkWzór|10.12}}, oraz na pochodną zmiennej kątowej względem interwału czasoprzestrzennego {{Formuła|<MATH>{{d\theta}\over{ds}}\;</MATH>}} {{LinkWzór|10.40}}, ostatni wzór obustronnie podnosimy do kwadratu i dzielimy obustronnie pierwszy wzór przez drugi, wtedy znika różniczka interwału czasoprzestrzennego w końcowym równaniu:
{{CentrujWzór|<MaTH>\left({{dr}\over{d\theta}}\right)^2={{{{\tilde{E}^2}\over{c^4}}-
\left(1-{{2GM}\over{rc^2}}\right)\left(1+{{\tilde{L}^2}\over{c^2r^2}}\right)}\over{{{\tilde{L}^2}\over{c^2r^4}}}}\;</MATH>|10.44}}
Dokonajmy podstawienia w wyrażeniu {{LinkWzór|10.44}} wielkością zdefiniowaną poniżej, czyli dokonując zamiany zmiennych wedle schematu, tzn. u musi być odwrotnością promienia radialnego:
{{CentrujWzór|<MATH>u={{1}\over{r}}\;</MATH>|10.45}}
Na podstawie wzoru {{LinkWzór|10.45}} mamy również {{Formuła|<MATH>{{1}\over{u}}=r\;</MATH>}}, wtedy możemy policzyć pochodną położenia radialnego r względem położenia kątowego θ:
{{CentrujWzór|<MATH>{{dr}\over{d\theta}}={{d}\over{d\theta}}u^{-1}=-u^{-2}{{du}\over{d\theta}}\;</MATH>|10.46}}
Po podstawieniu za pochodną promienia względem wielkości kątowej {{Formuła|<MATH>{{dr}\over{d\theta}}\;</MATH>}} {{LinkWzór|10.46}}, a także podstawiając za odwrotność położenia radialnego u {{LinkWzór|10.45}} do równania {{LinkWzór|10.44}}, dostajemy:
{{CentrujWzór|<MATH>{{1}\over{u^4}}\left({{du}\over{d\theta}}\right)^2={{{{\tilde{E}^2}\over{c^4}}-\left(1-u{{2GM}\over{c^2}}\right)\left(1+{{\tilde{L}^2}\over{c^2}}u^2\right)}\over{{{\tilde{L}^2}\over{c^2}}u^4}}\;</MATH>|10.47}}
Pomnóżmy obustronnie wzór {{LinkWzór|10.47}} przez niezerowe wyrażenie u{{Sup|4}}, które na podstawie {{LinkWzór|10.45}} nigdy nie przyjmuje wartości równej zero, otrzymujemy:
{{CentrujWzór|<MATH>\left({{du}\over{d\theta}}\right)^2={{{{\tilde{E}^2}\over{c^4}}-\left(1-u{{2GM}\over{c^2}}\right)\left(1+{{\tilde{L}^2}\over{c^2}}u^2\right)}\over{{{\tilde{L}^2}\over{c^2}}}}\Rightarrow\left({{du}\over{d\theta}}\right)^2={{\tilde{E}^2}\over{\tilde{L}^2c^2}}-\left(1-u{{2GM}\over{c^2}}\right)\left({{c^2}\over{\tilde{L}^2}}+u^2\right)</MATH>|10.48}}
Zróbmy trochę przekształceń w końcowym wyrażeniu {{LinkWzór|10.48}} w celu usunięcia ostatnich nawiasów, wtedy:
{{CentrujWzór|<MATH>\left({{du}\over{d\theta}}\right)^2={{\tilde{E}^2}\over{c^2\tilde{L}^2}}-\left({{c^2}\over{\tilde{L}^2}}+u^2-u{{2GM}\over{\tilde{L}^2}}-u^3{{2GM}\over{c^2}}\right)\Rightarrow\left({{du}\over{d\theta}}\right)^2={{\tilde{E}^2}\over{c^2\tilde{L}^2}}-{{c^2}\over{\tilde{L}^2}}-u^2+u{{2GM}\over{\tilde{L}^2}}+
u^3{{2GM}\over{c^2}}\;</MATH>|10.49}}
Co po uporządkowaniu wyrazów z prawej strony równania {{LinkWzór|10.49}} względem parametru u {{LinkWzór|10.45}}:
{{CentrujWzór|<MATH>\left({{du}\over{d\theta}}\right)^2={{\tilde{E}^2}\over{c^2\tilde{L}^2}}-{{c^2}\over{\tilde{L}^2}}+u{{2GM}\over{\tilde{L}^2}}-u^2+
u^3{{2GM}\over{c^2}}\;</MATH>|10.50}}
Równanie {{LinkWzór|10.50}} jest równaniem ruchu dla cząstki posiadającej masę spoczynkową różną od zera, gdy jego promień wodzący jest określony za pomocą u {{LinkWzór|10.45}}.
=== Przesunięcie peryferium według Newtona ===
We wzorze, który otrzymaliśmy z ogólnej teorii względności {{LinkWzór|10.50}} zaniedbajmy wyrazy występujące ze sześcianem zmiennej u, czyli u{{Sup|3}}, jest to tzw. przybliżenie Newtona, mamy:
{{CentrujWzór|<MATH>\left({{du}\over{d\theta}}\right)^2={{\tilde{E}^2}\over{c^2\tilde{L}^2}}-{{c^2}\over{\tilde{L}^2}}+u{{2GM}\over{\tilde{L}^2}}-u^2</MATH>|10.51}}
Dokonajmy podstawienia we wzorze {{LinkWzór|10.51}}, za funkcję zmienną zmiennej u {{LinkWzór|10.45}} wyrażając ją w zmiennych y:
{{CentrujWzór|<MATH>y=u-{{GM}\over{\tilde{L}^2}}</MATH>|10.52}}
Ze wzoru {{LinkWzór|10.52}} wynika, że pochodna wyrażenia y względem zmiennej kątowej, bo ruch masowego ciała odbywa się w jednej płaszczyźnie, można zapisać jako pochodną zmiennej u {{LinkWzór|10.45}} względem zmiennej kątowej:
{{CentrujWzór|<MATH>{{dy}\over{d\theta}}={{d}\over{d\theta}}\left(u-{{GM}\over{\tilde{L}^2}}\right)={{du}\over{d\theta}}</MATH>|10.53}}
Dokonajmy teraz podstawień przy pomocy odpowiednich dwóch wyrażeń {{LinkWzór|10.52}} (definicja zmiennej y względem zmiennej u) i {{LinkWzór|10.53}} (pochodna zmiennej y względem położenia kątowego θ) do równania różniczkowego zapisanej w punkcie {{LinkWzór|10.51}}, mamy:
{{CentrujWzór|<MATH>\left({{dy}\over{d\theta}}\right)^2={{\tilde{E}^2}\over{c^2\tilde{L}^2}}-{{c^2}\over{\tilde{L}^2}}+
\left(y+{{GM}\over{\tilde{L}^2}}\right){{2GM}\over{\tilde{L}^2}}-\left(y+{{GM}\over{\tilde{L}^2}}\right)^2</MATH>|10.54}}
Dokonajmy teraz odpowiednich wymnożeń w równaniu {{LinkWzór|10.54}}, by potem dokonać odpowiednich grupowań wyrazów względem wzrastającej potęgi zmiennej u {{LinkWzór|10.45}}, by dalej otrzymać:
{{CentrujWzór|<MATh>\left({{dy}\over{d\theta}}\right)^2={{\tilde{E}^2}\over{c^2\tilde{L}^2}}-{{c^2}\over{\tilde{L}^2}}+
y{{2GM}\over{\tilde{L}^2}}+{{2G^2M^2}\over{\tilde{L}^4}}-y^2-2y{{GM}\over{\tilde{L}^2}}-{{G^2M^2}\over{\tilde{L}^4}}\Rightarrow\left({{dy}\over{d\theta}}\right)^2={{\tilde{E}^2}\over{c^2\tilde{L}^2}}-{{c^2}\over{\tilde{L}^2}}+{{G^2M^2}\over{\tilde{L}^4}}-y^2</MATH>|10.55}}
Zdefiniujemy zmienną y zdefiniowanego wedle wzoru poniżej, który na razie podamy jako podstawienie, która jest planowanym rozwiązaniem równania różniczkowego {{LinkWzór|10.55}}:
{{CentrujWzór|<MATH>y=\left({{\tilde{E}^2+{{G^2M^2c^2}\over{\tilde{L}^2}}-c^4}\over{c^2\tilde{L}^2}}\right)^{{{1}\over{2}}}\cos\left(\theta+B\right)</MATH>|10.56}}
Musimy dokonać odpowiedniego podstawienia przypuszczalnego rozwiązania {{LinkWzór|10.56}} do równania różniczkowego {{LinkWzór|10.55}}, wtedy otrzymamy prawdziwą tożsamość obu jego stron wspomnianego równania, co można sprawdzić bezpośrednim rachunkiem.
Widzimy, że według teorii Newtona, nie występują takie zjawiska jak przesunięcie peryferium, jeśli nie uwzględnimy wpływu innych ciał na orbitę rozważanego ciała.
Ostateczne rozwiązanie wedle {{LinkWzór|10.52}} (definicja zmiennej y w zależności od zmiennej u) i {{LinkWzór|10.45}} (definicja zmiennej u w zależności od zmiennej r) jest to równanie, po którym porusza się ciało o niezerowej masie spoczynkowej, która jest rozwiązaniem w postaci:
{{CentrujWzór|<MATH>{{1}\over{r}}={{GM}\over{\tilde{L}^2}}+\left({{\tilde{E}^2+{{G^2M^2c^2}\over{\tilde{L}^2}}-c^4}\over{c^2\tilde{L}^2}}\right)^{{{1}\over{2}}}\cos\left(\theta+B\right)</MATH>|10.57}}
Rozwiązanie {{LinkWzór|10.57}} możemy zapisać troszeczkę w innej postaci biorąc odwrotność obu stron:
{{CentrujWzór|<maTH>r={{{{\tilde{L}^2}\over{GM}}}\over{1+{{\tilde{L}^2}\over{GM}}\left({{\tilde{E}^2+{{G^2M^2c^2}\over{\tilde{L}^2}}-c^4}\over{c^2\tilde{L}^2}}\right)^{{{1}\over{2}}}\cos\left(\theta+B\right) }}</MaTH>|10.58}}
Rozwiązanie {{LinkWzór|10.58}} jest rozwiązaniem jakie otrzymał Izaak Newton podczas analizowania klasycznej cząstki podczas ruchu danego ciała (planety) wokół gwiazdy według teorii grawitacji, którą stworzył Newton.
=== Przesunięcie peryferium według ogólnej teorii względności ===
Dokonajmy dalszych podstawień stosując wzór na zmienną y {{LinkWzór|10.52}}, a także wzór na pochodną zmiennej y względem współrzędnej kątowej θ{{LinkWzór|10.53}} do wzoru różniczkowego dla poruszających się cząstek masowych {{LinkWzór|10.50}}:
{{CentrujWzór|<MATH>\left({{dy}\over{d\theta}}\right)^2={{\tilde{E}^2}\over{c^2\tilde{L}^2}}-
{{c^2}\over{\tilde{L}^2}}+\left(y+{{GM}\over{\tilde{L}^2}}\right){{2GM}\over{\tilde{L}^2}}-\left(y+{{GM}\over{\tilde{L}^2}}\right)^2+
\left(y+{{GM}\over{\tilde{L}^2}}\right)^3{{2GM}\over{c^2}}\Rightarrow\;</MATH>{{Br}}
<MATH>\Rightarrow\left({{dy}\over{d\theta}}\right)^2={{\tilde{E}^2-c^4}\over{\tilde{L}^2c^2}}+
y{{2GM}\over{\tilde{L}^2}}+{{2G^2M^2}\over{\tilde{L}^4}}-y^2-2y{{GM}\over{\tilde{L}^2}}-{{G^2M^2}\over{\tilde{L}^4}}+
y^3{{2GM}\over{c^2}}+3y^2{{2G^2M^2}\over{c^2\tilde{L}^2}}+3y{{2G^3M^3}\over{\tilde{L}^4c^2}}+{{2G^3M^3}\over{\tilde{L}^6c^2}}\;</MATH>|10.59}}
Następnym krokiem w ostatnim wynikowym równaniu {{LinkWzór|10.59}} jest pominięcie wyrazów z potęgami y{{Sup|3}}, bo orbita jest prawie kołowa, wtedy przechodzimy do równości:
{{CentrujWzór|<MATH>\left({{dy}\over{d\theta}}\right)^2={{\tilde{E}^2+{{G^2M^2c^2}\over{\tilde{L}^2}}-c^4}\over{\tilde{L}^2c^2}}+
{{2G^3M^3}\over{\tilde{L}^6c^2}}+y{{6G^3M^3}\over{\tilde{L}^4c^2}}+\left({{6G^2M^2}\over{c^2\tilde{L}^2}}-1\right)y^2\;</MATH>|10.60}}
Zaproponujmy rozwiązanie równania {{LinkWzór|10.60}} zależne od pewnych stałych, które wyznaczymy później:
{{CentrujWzór|<MATH>y=y_0+A\cos\left(k\theta+B\right)\;</MATH>|10.61}}
Podstawmy rozwiązanie {{LinkWzór|10.61}} do równania różniczkowego {{LinkWzór|10.60}}, wtedy otrzymamy tożsamość, z którego wyznaczamy stałe y{{Sub|0}}, A i k, a B jest dowolną stałą:
{{CentrujWzór|<MATH>A^2k^2\sin^2\left(k\theta+B\right)={{\tilde{E}^2+{{G^2M^2c^2}\over{\tilde{L}^2}}-c^4}\over{\tilde{L}^2c^2}}+{{2G^3M^3}\over{\tilde{L}^6c^2}}+
\left[y_0+A\cos\left(k\theta+B\right)\right]{{6G^3M^3}\over{\tilde{L}^4c^2}}+\left[y_0+A\cos\left(k\theta+B\right)\right]^2\cdot\;</MATH>{{Br}}<MATH>\cdot\left({{6G^2M^2}\over{c^2\tilde{L}^2 }}-1\right)\Rightarrow A^2k^2-A^2k^2\cos^2\left(k\theta+B\right)={{\tilde{E}^2+{{G^2M^2c^2}\over{\tilde{L}^2}}-c^4}\over{\tilde{L}^2c^2}}+{{2G^3M^3}\over{\tilde{L}^6c^2}}+
y_0{{6G^3M^3}\over{\tilde{L}^4c^2}}+A\cos\left(k\theta+B\right){{6G^3M^3}\over{\tilde{L}^4c^2}}+\;</MATH>{{Br}}<MATH>+y_0^2\left({{6G^2M^2}\over{c^2\tilde{L}^2}}-1\right)+2y_0A\cos\left(k\theta+B\right)\left({{6G^2M^2}\over{c^2\tilde{L}^2}}-1\right)+A^2\cos^2\left(k\theta+B\right)\left({{6G^2M^2}\over{c^2\tilde{L}^2}}-1\right)\;</MATH>|10.62}}
Porównujemy wyrazy zapisane w punkcie {{LinkWzór|10.62}}, a właściwie obydwie jej strony, tzn. wyrazy związane z wyrażeniem A{{Sup|2}}cos{{Sup|2}}θ, otrzymujemy:
{{CentrujWzór|<MATH>-k^2=\left({{6G^2M^2}\over{c^2\tilde{L}}}-1\right)
\Rightarrow k^2=\left(1-{{6G^2M^2}\over{c^2\tilde{L}}}\right)\Rightarrow k=\sqrt{1-{{6G^2M^2}\over{c^2\tilde{L}}}}\;</MATH>|10.63}}
Następnie weźmy wyrazy występujące z czynnikiem cos(kθ+B) w zapisanej tożsamości {{LinkWzór|10.62}}, by je potem przyrównać do zera dla dowolności θ, stąd:
{{CentrujWzór|<MATH>{{6G^3M^3}\over{\tilde{L}^4c^2}}+2y_0\left({{6G^2M^2}\over{c^2\tilde{L}^2}}-1\right)=0
\Rightarrow{{6G^3M^3}\over{\tilde{L}^4c^2}}=2y_0\left(1-{{6G^2M^2}\over{c^2\tilde{L}^2}}\right)\Rightarrow y_0={{3G^3M^3}\over{k^2\tilde{L}^4c^2}}\;</MATH>|10.64}}
Dalej na ostatku porównajmy wyrazy wolne występujące w rozważanej tożsamości {{LinkWzór|10.64}}:
{{CentrujWzór|<MATH>A^2k^2={{\tilde{E}^2+{{G^2M^2c^2}\over{\tilde{L}^2}}-c^4}\over{\tilde{L}^2c^2}}+
{{2G^3M^3}\over{\tilde{L}^6c^2}}-y_0^2k^2+y_0{{6G^3M^3}\over{\tilde{L}^4c^2}}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow A={{1}\over{k}}\sqrt{{{\tilde{E}^2+{{G^2M^2c^2}\over{\tilde{L}^2}}-c^4}\over{\tilde{L}^2c^2}}+
{{2G^3M^3}\over{\tilde{L}^6c^2}}-y_0^2k^2+y_0{{6G^3M^3}\over{\tilde{L}^4c^2}}}\;</MATH>|10.65}}
Wyznaczmy wyrażenie pomocnicze występujące w tożsamości {{LinkWzór|10.65}} jako dwa składniki razem wzięte, które występują sumie występującej pod jego pierwiastkiem:
{{CentrujWzór|<MATH>-y_0^2k^2+y_0{{6G^3M^3}\over{\tilde{L}^4c^2}}=-y_0^2k^2+y_0^2k^2
{{6G^3M^3}\over{\tilde{L}^4c^2y_0k^2}}=-y_0^2k^2+y_0^2k^2{{6G^3M^3}\over{\tilde{L}^4c^2k^2{{3G^3M^3}\over{k^2\tilde{L}^4c^2}}}}=-y^2_0k^2+2y_0^2k^2=y^2_0k^2\;</MATH>|10.66}}
Reasumując nasze rozwiązanie {{LinkWzór|10.61}} jest tak zdefiniowane, by w nim występowały trzy stałe zdefiniowane poniżej, które można zapisać za pomocą stałych charakteryzującego nasze źródło pola grawitacyjnego:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>k=\sqrt{1-{{6G^2M^2}\over{c^2\tilde{L}}}}\;</MATH>|10.67}}
| 2 = {{CentrujWzór|<math>y_0={{3G^3M^3}\over{k^2\tilde{L}^4c^2}}\;</math>|10.68}}
| 3 = {{CentrujWzór|<MATH>A={{1}\over{k}}\sqrt{{{\tilde{E}^2+{{G^2M^2c^2}\over{\tilde{L}^2}}-c^4}\over{\tilde{L}^2c^2}}+{{2G^3M^3}\over{\tilde{L}^6c^2}}+y_0^2k^2}\;</MATH>|10.69}}
}}
Ale y jest takie jak we wzorze {{LinkWzór|10.61}}, to kθ, może zmieniać się od kΔθ=0 do kΔθ=2π i wtedy ciało może niecałkowicie obiec elipsę, czyli można udowodnić, że ta elipsa się obraca o kąt Δθ, którą opiszemy poniżej:
{{CentrujWzór|<MATH>k\Delta\theta=2\pi\;</MATH>|10.70}}
Wtedy Δθ oznacza przesunięcie peryferium orbity cząstki masowej, co możemy wyznaczyć z równania {{LinkWzór|10.70}}, która jest oczywiście zależna tylko od stałej opisującej orbitę prawie Newtonowską k.
{{CentrujWzór|<MATH>\Delta\theta={{2\pi}\over{k}}</MATH>|10.71}}
Wstawiamy definicję stałej k napisanej w punkcie {{LinkWzór|10.67}} do równania {{LinkWzór|10.71}}, wtedy wielkość Δθ:
{{CentrujWzór|<MATH>\Delta\theta=2\pi\left(1-{{6G^2M^2}\over{c^2\tilde{L}^2}}\right)^{-{{1}\over{2}}}\simeq 2\pi\left(1+{{3G^2M^2}\over{c^2\tilde{L}^2}}\right)</MATH>|10.72}}
Ze wzoru {{LinkWzór|10.37}} mamy wzór na kwadrat zredukowanego momentu pędu, z którego można dokonać przybliżenia dla dużych r, w tym równaniu mianownik możemy przybliżyć do jedynki, stąd:
{{CentrujWzór|<MATH>\tilde{L}^2={{GMr}\over{1-{{3GM}\over{rc^2}}}}\simeq GMr</MATH>|10.73}}
Wynik uzyskany w punkcie dla dużych r {{LinkWzór|10.73}} podstawiamy do {{LinkWzór|10.72}}, i ten sposób otrzymujemy wzór na przesunięcie peryhelium.
{{CentrujWzór|<MATH>\Delta\theta=2\pi\left(1+{{3G^2M^2}\over{c^2GMr}}\right)=
2\pi\left(1+{{3GM}\over{c^2r}}\right)=2\pi+6\pi{{GM}\over{rc^2}}</MATH>|10.74}}
We wzorze {{LinkWzór|10.74}} pierwszy składnik jest równy 2π, co jest tym samym kątem co bez niego wedle praw trygonometrii, więc to samo przesunięcie kątowe peryferium co {{LinkWzór|10.74}} określone jest dla orbit prawie newtonowskich wzorem:
{{CentrujWzór|<MATH>\Delta\theta=6\pi{{GM}\over{rc^2}}</MATH>|10.75}}
Jest to wzór określający przesunięcie peryferium dla orbit prawie Newtonowskich dla orbit, których efekty relatywistyczne odgrywają dużą rolę.
== Odchylenie grawitacyjne światła ==
Dla cząstek bezmasowych rozważmy pęd θ-owy jako element czterowektora pędu, dla którego jego przestawienie jest podobne jak we wzorze dla pędu radialnego {{LinkWzór|10.25}}, przy czym parametr λ definiujemy poprzez masę relatywistyczną fotonu (foton nie ma masy spoczynkowej), ale korzystając z definicji kontrawariantnego czterowektora pędu {{LinkWzór|6.52|Fizyka_w_słabozakrzywionych_czasoprzestrzeniach}}, a więc wtedy możemy wyrazić nasz pęd względem pochodnej wielkości θ względem parametru λ, co zapisujemy:
{{CentrujWzór|<MATH>p^{\theta}=m{{d\theta}\over{dt}}={{d\theta}\over{{{1}\over{m}}dt}}=
{{d\theta}\over{d\lambda}}\;</MaTH>|10.76}}
Z drugiej jednak strony elementy tensora metrycznego nie zależą od zmiennej kątowej, a także od zmiennej czasowej, więc wedle twierdzenia {{LinkWzór|6.36|Fizyka_w_słabozakrzywionych_czasoprzestrzeniach}} zmienna p{{Sub|θ}}, która jest pędem kowariantnym jest wielkością stałą względem zmiany interwału czasoprzestrzennego, które spełnia rolę znaną z mechaniki klasycznej momentu pędu, która w przybliżeniu słabego pola grawitacyjnego staje się dokładną wartością momentu pędu znaną z mechaniki Newtona.
{{CentrujWzór|<MAtH>L=p_{\theta}=p^{\theta}g_{\theta\theta}={{d\theta}\over{d\lambda}}r^2\Rightarrow {{d\theta}\over{d\lambda}}={{L}\over{r^2}}\;</MaTH>|10.77}}
Mamy sobie wzór {{LinkWzór|10.28}}, która jest równaniem ruchu cząstki względem parametru λ i końcowy wzór wynikowy {{LinkWzór|10.77}}, wtedy weźmy oba te wzory, który ten drugi podnosimy do kwadratu i dzielimy obustronnie przez siebie dostając równość:
{{CentrujWzór|<MATH>\left({{d\theta}\over{dr}}\right)^2=\left({{{{d\theta}\over{d\lambda}}}\over{{{dr}\over{d\lambda}}}}\right)^2=
{{{{L^2}\over{r^2}}}\over{\left({{E}\over{c}}\right)^2-\left(1-{{2GM}\over{rc^2}}\right){{L^2}\over{r^2}}}}\Rightarrow\left({{d\theta}\over{dr}}\right)^2={{{{L^2}\over{r^4}}}\over{\left({{E}\over{c}}\right)^2-\left(1-{{2GM}\over{rc^2}}\right){{L^2}\over{r^2}}}}\Rightarrow</MATH>{{Br}}<MATH>\Rightarrow\left({{d\theta}\over{dr}}\right)^2={{1}\over{r^4\left[
\left({{E}\over{Lc}}\right)^2-{{1}\over{r^2}}\left(1-{{2GM}\over{rc^2}}\right)
\right]}}\;</MATH>|10.78}}
Wprowadźmy nowy parametr b, który jest zależny od wielkości L, która w analogi do mechaniki klasycznej nazwijmy momentem pędu, a także jest zależna ona od energii tegoż fotonu E, a także od prędkości światła w próżni.
{{CentrujWzór|<MATH>b={{Lc}\over{E}}\;</MATH>|10.79}}
Zastosowanie definicji nowego parametru {{LinkWzór|10.79}} do równości {{LinkWzór|10.78}} w rezultacie daje nam:
{{CentrujWzór|<MATH>\left({{d\theta}\over{dr}}\right)^2={{1}\over{r^4}}{{1}\over{\left[{{1}\over{b^2}}-{{1}\over{r^2}}\left(1-{{2GM}\over{rc^2}}\right)\right]}}\;</MATH>|10.80}}
Obierzmy nową zmienną u, to wtedy zmienna radialna w układzie kulistym r jest wyrażona poprzez u w sposób:
{{CentrujWzór|<MATH>u={{1}\over{r}}\Rightarrow r={{1}\over{u}}\;</MATH>|10.81}}
Różniczka położenia radialnego wyrażona względem zmiennej u, która jest zdefiniowana w punkcie {{LinkWzór|10.81}}, którą rozpiszemy ją, by otrzymać zależność różniczkową zmiennej u {{LinkWzór|10.81}}, wtedy:
{{CentrujWzór|<MATH>dr=d{{1}\over{u}}=du^{-1}=-{{1}\over{u^2}}du\;</MATH>|10.82}}
Po wykorzystaniu definicji na różniczkę wielkości radialnej dr {{LinkWzór|10.82}} i na promień radialny r {{LinkWzór|10.81}}, to wtedy podstawiając je do tożsamości {{LinkWzór|10.80}}, które podzielimy potem przez zawsze niezerowe wyrażenie u{{Sup|4}} (bo zachodzi {{LinkWzór|10.81}}), dostajemy:
{{CentrujWzór|<MATH>\left({{d\theta}\over{du}}\right)^2u^4={{u^4}\over{\left[{{1}\over{b^2}}-u^2\left(1-u{{GM}\over{c^2}}\right)\right]}}\Rightarrow
\left({{d\theta}\over{du}}\right)^2={{1}\over{\left[{{1}\over{b^2}}-u^2+u^3{{GM}\over{c^2}}\right]}}\;</MATH>|10.83}}
Odwróćmy wzór {{LinkWzór|10.83}} obustronnie na wyrażenie typu 1/coś=1/coś, wtedy dostajemy ostatecznie inne równoważne do poprzedniego wyrażenie:
{{CentrujWzór|<MATH>\left({{du}\over{d\theta}}\right)^2={{1}\over{b^2}}-u^2+u^3{{GM}\over{c^2}}\;</MATH>|10.84}}
Powyższy wzór jest wzorem relatywistycznym toru dla bezmasowego fotonu, którego położenie radialne jest określone wedle {{LinkWzór|10.81}}.
=== Ruch światła po zaniedbaniu efektów relatywistycznych związanego z masą ===
Jeśli pominiemy wyrazy z u{{Sup|3}} w równaniu {{LinkWzór|10.84}}, bo G jest małe oraz c{{Sup|2}} jest bardzo duże, to otrzymamy:
{{CentrujWzór|<MATH>\left({{du}\over{d\theta}}\right)^2={{1}\over{b^2}}-u^2\;</MATH>|10.85}}
czyli dokonaliśmy pominięcia ze wszystkich efektów relatywistycznych związanych ze źródłem oddziaływania grawitacyjnego.
Rozwiązanie równania {{LinkWzór|10.85}} jest w postaci:
{{CentrujWzór|<MATH>u=\sin\left(\theta-\theta_0\right)b^{-1}\;</MATH>|10.86}}
Podstawmy rozwiązanie {{LinkWzór|10.86}} do naszego równania {{LinkWzór|10.85}}, stąd mamy:
{{CentrujWzór|<MATH>\cos^2\left(\theta-\theta_0\right)b^{-2}={{1}\over{b^2}}-b^{-2}\sin^2\left(\theta-\theta_0\right)
\Rightarrow\cos^2\left(\theta-\theta_0\right)b^{-2}=b^{-2}\cos^2\left(\theta-\theta_0\right)\;</MATH>|10.87}}
Otrzymujemy wniosek, że po zaniedbaniu efektów z związanych z masą M światło będzie się poruszało się linii prostej, czyli rozwiązaniem jego przy uwzględnieniu definicji na u, zdefiniowanej w punkcie {{LinkWzór|10.81}}, jest wzór:
{{CentrujWzór|<MATH>r\sin\left(\theta-\theta_0\right)=b\;</MATH>|10.88}}
=== Ruch fotonów po niecałkowitym zaniedbaniu relatywistycznym ===
Mamy sobie równanie ruchu rządzące ruchem trajektoriami fotonów {{LinkWzór|10.84}} i obierzmy sobie nową zmienną y w zależności od stałej zmiennej {{LinkWzór|10.81}}, z którego wyznaczmy zmienną u, zatem zdefiniujmy zmienną y jako:
{{CentrujWzór|<MATH>y=u\left(1-{{GM}\over{c^2}}u\right)\Rightarrow
u={{y}\over{1-{{GM}\over{c^2}}u}}\Rightarrow
u\simeq y\left(1+{{GM}\over{c^2}}u\right)\Rightarrow u\simeq y\left(1+{{GM}\over{c^2}}y\right)\;</MATH>|10.89}}
co jest z dokładnością do wyrazów pierwszego stopnia.
Korzystając z końcowego wyrażenia wynikowego policzmy pochodną zmiennej u {{LinkWzór|10.81}} względem położenia kątowego θ:
{{CentrujWzór|<MATH>{{du}\over{d\theta}}={{dy}\over{d\theta}}{{du}\over{dy}}={{dy}\over{d\theta}}\left(1+2y{{GM}\over{c^2}}\right)\;</MATH>|10.90}}
Podstawmy wyrażenie na pochodną wyrażenia u względem zmiennej kątowej θ {{LinkWzór|10.90}} i zmienną u {{LinkWzór|10.89}} do równości {{LinkWzór|10.84}}, mamy:
{{CentrujWzór|<MATH>\left({{dy}\over{d\theta}}\right)^2\left(1+2y{{GM}\over{c^2}}\right)^2=
{{1}\over{b^2}}-\left(y\left(1+{{GM}\over{c^2}}y\right)\right)^2+\left(y\left(1+y{{GM}\over{c^2}}\right)\right)^3{{GM}\over{c^2}}\Rightarrow\;</MATH>{{Br}}
<MATH>\Rightarrow\left({{dy}\over{d\theta}}\right)^2\left(1+2y{{GM}\over{c^2}}\right)^2=
{{1}\over{b^2}}-\left(y+y^2{{GM}\over{c^2}}\right)^2+\left(y+y^2{{GM}\over{c^2}}\right)^3{{GM}\over{c^2}}\Rightarrow\;</MATH>{{Br}}
<MATH>\Rightarrow\left({{dy}\over{d\theta}}\right)^2\left(1+2y{{GM}\over{c^2}}\right)^2=
{{1}\over{b^2}}-\left(y^2+y^4{{G^2M^2}\over{c^4}}+2y^3{{GM}\over{c^2}}\right)+\left(y^3+y^6{{G^3M^3}\over{c^6}}+3y^2y^2{{GM}\over{c^2}}+3yy^2{{G^2M^2}\over{c^4}}
\right){{GM}\over{c^2}}\;</MATH>|10.91}}
Pomijamy wyrazy rzędu większego niż w przypadku potęg zmiennej y o wykładniku większym niż dwa w równaniu różniczkowym {{LinkWzór|10.91}}, wtedy z oczywistych powodów mamy prawo myśleć:
{{CentrujWzór|<MATH>\left({{dy}\over{d\theta}}\right)^2\left(1+2y{{GM}\over{c^2}}\right)^2={{1}\over{b^2}}-y^2\;</MATH>|10.92}}
Pierwiastkujemy obie strony równania {{LinkWzór|10.92}}, w tym celu po dokonaniu tej operacji należy pamiętać, że z lewej strony naszego wspomnianego wyrażenia pojawia się znak plus lub minus, zatem dostajemy dwa poniższe wzory z tymi znakami zapisanej w jednym równaniu ogólnie:
{{CentrujWzór|<MATH>\pm{{dy}\over{d\theta}}\left(1+2y{{GM}\over{c^2}}\right)=\sqrt{{{1}\over{b^2}}-y^2}\Rightarrow\pm{{1+2y{{GM}\over{c^2}}}\over{\sqrt{{{1}\over{b^2}}-y^2}}}dy=d\theta\;</MATH>|10.93}}
Przecałkujmy obie strony równania różniczkowego {{LinkWzór|10.93}}, dostajemy:
{{CentrujWzór|<MATH>\pm\int^{y_2}_{y_1} {{1+2t{{GM}\over{c^2}}}\over{\sqrt{{{1}\over{b^2}}-t^2}}}dt=\theta-\theta_0\;</MATH>|10.94}}
Policzmy pomocniczą całkę nieoznaczoną potrzebną do zrobienia dalszych obliczeń, która to całka występuje z lewej strony równania {{LinkWzór|10.94}}, stąd:
{{CentrujWzór|<MATH>\int {{1+2t{{GM}\over{c^2}}}\over{\sqrt{{{1}\over{b^2}}-t^2}}}dt=
b\int {{1+2t{{GM}\over{c^2}}}\over{\sqrt{1-\left(bt\right)^2}}}=
b\int{{1}\over{\sqrt{1-\left(bt\right)^2}}}dt+2b{{GM}\over{c^2}}\int{{t}\over{\sqrt{1-\left(bt\right)^2}}}dt=\;</MATH>{{Br}}<MATH>=\int{{1}\over{\sqrt{1-\left(bt\right)^2}}}d\left(bt\right)+2{{1}\over{b}}{{GM}\over{c^2}}\int{{bt}\over{\sqrt{1-\left(bt\right)^2}}}d\left(bt\right)=\operatorname{arcsin}\left(bt\right)-{{GM}\over{c^2b}}\int{{\left(1-\left(bt\right)^2\right)^'}\over{\sqrt{1-\left(bt\right)^2}}}d\left(bt\right)=\;</MATH>{{Br}}<MATH>=
\operatorname{arcsin}\left(bt\right)-{{GM}\over{bc^2}}\int x^{-{{1}\over{2}}}dx=\operatorname{arcsin}\left(bt\right)-2{{GM}\over{bc^2}}\sqrt{1-\left(bt\right)^2}=
\operatorname{arcsin}\left(bt\right)-2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-t^2}+C\;</MATH>|10.95}}
Ostatecznie na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|10.95}} dostajemy ogólny wzór na naszą całkę nieoznaczoną:
{{CentrujWzór|<MATH>\int {{1+2t{{GM}\over{c^2}}}\over{\sqrt{{{1}\over{b^2}}-t^2}}}dt=\operatorname{arcsin}\left(bt\right)-2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-t^2}+C\;</MATH>|10.96}}
Wyznaczmy kąt odchylenia fotonu θ w zależności od y, (r→∞⇒ u=0)⇒ y=0, oczywiście korzystając z definicji u i y. Początkowe y jest równe zero. Zakładamy, że cząstka przebywa z nieskończoności i będziemy rozpatrywać ruch tej właśnie cząstki aż do punktu w którym y ma wartość {{Formuła|<MATH>y={{1}\over{b}}\;</MATH>}}, czyli wybieramy znak plus {{LinkWzór|10.94}} (bo cząstka zbliża się do kulistosymetrycznej masy).
Całka oznaczona wygląda wtedy:
{{CentrujWzór|<MATH>\int^{y}_0{{1+2t{{GM}\over{c^2}}}\over{\sqrt{{{1}\over{b^2}}-t^2}}}dt=
\left[\operatorname{arcsin}\left(bt\right)-2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-t^2}\right]^y_0=
\operatorname{arcsin}\left(by\right)-2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}+{{2GM}\over{c^2b}}\;</MATH>|10.97}}
Rozwiązanie równania różniczkowego {{LinkWzór|10.92}} przedstawiamy je w zależność od zmiennej y i kąta θ:
{{CentrujWzór|<MATH>\operatorname{arcsin}\left(by\right)-2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}+{{2GM}\over{c^2b}}=\theta-\theta_0\;</MATH>|10.98}}
Ostatecznie rozwiązaniem naszego równania różniczkowego {{LinkWzór|10.98}} dla naszego przypadku jest funkcja kąta θ w zależności od zmiennej y:
{{CentrujWzór|<MATH>\theta=\theta_0+{{2GM}\over{c^2b}}+\operatorname{arcsin}\left(by\right)-2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}\;</MATH>|10.99}}
Foton osiąga swe najniższe położenie, gdy {{Formuła|<MATH>y={{1}\over{b}}\;</MATH>}}, co można policzyć ze wzoru {{LinkWzór|10.99}}, a zatem odchylenie fotonu przy ruchu z nieskończoności do jej najbliższego zbliżenia do masywnej gwiazdy względem położenia w nieskończoności jest określone:
{{CentrujWzór|<MATH>\theta_1=\theta_0+{{2GM}\over{c^2b}}+{{\pi}\over{2}}\;</MATH>|10.100}}
Następny rozpatrzmy ruch fotonu z {{Formuła|<MATH>y={{1}\over{b}}</MATH>}} od y=0 do nieskończoności od jej najbliższego zbliżenia, a zatem foton porusza się od odległości, gdy foton znajduje się najbliżej masy {{Formuła|<MATH>M</MATH>}} (przy kącie {{LinkWzór|10.100}}), do celu należącym w drodze do nieskończoności, wtedy wybieramy znak minus przed całką po lewej stronie równania {{LinkWzór|10.94}} (bo foton oddala się do nieskończoności), wtedy:
{{CentrujWzór|<MATH>-\int^{y}_{y={{1}\over{b}}}{{1+2t{{GM}\over{c^2}}}\over{\sqrt{{{1}\over{b^2}}-t^2}}}dt=
-\left[\operatorname{arcsin}\left(bt\right)-2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-t^2}\right]^y_{{{1}\over{b}}}=-\left[\operatorname{arcsin}\left(by\right)-2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}
-{{\pi}\over{2}}
\right]=-\operatorname{arcsin}\left(by\right)+\;</MATH>{{Br}}<MATH>+2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}+{{\pi}\over{2}}</MATH>|10.101}}
Rozwiązaniem równania {{LinkWzór|10.92}} w postaci drugiego rozwiązania od chwili jej najbliższego zbliżenia jest równanie w postaci wzoru poniżej, którego całka została obliczona w punkcie {{LinkWzór|10.101}}:
{{CentrujWzór|<MATH>-\operatorname{arcsin}\left(by\right)+2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}+{{\pi}\over{2}}=\theta-\theta_1\Rightarrow
\theta=-\operatorname{arcsin}\left(by\right)+2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}+{{\pi}\over{2}}+\theta_1</MATH>{{Br}}
<MATH>\theta=-\operatorname{arcsin}\left(by\right)+2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}+{{\pi}\over{2}}+{{2GM}\over{c^2b}}+{{\pi}\over{2}}+\theta_0\Rightarrow\theta=-\operatorname{arcsin}\left(by\right)+2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}+{{2GM}\over{c^2b}}+\pi+\theta_0</MATH>|10.102}}
Ogólne rozwiązanie przedstawia się wzorami {{LinkWzór|10.99}} i {{LinkWzór|10.102}}, którego to odchylenie θ jest zapisywane ogólnym wzorem dla ruchu cząstki od nieskończoności do jej najbliższego zbliżenia, oraz od jej najbliższego zbliżenia do ruchu do nieskończoności, które oba te równania są zależne od zmiennej y zdefiniowanej wzorem {{LinkWzór|10.89}}, a zmienna u jest zdefiniowana wzorem {{LinkWzór|10.45}}, wtedy położenie kątowe zmienia się według:
{{CentrujWzór|<MATH>\theta=\begin{cases}
\theta_0+{{2GM}\over{c^2b}}+\operatorname{arcsin}\left(by\right)-2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}&\mbox{ dla }y\in\left(0,{{1}\over{b}}\right)\\
-\operatorname{arcsin}\left(by\right)+2{{GM}\over{c^2}}\sqrt{{{1}\over{b^2}}-y^2}+{{2GM}\over{c^2b}}+\pi+\theta_0&\mbox{ dla }y\in\left({{1}\over{b}},0\right)
\end{cases}</MATH>|10.103}}
Policzmy odchylenie cząstki, jeśli położenie początkowe w nieskończoności wynosiło θ{{Sub|0}} (gdy cząstka porusza się do kulistosymetrycznej masy), to po odchyleniu też w nieskończoność, gdy y=0 (po odbyciu tej całej podróży od tej masy od nieskończoności do nieskończoności), wynosi:
{{CentrujWzór|<MATH>\theta={{2GM}\over{c^2b}}+{{2GM}\over{c^2b}}+\pi+\theta_0\Rightarrow
\theta={{4GM}\over{c^2b}}+\pi+\theta_0\Rightarrow
\Delta\theta={{4GM}\over{c^2b}}+\pi</MATH>|10.104}}
Jeśli foton poruszał się początkowo po prostej, to odchylenie względem tej prostej bez uwzględnienia efektów relatywistycznych wynosiło π, to po uwzględnieniu tych efektów poprawka do tego odchylenia jest napisana:
{{CentrujWzór|<MATH>\Delta\theta_P={{4GM}\over{c^2b}}</MATH>|10.105}}
== Wpadające cząstki w kierunku radialnym do horyzontu zdarzeń czarnej dziury ==
Rozpatrzmy spadanie radialne cząstki masowej na powierzchnię o promieniu {{Formuła|<MATH>r=2{{GM}\over{c^2}}\;</MATH>}}, wtedy zachodzi dθ=0 i wedle definicji czterowektora pędu θ-owego pęd kontrawariantny jest równy zero, a na podstawie tego wedle {{LinkWzór|10.7}} ten pęd kowariantny jest stały (bo elementy tensora metrycznego nie zależą od zmiennych kątowych) i nie zmienia swojej wartości, ta wielkość jest odpowiednikiem momentu pędu znanej z mechaniki klasycznej, a więc nasze równanie ruchu wedle {{LinkWzór|10.12}} jest przedstawione:
{{CentrujWzór|<MATH>\left({{dr}\over{ds}}\right)^2={{\tilde{E}^2}\over{c^4}}-\left(1-{{2GM}\over{rc^2}}\right)\Rightarrow
\left({{dr}\over{ds}}\right)^2={{\tilde{E}^2}\over{c^4}}-1+{{2GM}\over{rc^2}}</MATH>|10.106}}
Różniczka interwału czasoprzestrzennego wynikającego z równania {{LinkWzór|10.106}} można napisać w postaci wzoru, który zależy od różniczki promienia radialnego cząstki spadającej do czarnej dziury:
{{CentrujWzór|<MATH>ds=-{{dr}\over{\sqrt{{{\tilde{E}^2}\over{c^4}}-1+{{2GM}\over{rc^2}}}}}</MATH>|10.107}}
W powyższym wyrażeniu mamy znak minus, bo rozpatrywane ciało porusza się z pewnego punktu o położeniu radialnym R radialnie i ono porusza się do horyzontu zdarzeń o promieniu r{{Sub|g}} Schwarzchilda, czyli wedle zmniejszającego się promienia.
Jeśli zachodzi {{Formuła|<MATH>{{\tilde{E}}\over{c^2}}=1</MATH>}} (wedle tego warunku ciało w nieskończoności spoczywa), to mamy całkę na zmianę interwału czasoprzestrzennego {{LinkWzór|10.107}}:
{{CentrujWzór|<MATH>\Delta s=\int_R^{r_g={{2GM}\over{c^2}}}{{dr}\over{\sqrt{{{2GM}\over{rc^2}}}}}=
-\sqrt{{{c^2}\over{2GM}}}\int_R^{{{2GM}\over{c^2}}}r^{{{1}\over{2}}}dr=
-\sqrt{{{c^2}\over{2GM}}}{{2}\over{3}}\left[r^{{{3}\over{2}}}\right]_R^{{{2GM}\over{c^2}}}=\sqrt{{{c^2}\over{2GM}}}{{2}\over{3}}\left[R^{{{3}\over{2}}}-\left({{2GM}\over{c^2}}\right)^{{{3}\over{2}}}\right]=\;</MATH>{{Br}}<MATH>=
{{2}\over{3}}\sqrt{{{c^2}\over{2GM}}\cdot{{8G^3M^3}\over{c^6}}}
\left(\left({{c^2R}\over{2GM}}\right)^{{{3}\over{2}}}-1\right)={{2}\over{3}}\sqrt{{{4G^2M^2}\over{c^4}}}\left[\left({{c^2R}\over{2GM}}\right)^{{{3}\over{2}}}-1\right]</MATH>|10.108}}
Wynik uzyskany ze wzoru {{LinkWzór|10.108}} jest wielkością skończoną natomiast, gdy energia zredukowana spełnia warunek {{Formuła|<MATH>\tilde{E}<c^2\;</MATH>}}, to cząstka może posiadać maksymalne położenia radialne z warunku {{LinkWzór|10.106}} spełniającego równanie:
{{CentrujWzór|<MATH>0={{\tilde{E}^2}\over{c^4}}-1+{{2MG}\over{rc^2}}\Rightarrow 1-{{\tilde{E}^2}\over{c^4}}={{2GM}\over{rc^2}}\;</MATH>}}
Wykorzystajmy teraz element zerowy czterowektora prędkości, czyli pochodną iloczynu czasu i prędkości światła względem interwału czasoprzestrzennego, co poniżej przestawimy:
{{CentrujWzór|<MATH>{{cdt}\over{ds}}=u^0={{p^0}\over{m_0 c}}=g^{00}{{p_0}\over{m_0c}}=g^{00}{{p_0c}\over{m_0c^2}}=g^{00}{{E}\over{m_0c^2}}=\left(1-{{2GM}\over{rc^2}}\right)^{-1}{{\tilde{E}}\over{c^2}}</MATH>|10.109}}
Z równania {{LinkWzór|10.109}} otrzymujemy wzór na różniczkę czasu współrzędnościowego w zależności od różniczki interwału czasoprezestrzennego:
{{CentrujWzór|<MATH>cdt={{ds\tilde{E}}\over{c^2\left(1-{{2GM}\over{rc^2}}\right)}}</MATH>|10.110}}
Do równania różniczkowego {{LinkWzór|10.110}} dokonajmy podstawienia za ds opisywanej wzorem {{LinkWzór|10.107}}, zatem w takim przypadku to pierwsze równanie na cdt przyjmuje w zależności od różniczki współrzędnej radialnego położenia cząstki w układzie kulistym postać:
{{CentrujWzór|<MATH>cdt=-{{dr\tilde{E}}\over{c^2\left(1-{{2GM}\over{rc^2}}\right)\sqrt{{{\tilde{E}^2}\over{c^4}}-1+{{2GM}\over{rc^2}}}}}\Rightarrow
dt=-{{dr\tilde{E}}\over{c^3\left(1-{{2GM}\over{rc^2}}\right)\sqrt{{{\tilde{E}^2}\over{c^4}}-1+{{2GM}\over{rc^2}}}}}</MATH>|10.111}}
Rozważmy przypadek, gdy cząstka spoczywa w nieskończoności, to wtedy: {{Formuła|<MATH>{{\tilde{E}}\over{c^2}}=1</MATH>}}, jeśli dokonamy podstawienia: {{Formuła|<MATH>\gamma=r-2{{GM}\over{c^2}}</MATH>}}, to ostatecznie ze wzoru {{LinkWzór|10.111}} można dojść do wzoru wynikowego:
{{CentrujWzór|<MATH>dt=-{{dr r^{{3}\over{2}}}\over{c\left({{r-{{2GM}\over{c^2}}}}\right)\left({{2GM}\over{c^2}}\right)^{{{1}\over{2}}}}}
\Rightarrow dt=-{{\left(\gamma+{{2GM}\over{c^2}}\right)^{{{3}\over{2}}}d\gamma}\over{c\gamma\left({{2GM}\over{c^2}}\right)^{{{1}\over{2}}}}}
\xrightarrow[\gamma\rightarrow 0]{}-{{2GM}\over{c^3}}{{1}\over{\gamma}}d\gamma\;</MATH>|10.112}}
Z powyższego wzoru na dt, wynika, że gdy γ→ +0, z stąd wynika, że funkcja ma granicę prawostronną w postaci {{Formuła|<MATH>{{1}\over{\gamma}}\rightarrow\infty</MATH>}}, jeśli przecałkować obustronnie wyrażenie {{LinkWzór|10.112}}, to prawa strona zawiera całkę rozbieżną do nieskończoności (dla cząstki, która podróżuje do horyzontu zdarzeń), zatem na podstawie wspomnianego wyrażenia cząstka osiągnie powierzchnie o promieniu Schwarzchilda dopiero po nieskończonym długim czasie współrzędnościowym mimo skończonego czasu własnego.
Gdy cząstka znajduje się nieskończenie bliskiego promienia Schwarzschilda, w którym cząstka znajdowała się początkowo, a przebyła z odległości o promieniu wodzącym R, wtedy w takim przypadku czas współrzędnościowy jest nieskończony mimo skończonego czasu własnego, co ta wielkość musi zachowywać się źle, co świadczy o załamaniu się Ogólnej Teorii Względności.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
rrz125jp3o24w4vsizy0xm4geyodsir
Ogólna teoria względności/Współrzędne Kruskala-Szekeresa
0
16431
558866
513509
2026-10-07T14:57:52Z
Persino
2851
558866
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy rozpatrywać metrykę Kruskera-Szekeresa, i udowodnimy, że nasza metryka przechodzi w metrykę Schwarzchilda, i na podstawie tego wyznaczymy równoważność współrzędnych w metryce Schwarzschilda i współrzędnych Kruskala-Szekeresa.
== Metryka Kruskala-Szekeresa ==
W prowadźmy nowy rodzaj współrzędnych w postaci (U,V,θ,φ), tak by interwał czasoprzestrzenny przyjął postać:
{{CentrujWzór|<MATH>ds^2=-f(r)\left(dU^2-dV^2\right)-r^2d\Omega^2\;</MATH>|11.1}}
Jest on zależny od zmiennej U, V, a także od położenia radialnego r i na końcu od dΩ{{Sup|2}}, która jest różniczką zupełną zdefiniowana w {{LinkWzór|8.4|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}},
co jest równoważne po opuszczeniu nawiasów w metryce {{LinkWzór|11.1}}:
{{CentrujWzór|<MATH>ds^2=-f(r)dU^2+f(r)dV^2-r^2d\Omega^2\;</MATH>|11.2}}
Należy zauważyć, że funkcja U=U(r,t), a także V=V(r,t) są funkcjami położenia radialnego r i czasu współrzędności-owego.
Również "r" i "t" można przedstawić jako funkcję U i V.
== Definicja współrzędnych Kruskala-Szekeresa ==
Mając już zdefiniowaną metrykę {{LinkWzór|11.2}}, wtedy można napisać współrzędne Kruskala-Szekeresa, dla dwóch współrzędnych U(r,t) i V(r,t) podaną dla dwóch przedziałów zmienności położenia radialnego ograniczonej promieniem Schwarzchilda :
{{ElastycznyWiersz
| 1 = {{Center|''Dla z przedziału zmiennej radialnej'' r∈(r{{Sub|g}},∞):}}
{{CentrujWzór|<MATH>\begin{cases}
U=\pm\left({{r}\over{r_g}}-1\right)^{{{1}\over{2}}}e^{{{r}\over{2r_g}}}\cosh\left({{ct}\over{2r_g}}\right)\\
V=\left({{r}\over{r_g}}-1\right)^{{{1}\over{2}}}e^{{{r}\over{2r_g}}}\sinh\left({{ct}\over{2r_g}}\right)\\
\end{cases}\;</MATH>|11.3}}
|2={{Center|''Dla przedziału zmiennej radialnej'' r∈(0,r{{Sub|g}})}}
{{CentrujWzór|<MATH>\begin{cases}
U=\left(1-{{r}\over{r_g}}\right)^{{{1}\over{2}}}e^{{{r}\over{2r_g}}}\sinh\left({{ct}\over{2r_g}}\right)\\
V=\pm\left(1-{{r}\over{r_g}}\right)^{{{1}\over{2}}}e^{{{r}\over{2r_g}}}\cosh\left({{ct}\over{2r_g}}\right)\\
\end{cases}</MATH>|11.4}}
}}
Widzimy, że w punkcie dążącym do r=r{{Sub|g}}, funkcje U i V wedle {{LinkWzór|11.3}} i {{LinkWzór|11.4}} są ciągłe i równe zero.
Dla naszego f(r) wprowadzonego w metryce {{LinkWzór|11.2}} zdefiniujmy jako funkcję zależną od promienia radialnego r:
{{CentrujWzór|<MATH>f(r)={{4r_g^3}\over{r}}e^{-{{r}\over{r_g}}}</MATH>|11.5}}
Następnie sprawdźmy, czy nasza metryką jest zgodna z naszymi obranymi współrzędnymi, czyli czy przechodzi w metrykę Schwarzchilda we współrzędnych kulistych, dla r>r{{Sub|g}} policzmy kolejne pochodne. Pierwsze pochodna cząstkowa zmiennej U względem czasu współrzędnościowego piszemy:
{{CentrujWzór|<MATH>{{\partial U}\over{\partial t}}=\pm\left({{r}\over{r_g}}-1\right)^{{{1}\over{2}}}e^{{{r}\over{2r_g}}}{{c}\over{2r_g}}\sinh\left({{ct}\over{2r_g}}\right)</MATH>|11.6}}
Pochodną cząstkową zmiennej V względem czasu t współrzędnościowego wyrażamy:
{{CentrujWzór|<MATH>{{\partial V}\over{\partial t}}=\left({{r}\over{r_g}}-1\right)^{{{1}\over{2}}}e^{{{r}\over{2r_g}}}{{c}\over{2r_g}}\cosh\left({{ct}\over{2r_g}}\right)</MATH>|11.7}}
Pochodną cząstkową zmiennej V względem promienia r współrzędnościowego:
{{CentrujWzór|<MATH>{{\partial U}\over{\partial r}}=\pm\cosh\left({{ct}\over{2r_g}}\right)\left(
{{1}\over{2r_g}}({{r}\over{r_g}}-1)^{-{{1}\over{2}}}e^{{{r}\over{2r_g}}}+{{1}\over{2r_g}}\left({{r}\over{r_g}}-1\right)^{{1}\over{2}}e^{{{r}\over{2r_g}}}\right)=\pm{{1}\over{2r_g}}e^{{{r}\over{2r_g}}}\cosh\left({{ct}\over{2r_g}}\right)
{{1+{{r}\over{r_g}}-1}\over{\left({{r}\over{r_g}}-1\right)^{{{1}\over{2}}}}}=\;</MATH>{{Br}}<MATH>=
{{1}\over{2r_g}}e^{{{r}\over{2r_g}}}\cosh\left({{ct}\over{2r_g}}\right)
{{{{r}\over{r_g}}}\over{\left({{r}\over{r_g}}-1\right)^{{{1}\over{2}}}}}=\pm{{r}\over{2r_g^2}}e^{{{r}\over{2r_g}}}\cosh\left({{ct}\over{2r_g}}\right)\left({{r}\over{r_g}}-1\right)^{-{{1}\over{2}}}</MATH>|11.8}}
Podobnie liczmy pochodną zmiennej V względem położenia radialnego, czyli {{Formuła|<MATH>{{\partial V}\over{\partial r}}</MATH>}}, stąd:
{{CentrujWzór|<MATH>{{\partial V}\over{\partial r}}={{r}\over{2r_g^2}}e^{{{r}\over{2r_g}}}\sinh\left({{ct}\over{2r_g}}\right)\left({{r}\over{r_g}}-1\right)^{-{{1}\over{2}}}</MATH>|11.9}}
Wyznaczmy różniczkę zupełną dU z twierdzenia o różniczce zupełnej korzystając z już policzonych pochodnych cząstkowych zmiennej U względem czasu {{LinkWzór|11.6}} i położenia radialnego {{LinkWzór|11.9}}:
{{CentrujWzór|<MATH>dU={{\partial U}\over{\partial t}}dt+{{\partial U}\over{\partial r}}dr=
\pm\left({{r}\over{r_g}}-1\right)^{{{1}\over{2}}}e^{{{r}\over{2r_g}}}{{c}\over{2r_g}}\sinh\left({{ct}\over{2r_g}}\right)dt\pm{{r}\over{2r_g^2}}e^{{{r}\over{2r_g}}}\cosh\left({{ct}\over{2r_g}}\right)\left({{r}\over{r_g}}-1\right)^{-{{1}\over{2}}}dr</MATH>|11.10}}
A następnie policzmy różniczkę zupełną dV pdobnie jak w punkcie {{LinkWzór|11.10}}, ale tym razem korzystając z pochodnej zmiennej V względem czasu {{LinkWzór|11.8}} i położenia radialnego {{LinkWzór|11.9}}:
{{CentrujWzór|<MATH>dV={{\partial V}\over{\partial t}}dt+{{\partial V}\over{dr}}dr=
\left({{r}\over{r_g}}-1\right)^{{{1}\over{2}}}e^{{{r}\over{2r_g}}}{{c}\over{2r_g}}\cosh\left({{ct}\over{2r_g}}\right)dt+{{r}\over{2r_g^2}}e^{{{r}\over{2r_g}}}\sinh\left({{ct}\over{2r_g}}\right)\left({{r}\over{r_g}}-1\right)^{-{{1}\over{2}}}dr</MATH>|11.11}}
A na samym końcu policzmy różnice kwadratów różniczek zupełnych policzonych, tzn.: {{LinkWzór|11.10}}, {{LinkWzór|11.11}}:
{{CentrujWzór|<MATH>dU^2-dV^2=\left(\pm\left({{r}\over{r_g}}-1\right)^{{{1}\over{2}}}e^{{{r}\over{2r_g}}}{{c}\over{2r_g}}\sinh\left({{ct}\over{2r_g}}\right)dt\pm{{r}\over{2r_g^2}}e^{{{r}\over{2r_g}}}\cosh\left({{ct}\over{2r_g}}\right)\left({{r}\over{r_g}}-1\right)^{-{{1}\over{2}}}dr\right)^2+</MATH>{{Br}}
<MATH>-\left(
\left({{r}\over{r_g}}-1\right)^{{{1}\over{2}}}e^{{{r}\over{2r_g}}}{{c}\over{2r_g}}\cosh\left({{ct}\over{2r_g}}\right)dt+{{r}\over{2r_g^2}}e^{{{r}\over{2r_g}}}\sinh\left({{ct}\over{2r_g}}\right)\left({{r}\over{r_g}}-1\right)^{-{{1}\over{2}}}dr\right)^2=-\left({{r}\over{r_g}}-1\right)e^{{{r}\over{r_g}}}{{c^2}\over{4r_g^2}}dt^2+\;</MATH>{{Br}}<MATH>+
{{r^2}\over{4r_g^4}}e^{{{r}\over{r_g}}}\left({{r}\over{r_g}}-1\right)^{-1}dr^2</MATH>|11.12}}
Policzmy wyrażenie w naszej metryce znając definicję funkcji f(r) {{LinkWzór|11.5}} i policzoną przed chwilą różnicę kwadratów różniczek zupełnych {{LinkWzór|11.12}}, czyli:
{{CentrujWzór|<MATH>-f(r)(dU^2-dV^2)=-{{4r_g^3}\over{r}}e^{-{{r}\over{r_g}}}\left[-\left({{r}\over{r_g}}-1\right)e^{{{r}\over{r_g}}}{{c^2}\over{4r_g^2}}dt^2+
{{r^2}\over{4r_g^4}}e^{{{r}\over{r_g}}}\left({{r}\over{r_g}}-1\right)^{-1}dr^2\right]=(1-{{r_g}\over{r}})c^2dt^2-{{dr^2}\over{{{r_g}\over{r}}\left({{r}\over{r_g}}-1\right)}}=\;</MATH>{{Br}}<MATH>=
\left(1-{{r_g}\over{r}}\right)c^2dt^2-{{dr^2}\over{1-{{r}\over{r_g}}}}</MATH>|11.13}}
Naszą rozważaną metryką w zmiennych (t,r ,θ,φ) jest metryka Schwarzchilda, co dowodzi że metryka Kruskala-Szekeresa jest uogólnieniem metryki Schwarzchilda dla którego punktem osobliwym funkcji f(r) jest dla r=0, ale same funkcje U(r) i V(r) nie posiadają w sobie punktów osobliwych, a w metryce Schwarzchilda jest punkt:{{Formuła|<MATH>r=r_g={{2GM}\over{c^2}}\;</MATH>}}, czyli doszliśmy do wniosku ostatnio, że metryka nasza tutaj rozważana przechodzi w metrykę Schwarzschilda zdefiniowanej w punkcie {{LinkWzór|8.68|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}}. Przypadek drugi {{LinkWzór|11.3}} dla przypadku r<r{{Sub|g}}, dowodzimy podobnie.
== Czasoprzestrzeń we współrzędnych Kruskala-Szekeresa ==
{{Rysunek|KruskalKoords.jpg|lk1|Czasoprzestrzeń we współrzędnych Kruskala-Szekeresa|rozmiar=350px}}
W czasoprzestrzeni we współrzędnych Kruskala-Szekersa jest podzielona na cztery obszary, górny i dolny, lewy i prawy. Na płaszczyźnie (U,V), każda linia odpowiada {{Formuła|<MATH>t=\operatorname{const}</MATH>}}, Bowiem zachodzi po podzieleniu równań na U, V dla zmiennych {{LinkWzór|11.3}} i zapisując je w postaci przekształconej:
{{CentrujWzór|<MATH>U=\pm\operatorname{ctgh}{{ct}\over{2r_g}}V</MATH>{{Tekst|, dla }}<MATH>r>r_g</MATH>|11.14}}
A także dla tego samego zestawu zmiennej, ale dla innego przedziału zmienności zmiennej radialnej, czyli zachodzi po podzieleniu równań na U, V układu zmiennych {{LinkWzór|11.4}} zapisując je w postaci przekształconej:
{{CentrujWzór|<MATH>U=\pm\operatorname{tgh}{{ct}\over{2r_g}}V</MATH>{{Tekst|, dla }}<MATH>r<r_g</MATH>|11.15}}
A więc mamy prostą dla {{Formuła|<MATH>t\;</MATH>}} stałego, tzn.:{{Formuła|<MATH>U=\operatorname{const}\cdot V</MATH>}} na płaszczyźnie: {{Formuła|<MATH>(U,V)</MATH>}}.
Gdy {{Formuła|<MATH>ct\rightarrow \infty</MATH>}}, to mamy:{{Formuła|<MATH>\operatorname{tgh}{{ct}\over{2r_g}}\rightarrow 1</MATH>}}, wtedy mamy:{{Formuła|<MATH>U=\pm V</MATH>}}, zaś gdy {{Formuła|<MATH>ct=0</MATH>}}, to mamy:{{Formuła|<MATH>\operatorname{tgh}{{ct}\over{2r_g}}=0</MATH>}}, a zatem otrzymujemy U=0.
Ale mamy dwie proste przechodzące przez początek układu współrzędnych wedle równania, która przedstawia zależność zmiennej U od V, czyli według {{LinkWzór|11.14}} lub {{LinkWzór|11.15}}, bo wtedy ma sens proporcjonalność zmiennej U od zmiennej V tylko dla czasów współrzędnościowych niezerowych w tej geometrii.
W naszej metryce obszar po lewej jest jakoby świat 1, z prawej świat 2, a obszar górny i dolny dotyczą wnętrza czarnej dziury.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
4v2pxrnpa71n240zhdek8lmd3kw4u40
Ogólna teoria względności/Współrzędne Eddingtona-Finkelsteina
0
16469
558867
470277
2026-10-07T14:59:58Z
Persino
2851
558867
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Wiemy jednak, że w metryce Schwarzchilda występuje nieciągłość dla {{Formuła|<MATH>r=r_g={{2GM}\over{c^2}}</MATH>}}, można go usunąć obierając pewien rodzaj współrzędnych. Tym razem rozważmy współrzędne Eddingtona-Finkelsteina.
== Definicja współrzędnych Eddigtona-Finkelsteina ==
Rozważmy promień świetlny biegnący radialnie, jeśli zachodzi dθ=dφ=0. Gdy spełniona jest tożsamość dla kwadratu interwału czasoprzestrzennego ds{{Sup|2}}=0, czyli interwał czasoprzestrzenny jest zerowy.
{{CentrujWzór|<MATH>0=ds^2=\left(1-{{r_g}\over{r}}\right)c^2dt^2-{{dr^2}\over{1-{{r_g}\over{r}}}}</MATH>|12.1}}
co można zapisać na podstawie {{LinkWzór|12.1}}, że kwadrat różniczki współrzędnościowego czasu jest wyrażony za pomocą kwadratu współrzędnościowego promienia:
{{CentrujWzór|<MATH>c^2dt^2={{dr^2}\over{\left(1-{{r_g}\over{r}}\right)^2}}</MATH>|12.2}}
Co po z pierwiastkowaniu obustronnie równości na różniczkach (na infinitezymalnych zmianach) {{LinkWzór|12.2}}, ale gdy r≠ r{{Sub|g}}, otrzymujemy:
{{CentrujWzór|<MATH>cdt=\pm{{dr}\over{1-{{r_g}\over{r}}}}</MATH>|12.3}}
Całkujemy obustronnie tożsamość {{LinkWzór|12.3}} lewostronnie względem czasu, a prawostronnie względem promienia kulistego r.
{{CentrujWzór|<MATH>ct=\pm\int {{dr}\over{1-{{r_g}\over{r}}}}\Rightarrow
ct=\pm\int{{ r dr}\over{r-r_g}}\Rightarrow
ct=\pm\int {{rdr}\over{r_g\left({{r}\over{r_g}}-1\right)}}</MATH>|12.4}}
Ze wzoru {{LinkWzór|12.4}} dostajemy zależność łącząca współrzędną czasu ze współrzędną położenia radialnego:
{{CentrujWzór|<MATH>ct=\pm\int r_g\left\{1+{{1}\over{{{r}\over{r_g}}-1}}\right\}d{{r}\over{r_g}}\Rightarrow ct=\pm r\pm\ln\left|{{r}\over{r_g}}-1\right|+\operatorname{const}</MATH>|12.5}}
Pozostawiając stałą po prawej stronie równości {{LinkWzór|12.5}} a pozostałe wielkości przenosimy na jej lewą stronę i ostatecznie odwracając stronami omawianą równość:
{{CentrujWzór|<MATH>\operatorname{const}=ct\mp r\mp\ln\left|{{r}\over{r_g}}-1\right|</MATH>|12.6}}
Zastępując naszą stałą zmienną U i wybierając znaki minus gdy r>r{{Sub|g}}, a także stałą V ze znakiem plus gdy r<r{{Sub|g}}, zatem ze względu na dowolność stałej całkowania mamy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>U=ct-r-r_g\ln\left({{r}\over{r_g}}-1\right)\;</MATH>|12.6a}}
| 2 = {{CentrujWzór|<MATH>V=ct+r+r_g\ln\left(1-{{r}\over{r_g}}\right)\;</MATH>|12.7}}
}}
Powyższe zmienne są to nowe zmienne, które obowiązują w rozważanej metryce.
== Metryka Eddigtona-Finkelsteina ==
W zależności od zdefiniowanych współrzędnych U i V,
można zdefiniować metrykę wedle zmiennej {{LinkWzór|12.6}} lub {{LinkWzór|12.7}} wedle:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>ds^2=\left(1-{{r_g}\over{r}}\right)dU^2+2dUdr-r^2d\Omega^2</MATH>|12.8}}
| 2 = {{CentrujWzór|<MATH>ds^2=\left(1-{{r_g}\over{r}}\right)dV^2-2dVdr-r^2d\Omega^2</MATH>|12.9}}
}}
Za pomocą poprzednio zdefiniowanych w zmiennych otrzymaliśmy dwa rodzaje metryk w zależności od zmiennej czy od U lub czy to V będziemy za pomocą ich pisali naszą metrykę, tzn. czy {{LinkWzór|12.8}} lub {{LinkWzór|12.9}}.
=== Dowód metryki Eddigtona-Finkelsteina przy zmiennej U ===
Będziemy tu omawiać metrykę Eddigtona-Finkelsteina przy zmiennej U zdefiniowanego wedle wzoru {{LinkWzór|12.6}} przy metryce {{LinkWzór|12.8}}. Policzmy najpierw pochodną cząstkową współrzędnej U względem czasu współrzędnościowego t i przekonamy się, że ona jest równa wielkości stałej, która jest wielkością stałą:
{{CentrujWzór|<MATH>{{\partial U}\over{\partial t}}=c</MATH>|12.10}}
A także też wyznaczmy pochodną funkcji U względem położenia radialnego r:
{{CentrujWzór|<MATH>{{\partial U}\over{\partial r}}=-1-r_g{{1}\over{{{r}\over{r_g}}-1}}{{1}\over{r_g}}=-1-\left({{r}\over{r_g}}-1\right)^{-1}</MATH>|12.11}}
Rozpatrując definicję różniczki zupełnej można napisać różniczkę zmiennej U, korzystając z policzonych pochodnych cząstkowych przestawionych w punkcie {{LinkWzór|12.10}} oraz w punkcie {{LinkWzór|12.11}}:
{{CentrujWzór|<MATH>dU={{\partial U}\over{\partial t}}dt+{{\partial U}\over{\partial r}}dr=
cdt+\left(-1-\left({{r}\over{r_g}}-1\right)^{-1}\right)dr</MATH>|12.12}}
Teraz udowodnijmy naszą rozważaną metrykę {{LinkWzór|12.8}} tzn.: przy zmiennej U, wyznaczając wyrażenie:
{{CentrujWzór|<MATH>\left(1-{{r_g}\over{r}}\right)dU^2+2dUdr=\left(1-{{r_g}\over{r}}\right)\left[cdt+\left(-1-\left({{r}\over{r_g}}-1\right)^{-1}\right)dr\right]^2+2dr\left[cdt+\left(-1-\left({{r}\over{r_g}}-1\right)^{-1}\right)dr\right]=</MATH>{{Br}}
<MATH>=\left(1-{{r_g}\over{r}}\right)\left[c^2dt^2+\left(1+\left({{r}\over{r_g}}-1\right)^{-1}\right)^2dr^2-2cdtdr\left(1+\left({{r}\over{r_g}}-1\right)^{-1}\right)\right]+2drcdt-2dr^2\left(1+\left({{r}\over{r_g}}-1\right)^{-1}\right)=\;</MATH>{{Br}}<MATH>=
\left(1-{{r_g}\over{r}}\right)c^2dt^2+dr^2\left[
{{r-r_g}\over{r}}\left(1+{{r_g}\over{r-r_g}}\right)^2-2\left(1+{{r_g}\over{r-r_g}}\right)
\right]+2cdtdr\left[
-{{r-r_g}\over{r}}\left(1+{{r_g}\over{r-r_g}}\right)+1
\right]=</MATH>{{Br}}
<MATH>=\left(1-{{r_g}\over{r}}\right)c^2dt^2+dr^2\left({{r-r_g}\over{r}}{{r^2}\over{(r-r_g)^2}}-2{{r}\over{r-r_g}}\right)+2cdtdr\left(-{{r-r_g}\over{r}}{{r}\over{r-r_g}}+1\right)=</MATH>{{Br}}
<MATH>=\left(1-{{r_g}\over{r}}\right)c^2dt^2+dr^2\left({{r}\over{r-r_g}}-2{{r}\over{r-r_g}}\right)=\left(1-{{r_g}\over{r}}\right)c^2dt^2-dr^2{{r}\over{r-r_g}}=\left(1-{{r_g}\over{r}}\right)c^2dt^2-{{dr^2}\over{1-{{r_g}\over{r}}}}</MATH>|12.13}}
Na podstawie {{LinkWzór|12.13}} i definicji metryki Eddigtona-Finkelsteina ze zmienną U {{LinkWzór|12.8}} metryka ta przechodzi w metrykę Schwarzchilda {{LinkWzór|8.68|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}}, a więc nasza metryka jest poprawna dla pola sferycznie symetrycznego.
=== Dowód metryki Eddigtona-Finkelsteina przy zmiennej V ===
Będziemy tu omawiać metrykę Eddigtona-Finkelsteina przy zmiennej U zdefiniowanego wedle wzoru {{LinkWzór|12.7}} przy metryce {{LinkWzór|12.9}}. Policzmy najpierw pochodną cząstkową współrzędnej U względem czasu współrzędnościowego t i przekonamy się, że ona jest równa wielkości stałej, która jest wielkością stałą:
{{CentrujWzór|<MATH>{{\partial V}\over{\partial t}}=c</MATH>|12.14}}
a teraz wyznaczmy pochodną zmiennej V względem położenia radialnego współrzędnościowego:
{{CentrujWzór|<MATH>{{\partial V}\over{\partial r}}=1+r_g{{1}\over{1-{{r}\over{r_g}}}}(-1){{1}\over{r_g}}=1-\left(1-{{r}\over{r_g}}\right)^{-1}</MATH>|12.15}}
Rozpatrując definicję różniczki zupełnej znanej z analizy można napisać różniczkę zmiennej V korzystając z {{LinkWzór|12.14}} i {{LinkWzór|12.15}} w postaci:
{{CentrujWzór|<MATH>dV={{\partial V}\over{\partial t}}dt+{{\partial V}\over{\partial r}}dr=
cdt+\left(1-\left(1-{{r}\over{r_g}}\right)^{-1}\right)dr</MATH>|12.16}}
Teraz udowodnijmy naszą rozważaną metrykę tzn.: przy zmiennej V, wyznaczając wyrażenie:
{{CentrujWzór|<MATH>\left(1-{{r_g}\over{r}}\right)dV^2-2drdV=\left(1-{{r_g}\over{r}}\right)\left[cdt+\left(1-\left(1-{{r}\over{r_g}}\right)^{-1}\right)dr\right]^2-2dr\left[cdt+\left(1-\left(1-{{r}\over{r_g}}\right)^{-1}\right)dr\right]=</MATH>{{Br}}
<MATH>=\left(1-{{r_g}\over{r}}\right)\left[c^2dt^2+\left(1-\left(1-{{r}\over{r_g}}\right)^{-1}\right)^{2}dr^2+2cdtdr\left(1-\left(1-{{r}\over{r_g}}\right)^{-1}\right)\right]-2drcdt-2dr^2\left(1-\left(1-{{r}\over{r_g}}\right)^{-1}\right)=\;</MATH>{{Br}}<MATH>=
\left(1-{{r_g}\over{r}}\right)c^2dt^2+dr^2\left[\left(1-{{r_g}\over{r}}\right)\left(1-{{r_g}\over{r_g-r}}\right)^2-2\left(1-{{r_g}\over{r_g-r}}\right)\right]
+2cdtdr\left[\left(1-{{r_g}\over{r}}\right)\left(1-{{r_g}\over{r_g-r}}\right)-1\right]=</MATH>{{Br}}
<MATH>=\left(1-{{r_g}\over{r}}\right)c^2dt^2+dr^2\left[{{r-r_g}\over{r}}{{r^2}\over{(r_g-r)^2}}+2{{r}\over{r_g-r}}\right]+2cdtdr\left[{{r-r_g}\over{r}}{{-r}\over{r_g-r}}-1\right]=\left(1-{{r_g}\over{r}}\right)c^2dt^2+\;</MATH>{{Br}}<MATH>+dr^2\left[-{{r}\over{r_g-r}}+2{{r}\over{r_g-r}}\right]=\left(1-{{r_g}\over{r}}\right)c^2dt^2+dr^2{{r}\over{r_g-r}}=\left(1-{{r_g}\over{r}}\right)c^2dt^2-dr^2{{r}\over{r-r_g}}=\left(1-{{r_g}\over{r}}\right)c^2dt^2-{{dr^2}\over{1-{{r_g}\over{r}}}}</MATH>|12.17}}
Czyli doszliśmy, że metryka Eddigtona-Finkelsteina przy zmiennej V {{LinkWzór|12.9}} przechodzi w metrykę Schwarzchilda {{LinkWzór|8.68|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}}, czyli otrzymaliśmy wniosek, że ta nasza metryka dla pola sferycznie symetrycznego jest poprawnie zdefiniowana.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
bscnr1d1fkcbucpt6q4odvzsb9oib0u
Ogólna teoria względności/Współrzędne cylindryczne a tunel Einsteina-Rosena
0
16490
558868
470278
2026-10-07T15:01:26Z
Persino
2851
558868
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Za pomocą współrzędnych Einsteina-Rossena dowiemy, że istnieją dwa światy, które złączają się przy r=r{{Sub|g}}, tzn. świat 1 ze światem 2.
== Współrzędne Einsteina-Rosena ==
Obierzmy metrykę Schwarzschilda i zakładajmy, że dt=0, a także {{Formuła|<MATH>\phi={{\pi}\over{2}}\;</MATH>}}, wtedy interwał czasoprzestrzenny przy tych założeniach przyjmując współrzędne cylindryczne przyjmuje postać:
{{CentrujWzór|<MATH>ds^2=-dl^2=-{{dr^2}\over{1-{{r_g}\over{r}}}}-r^2d\theta^2\;</MATH>|13.1}}
Naszym celem przy odpowiednio dobranych współrzędnych dojść do geometrii Schwarzschilda we współrzędnych cylindrycznych.
We współrzędnych cylindrycznych dl{{Sup|2}}, różniczka długości między dwoma infinitezymalnie bliskimi punktami jest napisana wedle:
{{CentrujWzór|<MATH>dl^2=d\rho^2+\rho^2 d\alpha^2+dz^2\;</MATH>|13.2}}
A teraz weźmy nowe zmienne przy pomocy których można zapisać odległość pomiędzy punktami odległymi od siebie nieskończenie blisko {{LinkWzór|13.2}} zdefiniowanej przy pomocy promienia radialnego r i kąta θ i z, a także przy pomocy promienia Schwarzschilda r{{Sub|g}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\rho=r\;</MATH>|13.3}}
| 2 = {{CentrujWzór|<MATH>\alpha=\theta\;</MATH>|13.4}}
| 3 = {{CentrujWzór|<MATH>z=\pm 2\sqrt{r_g(r-r_g)}\;</MATH>|13.5}}
}}
Następnym krokiem jest policzenie różniczki zupełnej z wielkości "z" zdefiniowanej w punkcie {{LinkWzór|13.5}}, którą wyrazimy przy pomocy różniczki promienia radialnego r:
{{CentrujWzór|<MATH>dz=\pm 2{{r_g}\over{2\sqrt{r_g(r-r_g)}}}dr=\pm {{r_g}\over{\sqrt{r_g(r-r_g)}}}dr\;</MATH>|13.6}}
Po podniesieniu do kwadratu różniczki współrzędnej zetowej zdefiniowanej według {{LinkWzór|13.6}} przy pomocy promienia radialnego r mamy:
{{CentrujWzór|<MATH>dz^2={{r_g^2}\over{r_g(r-r_g)}}dr^2\Rightarrow dz^2={{r_g}\over{r-r_g}}dr^2\;</MATH>|13.7}}
Następnie policzmy różniczkę długości dl{{Sup|2}} zdefiniowanej w punkcie {{LinkWzór|13.2}} przy pomocy kwadratu różniczki współrzędnej zetowej {{LinkWzór|13.7}}:
{{CentrujWzór|<MATH>dl^2=d\rho^2+\rho^2 d\alpha^2+dz^2=
dr^2+r^2 d\theta^2+{{r_g}\over{r-r_g}}dr^2=r^2d\theta^2+dr^2\left[
1+{{r_g}\over{r-r_g}}
\right]=\;</MATH>{{Br}}<MATH>=r^2d\theta^2+dr^2\left[
{{r-r_g+r_g}\over{r-r_g}}
\right]=r^2d\theta^2+dr^2{{r}\over{r-r_g}}={{dr^2}\over{1-{{r_g}\over{r}}}}+r^2d\theta^2\;</MATH>|13.8}}
Na podstawie definicji kwadratu różniczki interwału czasoprzestrzennego {{LinkWzór|13.1}} i z definicji kwadratu infitezymalnej długości między dwoma zdarzeniami:
{{CentrujWzór|<MATH>ds^2=-dl^2=-{{dr^2}\over{1-{{r_g}\over{r}}}}-r^2d\theta^2\;</MATH>|13.9}}
czyli otrzymujemy geometrię statystyczno cylindryczną Schwarzchilda dla dt=0 na podstawie definicji kwadratu infinitezymalnej zmiany interwału czasoprzestrzennego.
== Interpretacja współrzędnych Einsteina-Rosena ==
{{Rysunek|LorentzianWormhole.jpg|lk1|Tunel Einsteina-Rosena}}
W geometrii Einsteina-Rosena otrzymujemy dwa rozwiązania jedno dla z<0, a drugie dla z>0. Te oba światy są złączone dla r=r{{Sub|g}}.
W każdym bądź razie przez czarną dziurę przechodzi specyficzna gardziel zwaną tunelem Einsteina-Rosena. Można udowodnić, że analiza w geometrii Schwarzschilda nie pozwala na podróż, ze świata 1 do świata 2 w statyczno-sferycznej rozważanej geometrii.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
a7a03xde3xpk1kp1wbspho3yzd3hqpm
Ogólna teoria względności/Ruch cząstki próbnej wokół masy statycznie sferycznej-rozwiązanie ogólne
0
16494
558864
513508
2026-10-07T14:46:48Z
Persino
2851
558864
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy rozważać ruch cząstki próbnej wokół masy o geometrii statycznie sferycznej, czyli według geometrii Schwarzchilda za pomocą równania na line geodezyjne. Tutaj pokażemy podejście ogólne dla rozwiązania równania geodezyjnego dla cząstki próbnej.
== Równanie geodezyjne a geometria Schwarzchilda ==
Ruch cząstki próbnej będziemy rozważać przy pomocy równania {{LinkWzór|1.74|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}}.
Poszczególne niezerowe elementy tensora Christofela dla geometrii Schwarzchilda w układzie współrzędnych (ct,r,θ,φ), które zostały napisane w poprzednim rozdziale:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{\Gamma^{t}}_{tr}={{1}\over{2}}\Phi^'\;</MATH>|9.1}}
| 2 = {{CentrujWzór|<MATH>{\Gamma^{r}}_{tt}={{1}\over{2}}e^{\Phi-\Lambda}\Phi^'\;</MATH>|9.2}}
| 3 = {{CentrujWzór|<MATH>{\Gamma^{r}}_{rr}={{1}\over{2}}\Lambda^'\;</MATH>|9.3}}
}}
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<math>{\Gamma^{r}}_{\theta\theta}=-re^{-\Lambda}\sin^2\phi\;</MATH>|9.4}}
| 2 = {{CentrujWzór|<MaTH>{\Gamma^{r}}_{\phi\phi}=-re^{-\Lambda}\;</Math>|9.5}}
| 3 = {{CentrujWzór|<MaTH>{\Gamma^{\theta}}_{r\theta}={\Gamma^{\phi}}_{r\phi}={{1}\over{r}}\;</MATH>|9.6}}
}}
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{\Gamma^{\theta}}_{\theta\phi}=\operatorname{ctg}\phi\;</MATH>|9.7}}
| 2 = {{CentrujWzór|<MATH>{\Gamma^{\phi}}_{\theta\theta}=-\sin\phi\cos\phi\;</MATH>|9.8}}
}}
Przyjmijmy że cząstka porusza się w płaszczyźnie dla {{Formuła|<MATH>\phi={{\pi}\over{2}}\;</MATH>}}, zatem wtedy na pewno zachodzi {{Formuła|<MATH>\dot{\phi}=0\;</MATH>}} i druga pochodna funkcji φ też ma postać zerową, co zapisujemy {{Formuła|<MATH>\ddot{\phi}=0\;</MATH>}}, czyli cząstka porusza się cały czas w tej samej płaszczyźnie, w której są spełniane powyższe własności.
Rozważmy ruch cząstki próbnej według równania linii geodezyjnej {{LinkWzór|1.74|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} dla μ=t, wtedy powiemy:
{{CentrujWzór|<MATH>0={{d^2(ct)}\over{d\lambda^2}}+{\Gamma^{t}}_{tr}{{d(ct)}\over{d\lambda}}{{dr}\over{d\lambda}}+{\Gamma^{t}}_{rt}{{dr}\over{d\lambda}}{{d(ct)}\over{d\lambda}}\Rightarrow
0={{d^2(ct)}\over{d\lambda^2}}+2{\Gamma^{t}}_{tr}{{d(ct)}\over{d\lambda}}{{dr}\over{d\lambda}}\;</MATH>|9.9}}
Zatem jeśli mamy równania {{LinkWzór|8.67|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}}, zatem wtedy ściśle określony element tensora Christoffela {{LinkWzór|9.1}} możemy zapisać:
{{CentrujWzór|<MATH>{\Gamma^{t}}_{tr}={{1}\over{2}}\Phi^'={{1}\over{2}}[\ln(1-{{r_g}\over{r}})]^'={{1}\over{2}}{{1}\over{1-{{r_g}\over{r}}}}{{r_g}\over{r^2}}={{r_g}\over{2e^{\Phi}r^2}}\;</MATH>|9.10}}
A zatem nasze równanie na linie geodezyjne {{LinkWzór|9.9}}, przy definicji tensora Christofera Γ{{Sup|t}}{{Sub|tr}} wyprowadzone w punkcie {{LinkWzór|9.10}}, która jest zależna od promienia Schwarzchilda r{{Sub|g}} czarnej dziury i funkcji Φ(r) wyprowadzonej w poprzednim module, możemy zapisać:
{{CentrujWzór|<MATH>0={{d^2(ct)}\over{d\lambda^2}}+2{{r_g}\over{2e^{\Phi}r^2}}{{d(ct)}\over{d\lambda}}{{dr}\over{d\lambda}}\Rightarrow 0={{d^2(ct)}\over{d\lambda^2}}+{{r_g}\over{e^{\Phi}r^2}}{{d(ct)}\over{d\lambda}}{{dr}\over{d\lambda}}\;</MATH>|9.11}}
Równanie {{LinkWzór|9.11}} możemy zwinąć do postaci bardzo skróconej licząc pochodną stałego wyrażenia względem parametru λ, które jest równe zero, co piszemy je jako:
{{CentrujWzór|<MATH>{{d}\over{d\lambda}}\left[e^{\Phi}{{d(ct)}\over{d\lambda}}\right]=0\;</MATH>|9.12}}
Co można udowodnić równoważność równości {{LinkWzór|9.12}} i {{LinkWzór|9.11}} rozpisując powyższe równanie oraz pochodną Φ{{Sup|'}}, która zawiera czynnik e{{Sup|Φ}}, i dla którego Λ=-Φ, czyli do którego możemy wykorzystać równość {{LinkWzór|8.67|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}}, i w końcowej tożsamości {{LinkWzór|8.59|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}} możemy udowodnić przejście równości {{LinkWzór|9.12}} do równości {{LinkWzór|9.11}}.
{{CentrujWzór|<MATH>e^{\Phi}\Phi^'{{d(ct)}\over{d\lambda}}+e^{\Phi}{{d^2(ct)}\over{d\lambda^2}}=0\Rightarrow\Phi^'{{d(ct)}\over{d\lambda}}+{{d^2(ct)}\over{d\lambda^2}}=0\Rightarrow{{r_g}\over{e^{\Phi}r^2}}{{dr}\over{d\lambda}}{{d(ct)}\over{d\lambda}}+{{d^2(ct)}\over{d\lambda^2}}=0\;</MATH>|9.13}}
Równanie {{LinkWzór|9.12}} można przedstawić w postaci po z całkowaniu go względem parametru λ otrzymując, że wyrażenie pod pochodna jest wielkością stałą i równą K.
{{CentrujWzór|<MATH>e^{\Phi}{{d(ct)}\over{d\lambda}}=K\Rightarrow {{d(ct)}\over{d\lambda}}=Ke^{-\Phi}</MATH>|9.14}}
A teraz rozważmy równanie ruchu dla linii geodezyjnej {{LinkWzór|1.74|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} dla parametru przestrzennego μ=φ, wtedy to nasze równanie w przestawieniu przy niezerowych wartościach tensora metrycznego Chrstoffela, a mianowicie jak wcześniej wyznaczonej definicji {{LinkWzór|9.6}}, piszemy:
{{CentrujWzór|<MATH>{{d^2\theta}\over{d\lambda^2}}+2{\Gamma^{\phi}}_{t\phi}{{dr}\over{d\lambda}}{{d\theta}\over{d\lambda}}=0\Rightarrow{{d^2\theta}\over{d\lambda^2}}+{{2}\over{r}}{{dr}\over{d\lambda}}{{d\theta}\over{d\lambda}}=0\;</MATH>|9.15}}
Równanie {{LinkWzór|9.15}} możemy zwinąć do postaci bardzo skróconej licząc pochodną współrzędnej radialnej względem parametru λ, które są równa zero (pierwsza i druga pochodna), co rysujemy:
{{CentrujWzór|<math>{{d}\over{d\lambda}}\left[r^2{{d\theta}\over{d\lambda}}\right]=0\;</MATH>|9.16}}
Co można udowodnić równoważność równości {{LinkWzór|9.15}} i {{LinkWzór|9.16}} rozpisując powyższe równanie do postaci poniżej i przekształcają je w taki sposób, by dokonać przejścia jego do postaci {{LinkWzór|9.15}}.
{{CentrujWzór|<MATH>2r{{dr}\over{d\lambda}}{{d\theta}\over{d\lambda}}+r^2{{d^2\theta}\over{d\lambda^2}}=0\Rightarrow{{2}\over{r}}{{dr}\over{d\lambda}}{{d\theta}\over{d\lambda}}+{{d^2\theta}\over{d\lambda^2}}=0\;</MATH>|9.17}}
Równanie {{LinkWzór|9.16}} można przedstawić w postaci po z całkowaniu go względem parametru λ otrzymując, że wyrażenie pod pochodna jest wielkością stałą i równą h.
{{CentrujWzór|<MATH>r^2{{d\theta}\over{d\lambda}}=h\Rightarrow {{d\theta}\over{d\lambda}}={{h}\over{r^2}}</MATH>|9.18}}
A teraz rozważmy równanie ruchu dla linii geodezyjnej {{LinkWzór|1.74|Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi}} dla parametru przestrzennego μ=r, wtedy to nasze równanie w przestawieniu przy niezerowych wartościach tensora metrycznego Chrstoffera, a mianowicie jej wcześniej wyznaczonej definicji Γ{{Sup|r}}{{Sub|tt}} {{LinkWzór|9.2}}, Γ{{Sup|r}}{{Sub|rr}} {{LinkWzór|9.3}}, Γ{{Sup|r}}{{Sub|θθ}} {{LinkWzór|9.4}} oraz Γ{{Sup|r}}{{Sub|φφ}} {{LinkWzór|9.5}}, co całe równanie przedstawiamy wedle:
{{CentrujWzór|<MATH>{{d^2r}\over{d\lambda^2}}+{\Gamma^{r}}_{tt}\left({{d(ct)}\over{d\lambda}}\right)^2+{\Gamma^{r}}_{rr}\left({{dr}\over{d\lambda}}\right)^2+{\Gamma^{r}}_{\theta\theta}\left({{d\theta}\over{d\lambda}}\right)^2+{\Gamma^{r}}_{\phi\phi}\left({{d\phi}\over{d\lambda}}\right)^2=0\;</MATH>|9.19}}
Podstawiając za odpowiednie Γ{{Sup|α}}{{Sub|βγ}}, należy pamiętać o ograniczeniu na odpowiednie φ co wspomniano wcześniej w tym rozdziale.
Najpierw policzmy odpowiednie elementy tensora Christoffela wedle {{LinkWzór|9.2}} i {{LinkWzór|9.3}} występujące we wzorze na linię geodezyjne {{LinkWzór|9.19}}.
{{CentrujWzór|<MATH>{\Gamma^{r}}_{tt}={{\Phi^'}\over{2}}e^{\Phi-\Lambda}=
{{\Phi^'}\over{2}}e^{2\Phi}=
{{1}\over{2}}\left[\ln\left(1-{{r_g}\over{r}}\right)\right]^'\left(1-{{r_g}\over{r}}\right)^2=
{{1}\over{2}}{{1}\over{1-{{r_g}\over{r}}}}{{r_g}\over{r^2}}\left(1-{{r_g}\over{r}}\right)^2={{r_g}\over{2r^2}}e^{\Phi}</MATH>{{Br}}<MATH>{\Gamma^{r}}_{rr}={{\Lambda^'}\over{2}}=-{{\Phi^'}\over{2}}=
-{{1}\over{2}}\left[\ln\left(1-{{r_g}\over{r}}\right)\right]^'=
-{{1}\over{2}}{{1}\over{1-{{r_g}\over{r}}}}{{r_g}\over{r^2}}=-{{r_g}\over{2r^2e^{\Phi}}}</MATH>|9.20}}
Dla Γ{{Sup|r}}{{Sub|φφ}} w {{LinkWzór|9.5}} nie rozważamy, bo {{Formuła|<MATH>\dot{\phi}=\ddot{\phi}=0</MATH>}}, idąc dalej element tensora Christoffela {{LinkWzór|9.4}} zapisujemy przy pomocy funkcji Φ wedle sposobu:
{{CentrujWzór|<MATH>{\Gamma^{r}}_{\theta\theta}=-r\sin{{\pi}\over{2}}e^{-\Lambda}=-re^{\Phi}</MATH>|9.21}}
A zatem nasze rozważane równanie {{LinkWzór|9.19}} na linię geodezyjną, do którego to podstawiamy równania na tensory Christoffela {{LinkWzór|9.3}} i na samym końcu równania uzyskane w punkcie, tzn.: {{LinkWzór|9.20}} i {{LinkWzór|9.21}}, którego to rozważane równanie na linie geodezyjne możemy przestawić wedle:
{{CentrujWzór|<MATH>{{d^2r}\over{d\lambda^2}}+{{r_g}\over{2r^2}}e^{\Phi}\left({{d(ct)}\over{d\lambda}}\right)^2-
{{r_g}\over{2r^2e^{\Phi}}}\left({{dr}\over{d\lambda}}\right)^2-re^{\Phi}\left({{d\theta}\over{d\lambda}}\right)^2=0</MATH>|9.21a}}
Jest to równanie na linię geodezyjną poruszającej się cząstki wokół kulistosymetrycznej masy podlegającej geometrii Schwarzschilda.
== Dowolny ruch cząstki próbnej wokół sferyczno-statycznej masy ==
Długość stycznego czterowektora do linii geodezyjnej ruchu cząstki próbnej, znając jednocześnie elementy podwójnie kowariantnego tensora metrycznego g{{Sub|μν}}, przedstawia się jako:
{{CentrujWzór|<MATH>C={{dx^{\mu}}\over{d\lambda}}g_{\mu\nu}{{dx^{\nu}}\over{d\lambda}}</MATH>|9.22}}
jest wielkością stałą i zależy od masy cząstki próbnej według {{LinkWzór|1.11|Wprowadzenie do ogólnej teorii względności}}, dla cząstki o masie spoczynkowej różnej od zera to C>0, wtedy parametr λ jest to interwał czasoprzestrzenny, a dla fotonów C=0, wtedy λ jest dowolnym parametrem, ale nie interwałem czasoprzestrzennym, którym jego różniczka w tym przypadku zawsze wynosi zero.
Dla cząstki poruszającej się po naszej płaszczyźnie dla {{Formuła|<MATH>\phi={{\pi}\over{2}}</MATH>}}, znając elementy tensora metrycznego, które są zawsze diagonalne przy pomocy funkcji Φ, równanie {{LinkWzór|9.22}} możemy zapisać:
{{CentrujWzór|<MATH>C=e^{\Phi}\left({{d(ct)}\over{d\lambda}}\right)^2-e^{-\Phi}\left({{dr}\over{d\lambda}}\right)^2-r^2\left({{d\theta}\over{d\lambda}}\right)^2</MATH>|9.23}}
Następnym krokiem jest podstawienie za wielkość pochodnej wielkości współrzędnej czasowej ct względem parametru λ, czyli {{Formuła|<MATH>{{d(ct)}\over{d\lambda}}</MATH>}} wedle wyrażenia {{LinkWzór|9.14}} a za pochodną wielkości kątowej θ względem parametru λ, czyli {{Formuła|<MATH>{{d\theta}\over{d\lambda}}</MATH>}} podstawiamy wyrażenie {{LinkWzór|9.18}}, a zatem równość {{LinkWzór|9.23}} przechodzi w tożsamość:
{{CentrujWzór|<MATH>C=e^{\Phi }K^2e^{-2\Phi}-e^{-\Phi}\left({{dr}\over{d\lambda}}\right)^2-r^2{{h^2}\over{r^4}}\Rightarrow C=e^{-\Phi}K^2-e^{-\Phi}\left({{dr}\over{d\lambda}}\right)^2-{{h^2}\over{r^2}}\Rightarrow e^{-\Phi}\left({{dr}\over{d\lambda}}\right)^2=-C+e^{-\Phi}K^2-{{h^2}\over{r^2}}</MATH>|9.24}}
Następnym krokiem jest pomnożenie ostatniego wynikowego równania {{LinkWzór|9.24}} przez eksponens funkcji Φ(r), czyli e{{Sup|Φ}}, wtedy otrzymujemy, że kwadrat pochodnej funkcji r względem parametru λ jest zapisywany:
{{CentrujWzór|<MATH>\left({{dr}\over{d\lambda}}\right)^2=-Ce^{\Phi}+K^2-{{h^2}\over{r^2}}e^{\Phi}\Rightarrow\left({{dr}\over{d\lambda}}\right)^2=K^2-(C+{{h^2}\over{r^2}})e^{\Phi}</MATH>|9.25}}
Równanie {{LinkWzór|9.25}} podzielmy obustronnie przez kwadrat ostatniej równości wynikowej {{LinkWzór|9.18}}, tak by wyeliminować zupełnie parametr λ ze wspomnianej równości, wtedy to owe równanie różniczkowe zapisujemy wedle:
{{CentrujWzór|<MATH>\left({{dr}\over{d\theta}}\right)^2={{K^2-(C+{{h^2}\over{r^2}})e^{\Phi}}\over{{{h^2}\over{r^4}}}}\Rightarrow
\left({{dr}\over{d\theta}}\right)^2=r^4\left({{K}\over{h}}\right)^2-{r^4}{{C}\over{h^2}}e^{\Phi}-r^2e^{\Phi}
</MATH>|9.26}}
Dokonajmy podstawień w równaniu {{LinkWzór|9.26}} w celu uproszczenia końcowego wspomnianego równania, które to stałe i zmienne (tzn. zmienna u) są wyrażone w poniższych wzorach wedle:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\left({{K}\over{h}}\right)=A\;</MATH>|9.27}}
| 2 = {{CentrujWzór|<MATH>-{{C}\over{h^2}}=B\;</MaTH>|9.28}}
| 3 = {{CentrujWzór|<MATH>u={{1}\over{r}}\;</MATH>|9.29}}
| 4 = {{CentrujWzór|<MATH>e^{\Phi}=1-{{r_g}\over{r}}=1-r_gu</MATH>|9.30}}
}}
Policzymy pochodną funkcji "r" względem zmiennej kątowej θ i wyznaczmy ją w funkcjach "u" wedle podstawienia {{LinkWzór|9.29}}:
{{CentrujWzór|<MATH>{{dr}\over{d\theta}}={{du^{-1}}\over{d\theta}}=-u^{-2}{{du}\over{d\theta}}</MATH>|9.31}}
Równanie różnikczkowe {{LinkWzór|9.26}} na podstawie podstawień {{LinkWzór|9.27}} (stała A w zalezności od stałej K i h), {{LinkWzór|9.28}} (stała B w zalezności od stałej C i h), {{LinkWzór|9.29}} (definicja zmiennej u względem zmiennej r, która jest odległoscią radialną od środka gwiazdy) i {{LinkWzór|9.30}} (definicji eksponesu funkcji Φ) i przedstawienia pochodnej promienia radialnego {{LinkWzór|9.29}} względem współrzędnej kątowej, która ta pochodna zapisywana jest wedle {{LinkWzór|9.31}}, zatem ostateczny wzór na {{LinkWzór|9.26}} przyjmuje postać:
{{CentrujWzór|<MATH>u^{-4}\left({{du}\over{d\theta}}\right)^2=u^{-4}A+(1-r_g u)(u^{-4}B+u^{-2})</MATH>|9.32}}
Równanie {{LinkWzór|9.32}} pomnóżmy przez wyrażenie będące czwartą potęgę u, czyli zdefiniowanej w punkcie {{LinkWzór|9.29}}, czyli u, wiedząc że jednocześnie ta zmienna nigdy nie przyjmuje wartości zero, zatem oczywiste jest:
{{CentrujWzór|<MATH>\left({{du}\over{d\theta}}\right)^2=A+(1-r_g u)(B-u^2)</MATH>|9.33}}
Zróżniczkujmy równanie {{LinkWzór|9.33}} względem zmiennej kątowej θ, wtedy oczywiste jest, że z wiadomości o pochodnej z analizy otrzymujemy równość, która jest zależnością od drugiej pochodnej zmiennej u względem parametru θ:
{{CentrujWzór|<MATH>2{{du}\over{d\theta}}{{d^2u}\over{d\theta^2}}=-r_g{{du}\over{d\theta}}(B-u^2)-(1-r_g u)2u{{du}\over{d\theta}}</MATH>|9.34}}
Podzielmy obustronnie tożsamość {{LinkWzór|9.34}} przez wyrażenie będące pochodną wyrażenia u względem parametru θ i zakładając, że to wyrażenie nie jest równe zero, bo w takim przypadku możemy wykonać dzielenie obustronne otrzymując tożsamość fizyczną:
{{CentrujWzór|<MATH>2{{d^2u}\over{d\theta^2}}=-r_g(B-u^2)-2(1-r_gu)u\;</MATH>|9.35}}
Po prawej stronie równania {{LinkWzór|9.35}} wymnażamy wszystkie wyrazy, tak by nie było nawiasu, tylko same składniki w tej sumie, po tej czynności dostajemy równoważny wzór:
{{CentrujWzór|<MATH>2{{d^2u}\over{d\theta^2}}=-r_gB+r_gu^2-2u+2r_gu^2\Rightarrow 2{{d^2u}\over{d\theta^2}}=-r_gB-2u+3r_gu^2</MATH>|9.35a}}
Dzielimy obustronnie tożsamość {{LinkWzór|9.35a}} przez liczbę dwa, zatem otrzymujemy równość, która jest równaniem toru ruchu cząstki, tzn. zależności promienia radialnego r względem jej współrzędnej kątowej θ:
{{CentrujWzór|<MATH>{{d^2u}\over{d\theta^2}}=-u-{{1}\over{2}}r_gB+{{3}\over{2}}r_gu^2</MATH>|9.36}}
Ostatnie równanie przedstawia obraz ruchu dowolnej cząstki czy to są fotony, czy inne cząstki o niezerowej masie spoczynkowej, czyli w tym przypadku cząstek o dowolnych masach spoczynkowych.
== Ruch cząstki po orbicie kołowej ==
Będziemy mieć tutaj do czynienia z równaniem różniczkowym {{LinkWzór|9.21}}, który przedstawia ruch cząstki po pewnej orbicie i jeśli mamy do czynienia z ruchem po okręgu, to oczywiście:
{{CentrujWzór|<math>{{d^2r}\over{d\lambda^2}}={{dr}\over{d\lambda}}=0</MATH>|9.37}}
Dochodzimy więc do wniosku, że równanie {{LinkWzór|9.21}}, gdy cząstka porusza się po okręgu {{LinkWzór|9.37}}, w której zmiana współrzędnej radialnej względem parametru λ jest równa zero:
{{CentrujWzór|<MATH>{{r_g}\over{2r^2}}e^{\Phi}\left({{d(ct)}\over{d\lambda}}\right)^2-re^{\Phi}\left({{d\theta}\over{d\lambda}}\right)^2=0\Rightarrow
{{r_g}\over{2r^3}}\left({{d(ct)}\over{d\lambda}}\right)^2=\left({{d\theta}\over{d\lambda}}\right)^2</MATH>|9.38}}
Równanie napisane w punckie {{LinkWzór|9.38}} mnożymy obustronnie przez wyrażenie napisane w punkcie {{Formuła|<MATH>\left({{d\lambda}\over{dt}}\right)^2\;</MATH>}}, wtedy otrzymamy wzór w zależności czasu i współrzędnej kątowej θ względem parametru, którym jest czas t.
{{CentrujWzór|<MATH>{{r_gc^2}\over{2r^3}}=\left({{d\theta}\over{dt}}\right)^2\Rightarrow
{{2GM c^2}\over{c^2 2 r^3}}=\left({{d\theta}\over{dt}}\right)^2\Rightarrow
{{GM}\over{r^3}}=\left({{d\theta}\over{dt}}\right)^2\Rightarrow {{d\theta}\over{dt}}=\sqrt{{{GM}\over{r^3}}}
</MATH>|9.39}}
Naszym ostatnim celem jest wyznaczenie czasu obiegu po okręgu cząstki w zależności od innych parametrów, w tym celu równanie {{LinkWzór|9.39}} rozłóżmy by na jednej stronie, by była różniczka czasu, a po drugiej różniczka kąta, przy kątowej w którym znajdowała się cząstka poruszająca się na okręgu, i potem obie jego strony przecałkujmy:
{{CentrujWzór|<MATH>\int^{2\pi}_0d\theta=\int_0^T\sqrt{{{GM}\over{r^3}}}dt\Rightarrow
2\pi=\sqrt{{{GM}\over{r^3}}}T\Rightarrow 2\pi=\sqrt{{{T^2GM}\over{r^3}}}\Rightarrow
{{4\pi^2}\over{GM}}={{T^2}\over{r^3}}</MATH>|9.40}}
Powyższe równanie jest bardzo podobne do trzeciego równania Keplera, czyli iloraz okresu obiegu cząstki do kwadratu przez sześcian współrzędnej położeniowej danej cząstki jest wielkością stałą.
== Radialny ruch swobodny ciała próbnego wokół kulistosymetrycznej masy według geometrii Schwarzchilda ==
Różniczka kwadratu interwału Schwarzchilda {{LinkWzór|8.67|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}} (metryka Schwarzchilda) dla przyjętych zmienności parametrów kątowych dφ=dθ=0, czyli one są równe zero:
{{CentrujWzór|<MATH>ds^2=\left(1-{{r_g}\over{r}}\right)c^2dt^2-{{dr^2}\over{1-{{r_g}\over{r}}}}</MATH>|9.41}}
Podzielmy obie strony równania na metrykę Schwarzschilda {{LinkWzór|9.41}}, które opisuje ruch cząstki bez zmiany współrzędnych radialnych przez kwadrat różniczki interwału czasoprzestrzennego ds{{Sup|2}}, wtedy otrzymujemy inne równoważne równanie (ale nie dla fotonu):
{{CentrujWzór|<MATH>1=\left(1-{{r_g}\over{r}}\right)\left({{d(ct)}\over{ds}}\right)^2-
\left({{dr}\over{ds}}\right)^2{{1}\over{1-{{r_g}\over{r}}}}</MATH>|9.42}}
Wykorzystując zależność {{LinkWzór|9.14}} i wykorzystując zależność wedle {{LinkWzór|8.59|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}} i {{LinkWzór|8.67|Statyczne_rozwiązanie_Schwarzschilda_w_kulistosymetrycznym_polu_grawitacyjnym}}, wtedy równanie {{LinkWzór|9.42}} przyjmuje inną równoważną postać zależną od pochodnej współrzędnej radialnej względem interwału czasoprzestrzennego, którego to postać jest:
{{CentrujWzór|<MATH>1=e^{\Phi}K^2e^{-2\Phi}-e^{-\Phi}\left({{dr}\over{ds}}\right)^2\Rightarrow 1=e^{-\Phi}K^2-e^{-\Phi}\left({{dr}\over{ds}}\right)^2\Rightarrow e^{\Phi}=K^2-\left({{dr}\over{ds}}\right)^2</math>|9.43}}
Jeśli zaczniemy od takiego r{{Sub|0}}, przy którym zachodzi: {{Formuła|<MATH>\dot{r}=0</MATH>}}, to wtedy równanie {{LinkWzór|9.43}} przyjmuje postać, z której możemy wyznaczyć kwadrat stałej K, który jest zależny od promienia początkowego r{{Sub|0}} i promienia r{{Sub|g}} występującej w równaniu na K{{Sup|2}}:
{{CentrujWzór|<MATH>e^{\Phi(r_0)}=K^2\Rightarrow K^2=(1-{{r_g}\over{r_0}})</MATH>|9.44}}
Czyli nasze końcowe wynikowe równanie {{LinkWzór|9.43}}, po uwzględnieniu K{{Sup|2}} wedle równości {{LinkWzór|9.44}} i uwzględnieniu funkcji eksponencjalnej e{{Sup|Φ}} w zależności od położenia radialnego r i promienia Schwarzschilda, przedstawiamy:
{{CentrujWzór|<MATH>\left(1-{{r_g}\over{r}}\right)=\left(1-{{r_g}\over{r_0}}\right)-\left({{dr}\over{ds}}\right)^2\Rightarrow
\left({{dr}\over{ds}}\right)^2=\left(1-{{r_g}\over{r_0}}\right)-\left(1-{{r_g}\over{r}}\right)\Rightarrow\left({{dr}\over{ds}}\right)^2=r_g\left({{1}\over{r}}-{{1}\over{r_0}}\right)
</MATH>|9.45}}
Biorąc definicję r{{Sub|g}} z geometrii metryki Schwarzchilda, którego definicja jest {{Formuła|<MATH>r_0={{GM}\over{c^2}}\;</MATH>}}, zatem dochodzimy więc do wniosku, że równanie {{LinkWzór|9.45}} jest zapisane:
{{CentrujWzór|<MATH>\left({{dr}\over{ds}}\right)^2={{2GM}\over{c^2}}\left({{1}\over{r}}-{{1}\over{r_0}}\right)</MATH>|9.46}}
Praktycznie można przyjąć, że r{{Sub|0}}→∞, czyli r{{Sub|0}}>>r{{Sub|g}}, a więc mamy tak jak wedle zasady zachowania energii w polu grawitacyjnym, tylko zamiast czasu mamy interwał czasoprzestrzenny dla cząstki masowej podzielonej przez prędkość światła:
{{CentrujWzór|<MATH>{{m_0(\dot{r})^2}\over{2}}-{{GMm_0}\over{r}}=0\Rightarrow\dot{r}^2={{2GM}\over{r}}\Rightarrow
\left({{dr}\over{ds}}\right)^2={{2GM}\over{c^2}}{{1}\over{r}}</MATH>|9.47}}
Rozwiązanie oparte na ogólnej teorii względności jest takie same jak w teorii Newtona dla toru hiperbolicznego poruszającego się z nieskończoności.
== Rozciąganie w pobliżu czarnej dziury ==
Możemy wziąć równanie {{LinkWzór|9.47}} i go pierwiastkując obustronnie, i dostajemy równanie na pochodną położenia radialnego współrzędnościowego względem interwału czasoprzestrzennego w zależności od położenia radialnego, w której dana cząstka się znajduje od środka czarnej dziury, w którym siły rozciągające, wtedy nasze rozważane równanie przyjmuje postać:
{{CentrujWzór|<MATH>{{dr}\over{ds}}=-\sqrt{{{2GM}\over{c^2}}}r^{-{{1}\over{2}}}</MATH>|9.48}}
W powyższym wyrażeniu pochodna radialna jest ujemna, bo przyjęliśmy, że nasze ciało porusza się do horyzontu zdarzeń (do środka czarnej dziury).
Wyznaczmy pochodną {{LinkWzór|9.48}}, korzystając przy okazji z tego samego równania, dochodzimy więc do wniosku, że:
{{CentrujWzór|<MATH>{{d^2r}\over{ds^2}}=
-\sqrt{{{2GM}\over{c^2}}}\left(-{{1}\over{2}}\right)r^{-{{3}\over{2}}}
{{dr}\over{ds}}=-\sqrt{{{2GM}\over{c^2}}}\left(-{{1}\over{2}}\right)r^{-{{3}\over{2}}}\sqrt{{{2GM}\over{c^2}}}r^{-{{1}\over{2}}}=
-{{GM}\over{c^2r^2}}</MATH>|9.49}}
Załóżmy, że mamy ciało o długości l, to różnica wielkości {{LinkWzór|9.48}} przyspieszeń radialnych na obu końcach rozważanego ciała, a zarazem sił wpływowych jest przedstawiona jako różnica wielkości {{LinkWzór|9.49}} dla r+l i r:
{{CentrujWzór|<MATH>\Delta a=a(r)-a(r+l)={{GM}\over{c^2(r+l)^2}}-{{GM}\over{c^2r^2}}=
{{GM}\over{c^2}}\left({{1}\over{(r+l)^2}}-{{1}\over{r^2}}\right)=
{{GM}\over{c^2}}{{r^2-(r+l)^2}\over{(r+l)^2r^2}}={{GM}\over{c^2}}{{r^2-r^2-2rl-l^2}\over{(r+l)^2r^2}}\simeq\;</MATH>{{Br}}<MATH>\simeq-{{GM}\over{c^2}}{{l^2+2rl}\over{r^4}}=
-{{GM}\over{c^2}}{{{{l^2}\over{r^2}}+2{{l}\over{r}}}\over{r^2}}\simeq -{{2lGM}\over{c^2r^3}}</MATH>|9.50}}
Załóżmy, że do czarnej dziury spada pewien patyk, którego jego przestrzenna orientacja jest wzdłuż promienia do środka masy M. Nasz patyk porusza się cały czas do środka kulistosymetrycznego źródła pola, co jest powiedziane wartością ujemną w {{LinkWzór|9.48}}, dla końca patyka najbardziej oddalanego od środka, ten punkt porusza się z mniejszą wartością przyspieszenia, niż jego koniec najbardziej zbliżony, a więc patyk w kulistosymetrycznym polu statycznie sferycznej próbuje być rozciągnięty, czym mniejsza odległość od środka masy kulistosymetrycznej tym bardziej jest większe rozciąganie wpływowe.
Przy wyznaczaniu końcowego wyniku w {{LinkWzór|9.50}} korzystaliśmy, że {{Formuła|<MATH>\left({{l}\over{r}}\right)^2<<{{l}\over{r}}<1\;</maTh>}}, czyli wyrazy w liczniku naszego wyrażenia pomijamy wedle podanych przybliżeń jakie powiedzieliśmy.
W geometrii Schwarzchilda mamy promień nazywamy jego imieniem {{Formuła|<MATH>r=r_g={{2GM}\over{c^2}}</MATH>}}, to dochodzimy do wniosku, że wyrażenie {{LinkWzór|9.50}} dla promienia Schwarzchilda, tam gdzie prawa fizyki przestają być spełnione, różnica przyspieszeń radialnych rozchodzi się według:
{{CentrujWzór|<MATH>\Delta a=-{{2lGM}\over{c^2{{8G^3M^3}\over{c^6}}}}=-{{c^4l}\over{4G^2M^2}}</MATH>|9.51}}
Dochodzimy, że czym większa jest masa źródła pola grawitacyjnego, to jest czym mniejsze rozciąganie pływowe na jej powierzchni przy promieniu granicznym (horyzoncie zdarzeń).
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
8hdu6kj74ibm3aoizh345yxkjbh7eww
Elektrodynamika klasyczna/Elektrostatyka
0
16542
558869
470158
2026-10-08T00:05:45Z
Persino
2851
558869
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tutaj będziemy się zajmować polami elektrycznymi, które nie zmieniają się w czasie.
== Prawo Coulomba ==
Prawo Coulomba mówi, jak oddziałują dwa punktowe ładunki q i Q, jeśli ich odległość jest R. Siłę, jaką jeden ładunek oddziałuje z drugim przedstawiamy wedle wzoru:
{{CentrujWzór|<MATH>\vec{F}={{1}\over{4\pi\epsilon_0}}{{qQ}\over{R^2}}\hat{\vec{R}}</MATH>|1.1}}
W powyższym wektorze występuje wektor {{Formuła|<MATH>\vec{R}\;</MATH>}}, który ma kierunek przechodzący przez dwa oddziaływające ładunki, wartość tego wektora równa się odległości między tymi obiektami, a zwrot jest w stronę ładunku, dla której liczymy tę siłę, z jaką oddziałuje ładunek Q z ciałem o ładunku q. Ta siła jest wyrażona przez wzór {{LinkWzór|1.1}}.
* gdzie stała występująca w powyższym wzorze jest nazywana stałą przenikalności elektrycznej, a wartość jej jest równa {{Formuła|<MATH>\epsilon_0=8,85\cdot 10^{-12}{{C^2}\over{Nm^2}}</MATH>}}.
Przypominając jeszcze raz o wielkości {{Formuła|<MATH>\vec{R}\;</MATH>}} jest to odległość ładunku q od ładunku Q, czyli powinno zachodzić {{Formuła|<math>R=\vec{r}-\vec{r}^'</MATH>}}, gdzie {{Formuła|<MATH>\vec{r}</MATH>}} jest to wektor wodzący cząstki o wartości ładunku, nazwijmy go q, a {{Formuła|<MATH>\vec{r}^'</MATH>}} jest to wektor wodzący źródło pola elektrostatycznego o ładunku Q, i jeśli oba te ładunki są jednakowego znaku, to one się odpychają i dlatego wzór na {{Formuła|<MATH>\vec{F}</MATH>}} nie zawiera w sobie minusa.
== Pole elektryczne punktowego ładunku Q ==
{{Rysunek|Electric Field Lines.svg|lpppldiuo|Linie pola pochodzące od ładunku dodatniego i ujemnego oraz obojętnego}}
Natężeniem pola elektrycznego nazywamy wielkość zdefiniowaną wedle wzoru:
{{CentrujWzór|<MATH>\vec{E}={{\vec{F}}\over{q}}\;</MaTh>|1.2}}
jest on równy sile działającej na ładunek próbny ''q'' podzielonej przez wartość tego ładunku.
Wykorzystując wzór {{LinkWzór|1.2}} i siłę {{Formuła|<MATH>\vec{F}\;</MATH>}} działającą na ładunek próbny q {{LinkWzór|1.1}} ze strony punktowego ładunku elektrycznego, wtedy dostajemy wzór na natężenie pola elektrostatycznego wytwarzane przez ładunek Q.
{{CentrujWzór|<MATH>\vec{E}={{1}\over{4\pi\epsilon_0}}{{Q}\over{R^2}}\hat{\vec{R}}\;</MATH>|1.3}}
Wzór {{LinkWzór|1.3}} przestawia natężenie pola elektrycznego wytwarzane przez ładunek Q w odległości R od tego ładunku. Kierunek tej wielkości pokrywa się z prostą przechodzącą przez ten ładunek Q i przez punkt, w którym liczymy to właśnie natężenie, a zwrot jej zależy od znaku ładunku Q i jest przeciwny do ładunku Q na tej prostej, gdy ładunek Q ma znak dodatni, gdy ma ujemny znak, to w stronę tegoż wspomnianego ładunku.
== Wypadkowe pole elektryczne ==
Załóżmy, że pole elektryczne pochodzi od ładunków q<sub>1</sub>,q<sub>2</sub>,...,q<sub>N</sub>, to wtedy całkowita siła działająca na ładunek q jest sumą sił działających od tych ładunków i wyrażona jest:
{{CentrujWzór|<MATH>\vec{F}=\sum^N_{i=1}\vec{F}_i=\sum^N_{i=1}{{qq_i}\over{4\pi\epsilon_0}}{{1}\over{R_i^2}}\hat{\vec{R}}_i={{q}\over{4\pi\epsilon_0}}\sum^N_{i=1}{{q_i}\over{R_i^2}}\hat{\vec{R_i}}</MATH>|1.4}}
Oznaczmy przez {{Formuła|<Math>\vec{E}\;</maTH>}} natężenie pola elektrycznego i zapiszmy je jako stosunek siły działającej na ładunek próbny q przez ten ładunek i zapisujemy go podobnie jak w punkcie {{LinkWzór|1.2}} dla jednego ładunku elektrycznego, wtedy całkowite natężenie pola elektrycznego wytwarzane przez układ ładunków, który na ładunek próbny q działa z siłą {{LinkWzór|1.4}} i według definicji natężenie pola {{linkWzór|1.2}} pochodzącej od tych ładunków jest napisane:
{{CentrujWzór|<MATH>\vec{E}={{1}\over{4\pi\epsilon_0}}\sum^N_{i=1}{{q_i}\over{R_i^2}}\hat{\vec{R}}_i=\sum_i \vec{E}_i</MATH>|1.5}}
Jak widzimy całkowite pole elektryczne jest równe sumie pól wytwarzanych przez punktowe ładunki q<sub>i</sub>.
== Wypadkowe pole elektryczne dla ciągłego rozkładu ładunków ==
Określmy, że nieskończenie mały ładunek znajdujący się w położeniu {{Formuła|<MATH>\vec{r}\;</MATH>}}, który piszemy według:
{{CentrujWzór|<MATH>dq(\vec{r})=\rho(\vec{r})dV</MATH>|1.6}}
Pole elektryczne w dowolnym punkcie A jest wyrażone podobnie jak według wzoru {{LinkWzór|1.5}}, ale tutaj zamiast q<sub>i</sub> są ładunki nieskończenie małe, całkowite natężenie pola elektrycznego jest sumą przyczynków natężeń pól elektrycznych pochodzących od infinitezymalnych ładunków {{LinkWzór|1.6}}, czyli {{Formuła|<MATH>dq(\vec{r})</MATH>}}, to natężenie pola elektrycznego dla rozciągłego rozkładu ładunków jest wyrażone:
{{CentrujWzór|<MATH>\vec{E}(\vec{r})=\int_V d\vec{E}(\vec{r}^')=\int_V{{1}\over{4\pi\epsilon_0}}{{dq(\vec{r}^')}\over{R^2}}\hat{\vec{R}}={{1}\over{4\pi\epsilon_0}}\int_V{{\rho(\vec{r}^')}\over{R^2}}
\hat{\vec{R}}dV^'</MATH>|1.7}}
Tutaj przyjęliśmy taką samą definicję wektora {{Formuła|<MATH>\vec{R}</MATH>}}, co poprzednio, wyznaczając infinitezymalne natężenie pola elektrycznego pochodzące od nieskończenie małego pojedynczego przyczynku, i na tej podstawie wyznaczyliśmy całkowite pole pochodzące od ciągłego rozkładu ładunków, to natężenie {{LinkWzór|1.7}} jest to stosunek siły działający na ładunek próbny q przez ten ładunek, i jego ładunek jest na tyle mały, by jego pole nie zakłócało ciągłego rozkładu ładunków. Rozkład natężenia pola elektrycznego zależy od gęstości ładunku elektrycznego tego rozkładu i jest napisany przez ρ(r).
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
dyzmlqywc6jg0i6ec1f9537b1xthhny
Elektrodynamika klasyczna/Różniczkowe i całkowe prawa dla elektrostatyki
0
16543
558870
513479
2026-10-08T00:08:50Z
Persino
2851
558870
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Jeśli zdefiniujemy, że ''polem wektorowym'' nazywamy pole, dla którego w każdym punkcie w przestrzeni odpowiada pewien wektor {{Formuła|<MATH>\vec{E}</MATH>}}, to można zdefiniować odpowiednie prawa różniczkowe i całkowe dla elektrostatyki.
== Strumień pola elektrostatycznego ==
Niekończenie mały strumień pola elektrostatycznego dΦ zdefiniujmy jako iloczyn natężenia pola elektrycznego {{Formuła|<MATH>\vec{E}\;</MATH>}} panujące na nieskończenie małej powierzchni przez nieskończenie mały wektor tej powierzchni, którego wartość jest taka jak nieskończenie małe pole powierzchni i o zwrocie prostopadłym do tej powierzchni.
{{CentrujWzór|<MATH>d\Phi=\vec{E}d\vec{S}</MATH>|2.1}}
Całkowity strumień pola elektrostatycznego dla powierzchni zamkniętej, w której małe wektory pola {{Formuła|<MATH>d\vec{S}\;</MATH>}} są zwrócone jak umówiono się na zewnątrz tej powierzchni, jest wyrażony:
{{CentrujWzór|<MATH>\Phi=\oint d\Phi</MATH>|2.2}}
== Całkowe prawo Gaussa ==
Policzmy całkę {{LinkWzór|2.2}} dla kuli o powierzchni sfery o promieniu r, w którym w środku znajduje się punktowy ładunek o wartości q, który wytwarza pole elektryczne wokół niego {{Formuła|<MATH>\vec{E}\;</MAth>}}:
{{CentrujWzór|<MATH>\Phi=\oint \vec{E}d\vec{S}=\oint{{1}\over{4\pi\epsilon_0}}{{q}\over{R^2}}dS={{1}\over{4\pi\epsilon_0}}\int_0^{4\pi} {{q}\over{R^2}}d\omega R^2=
{{1}\over{4\pi\epsilon_0}}q\int_0^{4\pi} d\omega={{1}\over{4\pi\epsilon_0}}q4\pi={{q}\over{\epsilon_0}}</MATH>|2.3}}
A zatem na podstawie obliczeń {{LinkWzór|2.3}} wynika, że całkowity strumień po powierzchni zamkniętej jest równy z dokładnością do odwrotności przenikalności elektrycznej ładunkowi zgromadzonemu w ściśle określonej objętości, którą ogranicza zamknięta powierzchnia. To prawo jest znane jako prawo Gaussa i zapisujemy je wedle:
{{CentrujWzór|<MATH>\oint \vec{E}d\vec{S}={{q}\over{\epsilon_0}}</MATH>|2.4}}
Ponieważ założyliśmy, że mieliśmy sferę o promieniu r, w której środku znajduje się ładunek q, to wtedy dla tej sfery prawo {{LinkWzór|2.4}} jest na pewno spełnione, ale z wiadomości z analizy matematycznej wiadomo, że gdy mamy dowolną powierzchnię okalająca ładunek q, to całkowity strumień też wynosi:{{Formuła|<MATH>{{q}\over{\epsilon_0}}</MATH>}}.
Załóżmy, że mamy N ładunków w nieokreślonej objętości V, to całkowite natężenia pola elektrycznego i całkowity ładunek jest napisany wedle:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}=\sum_i^N\vec{E}_i</MATH>|2.5}}
| 2 = {{CentrujWzór|<MATH>q=\sum_i^N q_i</MATH>|2.6}}
}}
Ponieważ dla ładunku i-tego prawo Gaussa {{LinkWzór|2.4}} jest również słuszne, którego zapis:
{{CentrujWzór|<MATH>\oint \vec{E}_id\vec{S}={{q_i}\over{\epsilon_0}}</MATH>|2.7}}
to dodając N takich równań {{LinkWzór|2.7}} i wykorzystywać będziemy wnioski sumacyjne na całkowite natężenie pola elektrycznego {{LinkWzór|2.5}} i na całkowity ładunek {{LinkWzór|2.6}} dla dowolnego rozkładu ładunków punktowych w danej objętości, którą ogranicza pewna zamknięta powierzchnia S, sumując te równania otrzymujemy całkowe prawo Gaussa dla dowolnego rozkładu ładunków czy to ciągłych lub dyskretnych znajdujących się w ściśle określonej objętości.
{{CentrujWzór|<MATH>\oint \vec{E}d\vec{S}={{q}\over{\epsilon_0}}</MATH>|2.8}}
Powyższe równanie jest spełnione dla dowolnego rozkładu ładunków o całkowitym ładunku q i dla dowolnej powierzchni zamkniętej, w której znajdują się te ładunki.
== Różniczkowe prawo Gaussa ==
Powyżej wyprowadziliśmy całkową postać prawa Gausa, a teraz wyprowadźmy jej różniczkową postać.
Wiadomo jednak, że zachodzi z twierdzenia Gaussa, że lewa strona wzoru {{LinkWzór|2.8}} można zamienić na całkowanie po pewnej powierzchni zamkniętej przez całkowanie po objętości ograniczonej tą właśnie powierzchnię:
{{CentrujWzór|<MATH>\oint \vec{E}d\vec{S}=\int\operatorname{div}\vec{E}dV</MATH>|2.9}}
a także z definicji gęstości ładunku elektrycznego i jego addywności dla całkowitego ładunku q znajdujących się wewnątrz tej powierzchni, znając rozkład gęstości objętościowej ładunku ρ, w pewnej objętości, to całkowity ładunek q znajdującej się w tej powierzchni:
{{CentrujWzór|<MATH>q=\int \rho dV</MATH>|2.10}}
to wykorzystując prawo całkowe Gaussa {{LinkWzór|2.8}} i podstawiając do obu jego stron, tzn. do lewej jego strony wzór {{LinkWzór|2.9}}, a do jego prawej jego strony wzór {{LinkWzór|2.10}}, wtedy otrzymamy wyrażenie napisane z obu stron za pomocą całek objętościowych:
{{CentrujWzór|<MATH>\int\operatorname{div}\vec{E}dV={{1}\over{\epsilon_0}}\int \rho dV\Rightarrow \int\left(\operatorname{div}\vec{E}-{{\rho}\over{\epsilon_0}}\right)dV=0</MATH>|2.10a}}
Ponieważ wzór {{LinkWzór|2.10}} zachodzi dla dowolnej objętości, to dochodzimy do wniosku, że jego część podcałkowa jest równe zero, zatem można ten nasz ostatni wzór wynikająca z naszej całki o dowolnej objętości V, zapisać w formie:
{{CentrujWzór|<MATH>\operatorname{div}\vec{E}={{\rho}\over{\epsilon_0}}</MATH>|2.11}}
Jest to '''różniczkowe prawo Gaussa''', które jest słuszne dla pewnego określonego punktu, w której znajduje się nieskończenie mały ładunek o gęstości ładunku ρ i w której natężenie pola elektrycznego jest {{Formuła|<MATH>\vec{E}\;</MATH>}}, mający pewną dywergencję w tymże punkcie.
== Dywergencja natężenia pola elektrycznego dla ciągłego rozkładu ładunków ==
Aby sprawdzić, czy spełnione jest prawo Gausa, należy wyznaczyć wyrażenie, korzystając przy tym ze wzoru na natężenie pola wytwarzanego przez ciągły rozkład ładunków {{LinkWzór|1.7|Elektrostatyka}}:
{{CentrujWzór|<MATH>\operatorname{div}\vec{E}=\nabla\cdot\vec{E}=
\nabla\cdot\left(\int{{\rho(\vec{r}^')}\over{4\pi\epsilon_0}}{{\hat{\vec{R}}}\over{R^2}}dV\right)=
\int{{\rho(\vec{r}^')}\over{4\pi\epsilon_0}}\nabla{{\hat{\vec{R}}}\over{R^2}}dV=
\int{{\rho(\vec{r}^')}\over{4\pi\epsilon_0}}4\pi\delta^3(\vec{R})dV={{\int\rho(\vec{r}^')\delta^3(\vec{r}-\vec{r}^')dV^'}\over{\epsilon_0}}={{\rho(\vec{r})}\over{\epsilon_0}}\;</MATH>|2.12}}
* gdzie:{{Formuła|<MATH>\vec{r}^'\;</MATH>}} jest to wektor wodzący ładunku infinitezymalnego należący do pewnego rozkładu ładunków.
* {{Formuła|<MATH>\vec{r}\;</MATH>}} jest to wektor wodzący pewnego ściśle określonego punktu, w którym liczymy natężenie pola elektrycznego.
Napiszmy wyrażenie, która jest całką wykorzystując twierdzenie Ostrogradskiego-Gaussa, by potem otrzymać znane twierdzenie z namiastką o dystrybucjach, które to twierdzenie zastosowaliśmy w punkcie {{LinkWzór|2.12}}, zatem:
{{CentrujWzór|<MATH>\int_V\nabla{{\hat{\vec{R}}}\over{R^2}}dV=\int {{\hat{\vec{R}}}\over{R^2}}d\vec{S}=\int_0^{4\pi}{{1}\over{R^2}}d\omega R^2=\int_0^{4\pi}d\omega=4\pi\Rightarrow \nabla{{\hat{\vec{R}}}\over{R^2}}=4\pi\delta^3(\vec{R})\;</MATH>|2.13}}
Jeśli obierzemy sobie kulę o promieniu R, wtedy zwiększając promień takiej kuli na podstawie {{LinkWzór|2.13}} nie zmieniamy wartości całki, jedyną osobliwością występującą w {{LinkWzór|2.13}} jest R=0, zatem dla tego R do całki jest wnoszony wkład, zatem aby powyższa całka była spełniona, to z własności delty Diraca, otrzymujemy, że dywergencja naszej wielkości radialnej jest równa według końcowego wyrażenia według {{LinkWzór|2.13}}.
A także w {{LinkWzór|2.12}} skorzystaliśmy z definicji wektora odległości pewnego infinitezymalnego ładunku do punktu, w którym liczymy pewne wielkości, czyli przez {{Formuła|<MATH>\vec{R}=\vec{r}-\vec{r}^'</MATH>}}, zatem z definicji delty Diraca możemy napisać końcowe obliczenia w {{linkWzór|2.12}}.
Co kończy dowód tego prawa dla ciągłego rozkładu ładunków.
== Całkowe prawo Stokesa ==
Obierzmy okrąg o promieniu r, policzmy cyrkulację pola elektrycznego, z wiadomości o prawie Coulomba mamy, że wektor natężenia pola elektrycznego jest prostopadły do tego okręgu, zatem dostajemy prawo:
{{CentrujWzór|<MATH>\oint \vec{E}d\vec{l}=0</MATH>|2.14}}
Czyli dla dowolnej linii zamknętej okalającej ładunek z wiadomości analizy matematycznej też jest równa zero cyrkulacja pola elektrycznego, zatem dla tego konturu również jest spełnione twierdzenie {{LinkWzór|2.14}}.
Wedle wzorów {{LinkWzór|2.5}} prawo Stokesa {{LinkWzór|2.14}} jest również spełnione dla dowolnego rozkładu ładunków punktowych q<sub>i</sub>, którego cząstkowe natężenia jest liczona wedle wzoru {{LinkWzór|1.3|Elektrostatyka}}.
== Różniczkowe prawo Stokesa ==
Znamy już całkową postać prawa Stokesa {{LinkWzór|2.14}}, a teraz wyprowadźmy jego podstać różniczkową.
Aby wyznaczyć '''różniczkowe prawo Stokesa''', to wtedy należy policzyć całkę i zamienić te całkowanie po pewnym konturze na całkowaniem po powierzchni, który ogranicza ten właśnie kontur:
{{CentrujWzór|<MATH>\oint \vec{E}d\vec{l}=\oint\operatorname{rot}\vec{E}d\vec{S}</MATH>|2.15}}
Zatem z prawa całkowego Stokesa {{LinkWzór|2.14}} i przekształcenia {{LinkWzór|2.15}} dostajemy całkowe równanie, które jest pewnym rodzajem, ale inaczej zapisanym całkowym prawem Stokesa:
{{CentrujWzór|<MATH>\oint\operatorname{rot}\vec{E}d\vec{S}=0</MATH>|2.16}}
Ale powyższe równanie jest spełnione dla dowolnej linii zamkniętej, to wtedy dla pola elektrostatycznego stałego, funkcja podcałkowa {{LinkWzór|2.16}} jest równa zero, wtedy mamy prawo różniczkowe:
{{CentrujWzór|<MATH>\operatorname{rot}\vec{E}=0</MATH>|2.17}}
Jest to '''różniczkowe prawo Stokesa''' dla elektrostatyki.
== Rotacja natężenia pola elektrycznego dla ciągłego rozkładu ładunków ==
Aby sprawdzić, czy spełnione jest różniczkowe prawo Stokesa dla ciągłego rozkładu ładunków, skorzystajmy ze wzoru {{LinkWzór|1.7|Elektrostatyka}}, mamy wyrażenie:
{{CentrujWzór|<MATH>\operatorname{rot}\vec{E}=\nabla\times\vec{E}=
\nabla\times\left(\int{{\rho(\vec{r}^')}\over{4\pi\epsilon_0}}{{\hat{\vec{R}}}\over{R^2}}dV^'\right)=
\int{{\rho(\vec{r}^')}\over{4\pi\epsilon_0}}\nabla\times{{\hat{\vec{R}}}\over{R^2}}dV^'</MATH>|2.18}}
Aby dokończyć różniczkowanie w punkcie {{linkWzór|2.18}} należy zauważyć, że {{Formuła|<MATH>{{1}\over{R}}\;</MATH>}}, zależy tylko od współrzędnych radialnych, zatem powyższe obliczenia możemy dokończyć, korzystając z definicji rotacji we współrzędnych kulistych, którego to definicja jest napisana w punkcie {{linkWzór|7.58a|Operatory_różniczkowe|Metody_matematyczne_fizyki|MMF}}, co te obliczenia dokończamy dla współrzędnych w tym operatorze, w której występuje różniczkowanie po odległości radialnej, a pozostałe współrzędne tego operatora pomijamy, bo one są równe zero, zatem:
{{CentrujWzór|<MATH>\nabla\times{{\hat{\vec{R}}}\over{R^2}}=\nabla\times{{\hat{\vec{r}}}\over{r^2}}=
{{1}\over{r}}\left[{{\partial}\over{\partial r}}\left(r\cdot 0\right)-{{\partial}\over{\partial\phi}}\left({{1}\over{r^2}}\right)\right]\vec{e}_{\theta}+
{{1}\over{r}}\left[{{1}\over{\sin\phi}}{{\partial}\over{\partial\theta}}\left({{1}\over{r^2}}\right)-{{\partial}\over{\partial r}}\left(r\cdot 0\right)\right]\vec{e}_{\phi}=0</MATH>|2.19}}
Ostatecznie otrzymujemy na podstawie {{LinkWzór|2.19}} i późniejszych rozważań, że prawo Stokesa {{LinkWzór|2.18}} dla ciągłego rozkładu ładunków według {{LinkWzór|1.7|Elektrostatyka}} jest również spełnione.
Co kończy dowód różniczkowego prawa Stokesa.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
c58zykit26vymtqe3fcxrb8oad08eap
Elektrodynamika klasyczna/Przewodniki
0
16555
558872
470161
2026-10-08T00:13:37Z
Persino
2851
558872
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
W izolatorach każdy elektron jest związany, ze ściśle określonym atomem, w przewodniki np. metalach jeden elektron lub więcej należących do określonego atomu może przemieszczać się w odrębnie określonego metalu.
== Charakterystyka wewnątrz przewodnika ==
Wewnątrz przewodnika pole elektryczne wynosi zero E=0, albowiem gdyby pole elektryczne było nierówne zero to mielibyśmy problem nie elektrostatyczny, i wtedy układ próbował by siebie doprowadzić do stanu stacjonarnego.
== Gęstość ładunku w wewnątrz przewodnika ==
Wewnątrz przewodnika gęstość ładunków jest równa zero, ponieważ mamy problem elektrostatyczny, to natężenie pola elektrycznego wynosi zero.
Można powiedzieć, że powierzchnia przewodnika stanowi jakoby układ ekwipotencjalny, czyli potencjał na nim jest równy zero. Stąd wynika, że pole elektryczne w pobliżu przewodnika jest prostopadłe do niego, gdy ciało jest naładowane pewnym ładunkiem, lub gdy występuje niejednorodny rozkład ładunków na jej powierzchni, gdy mamy w pobliżu niego inny ładunek oddziaływający z tą właśnie powierzchnią. Gdy by tak nie było, to nasz wektor można rozłożyć na równoległy i prostopadły wektor natężenia pola elektrycznego do rozważanego punktu danej powierzchni, ponieważ na powierzchni ma stały potencjał, wiec wektor równoległy do powierzchni znika i pozostaje prostopadły. Czyli stąd wynika, że pole wektorowe jest takie jak wcześniej w prowadziliśmy, to jako tezę.
== Ładunki indukowane ==
Załóżmy, że mamy bardzo duży ładunek q>0, rozmieszczony na małej objętości. Jeśli ten ładunek umieścimy blisko pewnego przewodnika, to ładunki dodatnie oddalą się od tego ładunku punktowego, a ładunki ujemne zbliżą się do niego.
Całkowity ładunek, który obejmuje powierzchnię Gausa jest określona przez wzór:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>Q_{wew}=q+q_{ind}\;</MATH>|4.1}}
| 2 = {{CentrujWzór|<MATH>Q_{wew}=0\;</MATH>|4.2}}
}}
to stąd wynika q{{Sub|ind}}=-q, czyli całkowity ładunek indukowany jest równy co do wartości ładunkowi, za pomocą którego indukujemy, ale ma przeciwny do niego znak.
== Ładunki powierzchniowe ==
Pole wewnątrz przewodnika jest równe zero, prowadząc powierzchnię równoległościanu w taki sposób względem przewodnika, którego dolna podstawa jest wewnątrz przewodnika, a górna na zewnątrz, by obie podstawy były blisko powierzchni, przy jego powierzchni na zewnątrz natężenie pola elektrycznego ma wartość niezerową. A wewnątrz tego przewodnika przy dolnej podstawie znajdującej się w tym przewodniku wartość pola elektrostatycznego wynosi zero, tak jak wcześniej o tym powiedzieliśmy. Boczne ścianki tego równoległościanu są tak obrane, by natężenie pola elektrycznego było równoległe do tych ścianek.
{{CentrujWzór|<MATH>\vec{E}\left(\vec{n}S\right)={{q}\over{\epsilon_0}}\Rightarrow\vec{E}\vec{n}={{\sigma}\over{\epsilon_0}}\Rightarrow
\vec{E}={{\sigma}\over{\epsilon_0}}\vec{n}</MATH>|4.3}}
== Ładunki na nieskończenie dużej płaszczyźnie ==
{{Rysunek|Charged plane with Gauss surface.svg|lk1|Nieskończenie duża jednorodnie naładowana płaszczyzna.}}
Gęstość powierzchniowa ładunków na nieskończonej płaszczyźnie jest taka sama, więc ona nie wyróżnia żadnych kierunków dla badanej płaszczyzny naładowanej, zatem jedynym kierunkiem wyróżnionym jest kierunek prostopadły. Dochodzimy więc do wniosku, z symetrii, że nie odróżniamy kierunku dolnego od górnego względem płaszczyzny, zatem natężenie pola elektrycznego dla takiej samej odległości od płaszczyzny po obu stronach co do kierunku i wartości ma taką samą wartość i kierunek, tylko te natężenia różnią się zwrotami. Obierzmy sobie walec o wysokościach takich samych pod i nad płaszczyzną, co pokażemy na rysunku obok. Natężenie pola elektrycznego na bokach tego walca wynosi zero, ze względu na symetrię jaką reprezentuje nieskończenie duża naładowana płaszczyzna, zatem strumień pola elektrycznego na ściankach bocznych jest równy zero, tylko mamy strumienie niezerowe na podstawach tej figury.
Zatem można powiedzieć z prawa całkowego Gaussa {{LinkWzór|2.8|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}}, w ten sposób by wynikało z niego:
{{CentrujWzór|<MATH>ES+ES={{q}\over{\epsilon_0}}\Rightarrow E={{\sigma}\over{2\epsilon_0}}</MATH>|4.4}}
Na podstawie powyższego wzoru dochodzimy do wniosku, że wartość natężenia pola elektrycznego jest wszędzie takie same nad lub pod płaszczyzną z osobna i tylko zależy od gęstości powierzchniowej ładunku.
== Kondesatory a natężenie pola elektrycznego wewnątrz i na zewnątrz kondensatora ==
{{Rysunek|Kapacitans.svg|lk2|Kondensator elektryczny}}
Ładunek dwóch jednakowych równoległych płaszczyzn mają taką samą wartość, ale przeciwne ładunki. Stąd wynika, że pole elektryczne na zewnątrz takiego kondensatora jest równe zero. Bo przeciwne natężenia pochodzące od dwóch jednakowych rozkładów ładunków co do wartości, ale różniących się znakiem od tych dwóch płaszczyzn zeruje się. Między okładkami takiego kondensatora panuje natężenie pola elektrycznego, które jest wyrażone wzorem:
{{CentrujWzór|<MATH>E=2 {{\sigma}\over{2\epsilon_0}}\Rightarrow E={{\sigma}\over{\epsilon_0}}</MATH>|4.5}}
Widzimy, że natężenie pola elektrycznego zależy od gęstości powierzchniowej ładunków znajdujących się na okładkach kondensatora o ładunku dodatnim, gęstość ładunku na okładce o ładunku ujemnym ma taką samą wartość bezwzględna, ale co do znaku, różni się właśnie nim.
== Pojemność elektryczna kondensatora ==
Jeśli przez Q oznaczymy wartość bezwzględna ładunku znajdującego się na okładkach kondensatora, na okładkach znajduje się ładunek o przeciwnych znakach, różnica potencjałów jest równa U, zatem z definicji pojemności elektrycznej i wykorzystując wzór na natężenie pola elektrycznego wewnątrz kondensatora {{LinkWzór|4.3}}, i z definicji gęstości powierzchniowej na okładkach kondensatora, dostajemy wzór na pojemność omawianego obiektu:
{{CentrujWzór|<MATH>C={{Q}\over{U}}={{Q}\over{Ed}}={{\sigma S}\over{d{{\sigma}\over{\epsilon_0}}}}={{S\epsilon_0}\over{d}}</MATH>|4.6}}
Pojemność kondensatora zależy od odległości pomiędzy okładkami kondensatora i ich powierzchni wspólnej.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
byjdl3dhdzfwh61eesv3gvhxys2y4u8
Elektrodynamika klasyczna/Elementarne właściwości materii w polu elektrostatycznym
0
16556
558874
513481
2026-10-08T00:21:24Z
Persino
2851
558874
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Materię można podzielić na metale i izolatory (dielektryki), metale można potraktować jako nieskończony zbiór elektronów. W dielektrykach prawie każda cząsteczka ma pewien moment dipolowy, które mogą ustawiać się z zgodnie lub przeciwnie do pola elektrycznego. Jeśli potraktować dielektryk jak zbiór dipoli elektrycznych, to tutaj będziemy się zajmować się dipolami elektrycznymi w polu elektrycznym, czyli zajmować będziemy się właściwościami elementarnymi tychże obiektów.
== Indukowany moment dipolowy w polu elektrostatycznym ==
Każdy atom jest elektrycznie obojętny, a więc pola elektryczne nie powinno na niego działać, ale w każdym bądź razie atom to jest elektrycznie dodatnie jądro z elektronami krążących wokół niego, a więc posiada rozkład ładunku elektrycznego po ustaleniu równowagi między polem elektrycznym a atomem podczas działania na niego pola elektrycznego.
Napiszmy wzór mówiący jaki jest moment dipolowy materii w polu elektrycznym, gdy właściwości tej materii nie zależą od kierunku jakie to pole posiada w danym punkcie tego dielektryka.
{{CentrujWzór|<MATH>\vec{p}=\alpha\vec{E}</MATH>|6.1}}
* skalarny współczynnik proporcjonalności α nazywamy '''polaryzowalnością atomową'''.
Wzór {{LinkWzór|6.1}} nie zależy od kierunku natężenia pola elektrycznego, ale w rzeczywistości tak nie jest, wtedy w takim przypadku, to moment dipolowy elektryczny wyrażony jest wzorem w zależności do prostopadłego kierunku wyróżnionego, lub nawet też do równoległego:
{{CentrujWzór|<MATH>\vec{p}=\alpha_{\bot}\vec{E}_{\bot}+\alpha_{||}\vec{E}_{||}</MATH>|6.2}}
* gdzie parametry {{Formuła|<MATH>\alpha_{\bot}\;</MATH>}} i {{Formuła|<MATH>\alpha_{||}\;</math>}} są to wielkości stałe, lub bardzie ogólnie można zapisać zależność {{LinkWzór|6.2}} w sposób:
{{CentrujWzór|<MATH>\vec{p}=\hat{\alpha}\vec{E}</MATH>|6.3}}
* gdzie: {{Formuła|<MATH>\hat{\alpha}</MATH>}} jest tensorem polaryzowalności atomowej.
Co rozpisując wzór {{LinkWzór|6.3}}, stosując tensor polaryzowalności atomowej, jako ogólnie niediagonalnej macierzy:
{{CentrujWzór|<MATH>\begin{bmatrix}p_x\\p_y\\p_z\end{bmatrix}=\begin{bmatrix}
\alpha_{xx}&\alpha_{xy}&\alpha_{xz}\\
\alpha_{yx}&\alpha_{yy}&\alpha_{yz}\\
\alpha_{zx}&\alpha_{zy}&\alpha_{zz}
\end{bmatrix}\begin{bmatrix}E_x\\E_y\\E_z\end{bmatrix}</Math>|6.4}}
Elementy macierzy {{Formuła|<MATH>\hat{\alpha}</math>}}, zależą od bazy trójwymiarowej, w której wyrażone jest polaryzowalność atomowa. Widzimy, że wedle wzoru {{LinkWzór|6.4}} wektor momentu dipolowego nie jest w ogólności równoległy do kierunku pola elektrycznego działająca na dipol elektryczny.
Można wyrażać powyższą macierz {{Formuła|<MATH>\hat{\alpha}</MaTH>}} w bazie wektorów własnych, wtedy ta macierz ma tylko diagonalne elementy, a pozadiagonalne elementy znikają.
== Całkowity moment sił oraz siła działające na dipol elektryczny w jednorodnym lub niejednorodnym polu elektrycznym ==
{{Rysunek|Dipol elektryczny.jpg|ide|Ilustracja dipola elektrycznego}}
Dipol elektryczny jest to obiekt niepunktowy, a więc może posiadać pewien moment siły w polu elektrycznym działających na niego.
Moment siły możemy rozłożyć względem środka dipola elektrycznego na dwa składniki. Pierwszy składnik jest opisany dla ładunku q, a drugi dla -q, zatem całkowity moment dipolowy jest opisany:
{{CentrujWzór|<MATH>\vec{N}=\left(\vec{r}_+\times\vec{F}_-\right)+\left(\vec{r}_+\times\vec{F}_+\right)=
\left[\left(-{{\vec{d}}\over{2}}\right)\times\left(-q\vec{E}\right)\right]+\left[\left({{\vec{d}}\over{2}}\right)\times\left(q\vec{E}\right)\right]=\;</MATH>{{Br}}<MATH>=q\vec{d}\times\vec{E}=\vec{p}\times\vec{E}</MATH>|6.5}}
Powyżej skorzystano z definicji wektora momentu dipolowego, który jest funkcją ładunku bezwzględnej wartości na obu jego końcach osobno i wektora {{Formuła|<MATH>\vec{d}\;</MATH>}} łączącego ładunek ujemny z dodatnim.
{{CentrujWzór|<MATH>\vec{p}=q\vec{d}</MATH>|6.6}}
Udowodniono, że moment siły działający na ciało na podstawie {{LinkWzór|6.5}} jest równy:
{{CentrujWzór|<MATH>\vec{N}=\vec{p}\times\vec{E}</MATH>|6.7}}
Gdy mamy pole jednorodne, którego otacza nasz dipol, to siła działający na środek masy dipola jest równa zero, a jeśli jest niejednorodne dla względnie małych dipoli, to ta siła jest wyrażona:
{{CentrujWzór|<math>\vec{F}=\vec{F}_++\vec{F}_-=q\vec{E}_{+}+(-q)\vec{E}_{-}=q\left(\vec{E}_+-\vec{E}_-\right)=q\delta \vec{E}=q\left(\vec{d}\cdot\operatorname{div}\right)\vec{E}=q\left(\vec{d}\cdot\nabla\right)\vec{E}=\left[\left(q\vec{d}\right)\cdot\nabla\right]\vec{E}=\left(\vec{p}\cdot\nabla\right)\vec{E}</MATH>|6.8}}
A zatem wypadkowa siła działająca na środek masy dipola elektrycznego jest równa:
{{CentrujWzór|<MATH>\vec{F}=\left(\vec{p}\cdot\nabla\right)\vec{E}</MATH>|6.9}}
Jest ona funkcją momentu dipolowego dipola elektrycznego oraz zależy od zmiany pola elektrycznego na obu końcach tego obiektu.
Prowadząc bardziej bardziej ogólne rozważania, to całkowity moment siły działający na dipol w polu niejednorodnym jest równy:
{{CentrujWzór|<MATH>\vec{N}=\left(\vec{p}\times\vec{E}\right)+\left(\vec{r}\times\vec{F}\right)</MATH>|6.10}}
W polu jednorodnym drugi człon znika, bo zmiana siły działający na dipol elektryczny jest równa zero, bo: {{Formuła|<MATH>\vec{F}=0</MATH>}} wedle tożsamości {{LinkWzór|6.9}}.
== Energia dowolnego dipola ==
Infinitezymalna praca wykonana przez dipol elektryczny, na które działa pole elektryczne o momencie siły {{Formuła|<MATH>\vec{N}\;</MATH>}}{{LinkWzór|6.7}} przy obrocie jego o kąt radialny {{Formuła|<Math>d\vec{\alpha}\;</MATH>}} jest napisana:
{{CentrujWzór|<MaTH>dW=\vec{N}\cdot d\vec{\alpha}</MATH>|6.11}}
Wiedząc, że definicję momentu siły {{Formuła|<MATH>\vec{N}</math>}} dla dipola elektrycznego jest wyrażona wedle {{LinkWzór|6.7}}, dla naszego dipola, oraz kierunek zmiany kąta jest równoległy do wektora momentu siły działającego na dipol, dla pola jednorodnego wartość infinitezymalnej pracy wykonanej przez siły pola elektrycznego {{LinkWzór|6.11}} przy obrocie jego od kąta α{{Sub|1}}=π/2 do α{{Sub|2}} przedstawia się:
{{CentrujWzór|<MATH>U=\int\vec{N}\cdot d\vec{\alpha}=\int\left(\vec{p}\times\vec{E}\right)d\vec{\alpha}=\int p E\sin\alpha d\alpha=-pE\cos\alpha|^{\alpha_2}_{\alpha_1={{\pi}\over{2}}}=-pE\sin\alpha_1=-\vec{p}\cdot\vec{E}</MATH>|6.12}}
A więc energia dipola elektrycznego, która znajdujący się polu elektrycznym jednorodnym, jest równa:
{{CentrujWzór|<MATH>U=-\vec{p}\cdot\vec{E}</MATH>|6.13}}
Energia dipola elektrycznego zależy od natężenia pola elektrycznego jednorodnego i od wektora momentu dipolowego dipola elektrycznego. Energia dipola elektrycznego jest równa zero, gdy kąt pomiędzy wektorem momentu dipolowego, a wektorem natężenia pola elektrycznego jest kątem prostym.
== Wpływ pola elektrycznego na polaryzację dielektryka ==
Dla układów, których polaryzacja jest taka sama w całej objętości V, to moment dipolowy ciała spolaryzowanego w zależności od pola elektrycznego jakie istnieje w tym ciele wyraża się wzorem {{LinkWzór|6.3}}. Jeśli nieskończenie małą polaryzowalnością atomową w ciele spolaryzowanym w danym punkcie oznaczymy jako {{Formuła|<MATH>d\hat{\alpha}\;</MATH>}}, to można powiedzieć, że infinitezymalny moment dipolowy małej cząstki materii ciała spolaryzowanego w danym punkcie w zależności od natężenia pola elektrycznego jakie w nim istnieją jest napisana:
{{CentrujWzór|<MATH>d\vec{p}=d\hat{\alpha}\vec{E}</MATH>|6.14}}
Polaryzacją elektryczną nazywamy stosunek nieskończenie małego momentu dipolowego znajdującego się infinitezymalnej objętości przez tą właśnie objętość, którą definiujemy:
{{CentrujWzór|<MATH>\vec{P}={{d\vec{p}}\over{dV}}\;</MATH>|6.15}}
Aby policzyć polaryzację elektryczną ośrodka należy do wzoru na definicję polaryzacji elektrycznej {{LinkWzór|6.15}} podstawić nieskończenie małą wielkość momentu dipolowego małej cząstki ciała spolaryzowanego {{LinkWzór|6.14}}, wtedy dostajemy:
{{CentrujWzór|<MATH>\vec{P}={{d\hat{\alpha}}\over{dV}}\vec{E}\Rightarrow \vec{P}=\hat{\beta}\vec{E}</MATH>|6.16}}
Można w ogólności powiedzieć, że wektor polaryzacji nie jest równoległy do wektora natężenia pola elektrycznego. Gdy zachodzi:{{Formuła|<MATH>\hat{\beta}=\hat{I}\beta</MATH>}}, wtedy mamy że: {{Formuła|<MATH>\vec{P}||\vec{E}</MATH>}}, czyli wtedy polaryzacja jest równoległa do natężenia pola elektrycznego panującego w danym punkcie.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
cutwjwn3zj8pgendb9tnafck8kiiomi
Elektrodynamika klasyczna/Ciało spolaryzowane a jego pole
0
16568
558875
513482
2026-10-08T00:27:41Z
Persino
2851
558875
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
'''Ciało spolaryzowane''' ma pewien moment dipolowy, a to dlatego, że poszczególne cząsteczki są tak poukładane, że całkowity moment dipolowy ma wartość niezerową.
== Potencjał elektryczny ciała spolaryzowanego ==
Potencjał w danym punkcie przestrzeni odległej o R od danej cząstki ciała spolaryzowanego wedle wzoru na potencjał elektryczny pochodzący od dipola elektrycznego {{LinkWzór|5.22|Rozwinięcia_kwadrupolowe}}, ale tutaj dla infitezymalnego wektora momentu dipolowego dipola elektrycznego, wyraża się przez:
{{CentrujWzór|<MATH>d\varphi(\vec{r})={{1}\over{4\pi\epsilon_0}}{{\vec{n}\cdot d\vec{p}}\over{R^2}}\;</MATH>|7.1}}
Powyższej użyto {{Formuła|<MATH>d\vec{p}\;</MATH>}} zamiast {{Formuła|<MATH>\vec{p}\;</MATH>}}, bo moment dipolowy bardzo małej cząstki ciała spolaryzowanego jest bardzo mały.
Ale {{Formuła|<MATH>\vec{n}</MATH>}} jest wektorem jednostkowym i równoległy do {{Formuła|<MATH>\vec{R}</MATH>}}, który ma początek, gdzie znajduje się infinitezymalny spolaryzowany ładunek o końcu w którym liczymy infinitezymalny potencjał elektryczny. Określmy infinitezymalny moment dipolowy przez polaryzację zdefiniowanej ze wzoru {{LinkWzór|6.15|Elementarne_właściwości_materii_w_polu_elektrostatycznym}} znajdującego się w infinitezymalnej objętości dV przez:
{{CentrujWzór|<MATH>d\vec{p}(\vec{r}^')=\vec{P}(\vec{r}^')dV^'\;</MATH>|7.2}}
* gdzie {{Formuła|<MATH>\vec{P}\;</MAth>}} nazywamy polaryzacją elektryczną.
a zatem nasz potencjał pochodzący od ciała spolaryzowanego jest całką infinitezymalnych potencjałów elektrycznych wyrażonych wzorem {{LinkWzór|7.1}} pochodzących od bardzo małego dipola w objętości {{Formuła|<MATH>dV^'\;</MATH>}}:
{{CentrujWzór|<MATH>\varphi(\vec{r})=\int d\varphi(\vec{r}^')={{1}\over{4\pi\epsilon_0}}\int_V{{\vec{n}\cdot \vec{P}(\vec{r}^')}\over{R^2}}dV^'\;</MATH>|7.3}}
Policzmy wyrażenie poniżej, które będzie nam bardzo potrzebne poniżej, czyli dywergencję odwrotności promienia R, który w rezultacie wyjdzie nam z obliczeń wektor jednostkowy {{Formuła|<MATH>\vec{n}\;</MaTH>}} podzielonej przez kwadrat promienia R:
{{CentrujWzór|<MATH>\nabla^'\left(R^{-1}\right)={{\partial}\over{\partial\vec{{r}^'}}}{{1}\over{R}}={{\vec{{n}}}\over{R^2}}\;</MATH>|7.4}}
Mając warunek {{LinkWzór|7.4}} i korzystając przy tym z definicji pochodnej iloczynu, można napisać, że potencjał ciała spolaryzowanego {{LinkWzór|7.3}} jest wyrażony:
{{CentrujWzór|<MATH>\varphi(\vec{r})={{1}\over{4\pi\epsilon_0}}\int_V{{\vec{n}\vec{P}}\over{R^2}}=
{{1}\over{4\pi\epsilon_0}}\int_V\vec{P}\nabla^'\left({{1}\over{R}}\right)dV^'={{1}\over{4\pi\epsilon_0}}\left[\int_V\nabla^'\left({{\vec{P}}\over{R}}\right)dV^'-\int_V{{1}\over{R}}\left(\nabla^'\cdot\vec{P}\right)dV^'\right]\;</MATH>|7.5}}
Z korzystajmy z twierdzenia o dywergencji dla pierwszego wyrazy w końcowej równości {{LinkWzór|7.5}} i zamieniając ją na całkę po powierzchni ciała spolaryzowanego, wtedy otrzymujemy:
{{CentrujWzór|<MATH>\varphi(r)={{1}\over{4\pi\epsilon_0}}\oint{{\vec{P}}\over{R}}d\vec{S}^'-{{1}\over{4\pi\epsilon_0}}
\int_V{{1}\over{R}}\left(\nabla^'\cdot\vec{P}\right)dV^'\;</MATH>|7.6}}
Również dobrze wzór na potencjał elektryczny możemy wyrazić poprzez ładunki powierzchniowe i objętościowe, którego całkowity potencjał skalarny w danym punkcie {{Formuła|<MATH>\vec{r}\;</MATH>}} jest wyrażony:
{{CentrujWzór|<MATH>\varphi(\vec{r})={{1}\over{4\pi\epsilon_0}}\oint_S {{\sigma_{zw}}\over{R}}dS+{{1}\over{4\pi\epsilon_0}}\int_V{{\rho_{zw}}\over{R}}dV^'\;</MATH>|7.7}}
Porównując wzory {{LinkWzór|7.6}}, który wyprowadziliśmy z definicji potencjału skalarnego pochodzącego od różnych infinitezymalnych dipoli w ciele spolaryzowanym i {{LinkWzór|7.7}} będących naturalną definicją potencjału skalarnego pochodzących od ładunków objętościowych i powierzchniowych, dochodzimy wtedy do wniosku, że gęstość powierzchniowa i objętościowa są wyrażone:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\sigma_{zw}=\vec{P}\vec{n}\;</MATH>|7.8}}
| 2 = {{CentrujWzór|<MATH>\rho_{zw}=-\nabla\vec{P}\;</MATH>|7.9}}
}}
Znając polaryzację ośrodka spolaryzowanego w danym punkcie i na powierzchni, możemy wyznaczyć jej gęstość powierzchniową i objętościową ładunków związanych.
== Pole indukcji elektrycznej ==
Całkowita gęstość ładunków w ciele spolaryzowanym jest sumą ładunków związanych i swobodnych, wyraża się:
{{CentrujWzór|<MATH>\rho=\rho_{zw}+\rho_{sw}\;</MATH>|7.10}}
* gdzie ρ{{Sub|zw}}, jest to gęstość ładunków tzw. związanych, które powstają w wyniku zewnętrznego pola elektrycznego w wyniku polaryzacji, a ρ{{Sub|sw}}, jest to gęstość ładunków, które nie powstają przez pole elektryczne, ale są w prowadzone przez eksperymentatora do układu badawczego.
Z prawa Gaussa wyprowadzonego w punkcie {{LinkWzór|2.11|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}}, gdy pole elektryczne jest wytwarzane przez ładunki, którego w danym punkcie występuje pole elektryczne {{Formuła|<MATH>\vec{E}\;</Math>}}, która inaczej mówiąc jest wytwarzane przez gęstość objętościową ładunków objętościowych swobodnych jest {{Formuła|<MATH>\rho_{sw}\;</MATH>}} i związanych {{Formuła|<MATH>\rho_{zw}\;</MATH>}} {{LinkWzór|7.9}}, a także korzystając na samym końcu ze wzoru {{LinkWzór|7.10}} na całkowitą gęstość ładunku poprzez gęstość ładunków swobodnych i związanych w danej objętości, otrzymujemy:
{{CentrujWzór|<MATH>\nabla \vec{E}={{1}\over{\epsilon_0}}\rho\Rightarrow
\epsilon_0\nabla \vec{E}=\rho_{zw}+\rho_{sw}\;</MATH>|7.11}}
Ponieważ mamy wzór na gęstość ładunków związanych {{LinkWzór|7.9}}, które wyprowadziliśmy z definicji potencjału elektrycznego pochodzącego od maleńkich dipoli elektrycznych w ciele spolaryzowanym, wtedy równanie {{LinkWzór|7.11}} przyjmuje takową postać:
{{CentrujWzór|<MATH>\epsilon_0\nabla\vec{E}=-\nabla\vec{P}+\rho_{sw}</MATH>|7.12}}
Po przeniesieniu wyrazu z polaryzacją elektryczną w {{Formuła|<MATH>\nabla\vec{P}\;</Math>}} w {{LinkWzór|7.12}} na jej lewą stronę, w rezultacie dostajemy zwartą postać wspomnianego powyższego równania:
{{CentrujWzór|<MATH>\epsilon_0\nabla {E}+\nabla\vec{P}=\rho_{zw}\Rightarrow \nabla\left(\epsilon_0\vec{E}+\vec{P}\right)=\rho_{sw}</MATH>|7.13}}
Oznaczmy jako indukcję elektryczną , która jest funkcją natężenia elektrycznego panującego w danej objętości ciała spolaryzowanego i polaryzowalności {{Formuła|<MATH>\vec{P}\;</MATH>}}, to ich suma wyraża się:
{{CentrujWzór|<MATH>\vec{D}=\epsilon_0\vec{E}+\vec{P}</MATH>|7.14}}
Zapisując prawo Gaussa {{LinkWzór|7.13}} z użyciem definicji wektora {{Formuła|<MATH>\vec{D}</MATH>}} {{LinkWzór|7.14}}, w postaci różniczkowej, wtedy dostajemy inny równoważny wzór do naszego prawa:
{{CentrujWzór|<MATH>\nabla\vec{D}=\rho_{sw}</MATH>|7.15}}
Wyrażenie {{LinkWzór|7.15}} możemy zapisać również w postaci całkowej, całkując obustronnie wspomniane wyrażenie, wtedy prawa strona jest to po prostu ładunek swobodny znajdujący się w pewnej objętości, a lewa strona zamieniając całkowanie po objętości całkowaniem po powierzchni zamknietej okalającą tą właśnie omawianą objętość, wtedy otrzymujemy wzór Gaussa dla ciał spolaryzowanych w postaci całkowej:
{{CentrujWzór|<MATH>\oint \vec{D}d\vec{S}=q_{sw}</MATH>|7.16}}
Jest to uogólnienie wzoru Gaussa {{LinkWzór|2.8|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}} dla ciał spolaryzowanych, a pierwszy nasz wzór był spełniony tylko dla próżni.
== Wektor indukcji elektrycznej a jego rotacja ==
Aby udowodnić czemu jest równa rotacja wektora indukcji elektrycznej, w tym celu wykorzystamy definicję indukcji elektrycznej {{LinkWzór|7.14}} i policzymy jego rotację wykorzystując przy tym, że rotacja pola elektrostatycznego {{Formuła|<MATH>\vec{E}\;</MATH>}} jest równa zero wedle wzoru {{LinkWzór|2.17|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}}:
{{CentrujWzór|<MATH>\nabla\times \vec{D}=\nabla\times\left(\epsilon_0\vec{E}+\vec{P}\right)=\epsilon_0\nabla\times \vec{E}+\nabla\times\vec{P}=\nabla\times\vec{P}</MATH>|7.17}}
A zatem udowodniliśmy na podstawie obliczeń {{LinkWzór|7.17}}, otrzymujemy ostateczny wzór łączący indukcję elektryczną {{LinkWzór|7.14}} z polaryzowalnością elektryczną danego punktu ośrodka spolaryzowanego:
{{CentrujWzór|<MATH>\nabla\times\vec{D}=\nabla\times\vec{P}</MATH>|7.18}}
co {{LinkWzór|7.18}} zapisując za pomocą symolu rot jest równoważne wzorowi w postaci:
{{CentrujWzór|<MATH>\operatorname{rot}\vec{D}=\operatorname{rot}\vec{P}</MATH>|7.19}}
Nie jest wcale oczywiste w {{LinkWzór|7.19}}, że zachodzi:{{Formuła|<MATH>\operatorname{rot}\vec{P}=0</MATH>}}, co w ogólności nie jest spełnione, mimo że elektrostatyce rotacja natężenia pola elektrycznego jest równa zero.
== Energia związana z dielektrykami ==
Załóżmy, że mamy pewien dielektryk, i do którego wprowadzamy do niego ładunki swobodne, wtedy energia dielektryka zmienia się wedle:
{{CentrujWzór|<MATH>\delta W=\int\delta q_{sw} \varphi=\int \delta \rho_{sw} \varphi dV</MATh>|7.20}}
Dla ciał spolaryzowanych jest spełnione prawo Gaussa wedle {{LinkWzór|7.15}}. Jeśli to prawo podstawimy do wzoru {{LinkWzór|7.20}} określająca zmianę energii całkowitej ciała spolaryzowanego, to otrzymamy równoważny wzór w postaci:
{{CentrujWzór|<MATH>\delta W=\int\nabla\left(\delta\vec{D}\right) \varphi dV</MATH>|7.21}}
Z twierdzenia iloczynu pochodnej mamy wyrażenie, które będzie nam potrzebne w {{LinkWzór|7.21}}, które piszemy wedle:
{{CentrujWzór|<MATH>\nabla\left[(\delta D)\varphi\right]=\nabla(\delta D)\varphi+\delta D\nabla \varphi</MATH>|7.22}}
Wykorzystując związek {{LinkWzór|7.22}}, dla równania zmiany energii ciała spolaryzowanego {{LinkWzór|7.21}} otrzymamy wynikowe równanie do wspomnianego:
{{CentrujWzór|<MATH>\delta W=\int \nabla\left[(\delta D)\varphi\right]dV-\int \delta D\delta \varphi dV=
\int\nabla\left[(\delta D)\varphi\right]dV+\int(\delta \vec{D})\vec{E}dV=\int (\delta D)\varphi d\vec{S}+\int(\delta \vec{D})\vec{E}dV
</MATH>|7.23}}
Jeśli weżniemy na tyle dużą powierzchnię zamkniętą, tak by w sobie zawierał wszystkie ładunki, i założymy, że na tej powierzchni potencjał elektryczny jest w przybliżeniu równy zero, to wtedy pierwszy wyraz znika w wyrażeniu {{LinkWzór|7.23}}, wtedy:
{{CentrujWzór|<MATH>\delta W=\int(\delta \vec{D})\vec{E}dV</MATH>|7.24}}
Biorąc warunek {{LinkWzór|6.16|Elementarne_właściwości_materii_w_polu_elektrostatycznym}} i zakładając, że tensor {{Formuła|<Math>\hat{\beta}\;</MaTH>}} nie zmienia się w całej objętości ciała spolaryzowanego, a także wyrażenie {{LinkWzór|7.14}}, który jest definicją indukcji elektrycznej poprzez natężenie pola elektrycznego i polaryzację, wtedy {{LinkWzór|7.24}} zapisujemy równoważnie:
{{CentrujWzór|<MATH>\delta W=\int(\delta(\epsilon_0\vec{E}+\vec{P}))^T\vec{E}dV=
\int\delta[(\epsilon_0 I+\hat{\beta})\vec{E}^T]\vec{E}dV=
\int(\epsilon_0 I+\hat{\beta}^T)\delta \vec{E}\vec{E}=\int(\epsilon_0 I+\hat{\beta}^T){{1}\over{2}}\delta E^2
=\;</MATH>{{Br}}<MATH>=\int\delta\left[{{1}\over{2}}\left(\epsilon_0 E+\hat{\beta}^T\vec{E}\right)\vec{E}\right]=
\int\delta\left[{{1}\over{2}}\left(\epsilon_0 \vec{E}+\vec{P}\right)\vec{E}\right]=
\int\delta\left[{{1}\over{2}}\vec{D}\vec{E}\right]</MATH>|7.25}}
Ostateczny wzór na infinitezymalną energię jakieś małej objętości w danym punkcie ciała spolaryzowanego wynikający ze wzoru {{LinkWzór|7.25}} jest w postaci:
{{CentrujWzór|<MATH>U={{1}\over{2}}\int\vec{D}\vec{E}dV</MATH>|7.26}}
Zatem na podstawie {{LinkWzór|7.26}} gęstość energii w danym punkcie ciała spolaryzowanego jest iloczynem indukcji elektrycznej {{Formuła|<MATH>\vec{D}\;</MATH>}} {{LinkWzór|7.14}} i natężenia pola elektrycznego {{Formuła|<MATH>\vec{E}\;</math>}} podzielonej przez liczbę dwa.
== Warunki brzegowe na granicy między dielektrykami ==
{{Rysunek|Zastosowanie prawa Gaussa dla pól elektrycznych statycznych.jpeg|wpgizpg|Wycinek powierzchni granicznej i zastosowanie prawa Gaussa.}}
Prostopadłościan tak dobieramy dla ułatwienia, na małym wycinku powierzchni między dwoma ośrodkami elektrycznymi, w którym należy w ogólności pamiętać, że w granicy pomiędzy dwoma ośrodkami może być płaszczyzną niepłaską, dla tak zdefiniowanego prostopadłościanu podstawy są tak zdefiniowane by były równoległe do wycinka powierzchni dielektryka, a jego boczne ścianki były prostopadłe do omawianej powierzchni naszego spolaryzowanego ciała na tym wycinku. Wewnątrz tego prostopadłościanu znajduje się ładunek q. Rozważmy prawo całkowe Gaussa {{LinkWzór|7.16}} licząc strumień bocznych ścianek, według rysunku obok.
Zatem to prawo dla naszego prostopadłościanu zapisujemy wedle wzoru:
{{CentrujWzór|<MATH>q=S_{nad}D^{\bot}_{nad}-S_{pod}D^{\bot}_{pod}+S_{prawy}D^{\bot}_{prawy}-S_{lewy}D^{\bot}_{lewy}+S_{przez}D^{\bot}_{przed}-S_{za}D^{\bot}_{za}</MATH>|7.27}}
Przy liczeniu strumienia względem jakieś ścianki, to strumień indukcji elektrycznej oznaczmy jako iloczyn średniej wartości indukcji magnetycznej panujący na danej ściance przez pole tej ścianki, jak można trywialnie udowodnić powyższe wnioski.
Przy czym zakładamy, że wektory powierzchni są prostopadłe do tych ściśle określonych ścianek i ich wartości równe są powierzchni tych ścianek, na które wskazują, i dlatego rozważamy części prostopadłe wektorów indukcji do tych ścianek, bo w prawie Gaussa dla dielektryków pod całką mamy iloczyn skalarny, który wycina ich części prostopadłe wektorów indukcji do wektorów powierzchni, pozostawiając ich części równoległe do wektorów powierzchni.
Zakładamy, że powierzchnie wszystkich ścianek dążą do zero, tak by iloraz powierzchni jakikolwiek ścianki bocznej przez pola jakikolwiek ścianki podstawy była w przybliżeniu równa zero, a matematycznie dążyła do zera, ale pamiętamy pola podstaw są bardzo małe i wynoszą S,
zatem średnia wartość natężenia pola elektrycznego jest równa natężeniu pola magnetycznego w danym punkcie dla podstaw blisko przy powierzchni dwóch ośrodków, przez którą przechodzi bardzo mały prostopadłościan, zatem dla prawa Gaussa dla dielektryków {{LinkWzór|7.27}} po podzieleniu wspomnianego równania przez {{Formuła|<MATH>S=S_{nad}=S_{pod}\;</MATH>}} i potem przechodzimy do granicy stosunku pola ścianek bocznych do pola ścianek podstawy, które dążą do zera, wtedy zapisujemy to w postaci:
{{CentrujWzór|<MATH>{{q}\over{S}}=D^{\bot}_{nad}-D^{\bot}_{pod}+{{S_{prawy}}\over{S}}D^{\bot}_{prawy}-{{S_{lewy}}\over{S}}D^{\bot}_{lewy}+{{S_{przez}}\over{S}}D^{\bot}_{przed}-{{S_{za}}\over{S}}D^{\bot}_{za}\rightarrow {{q}\over{S}}=D^{\bot}_{nad}-D^{\bot}_{pod}</MATH>|7.28}}
Gęstość ładunku powierzchniowego nazywamy iloraz ładunku znajdujący się w omawianym prostopadłościanie podzielona przez powierzchnię okładek równoległych do powierzchni dielektryka i przedstawia się:
{{CentrujWzór|<MATH>\sigma={{q}\over{S}}</MATH>|7.29}}
Ostatecznie nasze równanie {{LinkWzór|7.28}} po wykorzystaniu {{LinkWzór|7.29}}, wtedy wyrażać ją możemy przez wartość indukcji pola magnetycznego wektora prostopadłego do powierzchni na danym wycinku w danym punkcie nad i pod granicą pomiędzy ośrodkami:
{{CentrujWzór|<MATH>\sigma=D^{\bot}_{nad}-D^{\bot}_{pod}</MATH>|7.30}}
Następnym krokiem jest zastosowanie prawa Stokesa i wniosków, korzystający z tego prawa. Obierzmy sobie prostokąt, którego powierzchnia jest prostopadła do powierzchni dielektryka, którego odcinki górne są równoległe do powierzchni dielektryka, a boczne są prostopadłe, i wiedząc że całka po odcinku dla iloczynu natężenia pola elektrycznego przez nieskończenie małą długością, która jest częścią danego boku, jest równa średniej natężenia pola elektrycznego panujące na danym boku przez długość tego boku.
{{Rysunek|Prawo Stokesa w elektrostatyce.jpeg|wpgizps|Wycinek powierzchni granicznej i zastosowanie prawa Stokesa}}
Jeśli długości boku górnego i dolnego należącego do prostokąta są bardzo małe przy powierzchni granicy dwóch ośrodków, którą przechodzi bardzo mały prostokąt a właściwie infinitezymalny przy założeniu, że długość boku górnego lub dolnego jest o wiele większa niż długość dla boków bocznych (lewego i prawego), czyli: h/l<<1. Zatem z tego prawa dostajemy, że:
{{CentrujWzór|<MATH>{E}^{||}_{nad}l+{E}^{||}_{lewy}h-{E}^{||}_{pod}l-{E}^{||}_{prawy}h=0</MATH>|7.31}}
* gdzie:{{Formuła|<MATH>l\;</MATH>}} jest to długość odcinków górnych tego prostokąta
* {{Formuła|<MaTh>h\;</Math>}} długość odcinków bocznych prostokąta.
* {{Formuła|<MATH>{E}^{||}_{nad}\;</MATH>}} lub {{Formuła|<MATH>{E}^{||}_{pod}\;</MATH>}} są to części wektorów równoległych natężenia pola elektrycznego równoległe do ścianki górnej lub dolnej a właściwie ich wartości.
* {{Formuła|<MaTH>{E}^{||}_{lewy}\;</MATH>}} lub {{Formuła|<MaTH>{E}^{||}_{prawy}\;</MATH>}} są to części równoległe, a właściwie ich wartości natężenia pola elektrycznego.
Zatem przy powyższych założeniach, co do prostokąta, to równanie {{LinkWzór|7.31}} podzielmy przez h obustronnie i przechodzimy go granicy ilorazu długości boku lewego lub prawego przez długość boku dolnego lub górnego dążącą do zera, wtedy ono przechodzi w:
{{CentrujWzór|<MATH>{E}^{||}_{nad}+{E}^{||}_{lewy}{{h}\over{l}}-{E}^{||}_{pod}-{E}^{||}_{prawy}{{h}\over{l}}=0\xrightarrow[{{h}\over{l}}\rightarrow 0]{} {E}^{||}_{nad}-{E}^{||}_{pod}=0</MATH>|7.32}}
Końcowa równość w {{LinkWzór|7.32}} możemy zapisać równoważnie w postaci:
{{CentrujWzór|<MATH>{E}^{||}_{nad}={E}^{||}_{pod}</MATH>|7.33}}
Na podstawie wzoru {{LinkWzór|7.33}} dostajemy, że składowa równoległa do powierzchni dielektryka jest wartością niezmienną.
Znając funkcję {{Formuła|<MATH>\vec{P}</MATH>}}, a {{Formuła|<MATH>\vec{E}_{zew}</MATH>}}, można udowodnić jaka jest zmiana wektora:{{Formuła|<MATH>\vec{E}</MATH>}} na granicy między dwoma dielektrykami.
== Dielektryki liniowe ==
Będziemy się tutaj zajmować dielektrykami liniowymi dla których zachodzi jego tensorowa wersja {{LinkWzór|6.16|Elementarne_właściwości_materii_w_polu_elektrostatycznym}}, ale w tym przypadku liniowym:
{{CentrujWzór|<MATH>\vec{P}=\epsilon_0\chi\vec{E}</MATH>|7.34}}
* gdzie χ jest to podatność elektryczna ośrodka liniowego.
Wektor polaryzacji elektrycznej jest wektorem równoległym do wektora natężenia pola elektrycznego w danym punkcie ciała spolaryzowanego.
Dla próżni względna podatność elektryczna ośrodka liniowego jest równa zero.
=== Dielektryki liniowe, podatność elektryczna i przenikalność elektryczna ===
Ale mamy do czynienia z dielektrykami linowymi, dla którego zachodzi {{LinkWzór|7.34}}, zatem wektor indukcji elektrycznej zdefiniowanej wedle wzoru {{LinkWzór|7.14}} z definicji liniowości wektora polaryzacji elektrycznej do wektora natężenia pola elektrycznego jest wyrażony:
{{CentrujWzór|<MATH>\vec{D}=\epsilon_0\vec{E}+\epsilon_0\chi\vec{E}=\epsilon_0(1+\chi)\vec{E}\;</MATH>|7.35}}
Wektor indukcji elektrycznej według {{LinkWzór|7.35}} jest równoległy do wektora natężenia pola elektrycznego dla dielektryków liniowych.
Przyjmijmy, że współczynnik proporcjonalności występujący w {{LinkWzór|7.35}} jest przenikalnością elektryczną i napiszmy go jako:
{{CentrujWzór|<MATH>\epsilon=\epsilon_0\epsilon_r\;</MATH>|7.36}}
* gdzie ε{{Sub|r}} jest to względna przenikalność elektryczna i zachodzi:
{{CentrujWzór|<MATH>\epsilon_r=1+\chi\;</MATH>|7.37}}
* gdzie ε{{Sub|r}} jest to przenikalność elektryczna ośrodka, ona jest sumą jedynki i podatności elektrycznej badanego ośrodka, dla próżni, która jest ośrodkiem liniowym, dla której względna przenikalność ośrodka jest równa jeden, dla której podatność ośrodka jest równa zero.
Wykorzystując definicję indukcji elektrycznej {{LinkWzór|7.35}} i na względną przenikalność elektryczną {{LinkWzór|7.36}}, czyli dla ośrodka liniowego, którego tą naszą definicję dla tego ośrodka piszemy:
{{CentrujWzór|<MATH>\vec{D}=\epsilon_0\epsilon_r\vec{E}</MATH>|7.38}}
czyli pole indukcji elektrycznej w tym przypadku jest równoległe do pola natężenia pola elektrycznego.
Można udowodnić, z praw elektrostatyki, że dywergencja polaryzacji dla ośrodków liniowych jest ona równa zero, czyli:
{{CentrujWzór|<MATH>\nabla\times \vec{P}=0</MATH>|7.39}}
'''a oto dowód, który korzysta ze wzoru wyprowadzonego wcześniej {{LinkWzór|7.19}}:'''
{{CentrujWzór|<MATH>\nabla\times\vec{D}=\nabla\times\vec{P}=\nabla\times \epsilon_0\chi\vec{E}=\chi\epsilon_0\nabla\times\vec{E}=0</MATH>|7.40}}
Gdy cała przestrzeń jest wypełniona dielektrykiem linowym spełniającego zależność {{LinkWzór|7.38}} i gdy rotacja indukcji elektrycznej {{LinkWzór|7.40}} jest równa zero i gdy zachodzi {{LinkWzór|7.16}}, to siła działająca w takim w dielektryku, w którym znajduje się ładunek Q, który działa na ładunek q, jest wyrażona:
{{CentrujWzór|<MATH>\vec{F}={{1}\over{4\pi\epsilon}}{{qQ}\over{R}}</MATH>|7.41}}
=== Warunki brzegowe dla dielektryków liniowych ===
Naszym celem jest obliczenie gęstości ładunków związanych wykorzystując związek polaryzacji z gęstością ładunków związanych według {{LinkWzór|7.9}}, a także wykorzystując związek polaryzacji z natężeniem pola elektrycznego, by potem skorzystać ze wzoru {{LinkWzór|7.38}} dla dielektryków liniowych, a także z prawa Gaussa dla dielektryków {{LinkWzór|7.15}}:
{{CentrujWzór|<MATH>\rho_{zw}=-\nabla\vec{P}=
-\nabla\chi\vec{E}=-\chi\nabla{{\vec{D}}\over{\epsilon}}=
-{{\chi}\over{\epsilon}}\vec{D}=-{{\chi}\over{\epsilon}}\rho_{sw}=-{{\chi}\over{1+\chi}}\rho_{sw}</MATH>|7.42}}
Wedle wzoru {{LinkWzór|7.42}} mamy udowodnioną zależność pomiędzy gęstością objętościową ładunków związanych, a swobodnych, ten związek zapisujemy jako:
{{CentrujWzór|<MATH>\rho_{zw}=-{{\chi}\over{1+\chi}}\rho_{sw}</MATH>|7.43}}
Na podstawie {{LinkWzór|7.43}}, jeśli mamy gęstość objętościowa ładunków swobodnych, która jest równa zero, to gęstość objętościowa ładunków związanych też jest równa zero.
Ze wzoru {{LinkWzór|7.38}} przy definicji przenikalności elektrycznej {{LinkWzór|7.36}} mamy wzór łączący wartość indukcji elektrycznej przez wartość natężenia pola elektrycznego:
{{CentrujWzór|<MATH>D=\epsilon E\;</MATH>|7.44}}
Możemy wykorzystać {{LinkWzór|7.44}} podstawiając go do wzoru {{LinkWzór|7.30}} jako warunku brzegowego uwzględniając odpowiednio przenikalności elektryczne dla ośrodków stykających:
{{CentrujWzór|<MATH>\epsilon_{nad}E^{\bot}_{nad}-\epsilon_{pod}E^{\bot}_{pod}=\sigma_{sw}</MATH>|7.45}}
Z definicji natężenia pola elektrycznego w zależności od wektora położenia, korzystając przy tym ze wzoru {{LinkWzór|3.5|Pole_skalarne}}, można napisać nasz wzór dla składowej prostopadłej natężenia pola elektrycznego do powierzchni dielektryka:
{{CentrujWzór|<MATH>E^{\bot}=-{{\partial V}\over{\partial \vec{n}}}</MATH>|7.46}}
* gdzie:{{Formuła|<Math>\vec{n}\;</MaTH>}} jest to wektor jednostkowy prostopadły do powierzchni dielektryka.
Jeśli wykorzystamy wzór na natężenie prostopadłe pola elektrycznego {{LinkWzór|7.46}} i podstawiając go do wzoru {{LinkWzór|7.45}}, wtedy mamy wzór na warunek brzegowy pomiędzy dwoma dielektrykami:
{{CentrujWzór|<MATH>\epsilon_{nad}{{\partial V_{nad}}\over{\partial \vec{n}}}-\epsilon_{pod}{{\partial V_{pod}}\over{\partial \vec{n}}}=-\sigma_{sw}</MATH>|7.47}}
Należy pamiętać, że pole skalarne potencjału elektrycznego na granicy pomiędzy dielektrykami zmienia się w sposób ciągły.
== Ładunek, a płaszczyzna z indukowanymi ładunkami ==
{{Rysunek|Płaszczyzna z indukowanymi ładunkami.jpg|szlqipzil|Schemat z ładunkiem q i płaszczyzna z indukowanymi ładunkami}}
Weźmy sobie wektor jednostkowy prostopadły do rozważanej powierzchni według rysunku obok, ma ona kierunek i zwrot zgodny do kierunku osi zetowej, i licząc dalej gęstość powierzchniową ładunków, wykorzystując wzór {{LinkWzór|7.8}} i na samym końcu dla dielektryków linowych wykorzystując wzór {{LinkWzór|7.34}}, zatem tą wspomnianą gęstość możemy policzyć w zależności od współrzędnej zetowej pola elektrycznego:
{{CentrujWzór|<MATH>\sigma_{zw}=\vec{P}\hat{n}=\epsilon_0\chi\vec{E}\hat{n}=\epsilon_0\chi E_z</MATH>|7.48}}
Naszym krokiem jest obliczenie składowej zetowej natężenia pola elektrycznego, jednak wiadomo, że zwrot tej składowej jest przeciwny do osi z. Z prawa Coulumba wartość natężenia pola elektrycznego {{LinkWzór|1.3|Elektrostatyka}} wyraża się:
{{CentrujWzór|<MATH>E=-{{q}\over{4\pi\epsilon_0\left(r^2+d^2\right)}}</MATH>|7.49}}
Składowa zetowa pola elektrycznego, wedle wzoru {{LinkWzór|7.5}} i licząc {{Formuła|<MATH>\cos\theta\;</MATH>}}, jest wyrażona:
{{CentrujWzór|<MATH>E_z=E\cos\theta=-{{q\cos\theta}\over{4\pi\epsilon_0\left(r^2+d^2\right)}}=-{{qd}\over{4\pi\epsilon_0\left(d^2+r^2\right)^{{{3}\over{2}}}}}</MATH>|7.50}}
Pole pochodzące od ładunków związanych jest określone wedle {{LinkWzór|4.2|Przewodniki}} nad powierzchnią, ale tym razem tuż pod powierzchnią natężenie pola elektrycznego zachowuje się jakoby było wytwarzane przez nieskończoną powierzchnię, wtedy natężenie pola elektrycznego jest wyrażone w zależności od ładunków powierzchniowych o gęstości powierzchniowej σ{{Sub|zw}}:
{{CentrujWzór|<MATH>E_{zw}=-{{\sigma_{zw}}\over{2\epsilon_0}}</MATH>|7.51}}
Zatem całkowite pole elektryczne blisko przy powierzchni płyty (z=0), jest sumą natężenia pola elektrycznego ładunku q {{LinkWzór|7.50}} i natężenia pola elektrycznego ładunków związanych {{LinkWzór|7.51}}, jest równe:
{{CentrujWzór|<MATH>E^c_z=E_z+E_{zw}=-{{qd}\over{4\pi\epsilon_0\left(d^2+r^2\right)^{{{3}\over{2}}}}}-{{\sigma_{zw}}\over{2\epsilon_0}}</MATH>|7.52}}
Jeśli z korzystając przy tym ze wzoru {{LinkWzór|7.48}}, biorąc po lupę wzór {{LinkWzór|7.52}}, który przedstawia natężenie pola elektrycznego tuż przy powierzchni, to gęstość powierzchniowa ładunku związanego możemy napisać jako:
{{CentrujWzór|<MATH>\sigma_{zw}=\epsilon_0\chi\left[-{{qd}\over{4\pi\epsilon_0\left(d^2+r^2\right)^{{{3}\over{2}}}}}-{{\sigma_{zw}}\over{2\epsilon_0}}\right]</MATH>|7.53}}
A zatem gęstość ładunku związanego, co można uzyskać ze wzoru {{LinkWzór|7.53}} wyznaczając gęstość powierzchniową tego ładunku, jest wyrażona:
{{CentrujWzór|<MATH>\sigma_{zw}(1+{{1}\over{2}}\chi)=-\chi{{qd}\over{4\pi\left(d^2+r^2\right)^{{{3}\over{2}}}}}\Rightarrow\sigma_{zw}{{2+\chi}\over{2\chi}}=-{{qd}\over{4\pi\left(d^2+r^2\right)^{{{3}\over{2}}}}}</MATH>|7.54}}
I ostatecznie gęstość ładunków powierzchniowych na badanej powierzchni, która jest funkcją odległości punkowego ładunku q od powierzchni, który polaryzuje naszą badaną płaszczyznę i promienia r, która jest odległością radialną r od punku na płaszczyźnie, który to punkt, który ma początek, który jest rzutem prostopadłym ładunku q na płaszczyznę, w której są indukowane ładunki, a koniec tego odcinka jest w punkcie, w którym będziemy wyznaczali gęstość powierzchniową ładunków, zatem wyznaczając wspomnianą gęstość powierzchniową ze wzoru {{LinkWzór|7.54}} otrzymujemy jako ostateczny warunek:
{{CentrujWzór|<MATH>\sigma_{zw}=-{{1}\over{2\pi}}\left({{\chi}\over{\chi+2}}\right){{qd}\over{\left(r^2+d^2\right)^{{{3}\over{2}}}}}</MATH>|7.55}}
Jest to gęstość ładunków powierzchniowych indukowanych na powierzchni płyty poprzez ładunek punkowy q znajdujący się od powierzchni odległej od ładunku "q" o "d"
== iły działające na dielektryk ==
{{Rysunek|Dielektryk.jpg|sdnd|Siły działające na dielektryk}}
Na dielektryk działa siła ze strony pola elektrycznego i należy ją zrównoważyć siłą:{{Formuła|<MATH>\vec{F}_z=-\vec{F}</MATH>}}, aby dielektryk poruszał się bardzo powoli.
Infinitezymalna praca wykonana przez siły zewnętrzne przy przesuwaniu dielektryka znajdującego się między dwoma okładkami jest wyrażona przez:
{{CentrujWzór|<MATH>dW_c=\vec{F}_zdx=-\vec{F}dx</MATH>|7.56}}
Można powiedzieć, że wyrażając siła działająca na okładki kondensatora przez pole elektryczne, to praca nad dielektrykiem jest równa ilorazowi infinitezymalnej pracy przez nieskończenie małe przesunięcie ładunku q , i to wszystko razem wzięte z minusem:
{{CentrujWzór|<MATH>F=-{{dW_c}\over{dx}}</MATH>|7.57}}
Nasz rozważany kondensator składa się z dwóch dielektryków. Pierwszym dielektrykiem jest powietrze o szerokości x i względnej przenikalności elektrycznej w przybliżeniu jest równy jeden i drugi dielektryk o grubości l-x o względnej przenikalności elektrycznej ε{{Sub|r}}. Korzystać przy tym będziemy z definicji pojemności elektrycznej kondensatora {{LinkWzór|4.4|Przewodniki}}, którym dielektrykiem nie jest w ogólności powietrze, ale pewien dielektryk o względnej przenikalności elektrycznej ε{{Sub|r}}, zatem pojemności tych dwóch kondensatorów przestawiamy:
{{ElastycznyWiersz
| 1 = {{Center|''Pojemność elektryczna kondensatora powietrznego''}}
{{CentrujWzór|<MATH>C_p={{xw\epsilon_0 }\over{d}}</MATH>|7.58}}
| 2 = {{Center|''Pojemność elektryczna kondensatora z dielektrykiem''}}
{{CentrujWzór|<MATH>C_d={{(l-x)w\epsilon_r\epsilon_0}\over{ d}}</MATH>|7.59}}
}}
Pojemność całego układu równoległych kondensatorów (powietrznego i z dielektrykiem), korzystać przy tym będziemy z definicji pojemności elektrycznej mniejszych kondensatorów {{LinkWzór|7.58}} i {{LinkWzór|7.59}}, wyraża się według:
{{CentrujWzór|<MATH>C=C_p+C_d={{xw\epsilon_0}\over{d}}+{{(l-x)w\epsilon_0\epsilon_r}\over{d}}={{w\epsilon_0}\over{d}}\left(x+(l-x)\epsilon_r\right)={{w\epsilon_0}\over{d}}
\left(x+(l-x)(1+\chi)\right)={{w\epsilon_0}\over{d}}\left(x+l\epsilon_r-x(1+\chi)\right)=</MATH>{{Br}}
<MATH>={{w\epsilon_0}\over{d}}\left(l\epsilon_r-x\chi\right)</MATH>|7.60}}
Całkowita energia kondensatora, która jest funkcją pojemności kondensatora i ładunku elektrycznego znajdującego się na okładkach kondensatora, jest napisana przez:
{{CentrujWzór|<MATH>W={{1}\over{2}}{{Q^2}\over{C}}</MATH>|7.61}}
Napiszmy pochodną energii kondensatora {{LinkWzór|7.61}} względem przesunięć dielektryka znajdującego się w kondensatorze:
{{CentrujWzór|<MATH>{{dW}\over{dx}}=-{{1}\over{2}}{{Q^2}\over{C^2}}{{dC}\over{dx}}+{{1}\over{2}}{{2Q}\over{C}}{{dQ}\over{dx}}=-{{1}\over{2}}{{Q^2}\over{C^2}}{{dC}\over{dx}}+{{Q}\over{C}}{{dQ}\over{dx}}</MATH>|7.62}}
Ponieważ bateria zasilająca kondensator również wykonuje prace, zatem:
{{CentrujWzór|<MATH>dW_c=dW-UdQ={{dW}\over{dx}}dx-UdQ\;</MATH>|7.63}}
W ogólności potencjał i ładunek na okładkach kondensatora może się zmieniać,
a więc siła działająca na dielektryk, wykorzystując dodatkowy człon w {{LinkWzór|7.63}} oparty o pracę baterii elektrycznej, wyrażona jest:
{{CentrujWzór|<MATH>F_c=-{{dW_c}\over{dx}}={{1}\over{2}}{{Q^2}\over{C^2}}{{dC}\over{dx}}-{{Q}\over{C}}{{dQ}\over{dx}}+U{{dQ}\over{dx}}</MATH>|7.64}}
Ponieważ mamy z definicji pojemności elektrycznej kondensatora jako funkcję ładunku zgromadzonego na okładkach kondensatora i różnicy potencjałów U, stąd wyznaczmy potencjał elektryczny U między okładkami omawianego kondensatora:
{{CentrujWzór|<MATH>C={{Q}\over{U}}\Rightarrow U={{Q}\over{C}}</MaTh>|7.65}}
Korztystając przy tym z końcowego wyrażenia wynikowego {{LinkWzór|7.65}}, wtedy dochodzimy do wniosku, że siła F{{Sub|c}} jest napisana:
{{CentrujWzór|<MATH>F_c={{1}\over{2}}{{Q^2}\over{C^2}}{{dC}\over{dx}}-{{Q}\over{C}}{{dQ}\over{dx}}+{{Q}\over{C}}{{dQ}\over{dx}}\Rightarrow F_c={{1}\over{2}}{{Q^2}\over{C^2}}{{dC}\over{dx}}={{1}\over{2}}U^2{{dC}\over{dx}}=-U^2{{\epsilon_0 w\chi}\over{2d}}</MATH>|7.66}}
Powyższy wniosek jest spełniony, gdy mamy stałe Q i zmienia się U lub odwrotnie, albo oba, w każdym bodź razem siła działająca na nasz dielektryk powoduje, że on próbuje się wsunąć pod okładki kondensatora w stronę niższych x.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
6ewen9ya7o3svx8kj9e35ar60q03d67
Elektrodynamika klasyczna/Rozwinięcia kwadrupolowe
0
16580
558873
516965
2026-10-08T00:19:29Z
Persino
2851
558873
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy zajmować się multipolami elektrycznymi w celu obliczenia ich natężenia pola elektrycznego w pewnej w odległości od naszego multipola.
== Dipol elektryczny ==
{{Rysunek|Dipol elektryczny i odległości od punktu O.jpg|lk1|Rysunek obrazujący pole elektryczne pochodzące od dipola elektrycznego}}
Potencjał elektryczny w pewnej odległości od dwóch źródeł q i -q dipola elektrycznego, czyli w punkcie O przedstawia się jako suma potencjałów pochodzących od tych ładunków o przeciwnych znakach:
{{CentrujWzór|<MATH>\varphi(\vec{r})={{1}\over{4\pi\epsilon_0}}\left({{q}\over{R_+}}-{{q}\over{R_-}}\right)=
{{q}\over{4\pi\epsilon_0}}\left({{1}\over{R_+}}-{{1}\over{R_-}}\right)</MATH>|5.1}}
Dalszym krokiem jest wyznaczenie odległości R{{Sub|±}} za pomocą rysunku obok, przy pomocy odległości pomiędzy tymi omawianymi ładunkami q i -q, oraz przy pomocy odległości łączący środek tego dipola z punktem O, w którym liczymy potencjał elektryczny pochodzący od tego obiektu.
Wyznaczmy kwadrat odległości ładunku q od tego ściśle określonego punktu O, w którym liczymy potencjał elektryczny. Jak się przekonamy ona jest zależna od odległości środka dipola elektrycznego od punktu O, jak i odległości w tym obiekcje ładunku q od ładunku przeciwnego -q:
{{CentrujWzór|<MATH>R^2_+=r^2+\left({{d}\over{2}}\right)^2-2r{{d}\over{2}}\cos\phi=r^2+{{d^2}\over{4}}-rd\cos\phi</MATH>|5.2a}}
Wyznaczmy kwadrat odległości ładunku -q od tego ściśle określonego punktu O, w którym liczymy potencjał elektryczny. Jak się przekonamy ona jest zależna od odległości środka dipola od punktu O, jak i odległości w dipolu elektrycznym ładunku q od ładunku przeciwnego -q:
{{CentrujWzór|<MATH>R^2_-=r^2+\left({{d}\over{2}}\right)^2-2r{{d}\over{2}}\cos(\pi-\phi)=r^2+{{d^2}\over{4}}+rd\cos\phi</MATH>|5.2b}}
Co do wzorów {{LinkWzór|5.2a}} (ona przedstawia odległość ładunku q od punktu O) i {{LinkWzór|5.2b}} (ona przedstawia odległość ładunku -q od punktu O), co można zapisać te dwa wzory równoważnie obejmującą oba te przypadki, za pomocą znaku plus minus, czyli znaku ±, wedle:
{{CentrujWzór|<MATH>R^2_{\pm}=r^2+{{d^2}\over{4}}\mp rd\cos\phi</MATH>|5.3}}
Policzmy odwrotności wielkości R{{Sub|±}} zapisanej ogólnie wedle wzoru {{LinkWzór|5.3}}, które są z osobna odległościami ładunku q i -q od rozważanego punktu O, mamy stąd wniosek:
{{CentrujWzór|<MATH>{{1}\over{R_{\pm}}}={{1}\over{\left(r^2+{{d^2}\over{4}}\mp rd\cos\phi\right)^{{{1}\over{2}}}}}\simeq {{1}\over{r\left(1\mp{{d\cos\phi}\over{r}}\right)^{{{1}\over{2}}}}}\simeq
{{1}\over{r}}\left(1\pm {{d}\over{2r}}\cos\phi\right)</MATH>|5.4}}
Policzmy wyrażenie, które mówi nam jaka jest wartość potencjału elektrycznego w naszym omawianym punkcie, czyli według wzoru {{LinkWzór|5.1}}, korzystając ze wzoru ogólnego {{LinkWzór|5.4}}, mówiący jakie są odległości ładunku q lub -q od naszego punktu, zatem policzmy najpierw ostatni czynnik tej tożsamości:
{{CentrujWzór|<MATH>{{1}\over{R_+}}-{{1}\over{R_-}}={{1}\over{r}}\left(1+ {{d}\over{2r}}\cos\phi\right)-{{1}\over{r}}\left(1- {{d}\over{2r}}\cos\phi\right)={{d}\over{r^2}}\cos\phi</MATH>|5.5}}
By potem napisać nasz potencjał {{LinkWzór|5.1}} wedle wzoru {{LinkWzór|5.5}}, przedstawiający różnicę odwrotności ładunków q i -q od punktu O, której ten potencjał jest równy wyrażeniu:
{{CentrujWzór|<MATH>\varphi(\vec{r})={{q}\over{4\pi\epsilon_0}}{{d}\over{r^2}}\cos\phi={{qd\cos\phi}\over{4\pi\epsilon_0 r^2}}</MATH>|5.6}}
Potencjał elektryczny pochodzący od dipola będziemy liczyli w pewnej odległości od niego, korzystając z definicji momentu dipolowego o wartości:
{{CentrujWzór|<MATH>p=qd\;</MATH>|5.7}}
* gdzie d jest to odległość łącząca ładunki q (ładunek dodatni) i -q (ładunek ujemny) w dipolu elektrycznym.
jeśli moment dipolowy przedstawić jako wektor, to jego kierunek pokrywa się z prostą łączącą oba te ładunki, a zwrot jest od ładunku ujemnego do dodatniego. Potencjał skalarny {{LinkWzór|5.6}} jest taki, że wykorzystując wzór na wartość momentu dipolowego {{LinkWzór|5.7}}, wtedy wyraża się on:
{{CentrujWzór|<MATH>\varphi(\vec{r})={{p\cos\phi}\over{4\pi\epsilon_0 r^2}}</MATH>|5.8}}
Jest to wzór na potencjał skalarny dipola, który jest funkcją jego momentu dipolowego, odległości środka dipola od punktu, w którym ten potencjał skalarny istnieje, a także od kąta pomiędzy wektorem łączący dwa skrajne ładunki w dipolu elektrycznym, a wektorem łączący środek dipola elektrycznego z punktem, w którym liczymy nasz wspomniany potencjał.
== Rozwinięcie multipolowe potencjału skalarnego ==
{{Rysunek|Multipole elektryczne.jpg|rmdpe|Rozwinięcie multipolowe dla pola elektrycznego}}
Mamy sobie pewien rozkład ładunków i będziemy liczyli potencjał skalarny w pewnym punkcie, którego wektor wodzący jest {{Formuła|<MATH>\vec{r}\;</MATH>}} względem pewnego punktu. Również znamy wektory wodzące {{Formuła|<MATH>\vec{r}^'\;</MaTh>}} infinitezymalnych objętości. Na podstawie tych naszych dysput możemy wyznaczyć odległość infinitezymalnego ładunków, który ten ładunek znajduje się w infinitezymalnej objętości, od punktu O. Mając już obliczony odległość R, które możemy wykorzystać do liczenia potencjału skalarnego według wzoru napisanego w punkcie {{LinkWzór|3.19|Pole_skalarne}}. Ta nasza wspomniana odległość R, którą będziemy wyznaczać wedle rysunku obok, jest napisana:
{{CentrujWzór|<MATH>R^2=r^2+(r^')^2-2rr^'\cos\phi=r^2\left[1+\left({{r^'}\over{r}}\right)^2-2\left({{r^'}\over{r}}\right)\cos\phi\right]</MATH>|5.9}}
Widzimy, że ona jest funkcją r i odległości r{{Sup|'}}, które są wyznaczane względem pewnego punktu, który nazwiemy punktem bazowym.
Obierzmy odległość R {{LinkWzór|5.9}} poprzez parametr ε, który jest zdefiniowany w wspomnianym wzorze w sposób równoważny wedle:
{{CentrujWzór|<MATH>R=r\sqrt{1+\epsilon}</MATH>|5.10}}
* gdzie ten nasz wspomniany parametr ε jest opisany wzorem:
{{CentrujWzór|<MATH>\epsilon=\left({{r^'}\over{r}}\right)\left({{r^'}\over{r}}-2\cos\phi\right)</MATH>|5.11}}
Odwrotność promienia R {{LinkWzór|5.10}} przy definicji parametru ε {{LinkWzór|5.11}} możemy wyrazić jako:
{{CentrujWzór|<MATH>{{1}\over{R}}={{1}\over{r}}\left(1+\epsilon\right)^{-{{1}\over{2}}}\simeq
{{1}\over{r}}\left(1-{{1}\over{2}}\epsilon+{{3}\over{8}}\epsilon^2-{{5}\over{16}}\epsilon^3+....\right)</MATH>|5.12}}
Wykorzystajmy definicję parametru ε, który jest opisana według wzoru {{LinkWzór|5.11}} do wzoru, który jest odwrotnością R {{LinkWzór|5.12}}, mamy:
{{CentrujWzór|<MATH>{{1}\over{R}}={{1}\over{r}}\Bigg[1-{{1}\over{2}}\left({{r^'}\over{r}}\right)\left({{r^'}\over{r}}-2\cos\phi\right)+
{{3}\over{8}}\left({{r^'}\over{r}}\right)^2\left({{r^'}\over{r}}-2\cos\phi\right)^2-{{5}\over{16}}\left({{r^'}\over{r}}\right)^3\left({{r^'}\over{r}}-2\cos\phi\right)^3\Bigg]=</MATH>{{Br}}
<MATH>={{1}\over{r}}\Bigg[
1-{{1}\over{2}}\left({{r^'}\over{r}}\right)^2+{{r^'}\over{r}}\cos\phi+
{{3}\over{8}}\left({{r^'}\over{r}}\right)^2\left(\left({{r^'}\over{r}}\right)^2+4\cos^2\phi-4{{r^'}\over{r}}\cos\phi\right)+\;</MATH>{{Br}}<MATH>-{{5}\over{16}}\left({{r^'}\over{r}}\right)^3\left(\left({{r^'}\over{r}}\right)^3+8\cos^3\phi-
6{{(r^')^2}\over{r^2}}cos\phi+12{{r^'}\over{r}}\cos^2\phi\right)
\Bigg]</MATH>|5.13}}
We wzorze {{LinkWzór|5.13}} w nawiasie grupujemy kolejne wyrazy względem potęg {{Formuła|<MATH>{{r^'}\over{r}}</MATH>}}, a zatem do dzieła.
{{CentrujWzór|<MATH>{{1}\over{R}}={{1}\over{r}}\left[
1+{{r^'}\over{r}}\cos\phi+\left({{r^'}\over{r}}\right)^2{{(3\cos^2\phi-1)}\over{2}}+\left({{r^'}\over{r}}\right)^3{{\left(5\cos^2\phi^3-3\cos\phi\right)}\over{2}}+...
\right]</MATH>|5.14}}
Rozszerzając powyższy wzór {{LinkWzór|5.14}}, który można tak rozszerzyć na wszystkie wyrazy zależne od współczynnika n dla P{{Sub|n}}(x), które są '''wielomianami Legendre'a'''.
{{CentrujWzór|<MATH>{{1}\over{R}}={{1}\over{r}}\sum_{n=0}^{\infty}\left({{r^'}\over{r}}\right)^nP_n(\cos\phi)</MATH>|5.15}}
Całkowity potencjał elektryczny {{LinkWzór|3.19|Pole_skalarne}} i korzystając przy tym z {{LinkWzór|5.15}} na odwrotność promienia R, wyrażona jest w postaci całki po ładunkach należących do tego rozkładu według wzoru:
{{CentrujWzór|<MATH>\varphi(\vec{r})={{1}\over{4\pi\epsilon_0}}
\sum_{n=0}^{\infty}{{1}\over{r^{n+1}}}\int(r^')^n P_n(\cos\phi)\rho(\vec{r}^')dV^'</MATH>|5.16}}
lub w postaci jawnej biorąc ze wzoru {{LinkWzór|5.16}} trzy pierwsze wyrazy, a pozostałe oznaczając wielokropkami:
{{CentrujWzór|<MATH>\varphi(\vec{r})=\;</MATH>{{Br}}<MATH>={{1}\over{4\pi\epsilon_0}}\left[
{{1}\over{r}}\int\rho(\vec{r}^')dV^'+{{1}\over{r^2}}\int r^'\cos\phi\rho(\vec{r}^')dV^'+{{1}\over{r^3}}\int (r^')^2\left({{3}\over{2}}\cos^2\phi dV^'-{{1}\over{2}}\right)\rho(\vec{r^'})dV^'+....
\right]</MATH>|5.17}}
Patrząc na powyższe rozwinięcie mamy dla n=0 człon monopolowy, dla n=1 człon dipolowy i ostatecznie dla b=3 człon kwadrupolowy. Potencjał elektryczny można liczyć w prowadzając pewne poprawki jako multipole.
== Człon monopolowy i dipolowy w rozwinięciu multipolowym ==
Człon monopolowy występujący we wzorze {{LinkWzór|5.17}} jest dokładnie taki sam jak w równaniu {{LinkWzór|3.20|Pole_skalarne}} na potencjał skalarny wytwarzanej przez rozciągły rozkład ładunków nieskończenie małych z pewnymi gęstościami objętościowymi ładunków elektrycznych.
{{CentrujWzór|<MATH>\varphi_0(\vec{r})={{1}\over{4\pi\epsilon_0}}\int{{\rho(\vec{r}^')}\over{r}}dV^'</math>|5.18}}
A człon dipolowy występujący również w tym samym równaniu jest zależny od gęstości objętościowej ładunków w danej badanej objętości i od kąta φ wedle kulistego układu współrzędnych, potencjał elektryczny pochodzący od dipoli jest wyrażony:
{{CentrujWzór|<MATH>\varphi_1(\vec{r})={{1}\over{4\pi\epsilon_0}}{{1}\over{r^2}}\int r^'\cos\phi\rho(\vec{r^'})dV^'</MATH>|5.19}}
Określmy jako: {{Formuła|<MATH>\hat{r}\vec{r}^'=r^'\cos\phi</MATH>}},
* gdzie:{{Formuła|<MATH>\hat{r}</MATH>}} jest wektorem równoległym i jednostkowym do wektora wodzącego {{Formuła|<MATH>\vec{r}\;</MATH>}}, w którym ta ostatnia łączy punkt O z pewnym punktem, którego ma początek wspomniany wektor, i na końcu tego wektora będziemy liczymy potencjał elektryczny skalarny pola wytwarzanego przez pewien rozkład ładunków, i która z {{Formuła|<MATH>\vec{r}^'</MATH>}} tworzy pewien kąt.
Dochodzimy do wniosku, że wyrażenie {{LinkWzór|5.19}} możemy napisać:
{{CentrujWzór|<MATH>\varphi_1(\vec{r})={{1}\over{4\pi\epsilon_0}}{{1}\over{r^2}}\int \hat{r}\vec{r}^'\rho(\vec{r^'})dV^'\Rightarrow
\varphi_1(\vec{r})={{1}\over{4\pi\epsilon_0}}{{1}\over{r^2}}\hat{r}\int\vec{r}^'\rho(\vec{r^'})dV^'
</MATH>|5.20}}
Jeśli zdefiniujemy, że wektor momentu dipolowego dielektryka jako całkę objętościową z iloczynu gęstości objętościowej ładunków jakie panują w danym punkcie przez położenie tego punktu określonej przez wektor {{Formuła|<MATH>\vec{r}^'\;</MATH>}}:
{{CentrujWzór|<MATH>\vec{p}=\int\vec{r}^'\rho(\vec{r}^')dV^'</MATH>|5.21}}
Po wykorzystaniu wzoru na moment dipolowy zdefiniowanej w linijce {{LinkWzór|5.21}} do wyrażenia na potencjał skalary pochodząca od pewnego rozciągłego dipola elektrycznego {{LinkWzór|5.20}}, wtedy:
{{CentrujWzór|<MATH>\varphi_1(\vec{r})={{1}\over{4\pi\epsilon_0}}{{\vec{p}\cdot\hat{r}}\over{r^2}}</MATH>|5.22}}
W postaci dyskretnej, gdy ładunki nie są infinitezymalnie małe, ale mają wartości skończone i rozłożone są jakoś w przestrzeni, wtedy moment dipolowy takiego rozkładu ładunków jest napisany:
{{CentrujWzór|<MATH>\vec{p}=\sum^n_{n=0}q_nr^'_n</MATH>|5.23}}
Całkowity ładunek indukowany w dielektryku wynosi zero. A zatem ładunkowi ujemnemu odpowiada ładunek dodatni o takim samym co do wartości ładunku.
Jeśli mamy:
{{CentrujWzór|<MATH>\vec{p}=q\vec{r}^'_+-q\vec{r}^'_-=q(\vec{r}^'_+-\vec{r}^'_-)=q\vec{d}</MATH>|5.24}}
To dochodzimy do wniosku, że definicja momentu dipolowego dla układu w postaci ciągłej {{LinkWzór|5.21}} jak i dla układów dyskretnych dipoli {{LinkWzór|5.23}} jest poprawną definicją.
== Natężenie pola elektrycznego dipola ==
{{Rysunek|Dipole.jpg|lk2|Poli linii natężenia pola elektrycznego dipola elektrycznego}}
Dotąd zajmowaliśmy jedynie potencjałami elektrycznymi jako wielkościami skalarnymi. Teraz będziemy zajmować się wyznaczaniem pola wektorowego w postaci natężenia pola elektrycznego, co tutaj będziemy wyznaczali tą wielkość we współrzędnych kulistych.
Potencjał elektryczny dipola jest określony według wzoru {{LinkWzór|5.8}}, i wtedy aby otrzymać pole wektorowe natężenia pola elektrycznego należy policzyć gradient potencjału elektrycznego wedle wzoru {{LinkWzór|3.5|Pole_skalarne}}, korzystać będziemy z definicji tego gradientu we współrzędnych sferycznych:
{{CentrujWzór|<Math>\operatorname{grad}=\left({{\partial}\over{\partial r}},{{1}\over{r\sin\phi}}{{\partial}\over{\partial\theta}},{{1}\over{r}}{{\partial}\over{\partial \phi}}\right)\;</Math>}}
Wtedy poszczególne współrzędne w układzie kulistym natężenia pola elektrycznego wyrażamy, korzystając z definicji gradientu, który ostatnio wspominaliśmy, są wyrażone przez:
{{CentrujWzór|<MATH>\begin{cases}
E_r=-{{\partial \varphi_1(\vec{r})}\over{\partial r}}={{2p\cos\phi}\over{4\pi\epsilon_0 r^3}}\\
E_{\theta}=-{{1}\over{r\sin\phi}} {{\partial \varphi_1(\vec{r})}\over{\partial\theta}}=0\\
E_{\phi}=-{{1}\over{r}}{{\partial \varphi_1(\vec{r})}\over{\partial\phi}}={{p\sin\phi}\over{4\pi\epsilon_0 r^3}}\end{cases}</MATH>|5.25}}
Wektor natężenia pola elektrycznego wytwarzane przez dipol elektryczny przedstawia się:
{{CentrujWzór|<MATH>\vec{E}={{p}\over{4\pi\epsilon_0 r^3}}\left(2\cos\phi\hat{e}_r+\sin\phi\hat{e}_{\phi}\right)</MATH>|5.26}}
Jest to natężenie pola elektrycznego pochodzące od dipola elektrycznego w układzie kulistym i jest funkcją odległości środka dipola z punktem, w którym liczymy tą wielkość, która to {{LinkWzór|5.26}} wyznacza wielkość wektorową zależną od wersorów pochodzących od układu kulistego w tym punkcie.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
5hzte1xdl196bxxa3avcups94743whp
Elektrodynamika klasyczna/Magnetostatyka
0
16660
558876
513483
2026-10-08T00:30:28Z
Persino
2851
558876
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
'''Magnetostatyka''' nazywamy działem elektrodynamiki klasycznej, w której pole magnetyczne opisywane przez ten dział fizyki jest stałe, nie zależy od czasu we wszystkich punktach w przestrzeni.
== Własności wielkości charakterystycznych pola w magnetostatyce ==
Pole w magnetostatyce jest to pole, którymi przyczynkami są prądy stałe płynące w jakichś przewodnikach, natężenie prądu źródła jest niezmienne, wtedy pole magnetyczne nie zmienia się, wtedy mówimy, że pole jest stałe, wtedy doczynienia mamy z magnetostatyką.
=== Siły magnetyczne ===
Załóżmy, że mamy jeden przewodnik, w którym płynie stały prąd, przewodnik ten nie jest w ogólności linią prostą. Jeśli w tym polu umieścimy ładunek próbny, które porusza się z jakoś prędkością, w ogólności nie prostopadłą do wektora indukcji pola magnetycznego, to wtedy na ten ładunek działa siłę magnetyczna:
{{CentrujWzór|<MATH>\vec{F}=q(\vec{v}\times\vec{B})\;</MATH>|8.1}}
* gdzie:
** {{Formuła|<MATH>\vec{B}\;</MATH>}} - jest to wektor indukcji magnetycznej charakteryzujący pole magnetyczne.
** {{Formuła|<math>\vec{v}\;</MATH>}} - jest to prędkość ładunku q.
Widzimy jednak, gdy wektor prędkości ładunku próbnego jest równoległy do wektora indukcji pola magnetycznego, czyli:{{Formuła|<MATH>\vec{v}||\vec{B}\;</MATH>}}, to wtedy siła działająca ze strony pola na ten ładunek jest równa zero ({{Formuła|<MATH>\vec{F}=0\;</MATH>}}).
Gdy prędkość cząstki jest prostopadła do wektorów indukcji magnetycznej pola, czyli zachodzi:{{Formuła|<MATH>\vec{v}\bot\vec{B}\;</MATH>}} w danym punkcie, to wtedy na ładunek próbny pole magnetyczne działa z maksymalną siłą o wartości:
{{CentrujWzór|<MATH>F_{max}=qvB\;</MATH>|8.2}}
Wartością wektora indukcji nazywamy stosunek maksymalnej siły działającej na ładunek q ze strony pola magnetycznego przez iloczyn ładunku elektrycznego posiadanej przez to ciało w tym polu przez wartość jego prędkości. Należy pamiętać, że siła w ogólności działająca na ciało o ładunku q zależy od kąta pomiędzy wektorem indukcji pola i prędkością badanej cząstki.
=== Siły Lorentza ===
Jeśli oprócz sił magnetycznych {{LinkWzór|8.1}} uwzględnimy siły elektryczne {{LinkWzór|1.2|Elektrostatyka}} (po wyznaczeniu z niego wektora siły), to siła Lorentza działająca na ciało o ładunku q jest równa sumie tych siły, tzn. siły pochodzących od pola elektrycznego i od pola magnetycznego, wynosi:
{{CentrujWzór|<MATH>\vec{F}=q\vec{E}+q(\vec{v}\times\vec{B})\Rightarrow \vec{F}=q(\vec{E}+\vec{v}\times\vec{B})\;</MATH>|8.3}}
* gdzie:{{Formuła|<math>\vec{E}\;</Math>}} jest wektor natężenia pola elektrycznego.
=== Czy siły magnetyczne wykonują pracę ===
Praca wykonywana przez siły magnetyczne jest równa zero ze względu na prostopadłość sił magnetycznych do prędkości cząstki o ładunku q, co udowodnimy poniżej:
{{CentrujWzór|<MATH>W=\int dW=\int \vec{F}d\vec{r}=\int q(\vec{v}\times\vec{B})\vec{v}dt=0\;</MATH>|8.4}}
* ponieważ zachodzi:{{Formuła|<MATH>\vec{F}\bot \vec{v}\;</MATH>}}
Ostatecznie dochodzimy do wniosku, że siły magnetyczne nie wykonują pracy na podstawie dowodu {{LinkWzór|8.4}}.
=== Objętościowa gęstość prądu ===
Rozpatrzmy pewne rozumowanie, które jest natężeniem prądu wyrażone w zależności od koncentracji elektronów w nośniku n, jego przekroju S oraz średniej wartości prędkości tychże cząstek v:
{{CentrujWzór|<MATH>I={{dq}\over{dt}}={{ne Sv dt}\over{dt}}=neSv\;</MATH>|8.5}}
Zdefiniujmy gęstość prądu jako iloraz natężenia prądu przez przekrój przewodnika, w którym płynie ten prąd jako:
{{CentrujWzór|<MATH>\vec{J}={{I}\over{S}}\vec{n}\;</MATH>|8.6}}
* gdzie:{{Formuła|<MATH>\vec{n}\;</MATH>}} jest to kierunek i zwrot zgodny z kierunkiem płynięcia prądu.
Natężenie prądu wyrażone wedle {{LinkWzór|8.5}} podstawiamy do wzoru na wektor gęstości prądu elektrycznego, co w ostatecznych perypetiach ta wielkość wyrażamy poprzez iloczyn koncentracji ładunków e pomnożonej przez ten ładunek i wektor prędkości ładunków prądu elektrycznego, co ostatecznie możemy tą wielkość przestawić jako:
{{CentrujWzór|<MATH>\vec{J}=ne\vec{v}\;</MATH>|8.7}}
Widzimy, że wektor gęstości prądu elektrycznego jest równoległy do prędkości nośników omawianego obiektu.
=== Prądy objętościowe a siły magnetyczne ===
{{Rysunek|LeftHandRule.svg|rlr|Reguła lewej ręki}}
Policzmy jakie siły działają na nieskończenie mały element długości przewodnika z prądem:
{{CentrujWzór|<MATH>d\vec{F}=dq(\vec{v}\times\vec{B})=dq\left({{d\vec{l}}\over{dt}}\times\vec{B}\right)={{dq}\over{dt}}(d\vec{l}\times\vec{B})=I(d\vec{l}\times\vec{B})=dl(\vec{I}\times\vec{B})\;</MATH>|8.8}}
* gdzie {{Formuła|<MATH>d\vec{l}\;</MaTH>}} ma zwrot zgodny z kierunkiem płynięcia prądu elektrycznego w przewodniku.
Zwrot elementarnej siły:{{Formuła|<MATH>d\vec{F}</MATH>}}, określamy regułą lewej ręki, co jest pokazane na rysunku obok.
Całkowia siła pola magnetycznego działająca na przewodnik z prądem jest wyrażona:
{{CentrujWzór|<MATH>\vec{F}=\int d\vec{F}=\int I(d\vec{l}\times\vec{B})\;</MATH>|8.9}}
Powyższy wzór uwzględnia również kształt przewodnika z prądem, w którym płynie prąd o natężeniu I.
=== Powierzchniowa gęstość prądu ===
Zakładamy tutaj, że prąd płynie po nieskończenie małym wycinku z minus nieskończoności do plus nieskończoności, przy czym zakładamy, że ten wycinek nie jest w ogólności linią prostą.
Powierzchniowa gęstość ładunku jest wyrażona przez:
{{CentrujWzór|<MATH>\vec{K}={{d\vec{I}}\over{dl_{\bot}}}\;</MATH>|8.10}}
Inaczej wyrażając różniczkę natężenia prądu płynącego w przewodniku o szerokości {{Formuła|<MATH>dl_{\bot}\;</MaTh>}} przez iloczyn gęstości powierzchniowej i prędkości nośników prądu, tak jak w {{LinkWzór|8.5}}, tylko zamiast gęstości objętościowej jest gęstość powierzchniowa, a zamiast przekroju S jest szerokość przewodnika powierzchniowego.
{{CentrujWzór|<MATH>\vec{K}={{d\vec{I}}\over{dl_{\bot}}}={{\sigma dl_{\bot}\vec{v}}\over{dl_{\bot}}}=\sigma \vec{v}\;</MATH>|8.11}}
Dochodzimy do wniosku wedle wyprowadzenia {{LinkWzór|8.11}}, że gęstość powierzchniowa prądu jest równa iloczynowi prędkości nośników prądu przez gęstość powierzchniową ładunków nośników prądu płynącej na powierzchni, zatem dochodzimy do wniosku:
{{CentrujWzór|<MATH>\vec{K}=\sigma\vec{v}\;</MATH>|8.12}}
=== Prądy powierzchniowe a siły magnetyczne ===
Różniczka siły działająca na nieskończenie mały przewodnik powierzchniowy, w zależności od gęstości powierzchniowej {{LinkWzór|8.10}} i szerokości przewodnika, w którym panuje pola magnetyczne zewnętrzne o indukcji {{Formuła|<MATH>\vec{B}\;</math>}}, jest równa:
{{CentrujWzór|<MATH>d\vec{F}=dq\vec{v}\times\vec{B}=(\vec{v}\times\vec{B})\sigma dS=
(\vec{K}\times{B})dS\;</MATH>|8.13}}
A całkowita siła działająca na ten przewodnik z prądem, którego szerokość jest infinitezymalna, jest napisana:
{{CentrujWzór|<MATH>\vec{F}=\int (\vec{K}\times{B})dS\;</MATH>|8.14}}
Całkowita siła magnetyczna działająca na przewodnik powierzchniowy z prądem jest zależna od szerokości tego przewodnika, która jest równa {{Formuła|<MATH>dl_{\bot}\;</MATH>}}.
=== Zasada zachowania ładunku ===
W układzie zamkniętym, na danej objętości lub powierzchni, suma wszystkich ładunków w dowolnym czasie jest wielkością stałą. Zmiana gęstości powierzchniowej lub objętościowej przy pomocy prądów powierzchniowych lub objętościowych nie może zmieniać (zaburzać) całkowitego ładunku w danej powierzchni lub objętości.
W układzie dyskretnym zachodzi:
{{CentrujWzór|<MATH>\sum_i q_i=\operatorname{const}\;</math>|8.15}}
lub dla układu ciągłego zastępując sumę całką, a dyskretne ładunki o numerze "i" ich infinitezymalnymi ładunkami, które wyrazimy przez gęstość objętościową, którego ładunki są w danej objętości dV wedle wzoru {{LinkWzór|1.6|Elektrostatyka}}, wtedy to prawo ma się w postaci:
{{CentrujWzór|<MATH>\int_V\rho(\vec{r})dV=\operatorname{const}\;</math>|8.16}}
Powyższe dwa wzory stanowią globalną zasadę zachowania ładunku dla rozkładu dyskretnego {{LinkWzór|8.15}} i ciągłego {{LinkWzór|8.16}}.
Całkowita zmiana ładunku w danej objętości musi być stała w magnetostatyce, tzn.
{{CentrujWzór|<MATH>\Delta q=\int_V \vec{J}d\vec{S}dt\Rightarrow \Delta q=\int_V\nabla\cdot\vec{J}dVdt\;</math>|8.17}}
Ale ponieważ zmiana ładunku w dowolnym czasie {{Formuła|<math>\Delta t\;</MATH>}} jest równa zero, wtedy równanie {{LinkWzór|8.17}} możemy zapisać wedle sposobu:
{{CentrujWzór|<MATH>0=\int_V\nabla\cdot\vec{J}dV\;</math>|8.18}}
Powyższe równanie jest słuszne dla dowolnej objętości, bo w magnetostatyce rozkład ładunków nie zmienia się, bo pole magnetyczne lub elektryczne musi być stałe w czasie w danym punkcie w przestrzeni, zatem otrzymujemy:
{{CentrujWzór|<MATH>\nabla\cdot\vec{J}=0\Rightarrow\operatorname{div}\vec{J}=0\;</math>|8.19}}
Co jest treścią lokalną zasady ciągłości dla magnetostatyki dla ładunków objętościowych.
Formułując zasadę dla prądów powierzchniowych, można uzyskać podobną lokalną zasadę zachowania ładunku do {{LinkWzór|8.19}}:
{{CentrujWzór|<MATH>\operatorname{div}\vec{K}=0</MATH>|8.20}}
Co jest prawdziwe dla dwuwymiarowego układu współrzędnych związanego z tą płaszczyzną, w której płynie prąd powierzchniowy, ale nie dla trzech. Dla trzech wymiarów należy stosować prawo {{LinkWzór|8.19}}.
Prawo {{LinkWzór|8.20}} jest treścią lokalnej zasady ciągłości dla magnetostatyki dla ładunków powierzchniowych.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
c8bxeq9jczi5u299d9i0z2acpsvf50a
Elektrodynamika klasyczna/Wektor indukcji magnetycznej
0
16664
558877
470166
2026-10-08T00:33:02Z
Persino
2851
558877
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Poprzednio zdefiniowaliśmy wektor indukcji magnetycznej, ale nie podaliśmy jak je liczyć według jakiego wzoru, co uczynimy poniżej.
== Prawo Biota-Savarta ==
Załóżmy, że mamy stałe prądy, wtedy ten prąd wytwarza ogólnie w nieliniowym przewodniku stałe pola magnetyczne wokół niego. Obliczmy jaki przyczynek wnosi mały przycinek :{{Formuła|<MATH>d\vec{B}</MATH>}}, do pola magnetycznego wokół przewodnika w ściśle określonym położeniu. Pole magnetyczne liniowego prądu stałego jest określone przez prawo Biota-Savarta napisana przez:
{{CentrujWzór|<MATH>\vec{B}(\vec{r})={{\mu_0}\over{4\pi}}I\int{{d\vec{l}\times\hat{\vec{R}}}\over{R^2}}</MATH>|9.1}}
* gdzie R jest to odległość odcinka {{Formuła|<MATH>d\vec{l}</MATH>}} do punktu, w którym liczymy indukcję pola magnetycznego pochodzącą od nieskończenie małych przycinków o długości dl, który to przyczynek ma zwrot zgodny z kierunkiem płynięcia prądu {{Formuła|<MATH>d\vec{l}\;</Math>}} do pola magnetycznego.
* I- natężenie prądu stałego w przewodniku
* μ{{Sub|0}} jest to przenikalność magnetyczna próżni równą wartości: {{Formuła|<MATH>4\pi\cdot 10^{-7}{{N}\over{A^2}}</MATH>}}.
== Prawo Biota-Savarte zależne od prędkości źródła pola magnetycznego ==
Mając pierwotny wzór na indukcję pola elektrycznego nieskończonego przewodnika z prądem, w którym płynie prąd o natężeniu I, wtedy wyprowadźmy wzór jakie jest pole magnetyczne wytwarzane przez ładunek q, poruszający się z prędkością {{Formuła|<MATH>\vec{v}</MATH>}}:
{{CentrujWzór|<MATH>\vec{B}(\vec{r})={{\mu_0}\over{4\pi}}\int {{dq}\over{dt}}{{d\vec{l}\times\hat{\vec{R}}}\over{R^2}}={{\mu_0}\over{4\pi}}\int dq{{\vec{v}\times\hat{\vec{R}}}\over{R^2}}</MATH>|9.2}}
Powyższym prawie wektor indukcji magnetycznej wyznaczamy dla punktu ściśle określonego pochodzącego od ruchu każdego ładunku dq pędzącego z prędkościami {{Formuła|<MATH>\vec{v}\;</MaTH>}} znajdującego się w ogólności w nieskończonym przewodniku, który na przykład może nie być liniowy.
Jeśli mamy mały i punktowy ładunek q, który pędzi z prędkością {{Formuła|<MATH>\vec{v}\;</MATH>}}, to wytwarzane przez niego pole magnetyczne w danym punkcie według wzoru {{LinkWzór|9.2}} w odległości od niego o wektor {{Formuła|<MATH>\vec{R}\;</MATH>}} przedstawia się:
{{CentrujWzór|<MATH>\vec{B}(\vec{R})={{\mu_0}\over{4\pi}}{{q\vec{v}\times\hat{\vec{R}}}\over{R^2}}</MATH>|9.3}}
Według tego wzoru, każdy ładunek pędzący z prędkością {{Formuła|<MATH>\vec{v}\;</MATH>}} wytwarza wokół siebie pole magnetyczne, które wyznaczamy dla każdego punktu według ostatniego wzoru.
== Prawo Biota-Savarte dla prądów powierzchniowych ==
Prawo Biota-Savarte dla prądów powierzchniowych, mając definicję gęstości powierzchniowej prądu, wtedy wzór na wektor indukcji pola magnetycznego wytwarzane przez nieskończony przewodnik z prądem {{LinkWzór|9.1}}, jest napisany wedle:
{{CentrujWzór|<MATH>\vec{B}(\vec{r})={{\mu_0}\over{4\pi}}\int I{{d\vec{l}\times\hat{\vec{R}}}\over{R^2}}=
{{\mu_0}\over{4\pi}}\int K a{{d\vec{l}\times\hat{\vec{R}}}\over{R^2}}=
{{\mu_0}\over{4\pi}}\int{{\vec{K}\times\vec{R}}\over{R^3}}dS
</MATH>|9.4}}
Zatem mając wzór {{LinkWzór|9.4}}, który jest w formie całkowej w zależności od gęstości prądu powierzchniowego wytwarzanego przez daną cząstkę powierzchni dS, w której płynie prąd powierzchniowy, a ich całka daje całkowite pole magnetyczne o indukcji {{Formuła|<MATH>\vec{B}\;</MATH>}} wytwarzaną przez daną powierzchnię, w której płyną pewne prądy.
== Prawo Biota-Savarte dla prądów objętościowych ==
Prawo Biota-Savarte dla prądów objętościowych piszemy, znając definicję gęstości objętościowej prądu {{LinkWzór|8.6|Magnetostatyka}}, wtedy wzór {{LinkWzór|9.1}} na całkowity wektor indukcji pola magnetycznego w danym punkcie zapisujemy:
{{CentrujWzór|<MATH>\vec{B}(\vec{r})={{\mu_0}\over{4\pi}}\int I{{d\vec{l}\times\hat{\vec{R}}}\over{R^2}}=
{{\mu_0}\over{4\pi}}\int J S{{d\vec{l}\times\hat{\vec{R}}}\over{R^2}}=
{{\mu_0}\over{4\pi}}\int {{\vec{J}\times\hat{\vec{R}}}\over{R^2}}dV</MATH>|9.5}}
Mając wzór {{LinkWzór|9.5}} wektor indukcji pola magnetycznego jest całką po objętości, w której w danym punkcie płynie prąd o gęstości prądu {{Formuła|<MATH>\vec{J}\;</MATH>}} i oddalonym od punktu, w którym wyznaczamy wektor indukcji pola magnetycznego o wektor {{Formuła|<MATH>\vec{R}\;</mATH>}}.
== Różniczkowe prawo Gaussa dla pola magnetostatycznego ==
Wyznaczmy wyrażenie na dywergencję pola magnetycznego {{Formuła|<MATH>\vec{B}</MATH>}} w danym punkcie przestrzeni wytwarzanej przez nieskończony przewodnik z prądem wedle równania {{LinkWzór|9.1}}, piszemy ją mając w całce pewne wielkości zależne od przewodnika, które oznaczać je będziemy primami, tzn. gęstość prądu i elementarną objętość:
{{CentrujWzór|<MATH>\nabla\cdot\vec{B}=
{{1}\over{4\pi}}\int_V\nabla\left(\vec{J}^'\times{{\hat{\vec{R}}}\over{R^2}}\right)dV^'=
{{1}\over{4\pi}}\int_V\left[{{\hat{\vec{R}}}\over{R^2}}\left(\nabla\times\vec{J}^'\right)-\vec{J}^'\left(\nabla\times{{\hat{\vec{R}}}\over{R^2}}\right)\right]dV^'</MATH>|9.6}}
Wyrażenie {{Formuła|<MATH>\nabla\times\vec{J}^'</MATH>}} jest równe zero, ponieważ różniczkujemy po współrzędnych nienależących do wektora gęstości prądu elektrycznego płynącego w danym punkcie.
Zatem na podstawie powyższych wywodów i z obliczeń {{LinkWzór|9.6}} i tożsamości {{LinkWzór|2.19|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}} dostajemy wzór na prawo Gaussa, która jest dywergencją pola magnetycznego w danym punkcie, która jest równa zero.
{{CentrujWzór|<MATH>\operatorname{div}\vec{B}=0</MATH>|9.7}}
Jest to '''różniczkowe prawo Gaussa dla magnetostatyki'''.
== Całkowe prawo Gausa dla pola magnetostatycznego ==
Przecałkujmy obustronnie różniczkowe prawo Gaussa, w lewej jego strony zamieńmy całkowanie po objętości, którą ogranicza pewna zamknięta powierzchnia według twierdzenia Ostrogradskiego-Gaussa zamieniając na całkowanie po tej powierzchni:
{{CentrujWzór|<MATH>\int_V\operatorname{div}\vec{B}dV=0\Rightarrow \int_V\nabla\vec{B}dV=0\Rightarrow\int_S\vec{B}\cdot d\vec{S}=0</MATH>|9.8}}
Zatem na podstawie obliczeń {{LinkWzór|9.8}} całka indukcji pola magnetycznego po powierzchni zamkniętej jest równa zero, co znaczy, że pole magnetyczne jest bezźródłowe.
{{CentrujWzór|<MATH>0=\int_S\vec{B}\cdot d\vec{S}</MATH>|9.9}}
== Różniczkowe prawo Stokesa dla pola magnetostatycznego ==
Wyznaczmy rotację pola magnetycznego wytwarzanej przez nieskończenie duży przewodnik z prądem i oznaczając zmienne zależne primami, które są to tzn. gęstość prądu i infinitezymalna objętość, wtedy korzystając z prawa Biota-Savarte na wektor indukcji pola magnetycznego pochodzącego od tego przewodnika:
{{CentrujWzór|<MATH>\nabla\times\vec{B}=
{{\mu_0}\over{4\pi}}\int_V\nabla\times\left(\vec{J}^'\times{{\hat{\vec{R}}}\over{R^2}}\right)dV^'=
{{\mu_0}\over{4\pi}}\int_V\vec{J}^'\left(\nabla{{\hat{\vec{R}}}\over{R^2}}\right)dV^'-{{\mu_0}\over{4\pi}}\int_V\left(\vec{J}^'\nabla\right){{\hat{\vec{R}}}\over{R^2}}dV^'</MATH>|9.10}}
Aby sprawdzić, czy drugi wyraz znika w {{LinkWzór|9.10}} policzmy wyrażenie występujące jako drugi wyraz wspomnianym wyrażeniu:
{{CentrujWzór|<MATH>\int_V\left({J}^'\nabla\right){{\hat{\vec{R}}}\over{R^2}}dV^'=\int_V\left(J^'_i\nabla_i \left(\vec{k}_j{{\hat{R}_j}\over{R^2}}\right)\right)dV^'=
\int_V\vec{k}_j \left(J^'_i\nabla_i\left({{\hat{R}_j}\over{R^2}}\right)\right)dV^'=\;</MATH>{{Br}}<MATH>=\vec{k}_j\left(\int_V\nabla_i\left( J_i^'{{\hat{R}_j}\over{R^2}}\right)dV^'-\int_V{{\hat{R}_j}\over{R^2}}\nabla_iJ^'_idV\right)</MATH>|9.11}}
Drugi wyraz w {{LinkWzór|9.11}} znika, ponieważ różniczkowanie gęstości prądu elektrycznego jest po innych zmiennych niż ona zależy. Dla pierwszego wyrazy wspomnianym równaniu zapisujemy je wedle sposobu:
{{CentrujWzór|<MATH>\int_V\nabla_i J_i^'{{\hat{R}_j}\over{R^2}}dV^'=\int_V\nabla\left(J{{\hat{R}_j}\over{R^2}}\right)dV=
\int_S{{JR_j}\over{R^3}}d\vec{S}</MATH>|9.12}}
Określmy powierzchnię S na tyle dużą, w {{LinkWzór|9.12}} tak by ona zawierała wszystkie ładunki i prądy wewnątrz tej powierzchni ale nie na niej, wtedy na tej powierzchni gęstość prądu {{Formuła|<MATH>\vec{J}\;</MATH>}} jest równa zero. A więc na podstawie powyższych rozważań i z tożsamości {{LinkWzór|2.13|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}} znanego z wiadomości o dystrybuantach, rotacja indukcji pola magnetycznego {{LinkWzór|9.10}} jest równa prawej stronie poniższej równości:
{{CentrujWzór|<MATH>\nabla\times\vec{B}={{\mu_0}\over{4\pi}}\int_V\vec{J}4\pi\delta^3\left(\vec{R}\right)dV^'\Rightarrow\nabla\times\vec{B}=\int_V\mu_0\vec{J}\delta^3\left(\vec{R}\right)dV^'\Rightarrow\nabla\times\vec{B}=\mu_0\vec{J}</MATH>|9.13}}
Ostatecznie '''różniczkowe prawo Stokesa''' mówi, że rotacja indukcji pola magnetycznego w danym punkcie jest równa gęstości prądu panującego w tymże punkcie pomnożona przez przenikalność magnetyczną próżni:
{{CentrujWzór|<MATH>\operatorname{rot}\vec{B}=\mu_0\vec{J}</MATH>|9.14}}
== Całkowe prawo Stokesa dla pola magnetostatycznego ==
Przeprowadźmy obustronne całkowanie po pewnej powierzchni różniczkowego prawa Stokesa {{LinkWzór|9.14}}, którego ogranicza pewny zamknięty kontur, korzystając z twierdzenia Stokesa dla jego lewej strony i z definicji gęstości prądu elektrycznego {{LinkWzór|8.6|Magnetostatyka}} jako pochodną malutkiego natężenia prądu elektrycznego płynącego przez malutką powierzchnię, przez którą płynie ten prąd i zwrocie zgodnym z kierunkiem płynięcia rozważanego prądu:
{{CentrujWzór|<MATH>\int_S\operatorname{rot}\vec{B}d\vec{S}=\mu_0\int\vec{J}d\vec{S}\Rightarrow
\oint_l\vec{B}d\vec{l}=\mu_0\int_S dI\Rightarrow \oint_l\vec{B}d\vec{l}=\mu_0 I\;</MATH>|9.15}}
* gdzie:{{Formuła|<MATH>I=\sum^N_{i=1}I_i\;</MATH>}} jest to natężenie prądu elektrycznego płynącego przez pewną powierzchnię, którą ogranicza ściśle określony kontur, jest ona sumą wszystkich prądów we wszystkich przewodnikach spełniającego te dysputy.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
d4j961rrm3up9bxfhybi1tc69ig48mq
Elektrodynamika klasyczna/Magnetyczny potencjał wektorowy
0
16694
558878
470167
2026-10-08T00:42:02Z
Persino
2851
558878
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
W elektrostatyce udowodniliśmy, że wektor natężenia elektrycznego można było przedstawić jako gradient potencjału elektrycznego, to w magnetyzmie wektor indukcji magnetycznej można przedstawić jako rotację potencjału wektorowego.
== Potencjał wektorowy ==
Przedstawmy wektor indukcji magnetycznej przez wektor potencjału wektorowego, jako rotację wektora potencjału wektorowego:
{{CentrujWzór|<MATH>\vec{B}=\nabla\times\vec{A}</MATH>|10.1}}
W ogólności można powiedzieć, że potencjał wektorowy nie jest prostopadły do wektora indukcji magnetycznej, mimo że: {{Formuła|<MATH>\vec{A}\cdot\vec{B}=\vec{A}\cdot(\nabla\times\vec{A})</MATH>}}, ponieważ ∇ jest operatorem, a nie wektorem. Gdyby był wektorem, to rzeczywiście było by powyższe wyrażenie równe zero.
Znając definicję wektora indukcji magnetycznej {{Formuła|<MATH>\vec{B}</MATH>}} przez wektor potencjału wektorowego{{Formuła|<MATH>\vec{A}</MATH>}} w postaci rotacji potencjału wektorowego czyli {{LinkWzór|10.1}}, wtedy rotację wektora indukcji magnetycznej przy pomocy ostatnio wspomnianego wzoru zapisujemy:
{{CentrujWzór|<MATH>\nabla\times\vec{B}=\nabla\times(\nabla\times\vec{A})=\nabla(\nabla\vec{A})-\Delta\vec{A}</MATH>|10.2}}
Ostatecznie prawo Ampera {{LinkWzór|9.14|Wektor_indukcji_magnetycznej}}, wedle przedstawienia rotacji wektora indukcji magnetycznej {{LinkWzór|10.2}}, która jest funkcją wektora potencjału wektorowego, zapisujemy:
{{CentrujWzór|<MATH>\nabla(\nabla\vec{A})-\Delta\vec{A}=\mu_0\vec{J}</MATH>|10.3}}
Równanie {{LinkWzór|10.3}} jest bardzo trudne do rozwiązania, ze względu na jego skomplikowaną postać, a więc wprowadźmy cechowanie w postaci zwanej '''cechowaniem Coulomba'''.
{{CentrujWzór|<MATH>\nabla\vec{A}=0</MATH>|10.4}}
Prawo Ampere'a w przedstawieniu przez potencjał wektorowy po wykorzystaniu cechowania Coulomba {{LinkWzór|10.4}}, obrazuje się to według równania:
{{CentrujWzór|<MATH>\Delta \vec{A}=-\mu_0\vec{J}</MATH>|10.5}}
Rozwiązując równanie różniczkowe {{LinkWzór|10.5}}, otrzymujemy równanie tak jak dla równania Poissona w elektrostatyce {{LinkWzór|2.11|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}}, tylko w postaci wektorowej a nie skalarnej, ponieważ w prawie Ampera mamy gęstość prądu elektrycznego zamiast gęstości ładunku:
{{CentrujWzór|<MATH>\vec{A}={{\mu_0}\over{4\pi}}\int{{\vec{J}(\vec{r})}\over{R}}dV</MATH>|10.6}}
Widzimy, że natężenie potencjału wektorowego pola magnetycznego w danym punkcie jest zależne od gęstości natężenia prądu elektrycznego jakie płyną w punkcie o wektorze wodzącym {{Formuła|<MATH>\vec{r}\;</MATH>}} w odległości R od tego punktu, w którym liczymy wspomnianą wielkość.
Iloczyn gęstości prądu i infinitezymalnej objętości, w której ta gęstość występuje możemy przedstawić jako iloczyn wielkości natężenia prądu elektrycznego i z infinitezymalnej długości o kierunku i zwrocie zgodnym z kierunkiem i zwrotem płynięcia prądu:
{{CentrujWzór|<MATH>JdV={{I}\over{S}}dV={{I}\over{S}}Sdl=Idl\Rightarrow \vec{J}dV=Id\vec{l}</MATH>|10.7}}
Prawo {{LinkWzór|10.6}} mówi jaki jest potencjał wektorowy pola magnetycznego w ściśle określonym punkcie, a w nim występującą wielkość {{Formuła|<MATH>\vec{J}dV=Idl\;</MATH>}} możemy przedstawić przy pomocy obliczeń {{LinkWzór|10.7}} dla prądów liniowych:
{{CentrujWzór|<MATH>\vec{A}={{\mu_0}\over{4\pi}}\int{{\vec{I}}\over{R}}dl={{\mu_0 I}\over{4\pi}}\int{{d\vec{l}}\over{R}}</MATH>|10.8}}
Obierzmy pewną płaszczyznę o grubości dh, w której płynie prąd, kierunek w której płynie prąd jest równoległy do powierzchni płaszczyzny, którego małym elementem jest dS. Rozważaną szerokość, w której płynie prąd, którego kierunek jest prostopadły do grubości płaszczyzny czyli dl.
Iloczyn wektora gęstości prądu elektrycznego i infinitezymalnej objętości, w której płynie ten prąd jest równy iloczynowi wektora gęstości prądu powierzchniowego i elementu nieskończenie małego jego powierzchni, co dowód tej zależności przedstawiamy poniżej:
{{CentrujWzór|<MATH>JdV={{dI}\over{dS}}dV={{dI}\over{dldh}}dl dh da=
{{dI}\over{dh}}dlda=KdS\Rightarrow \vec{J}dV=\vec{K}dS</MATH>|10.9}}
Dla prądów powierzchniowych w przedstawieniu {{LinkWzór|10.9}} równanie {{LinkWzór|10.6}} możemy przedstawić wedle:
{{CentrujWzór|<MATH>\vec{A}={{\mu_0}\over{4\pi}}\int{{\vec{K}}\over{R}}dS</MATH>|10.10}}
Wzory {{LinkWzór|10.6}}, {{LinkWzór|10.8}} i {{LinkWzór|10.10}} stanowią jak obliczać potencjał wektorowy na prądów powierzchniowych, liniowych i powierzchniowych.
== Prawo Gaussa a definicja potencjału wektorowego ==
Możemy wykorzystać z definicji potencjału wektorowego dla pola magnetycznego wedle wzoru {{LinkWzór|10.1}}, wtedy lewa strona prawa Gaussa dla pola magnetycznego {{LinkWzór|9.7|Wektor_indukcji_magnetycznej}} możemy zapisać wedle:
{{CentrujWzór|<MATH>\nabla\cdot\vec{B}=\nabla\cdot(\nabla\times\vec{A})=
\nabla_i\epsilon_{ijk}\nabla_jA_k=
{{1}\over{2}}\left(
\epsilon_{ijk}\nabla_i\nabla_j+\epsilon_{ijk}\nabla_i\nabla_j\right)A_k={{1}\over{2}}\left(\epsilon_{ijk}\nabla_i\nabla_j+\epsilon_{jik}\nabla_i\nabla_j\right)A_k=\;</MATH>{{Br}}<MATH>=
{{1}\over{2}}\left(\epsilon_{ijk}\nabla_i\nabla_j-\epsilon_{ijk}\nabla_i\nabla_j\right)A_k=0
</MATH>|10.11}}
A zatem taka definicją potencjału wektorowego {{LinkWzór|10.1}} załatwia, że prawo Gausa jest automatycznie spełnione. Podobnie jest w elektrostatyce, że mając definicje potencjału skalarnego {{LinkWzór|3.5|Pole_skalarne}}, załatwia że prawo Stokesa dla elektrostatyki {{LinkWzór|2.17|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}} jest też automatycznie spełnione.
== Potencjał wektorowy a prawo Biota-Savarta dla prądów liniowych ==
Możemy wyrazić indukcję pola magnetycznego poprzez potencjał magnetyczny jako rotację tejże wielkości dla prądów liniowych, którego potencjał wektorowy dla prądów liniowych jest zdefiniowany wedle wzoru {{LinkWzór|10.8}}, wtedy wzór nas wektor indukcji pola magnetycznego obliczamy według:
{{CentrujWzór|<MATH>\vec{B}=\nabla\times\vec{A}=
\nabla\times\left({{\mu_0I}\over{4\pi}}\int{{d\vec{l}^'}\over{R}}\right)=
{{\mu_0I}\over{4\pi}}\int\nabla\times{{d\vec{l}^'}\over{R}}</MATH>|10.12}}
Wyznaczmy rotację ilorazu wektora różniczki małego odcinka linii {{Formuła|<MATH>d\vec{l}\;</MATH>}}, w której płynie prąd liniowy przez odległość do punktu od tego odcinka linii, w którym będziemy wyznaczać wektor indukcji pola magnetycznego wyrażającego się wedle wzoru {{LinkWzór|10.12}}, zatem to nasze wyrażenie, które chcemy przekształcić napiszmy go wedle:
{{CentrujWzór|<MATH>\nabla\times{{d\vec{l}^'}\over{R}}=k_i
\epsilon_{ijk}\nabla_j{{d\vec{l}^'_k}\over{R}}=
d\vec{l}^'_k\epsilon_{ijk}\nabla_j{{1}\over{R}}=
d\vec{l}^'_k\epsilon_{ijk}{{\partial R}\over{\partial x_j}}{{\partial}\over{\partial R}}{{1}\over{R}}=-d\vec{l}^'_k\epsilon_{ijk}{{x_j-x_j^'}\over{R}}{{1}\over{R^2}}=-\epsilon_{ijk}{{x_j-x_j^'}\over{R^3}}d\vec{l}^'_k=-{{\vec{R}\times d\vec{l}^'}\over{R^3}}=\;</MATH>{{Br}}<MATH>={{d\vec{l}^'\times{\vec{R}}}\over{R^3}}={{d\vec{l}^'\times{\hat{\vec{R}}}}\over{R^2}}</MATH>|10.13}}
Powróćmy do naszego wzoru na indukcję magnetyczną {{LinkWzór|10.12}}, którego liczenie jeszcze nie dokończyliśmy, ale przy pomocy obliczeń {{LinkWzór|10.13}}, które wylicza ściśle określone wyrażenie, to możemy to zrobić:
{{CentrujWzór|<MATH>\vec{B}={{\mu_0I}\over{4\pi}}\int\nabla\times{{d\vec{l}^'}\over{R}}=
{{\mu_0I}\over{4\pi}}\int{{d\vec{l}^'\times{\hat{\vec{R}}}}\over{R^2}}</MATH>|10.14}}
Co jest '''prawem Biota-Savarte''' wprowadzonych według wzoru {{LinkWzór|9.1|Wektor_indukcji_magnetycznej}}.
== Multipolowe rozwinięcie potencjału wektorowego ==
{{Rysunek|Multipole elektryczne.jpg|rmdpm|Rozwinięcie multipolowe dla pola magnetycznego}}
W elektrostatyce napisano coś rozwinięciach multipolowych, które poniżej wykorzystamy. Odwrotność odległości punktu w którym liczymy potencjał wektorowy od danym punkcie, w której występuje jakiś prąd, tj. wzór {{LinkWzór|5.15|Rozwinięcia_kwadrupolowe}}, tzn.:
{{CentrujWzór|<MATH>{{1}\over{R}}={{1}\over{\sqrt{r^2-(r^')^2-2rr^'\cos\phi}}}={{1}\over{r}}\sum^{\infty}_{n=0}\left({{r^'}\over{r}}\right)^nP_n(\cos\phi)</MATH>|10.15}}
Potencjał wektorowy dla prądów liniowych w danym punkcie w zależności od kształtu tego przewodnika {{LinkWzór|10.8}} w rozwinięciu multipolowym, w celu jego wyznaczenia skorzystamy ze wzoru {{LinkWzór|10.15}}, jest zapisana przez:
{{CentrujWzór|<MATH>\vec{A}(\vec{r})={{\mu_0I}\over{4\pi}}\oint{{1}\over{r}}d\vec{l}^'=
{{\mu_0}\over{4\pi}}\sum^{\infty}_{n=0}{{1}\over{r^{n+1}}}\oint(r^')^nP_n(\cos\phi)d\vec{l}^'</MATH>|10.16}}
Wzór {{LinkWzór|10.16}} można rozpisać znając definicję funkcji P{{Sub|n}}(x) jako wielomianów Legendre'a, wtedy ten nasz wzór zapisujemy:
{{CentrujWzór|<MATH>\vec{A}={{\mu_0I}\over{4\pi}}\left[
{{1}\over{r}}d\vec{l}^'+{{1}\over{r^2}}\oint{{r^'\cos\phi}d\vec{l}^'}+
{{1}\over{r^3}}\oint (r^')^2\left({{3}\over{2}}\cos^2\phi-{{1}\over{2}}\right)d\vec {l}+...
\right]</MATH>|10.17}}
Wyraz odpowiedzialny za monopol magnetyczny magnetostatyce zeruje się, bo mamy do czynienia z prądami kołowymi. Nie może być tak, że prąd skoś dopływa i gdzieś dopływa, wtedy mamy do czynienia z kreacją ładunku elektrycznego, co nie jest spełnione z zasadą, że ładunek nie może powstać, ani nie może być zniszczony.
{{CentrujWzór|<MATH>\oint d\vec{l}^'=0</MATH>|10.18}}
Potencjał wektorowy w magnetyzmie, a właściwie człon dipolowy według wzoru {{LinkWzór|10.17}} przedstawia się:
{{CentrujWzór|<MATH>\vec{A}_{dip}(\vec{r})={{\mu_0I}\over{4\pi r^2}}\oint r^'\cos\phi d\vec{l}^'=
{{\mu_0I}\over{4\pi r^2}}\oint \left(\vec{r^'}\hat{r}\right)d\vec{l}^'
</MATH>|10.19}}
Moment dipolowy dla magnetostatyki definiujemy jako iloczyn natężenia prądu kołowego i pola obejmowanych przez ten prąd powierzchni płaskiej i ten iloczyn ma kierunek prostopadły do tej powierzchni, a zwrot do góry, jeśli kierunek płynięcia prądu jest odwrotny z kierunkiem ruchu wskazówek zegara, wtedy wektor momentu dipolowego jest:
{{CentrujWzór|<MATH>I\oint d\vec{S}=\vec{m}</MATH>|10.20}}
Obierzmy sobie pewien skalar T, wtedy z prawa Stokesa dochodzimy do wniosku:
{{CentrujWzór|<MATH>\int_S\nabla\times Td\vec{S}=\oint Td\vec{l}\Rightarrow
\int_Sd\vec{S}\times\nabla T=\oint Td\vec{l}\Rightarrow \int_S\nabla T\times d\vec{S}=-\oint T d\vec{l}</MATH>|10.21}}
Zdefiniujmy nasz skalar T jako iloczyn skalarny stałej wektorowej {{Formuła|<MATH>\vec{c}\;</MATH>}} przez położenie danej cząstki dipola magnetycznego {{Formuła|<MATH>\vec{r}^'\;</MATH>}}, którego definicja wygląda:
{{CentrujWzór|<MATH>T=\vec{c}\vec{r}^'</MATH>|10.22}}
Wykorzystując definicję skalaru T {{LinkWzór|10.22}}, wtedy w twierdzeniu {{LinkWzór|10.21}} możemy zapisać przekształcenia:
{{CentrujWzór|<MATH>\int\nabla(\vec{c}\vec{r}^')\times d\vec{S}=-\oint (\vec{c}\vec{r}^')d\vec{l}\Rightarrow
\int \vec{c}\times d\vec{S}=-\oint (\vec{c}\vec{r}^')d\vec{l}\Rightarrow\vec{c}\times\int d\vec{S}=-\oint (\vec{c}\vec{r}^')d\vec{l}</MATH>|10.23}}
Niech będzie stała {{Formuła|<MATH>\vec{c}\;</MATH>}} będzie wektorem jednostkowym równoległej i o takim samym zwrocie co wektor położenia, w którym będziemy wyznaczać potencjał dipolowy danego układu rozciągłych dipoli, czyli {{Formuła|<MATH>\vec{c}=\hat{r}</MATH>}}, co wzór końcowym wynikowy {{LinkWzór|10.23}} po dokonaniu tej operacji możemy napisać:
{{CentrujWzór|<MATH>\hat{r}\times\int_S d\vec{S}=-\oint_S(\hat{r}\vec{r}^')d\vec{l}^'</MATH>|10.24}}
Potencjał wektorowy dipolowy {{LinkWzór|10.19}}, na podstawie udowodnionej wcześniej tożsamości {{LinkWzór|10.24}}, można przedstawić:
{{CentrujWzór|<MATH>\vec{A}_{dip}={{\mu_0I}\over{4\pi r^2}}\oint \left(\vec{r^'}\hat{r}\right)d\vec{l}^'=
-{{\mu_0I}\over{4\pi r^2}}\hat{r}\times\int_S d\vec{S}=
-{{\mu_0I}\over{4\pi r^2}}\hat{r}\times\vec{m}={{\mu_0}\over{4\pi}}{{\vec{m}\times\hat{r}}\over{r^2}}</MATH>|10.25}}
Potencjał wektorowy wytarzanego przez dipol magnetyczny o wektorowym momencie dipolowym {{LinkWzór|10.20}} w pewnym punkcie od tego dipola odległych od niego o wektor wodzący {{Formuła|<MATH>\vec{r}\;</MATH>}} jest napisany wedle wzoru {{LinkWzór|10.25}}.
== Pole magnetyczne wokół dipola magnetycznego ==
Wektor potencjału wektorowego dla dipola magnetycznego ze wzoru {{LinkWzór|10.25}} zapisujemy równoważnie:
{{CentrujWzór|<MATH>\vec{A}_{dip}(\vec{r})={{\mu_0}\over{4\pi}}{{\vec{m}\times\hat{r}}\over{r^2}}=
{{\mu_0m}\over{4\pi}}{{\sin\phi}\over{r^2}}\vec{e}_{\phi}</MATH>|10.26}}
Następnym krokiem jest policzenie wektora indukcji magnetycznej jako rotacji z potencjału wektorowego magnetycznego {{LinkWzór|10.1}} z definicji potencjału magnetycznego dla dipola magnetycznego {{LinkWzór|10.26}}:
{{CentrujWzór|<MATH>\vec{B}=\nabla\times\vec{A}=
{{1}\over{r\sin\phi}}\left[{{\partial(\sin\phi A_{\phi})}\over{\partial\phi}}-{{\partial A_{\phi}}\over{\partial\phi}}\right]\vec{e}_r+
{{1}\over{r}}\left[{{1}\over{\sin\phi}}{{\partial A_r}\over{\partial\phi}}-{{\partial}\over{\partial r}}(rA_{\phi})\right]\vec{e}_{\phi}={{1}\over{r\sin\phi}}{{\mu_0 m}\over{4\pi r^2}}2\sin \phi\cos\phi+\;</MATH>{{Br}}<MATH>+{{1}\over{r}}{{\mu_0m\sin\phi}\over{4\pi r^2}}={{\mu_0 m}\over{4\pi r^3}}\left(2\vec{e}_r\cos\phi+\sin\phi e_{\phi}\right)</MATH>|10.27}}
Pole magnetyczne na wektor indukcji magnetycznej dla dipola magnetycznego przedstawia się wzorem na podstawie jego obliczeń {{LinkWzór|10.27}}:
{{CentrujWzór|<MATH>\vec{B}={{\mu_0 m}\over{4\pi r^3}}\left(2\vec{e}_r\cos\phi+\sin\phi e_{\phi}\right)</MATH>|10.28}}
== Warunki brzegowe dla układu dwóch substancji dla pola magnetostatycznego ==
{{Rysunek|Zastosowania prawa Gaussa a magnetostatyka.jpeg|zpg|Zastosowanie prawo Gaussa.}}
Obierzmy sobie mały prostopadłościan, na bardzo małym wycinku powierzchni między granicami dwóch ośrodków magnetycznych, w którym podstawy są równoległe do powierzchni granicy dwóch ośrodków na którym jest położony. Podstawa górna i dolna leżą w różnych ośrodkach. Według prawa Gaussa {{LinkWzór|9.9|Wektor_indukcji_magnetycznej}}, iloczyny skalarne wybierają jej składowe prostopadłe do ścianek tego prostopadłościanu wektora indukcji pola magnetycznego, a nie równoległe tzn. równoległe do wektora powierzchni dla każdej ścianek z odpowiednim minusem w zależności, czy zwrot dla tych wektorów składowej równoległej do wektora powierzchni, czy jest zgodny lub przeciwny z nim. Zastosowanie prawa Gaussa jest na rysunku obok.
Zatem prawo Gaussa dla omawianego prostopadłościanu możemy zapisać wedle:
{{CentrujWzór|<MATH>0=S_{nad}B^{\bot}_{nad}-S_{pod}B^{\bot}_{pod}+S_{prawy}B^{\bot}_{prawy}-S_{lewy}B^{\bot}_{lewy}+S_{za}B^{\bot}_{za}-S_{przez}B^{\bot}_{przed}</MATH>|10.29}}
Strumień bocznych ścianek jest równy średniej wartości indukcji magnetycznej z odpowiednim znakiem w zależności od zgodności wektora indukcji magnetycznej i wektora odpowiednich ścianek. Jeśli przyjmiemy, że mamy bardzo małe prostokąty dla ścianek bocznych i podstaw, by iloraz jakikolwiek pola ścianek bocznych przez pola jakikolwiek podstawy była w przybliżeniu równa zero, i wszystkie pola ścianek dążą do zera, którego podstawy mają równe pola S=S{{Sub|nad}}=S{{Sub|pod}}, które są bardzo małe przy powyższych warunkach, zatem wartość średnia indukcji pola magnetycznego na podstawach są równe wartością w punkcie, w których znajdują się infinitezymalny prostopadłościan, zatem na podstawie tych rozważań równanie {{LinkWzór|10.29}} podzielimy obustronnie przez pole S, po tej czynności możemy przejść do granicy stosunku pola ścianek bocznych do pola podstawy dążących do zera, wtedy możemy przepisać to wedle:
{{CentrujWzór|<MATH>0=B^{\bot}_{nad}-B^{\bot}_{pod}+{{S_{prawy}}\over{S}}B^{\bot}_{prawy}-{{S_{lewy}}\over{S}}B^{\bot}_{lewy}+{{S_{za}}\over{S}}B^{\bot}_{za}-{{S_{przez}}\over{S}}B^{\bot}_{przed} \rightarrow 0=B^{\bot}_{nad}-B^{\bot}_{pod}\Rightarrow B^{\bot}_{nad}=B^{\bot}_{pod}</MATH>|10.30}}
Na podstawie obliczeń {{LinkWzór|10.30}} część prostopadła do powierzchni granicy pomiędzy ośrodkami nie zmienia się.
{{Rysunek|Zastosowanie prawa Stokesa w magnetostatyce.jpg|zps|Zastosowanie prawo Stokesa.}}
Następnym krokiem jest zastosowanie prawa Stokesa i wniosków wynikających z tego prawa. Zakładamy, że mamy prostokąt, który jest prostopadły do bardzo małego wycinka powierzchni granicy pomiędzy ośrodkami, na którym jest położony, a odcinki (górna i dolna) leżą w różnych dwóch ośrodkach i są równolegle do omawianej powierzchni do naszej granicy pomiędzy ośrodkami, ponadto zakładamy, że kierunek obiegania prostokąta jest z niezgodny z kierunkiem wskazówek zegara. Szerokość prostokąta niech będzie l, a wysokość będzie h. Prawo Stokesa dla pola magnetycznego {{LinkWzór|9.15|Wektor_indukcji_magnetycznej}} podczas jego obiegania wycina te fragmenty (składowe) pola magnetycznego, które są prostopadłe do odcinków tego prostokąta, zatem z tego prawa dla pola magnetostatycznego, mamy:
{{CentrujWzór|<MATH>B^{||}_{nad}l-B^{||}_{pod}+B^{||}h-B^{||}h=\mu_0 I</MATH>|10.31}}
Zakładamy, że długości wszystkich odcinków prostokąta oprócz odcinka dolnego i górnego (których długości są takie same) dążą do zera, zatem prawo {{LinkWzór|10.31}} zapisujemy:
{{CentrujWzór|<MATH>B^{||}_{nad}l-B^{||}_{pod}l=\mu_0 I</MATH>|10.32}}
Wiedząc, że powierzchniowa gęstość prądu wynosi:{{Formuła|<MATH>K={{I}\over{l}}</MATH>}}, wtedy dzieląc obustronnie równanie {{LinkWzór|10.32}} przez l, otrzymujemy:
{{CentrujWzór|<MATH>B^{||}_{nad}-B^{||}_{pod}=\mu_0 K</MATH>|10.33}}
Wektor {{Formuła|<MATH>\vec{K}\times\vec{n}\;</MATH>}} jest równoległy do powierzchni, a właściwie do wektora indukcji pola magnetycznego {{LinkWzór|9.1|Wektor_indukcji_magnetycznej}}, a właściwie do jej części równoległej do powierzchni między granicami dla dwóch ośrodków. Wektor indukcji magnetycznej jest równoległy do naszego wektora jednostkowego, zatem prawo {{LinkWzór|10.33}} zapisujemy:
{{CentrujWzór|<MATH>\vec{B}^{||}_{nad}-\vec{B}^{||}_{pod}=\mu_0\left(\vec{K}\times\vec{n}\right)</MATH>|10.34}}
* gdzie {{Formuła|<MATH>\vec{n}</MATH>}} jest wektorem normalnym do powierzchni, w którym płynie prąd powierzchniowy, ale wiadomo, że zachodzi tutaj: {{Formuła|<MATH>\vec{K}\bot\vec{n}</MATH>}}.
Jeśli do ostatniego wzoru dodamy wzór, wynikający z prawa Gaussa obustronnie {{LinkWzór|10.30}}, wtedy dostajemy:
{{CentrujWzór|<MATH>\vec{B}^{\bot}_{nad}-\vec{B}^{\bot}_{pod}+\vec{B}^{||}_{nad}-\vec{B}^{||}_{pod}=\mu_0\left(\vec{K}\times\vec{n}\right)</MATH>|10.35}}
Jeśli dodamy składowe do siebie składowe wektora indukcji magnetycznej pod granicą lub nad, wtedy mamy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{B}^{\bot}_{nad}+\vec{B}^{||}_{nad}=\vec{B}_{nad}</MATH>|10.36}}
| 2 = {{CentrujWzór|<MATH>\vec{B}^{\bot}_{pod}+\vec{B}^{||}_{pod}=\vec{B}_{pod}</MATH>|10.37}}
}}
Ale wzór {{LinkWzór|10.35}}, w którym przegrupujemy wyrazy z równoległą i prostopadłą do płaszczyzny wektora indukcji magnetycznej, w którym płyną prądy, w taki sposób by odpowiednio wyrazy ze składowymi nad i pod granicą między ośrodkami znajdowały się blisko siebie, i stosując potem wzór na dodawanie tych składowych, czyli sumowanie do całkowitego wektora indukcji pola magnetycznego wedle {{LinkWzór|10.36}} i {{LinkWzór|10.37}}, wtedy ten wzór przyjmuje postać:
{{CentrujWzór|<MATH>\vec{B}_{nad}-\vec{B}_{pod}=\mu_0(\vec{K}\times\vec{n})</MATH>|10.38}}
Z warunku cechowania {{LinkWzór|10.4}} i z prawa Ostrogradskiego-Gaussa, oczywiście jest, że mamy:
{{CentrujWzór|<MATH>\nabla\vec{A}=0\Rightarrow\int\nabla\vec{A}dV=0\Rightarrow\int\vec{A} d\vec{S}=0</MATH>|10.39}}
Rozważając różne powierzchnie dążące do punktu dochodzimy na podstawie końcowego wyniku {{LinkWzór|10.39}}, że potencjał wektorowy jest wielkością ciągłą.
Na ostateczny wzór wynikający z prawa Stokesa i Gaussa, pomnóżmy lewostronnie {{LinkWzór|10.38}} przez wektor jednostkowy {{Formuła|<MATH>\vec{n}</MATH>}}, oraz z definicji na wektor indukcji magnetycznej przez potencjał wektorowy pola magnetycznego {{LinkWzór|10.1}}, otrzymujemy:
{{CentrujWzór|<MATH>\vec{n}\times\left(\nabla\times\left(\vec{A}_{nad}-\vec{A}_{pod}\right)\right)=\mu_0\vec{n}\times(\vec{K}\times\vec{n})</MATH>|10.40}}
Policzmy wyrażenie, które będzie nam potrzebne później:
{{CentrujWzór|<MATH>\vec{n}\times(\nabla\times\vec{A})=k_{i}\epsilon_{ijk}n_{j}(\nabla\times\vec{A})_{k}=\vec{k}_i\epsilon_{ijk}n_j\epsilon_{kmn}\nabla_mA_{n}=
\vec{k}_i\epsilon_{ijk}\epsilon_{kmn}n_j\nabla_mA_n=\vec{k}_i\left(\delta_{im}\delta_{jn}-\delta_{in}\delta_{jm}\right)n_j\nabla_mA_n=</MATH>{{Br}}
<MATH>=
\vec{k}_i\delta_{im}\delta_{jn}n_j\nabla_mA_n-\vec{k}_i\delta_{in}\delta_{jm}n_j\nabla_mA_n=\vec{k}_i n_j \nabla_i A_j-\vec{k}_in_j\nabla_j A_i=\vec{k}_i\nabla_i(n_jA_j)-\vec{k}(n_j\nabla_j)A_i
=\nabla(\vec{n}\vec{A})-(\vec{n}\nabla)\vec{A}</MATH>|10.41}}
Zatem na podstawie {{LinkWzór|10.41}} otrzymujemy tożsamość:
{{CentrujWzór|<MATH>\vec{n}\times(\nabla\times\vec{A})=\nabla(\vec{n}\vec{A})-(\vec{n}\nabla)\vec{A}</MATH>|10.42}}
Zatem względem prawa {{LinkWzór|10.10}} wektor potencjału wektorowego jest równoległy do płaszczyzny granicy pomiędzy ośrodkami dla punktu blisko jej, bo wtedy w przybliżeniu możemy przyjąć w tym małym punkcie prąd płynie w płaszczyźnie płaskiej i z właściwości wektora jednostkowego {{Formuła|<MATH>\vec{n}\;</MATH>}}, który jest prostopadły do powierzchni, w której płynie prąd w danym punkcie i stąd otrzymujemy warunki prostopadłości:{{Formuła|<MATH>\vec{n}\bot\vec{A}_{nad}</MATH>}} i {{Formuła|<MATH>\vec{n}\bot\vec{A}_{pod}</MATH>}}, a także z definicji podwójnego iloczynu wektorowego, który można rozłożyć na dwa składniki, w których występują tylko iloczyny skalarne i mnożenie przez liczbę:
{{CentrujWzór|<MATH>\vec{n}\times(\vec{K}\times\vec{n})=\vec{K}(\vec{n}\vec{n})-\vec{n}(\vec{K}\vec{n})=\vec{K}</MATH>|10.43}}
Wzór {{LinkWzór|10.40}} na podstawie omawianych warunków prostopadłości wektora {{Formuła|<MATH>\vec{A}\;</MATH>}} do wektora jednostkowego, która jest jednocześnie prostopadła do danego punktu na naszej powierzchni, w której płynie prąd elektryczny o danej gęstości prądu {{Formuła|<MATH>\vec{K}\;</MATH>}} i z tożsamości {{LinkWzór|10.43}}, otrzymujemy:
{{CentrujWzór|<MATH>-(\vec{n}\nabla)(\vec{A}_{nad}-\vec{A}_{pod})=\mu_0\vec{K}</MATH>|10.44}}
Z definicji pochodnej kierunkowej jako różniczkowanie wzdłuż wektora jednostkowego prostopadłego do granicy między dwoma ośrodkami należy przyjąć:
{{CentrujWzór|<MATH>\vec{n}\nabla={{\partial}\over{\partial \vec{n}}}</MATH>|10.45}}
wtedy wzór {{LinkWzór|10.44}}, a także z tożsamości na pochodną kierunkową wzdłuż wektora {{Formuła|<MATH>\vec{n}\;</MATH>}} wedle {{LinkWzór|10.45}}, i zastępując we przedostatnim wzorze wyrażeniem występujące w ostatnim równaniu, a właściwie jego lewą stronę przedostatniego równania zastępujemy przez jego prawą stronę ostatniego równania, zatem mamy prawo powiedzieć:
{{CentrujWzór|<MATH>{{\partial \vec{A}_{nad}}\over{\partial\vec{n}}}-{{\partial \vec{A}_{pod}}\over{\partial\vec{n}}}=-\mu_0\vec{K}</MATH>|10.46}}
Jest to warunek brzegowy na zmianę potencjału wektorowego w danym punkcie na granicy między dwoma ośrodkami, jeśli na tej granicy płynie prąd o gęstości prądu {{Formuła|<MATH>\vec{K}\;</MATH>}}.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
ghlzmiubtqlb0qtszty5391qttao5y7
Elektrodynamika klasyczna/Elementarne właściwości materii w polu magnetycznym
0
16767
558879
513484
2026-10-08T00:50:36Z
Persino
2851
558879
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
W tym rozdziale zapoznamy się na jakie kryteria dzielimy substancje ze względu na oddziaływania z polem magnetycznym. Wprowadzimy małą teorię jak oddziaływuje pojedynczy dipol z polem magnetycznym zewnętrznym, jaka jest jego energia w tymże polu magnetycznym, i co to jest magnetyzacja ośrodka, która powstaje w wyniku oddziaływania w tymże polu.
== Rodzaje magnetyków ==
Magnetyk jest to substancja, która różnie zachowuje się pod wpływem pola magnetycznego.
=== Diamagnetyki ===
Pole magnetyczne wytwarzane przez te substancje jest przeciwne skierowane do kierunku pola zewnętrznego, ale o takim samym kierunku, czyli zatem diamagnetyki osłabiają zewnętrzne pole magnetyczne. Gdy pole magnetyczne zewnętrzne znika, to również pole magnetyczne diamagnetyków wywarzanych na skutek zewnętrznego pola magnetycznego wyniku polaryzacji tego magnetyka też znika.
=== Paramagnetyki ===
Pole magnetyczne wytwarzane przez te substancję jest zgodne do kierunku zewnętrznego pola magnetycznego. Te substancje umacniają pole magnetyczne zewnętrzne, którego pole tych magnetyków powstałe jest w wyniku polaryzacji w zewnętrznym polu magnetycznym. Podobnie jak przy diamagnetykach, gdy pole zewnętrze znika, to również pole wytwarzane przez te substancję też znika.
=== Ferromagnetyki ===
Są to substancje, które zachowują swoje namagnesowanie nawet wtedy, gdy pole zewnętrzne znika. Teoria jak zachowują się te substancję zależy od historii namagnesowania tychże substancji, i wartości pola indukcji magnetycznej pola zewnętrznego. Jest to pętla histerezy.
{{Rysunek|Ciclo di isteresi.PNG|ph|Pętla histerezy dla magnetyków, os odciętych to natężenie pola zewnętrznego, os rzędnych to namagnesowanie ferromagnetyka}}
Załóżmy, że ferromagnetyk wcale nie jest namagnesowany, odpowiada to na wykresie punktowi (B,H)=(0,0). Początkowo zwiększajmy pole magnetyczne zewnętrzne, wtedy zwiększa się namagnesowania ferromagnetyka, to można robić do maksymalnego punktu na wykresie. Wtedy można zmniejszyć to pole zewnętrzne aż do zera, wtedy pozostaje namagnesowanie mimo nie istnienia pola zewnętrznego, mimo że ono jest niezerowe. Samo pole ferromagnetyka jest to namagnesowanie resztkowe. Zmieniając pole zewnętrzne, tym razem by było ono przeciwne, i dalej zwiększając to pole w kierunku przeciwnym dochodzi znów do maksymalnej wartości. Następnie można zmniejszyć to pole zewnętrzne aż do wartości zerowej. Dochodzimy znów do namagnesowania resztkowego ferromagnetyka. Znów zmieniając kierunek namagnesowania możemy dojść do maksymalnego namagnesowania maksymalnego i tak dalej.
Pętla histerezy składa się z czterech ćwiartek. Ćwiartka II i IV są ćwiartkami trwałych magnesów.
== Momenty sił i same siły działające na dipol magnetyczny ==
{{Rysunek|Ramka z płynącym prądem elektrycznym w polu magnetycznym, a jego moment magnetyczny.jpg|rpm1|Ramka w polu magnetycznym}}
Aby nastąpił obrót ramki wokół osi iksowej, to musi być niezerowy moment siły działający na ramkę. Jedynymi niezerowymi momentami są to momenty działające na prawą i lewą część ramki. Moment siły działający na lewy przewód ramki ma moment siły jest o wartości:
{{CentrujWzór|<MATH>N_{nad}=F{{a}\over{2}}\sin\theta\;</MATH>|11.1}}
Moment siły działający na lewy przewód ma taką samą wartość jak w punkcie {{LinkWzór|11.1}} i wynosi:
{{CentrujWzór|<MATH>N_{pod}=F{{a}\over{2}}\sin\theta\;</MATH>|11.2}}
Zwrot i kierunek momentu siły działający na lewy lub prawy przewód ramki jest taki sam, zatem wartość całkowitego momentu siły działający działający na ramkę wynosi:
{{CentrujWzór|<MATH>N=N_{nad}+N_{pod}=F{{a}\over{2}}\sin\theta+F{{a}\over{2}}\sin\theta=Fa\sin\theta\;</MATH>|11.3}}
Przyjmować będziemy, że wartość siły działającą na lewą lub prawą część ramki obliczonej wedle wzoru {{LinkWzór|8.9|Magnetostatyka}} dla naszego przypadku jest:
{{CentrujWzór|<MATH>F=IlB\;</MATH>|11.4}}
bo lewy i prawy przewód ramki jest prostopadły do wektora indukcji magnetycznej B pola magnetycznego. A zatem moment siły {{LinkWzór|11.3}}, na podstawie siły magnetycznej zdefiniowanej wedle wzoru {{LinkWzór|11.4}}, jest równy:
{{CentrujWzór|<MATH>N=IlBa\sin\theta=(la)IB\sin\theta=SIB\sin\theta\;</MATH>|11.5}}
Jeśli przyjmować będziemy, że iloczyn m=SI jest tak zwanym momentem magnetycznym, zatem wyrażenie {{LinkWzór|11.5}} na moment siły działającej na ramkę, korzystając z definicji momentu magnetycznego, jest wyrażony:
{{CentrujWzór|<MATH>N=\mu B\sin\theta\;</MATH>|11.6}}
Wektor momentu siły o wartości {{LinkWzór|11.6}}, znając jego kierunek i zwrot, możemy wyrazić:
{{CentrujWzór|<MATH>\vec{N}=\vec{\mu}\times\vec{B}\;</MATH>|11.7}}
W magnetyzmie istnieje coś takiego, że wektor momentu siły stara się by był on ustawiony zgodnie z wektorem indukcji magnetycznej pola magnetycznego. To zjawisko nazywamy paramagnetyzmem.
Policzmy siłę całkowitą działający na dipol elektryczny w niejednorodnym polu magnetycznym na lewą i prawą część ramki dipola magnetycznego, wtedy siła działająca na dipol eletryczny jest sumą sił działająca na część lewą i prawą rozważanego dipola magnetycznego:
{{CentrujWzór|<MATH>\vec{F}=\vec{F}_{+}+\vec{F}_{-}=
I\vec{l}\times\left(\vec{B}_+-\vec{B}_-\right)=
I\vec{l}\times\delta\vec{B}=I\vec{l}\times \left[(\vec{a}\cdot\operatorname{div})\vec{B}\right]=
I\left(\vec{a}\cdot\operatorname{div}\right)\left(\vec{l}\times\vec{B}\right)=
I\operatorname{grad}\left[\vec{a}\cdot\left(\vec{l}\times\vec{B}\right)\right]=\;</MATH>{{Br}}<MATH>=I\operatorname{grad}\left[\vec{B}\left(\vec{a}\times\vec{l}\right)\right]=I\operatorname{div}\left(\vec{B}\cdot\vec{S}\right)=
I\left(\vec{S}\cdot\operatorname{div}\right)\vec{B}=\left[\left(I\vec{S}\right)\cdot\operatorname{div}\right]\vec B=\left(\vec{\mu}\cdot\operatorname{div}\right)\vec{B}
</MATH>|11.8}}
Całkowita siła działająca na dipol elektryczny w magnetycznym niejednorodnym polu magnetycznym jest równa:
{{CentrujWzór|<MATH>\vec{F}=\left(\vec{\mu}\cdot\operatorname{div}\right)\vec{B}</MATH>|11.9}}
Jeśli w niejednorodnym polu magnetycznym całkowity moment sił działający na ramkę z prądem jest {{LinkWzór|11.7}} przy wartości siły działającą na lewą i prawą część ramki {{LinkWzór|11.9}}, wtedy całkowity moment siły jest równy sumie momentów sił działających na ramkę i na środek masy ramki dla której siła jest napisana wzorem {{LinkWzór|11.9}}:
{{CentrujWzór|<MATH>\vec{N}=\vec{\mu}\times\vec{B}+\vec{r}\times\vec{F}</MATH>|11.10}}
* gdzie: {{Formuła|<MATH>\vec{F}</MATH>}} jest to siła obliczone w {{LinkWzór|11.9}}.
== Energia dowolnego dipola magnetycznego ==
Mając wzór na moment siły działający na ramkę z prądem, możemy policzyć jego energię, ale przedtem policzmy jaką wykonuje pracę ramka z prądem przy obrocie jego o kąt {{Formuła|<MATH>d\vec{\alpha}\;</MATH>}}, napiszmy jaka jest praca sił o obrocie ramki od kąta π/2, w której przyjmujemy energię ramki za zero, do kąta α:
{{CentrujWzór|<MATH>U=\int^{\alpha}_{{{\pi}\over{2}}} dW=\int^{\alpha}_{{{\pi}\over{2}}}\vec{N}d\vec{\alpha}=
\int^{\alpha}_{{{\pi}\over{2}}}\left(\vec{\mu}\times\vec{B}\right)d\vec{\alpha}=
\int^{\alpha}_{{{\pi}\over{2}}}\mu B\sin\alpha d\alpha=
\mu B[-\cos\alpha]^{\alpha}_{{{\pi}\over{2}}}=-\mu B\cos\alpha=-\vec{\mu}\cdot\vec{B}</MATH>|11.11}}
Dochodzimy do wniosku, że energia dowolnego dipola na podstawie obliczeń {{LinkWzór|11.11}} jest napisana:
{{CentrujWzór|<MATH>U=-\vec{\mu}\cdot\vec{B}</MATH>|11.12}}
Widzimy, że energia dipola elektrycznego jest równa iloczynowi skalarnemu momentu dipolowego magnetycznego przez wektor indukcji pola magnetycznego.
== Orbity atomowe, a wpływ na niego w obecności pola magnetycznego ==
{{Rysunek|FilInfini.svg|rpm|Ramka w polu magnetycznym}}
Elektrony oprócz spinu są wyposażoną w moment pędu, dzięki któremu krążą wokół jądra. Natężeniem prądu elektronów można napisać jako iloraz ładunku elektrycznego posiadającego przez elektron przez okres obiegu elektronu wokół własnej orbity kołowej:
{{CentrujWzór|<MATH>I={{e}\over{T}}</MATH>|11.13}}
Z definicji prędkości, z którą elektron krąży na obicie kołowej można wyznaczyć z tego wzoru odwrotność okresu, w której elektron okrąży całą orbitę:
{{CentrujWzór|<MATH>v={{2\pi R}\over{T}}\Rightarrow {{v}\over{2\pi R}}={{1}\over{T}}</MATH>|11.14}}
Natężenie prądu {{LinkWzór|11.13}} jest równe na podstawie końcowego wzoru na odwrotność okresu {{LinkWzór|11.14}} pomnożonej przez ładunek elektronu:
{{CentrujWzór|<MATH>I={{ev}\over{2\pi R}}</MATH>|11.15}}
Z definicji momentu dipolowego, a w nim natężenie prądu jest zdefiniowane wedle {{LinkWzór|11.15}}, gdy wiadomo, że S jest kołem o promieniu okręgu r, na którym porusza się elektron, wynika:
{{CentrujWzór|<MATH>\mu=S I=\pi R^2 {{ev}\over{2\pi R}}={{1}\over{2}}evR</MATH>|11.16}}
Moment dipolowy jest wyrażony wektorowo uwzględniając znak ujemny ładunku elektronu, gdy wiadomo, że jego wartość jest wyrażona wedle wzoru {{LinkWzór|11.16}}, a zwrot i kierunek jest zgodny z osią zetową:
{{CentrujWzór|<MATH>\vec{\mu}=-{{1}\over{2}}evR\hat{z}</MATH>|11.17}}
W nieobecności pola magnetycznego równanie ruchu elektronu na orbicie kołowej, na której elektron pędzi z prędkością v, jest przedstawiony:
{{CentrujWzór|<MATH>{{1}\over{4\pi\epsilon_0}}{{e^2}\over{R^2}}=m_e{{v^2}\over{R}}</MATH>|11.18}}
Jeśli w prowadzimy pole magnetyczne jako prostopadłe do płaszczyzny ruchu elektronów na swoich orbitach, wtedy jego równanie ruchu jest w postaci:
{{CentrujWzór|<MATH>{{1}\over{4\pi\epsilon_0}}{{e^2}\over{R^2}}+e\overline{v}B=m_e{{\overline{v}^2}\over{R}}</MATH>|11.19}}
Można odejmować równanie {{LinkWzór|11.19}} od równania {{LinkWzór|11.18}} dla tego samego promienia r, na którym torze porusza się elektron, wtedy otrzymujemy tożsamość:
{{CentrujWzór|<MATH>e\overline{v}B={{m_e}\over{R}}(\overline{v}^2-v^2)\Rightarrow
e\overline{v}B={{m_e}\over{R}}(\overline{v}+v)(\overline{v}-v)</MATH>|11.20}}
Oznaczmy jako różnice prędkości elektronu na tej samej orbicie, gdy mamy pole magnetyczne prostopadłe do płaszczyzny orbity i bez pola magnetycznego, zatem {{Formuła|<MATH>\delta v=\overline{v}-v</MATH>}}, jako, że ta zmiana jest mała, to można również napisać {{Formuła|<MATH>v\simeq\overline{v}</MATH>}}, otrzymujemy:
{{CentrujWzór|<MATH>e\overline{v}B={{m_e}\over{R}}2\overline{v}\delta v\Rightarrow
eB={{2m_e}\over{R}}\delta v\Rightarrow\delta v={{eBR}\over{2m_e}}
</MATH>|11.21}}
Zmiana prędkość na orbicie oznacza zmianę momentu dipolowego magnetycznego:
{{CentrujWzór|<MATH>\delta \vec{\mu}=-{{1}\over{2}}e(\delta v)R\hat{z}\Rightarrow
\delta \vec{\mu}=-{{1}\over{2}}e{{eB}\over{2m_e}}R\hat{z}\Rightarrow
\delta \vec{\mu}=-{{eBR^2}\over{4m_e}}\hat{z}</MATH>|11.22}}
Zmiana momentu dipolowego, jeśli skorzystamy z równania {{LinkWzór|11.17}} i policzymy jego zmianę w polu magnetycznym o wspomnianym kierunku przypadku bez pola i potem z udziałem pola, to wtedy podstawiając do niego zmianę prędkości końcowego wyniku {{LinkWzór|11.22}}, przestawia się:
{{CentrujWzór|<MATH>\delta \vec{\mu}=-{{eBR^2}\over{4m_e}}\hat{z}</MATH>|11.23}}
Zmiana momentu magnetycznego elektronu krążącego wokół jądra z i bez pola jest zależna od wartości indukcji pola magnetycznego i promienia toru elektronu, który jest okręgiem.
== Magnetyzacja substancji magnetycznych pod wpływem pola magnetycznego ==
Załóżmy, że każda cząsteczka stanowi jakoby ramkę z prądem, w którym płynie pewien prąd, to wtedy jego moment magnetyczny dipolowy wynosi: {{Formuła|<MATH>\vec{m}</MATH>}}.
Pod wpływem pola magnetycznego cząsteczki ustawiają w ściśle określony sposób, którego całkowity moment dipolowy ciała w objętości V, której znajduje się jakoby N ramek (dipoli magnetycznych), jest równy:
{{CentrujWzór|<MATH>\vec{\Mu}_c=\sum^N_{i=1} \vec{\mu}_i</MATH>|11.24}}
Moment dipolowy ciała może się zmieniać w zależności od natężenia pola magnetycznego panującego w danym ośrodku polaryzacyjnym:
{{CentrujWzór|<MATH>\vec{\Mu}_c=\gamma\vec{H}\;</MATH>|11.25}}
* skalarny współczynnik proporcjonalności γ nazywamy '''polaryzowalnością magnetyczną'''.
Całkowity moment magnetyczny jest zależny w ogólności od kierunku prostopadłego i równoległego wyróżnionego w danym ciele magnetycznym i zależy od natężenia pola magnetycznego, który działa na ciało spolaryzowane magnetycznie, który jest zapisany:
{{CentrujWzór|<MATH>\vec{\Mu}_c=\gamma_{||}\vec{H}_{||}+\gamma_{\bot}\vec{H}_{\bot}\;</MATH>|11.26}}
* gdzie parametry {{Formuła|<MATH>\alpha_{\bot}\;</MATH>}} i {{Formuła|<MATH>\alpha_{||}\;</MATH>}} są to wielkości stałe, lub bardzie ogólnie można zapisać zależność {{LinkWzór|11.26}} w sposób:
{{CentrujWzór|<MATH>\vec{\Mu}_c=\hat{\gamma}\vec{H}\;</MATH>|11.27}}
Widać w ogólności, że z {{LinkWzór|11.27}}, że moment dipolowy ciała nie jest w ogólności równoległy do natężenia pola magnetycznego {{Formuła|<MATH>\vec{H}\;</MATH>}}.
* gdzie {{Formuła|<MATH>\hat{\alpha}\;</MATH>}} jest pewnym tensorem (macierzą 3x3).
Wyznaczmy jaki jest moment dipolowy w danym nieskończenie małej objętości ciała spolaryzowanego wedle wzoru {{LinkWzór|11.27}}:
{{CentrujWzór|<MATH>d\vec{\Mu}_c=d\hat{\gamma}\vec{H}\;</MATH>|11.28}}
Załóżmy, że moment dipolowy w objętości ΔV jest równy:{{Formuła|<MATH>\Delta\vec {M}_c</MATH>}}, a więc jego magnetyzacja (namagnesowanie, polaryzacja magnetyczna) jest równa liczbowo momentowi dipolowemu ciała spolaryzowanego magnetycznie {{LinkWzór|11.24}} znajdującego w jednostce objętości i jest definiowana:
{{CentrujWzór|<MATH>\vec{\Mu}=\lim_{\Delta V\rightarrow 0}{{\Delta \vec{\Mu}_c}\over{\Delta V}}={{d\vec{\Mu}_c}\over{dV}}</MATH>|11.29}}
Ogólnie rzecz mówiąc polaryzacja jest to stosunek infinitezymalnego momentu dipolowego znajdującego się w nieskończenie małej objętości dV przez tą właśnie objętość.
Wykorzystamy definicję polaryzacji magnetycznej {{LinkWzór|11.29}} i podstawimy do niego wzór {{LinkWzór|11.28}}, wtedy dostajemy wyrażenie:
{{CentrujWzór|<MATH>\vec{\Mu}={{d\hat{\gamma}}\over{dV}}\vec{H}\Rightarrow\vec{\Mu}=\hat{\chi}\vec{H}\;</MATH>|11.30}}
Widzimy, że wektor polaryzacji nie jest w ogólności równoległy do wektora natężenia pola magnetycznego.
Gdy dla danego magnetyka zachodzi {{Formuła|<MATH>\hat{\chi}=\chi\hat{I}\;</MATH>}}, wtedy wektor magnetyzacji ośrodka w danym punkcie jest równoległy do wektora natężenia pola magnetycznego, i taki magnetyk nazywamy liniowym.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
6irn4whn60axmavqhkg0a0dqkxkafm1
Elektrodynamika klasyczna/Prądy związane z polem namagnesowanego ciała
0
16774
558880
470169
2026-10-08T00:55:40Z
Persino
2851
558880
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Pod wpływem pola magnetycznego zewnętrznego, powstają tak zwane prądy związane, które modyfikują z kolei pole otaczające to nasze ciało i wewnątrz tego ciała nazywanego ciałem spolaryzowanym magnetycznie.
== Prądy związane w namagnesowanej substancji pod wpływem pola magnetostatycznego ==
Zajmować się będziemy się ciałem spolaryzowanym magnetycznie pod pływem pola magnetycznego zewnętrznego, wiemy jednak, że potencjał magnetyczny znajdujący się w pewnym punkcie jest wytwarzany przez prąd kołowy mający pewien moment magnetyczny {{Formuła|<math>\vec{\mu}\;</MATH>}}, jest on opisany wzorem {{LinkWzór|10.25|Magnetyczny_potencjał_wektorowy}}. Jeśli ciało składa się z nieskończenie małych momentów dipolowych {{Formuła|<MATH>d\vec{\mu}\;</MATH>}}, a w praktyce bardzo małych, to potencjał wektorowy jest opisany:
{{CentrujWzór|<MATH>\vec{A}(\vec{r})=
{{\mu_0}\over{4\pi}}\int{{d\vec{\mu}\times\hat{\vec{R}}}
\over{R^2}}\;</MATH>|12.1}}
Moment magnetyczny nieskończenie małego elementu możemy wyrazić poprzez jego magnetyzację {{LinkWzór|11.29|Elementarne_właściwości_materii_w_polu_magnetycznym}} w tymże punkcie:
{{CentrujWzór|<MATH>d\vec{\mu}=\vec{\Mu}dV\;</MATH>|12.2}}
Podstawiając wzór {{LinkWzór|12.2}} do {{LinkWzór|12.1}} za nieskończenie mały moment dipolowy i całkując go po całej objętości ciała spolaryzowanego magnetycznie, wtedy potencjał wektorowy w danym punkcie jest równy:
{{CentrujWzór|<MATH>\vec{A}(\vec{r})={{\mu_0}\over{4\pi}}\int \left(\vec{\Mu}\times{{\hat{\vec{R}}}\over{R^2}}\right)dV\;</MATH>|12.3}}
Jednakże korzystając ze wzoru {{LinkWzór|7.4|Ciało_spolaryzowane_a_jego_pole}}, wtedy potencjał wektorowy {{LinkWzór|12.3}} możemy przepisać po tych omawianych podstawieniach:
{{CentrujWzór|<MATH>\vec{A}(\vec{r})=-{{\mu_0}\over{4\pi}}\int \left(\vec{\Mu}\times\left(\nabla{{1}\over{R}}\right)\right)dV\;</MATH>|12.4}}
Aby dokonać następnych przekształceń dokonajmy obliczeń pomocniczych, które będą bardzo nam potrzebne do przekształcenia całki występującej w {{LinkWzór|12.4}}:
{{CentrujWzór|<MATH>\nabla\times{{\vec{\Mu}}\over{R}}=\vec{k}_i\epsilon_{ijk}\nabla_j{{\Mu_k}\over{R}}=
\vec{k}_i\epsilon_{ijk}\Mu_k\nabla_j{{1}\over{R}}+\vec{k}_i\epsilon_{ijk}{{1}\over{R}}\nabla_j \Mu_k=\nabla{{1}\over{R}}\times\vec{\Mu}+{{\nabla\times\vec{\Mu}}\over{R}}=
-\vec{\Mu}\times\nabla{{1}\over{R}}+{{\nabla\times\vec{\Mu}}\over{R}}</MATH><BR><MATH>
\nabla\times{{\vec{\Mu}}\over{R}}=-\vec{\Mu}\times\nabla{{1}\over{R}}+{{\nabla\times\vec{\Mu}}\over{R}}\Rightarrow \vec{\Mu}\times\nabla{{1}\over{R}}=-\nabla\times{{\vec{\Mu}}\over{R}}+{{\nabla\times\vec{\Mu}}\over{R}}</MATH>|12.5}}
Wzór ostatni wynikowy wynikających z obliczeń na pochodnych {{LinkWzór|12.5}} podstawiamy do równania {{LinkWzór|12.4}} za jego funkcję podcałkową, wtedy dostajemy inne równoważne równanie na potencjał wektorowy wytwarzanych przez układ dipoli magnetycznych w ciele spolaryzowanych, zapisujemy te dysputy wedle:
{{CentrujWzór|<MATH>\vec{A}(\vec{r})={{\mu_0}\over{4\pi}}\int\left\{-\left(\nabla\times{{\vec{\Mu}}\over{R}}\right)dV
+{{1}\over{R}}\left(\nabla\times\vec{\Mu}\right)dV
\right\};</MATH>|12.6}}
Udowodnijmy pewny lemat, korzystające z twierdzenia Ostrogradskiego Gaussa zastępując w tym twierdzeniu wektor {{Formuła|<MATH>\vec{v}\;</MATH>}} przez wektor w postaci iloczynu wektorowego {{Formuła|<MATH>\vec{v}\times\vec{c}\;</MATH>}}, dostając:
{{CentrujWzór|<MATH>\int \nabla \vec{v} dV=\oint v d\vec{S}\Rightarrow \int \nabla\left(\vec{v}\times\vec{c}\right)dV=\int \left(\vec{v}\times\vec{c}\right)d\vec{S}\Rightarrow
\int \nabla\left(\vec{v}\times\vec{c}\right)dV=-\vec{c}\oint\vec{v}\times d\vec{S}\;</MATH>|12.7}}
Jeszcze udowodnimy następny wniosek tak by przekształcić lewą stronę funkcji podcałkowej ostatniej równości {{LinkWzór|12.7}}:
{{CentrujWzór|<Math>\nabla\left(\vec{v}\times\vec{c}\right)=\epsilon_{ijk}\nabla_iv_jc_k=c_k\epsilon_{kij}\nabla_i v_j=\vec{c}\left(\nabla\times\vec{v}\right)\;</MATH>|12.8}}
Wniosek {{LinkWzór|12.8}} używamy do końcowego wzoru {{LinkWzór|12.7}} do jego lewej strony dla funkcji podcałkowej, i z dowolności stałej wektorowej {{Formuła|<MATH>\vec{c}\;</math>}} możemy napisać, że:
{{CentrujWzór|<MATH>\vec{c}\int \left(\nabla\times\vec{v}\right) dV=-\vec{c}\oint\vec{v}\times d\vec{S}\Rightarrow \int \left(\nabla\times\vec{v}\right) dV=-\oint\vec{v}\times d\vec{S}\;</MATH>|12.9}}
Wniosek {{LinkWzór|12.9}} możemy wykorzystać dla pierwszej całki w {{LinkWzór|12.6}} zamieniając całkowaniem po objętości, którą ogranicza pewna zamknięta powierzchnia, na całkowanie po tej powierzchni, zatem ten wzór możemy zapisać:
{{CentrujWzór|<MATH>\vec{A}(\vec{r})={{\mu_0}\over{4\pi}}\int{{\nabla\times\vec{\Mu}}\over{R}}dV+
{{\mu_0}\over{4\pi}}\int{{\vec{\Mu}\times\vec{n}}\over{R}}dS\;</MATH>|12.10}}
Z drugiej strony potencjał wektorowy zależy od prądów objętościowych i powierzchniowych, czyli łącząc wzór na potencjał wektorowy pochodzących od prądów objętościowych ale związanych i potencjał wekorowy pochodzący od prądów powierzchniowych, to całkowity potencjał wektorowy będący sumą tychże wspomnianych potencjałów wektorowych jest zapisywany:
{{CentrujWzór|<MATH>\vec{A}(\vec{r})={{\mu_0}\over{4\pi}}\int{{\vec{J}_{zw}}\over{R}}dV+
{{\mu_0}\over{4\pi}}\int{{\vec{K}_{zw}}\over{R}}dS\;</MATH>|12.11}}
Możemy porównać wzory {{LinkWzór|12.11}}, który wynika z bezpośredniej definicji potencjału wektorowego w danym punkcie pochodzących od prądów objętościowych i powierzchniowych z {{LinkWzór|12.10}}. Wiedząc że cały układ ciała spolaryzowanego składa się z małych dipoli magnetycznych w praktyce bardzo małych, a matematycznie uważa się je za nieskończenie małe, zatem prądy powierzchniowe i objętościowe ale związane przedstawiają się według:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{J}_{zw}=\nabla\times\vec{\Mu}\;</Math>|12.12}}
| 2 = {{CentrujWzór|<MatH>\vec{K}_{zw}=\vec{\Mu}\times\vec{n}\;</MATH>|12.13}}
}}
Doszliśmy do wniosku, że prądy związane powierzchniowe i objętościowe zależą bardzo silnie od namagnesowania badanej substancji.
== Natężenie pola magnetycznego a prawo Ampere'a w materiałach magnetycznych ==
Całkowite natężenie prądu w magnetycznej substancji jest równe prądom objętościowych związanych i swobodnych w danym punkcie przestrzeni wynikających z sumowania natężeń prądów, a to z addytywności infinitezymalnych ładunków płynących w bardzo małej objętości dV.
{{CentrujWzór|<MATH>\vec{J}=\vec{J}_{zw}+\vec{J}_{sw}\;</MATH>|12.14}}
Prawo Stokesa dla pola magnetycznego {{LinkWzór|9.14|Wektor_indukcji_magnetycznej}}, który jest definicją całkowitego prądu objętościowego płynącego w danym elemencie nieskończenie małej objętości, możemy napisać:
{{CentrujWzór|<MATH>\nabla\times\vec{B}=\mu_0\vec{J}\Rightarrow
\nabla\times\vec{B}=\mu_0\left(\vec{J}_{zw}+\vec{J}_{sw}\right)\;</MATH>|12.15}}
Dokonując pewnych przekształceń w {{LinkWzór|12.15}}, biorąc wszystkie wyrazy stojące po prawej stronie przenosząc na jej lewą stronę oprócz gęstości prądów związanych i wykorzystując tożsamość {{LinkWzór|12.12}}, wtedy można:
{{CentrujWzór|<MATH>\nabla\times\vec{B}=\mu_0\left(\nabla\times\vec{\Mu}+\vec{J}_{sw}\right)\Rightarrow\nabla\times\left(\vec{B}-\mu_0\vec{\Mu}\right)=\mu_0\vec{J}_{sw}\Rightarrow\nabla\times\left({{1}\over{\mu_0}}\vec{B}-\vec{\Mu}\right)=\vec{J}_{sw}\;</MATH>|12.16}}
Z definiujmy natężenie pola magnetycznego {{Formuła|<MATH>\vec{H}\;</math>}} przez indukcję pola magnetycznego i namagnesowania w danym punkcie przestrzeni:
{{CentrujWzór|<MATH>\vec{H}={{1}\over{\mu_0}}\vec{B}-\vec{\Mu}\;</MATH>|12.17}}
co jest równoważne wyznaczając z {{LinkWzór|12.17}} wektor indukcji pola magnetycznego, który jest funkcją jak się przekonamy natężenia pola magnetycznego i namagnesowania ciała w danym punkcie przestrzeni:
{{CentrujWzór|<MATH>\mu_0\left(\vec{H}+\vec{\Mu}\right)=\vec{B}\;</MATH>|12.18}}
Podstawmy definicję natężenia pola magnetycznego {{LinkWzór|12.17}} do końcowego wzoru {{LinkWzór|12.16}}, wtedy dostajemy wyrażenie:
{{CentrujWzór|<MATH>\nabla\times\vec{H}=\vec{J}_{sw}\;</MATH>|12.19}}
Prawo {{LinkWzór|12.19}}, które jest słuszne dla spolaryzowanego magnetycznie ciała w postaci różniczkowej, to najpierw całkując je obustronnie po powierzchni ograniczonej przez pewną zamknięty kontur i zamieniając lewą stronę całki wedle twierdzenia Stokesa na całkowanie po tym konturze i z definicji gęstości prądu elektrycznego {{LinkWzór|8.6|Magnetostatyka}} dla prądów związanych wspomniane prawo zapisujemy w postaci całkowej:
{{CentrujWzór|<MATH>\int_K \nabla\times\vec{H}d\vec{S}=\int\vec{J}_{sw}d\vec{S}\Rightarrow
\oint\vec{H}d\vec{l}=I_{sw}\;</MATH>|12.20}}
Jest to prawo Ampere'a dla spolaryzowanego magnetycznie ciała pod wpływem zewnętrznego pola magnetycznego.
== Natężenie pola magnetycznego a prawo Gaussa ==
Wyznaczmy czemu jest równe dywergencja natężenia pola magnetycznego zdefiniowanego wedle wzoru {{LinkWzór|12.17}}, korzystając z prawa Gaussa dla tego samego pola {{LinkWzór|9.7|Wektor_indukcji_magnetycznej}} możemy udowodnić, że ono jest równe dywergencji namagnesowaniu ciała określających w danym punkcie ze znakiem minus:
{{CentrujWzór|<MATH>\operatorname{div}\vec{H}=\operatorname{div}\left({{1}\over{\mu_0}}\vec{B}-\vec{\Mu}\right)=
{{1}\over{\mu_0}}\operatorname{div}\vec{B}-\operatorname{div}\vec{\Mu}=-\operatorname{div}\vec{\Mu}\;</MATH>|12.21}}
W {{LinkWzór|12.21}} nie jest oczywiste, że {{Formuła|<MATH>\operatorname{div}\vec{M}\;</MATH>}} jest równe dla ogólności zero, a jak się można przekonać jest ono równe zero dla magnetyków liniowych.
Prawo {{LinkWzór|12.21}} możemy zapisać w postaci całkowej wedle:
{{CentrujWzór|<MATH>\int_V\operatorname{div}\vec{H}=-\int_V\operatorname{div}\vec{\Mu}\Rightarrow\oint\vec{H}d\vec{S}=-\oint\vec{\Mu}d\vec{S}\;</MATH>|12.22}}
== Warunki brzegowe a substancje magnetyczne ==
{{Rysunek|Zastosowanie związku natężenia pola magnetycznego a magnetyzacją w magnetostatyce.jpg|lk1|Natężenie pola magnetycznego a magnetyzacja}}
Obierzmy sobie pewien bardzo mały prostopadłościan, którego podstawy są równoległe do granicy między dwoma ośrodkami magnetycznymi na małym wycinku powierzchni tej granicy, wtedy ten wycinek przypomina płaską płaszczyznę, na którym jest położony prostopadłościan z czego będziemy korzystali, a ścianki boczne są do tej powierzchni prostopadłe, zakładamy, że pola wszystkich ścianek dążą do zera, którego podstawy mają takie pole że stosunek pola dowolnej ścianki bocznej przez pole dowolnej podstawy dąży do zera, zatem jedynymi niezerowymi strumieniami natężenia pola magnetycznego i namagnesowania są strumienia pochodzące od podstaw, które będziemy uwzględniać, bo strumienia pochodzące od podstaw są nieskończenie duże od strumieni pochodzących od ścianek bocznych, zatem prawo wedle końcowego wzoru {{LinkWzór|12.22}} przy pominięciu wyrazów pochodzące od ścianek bocznych, bo ich pola są nieskończenie małe od pól podstaw, a mianowicie też ich strumienie, zatem zapisujemy prawo Gaussa dla naszego prostopadłościanu:
{{CentrujWzór|<MATH>H^{\bot}_{nad}S-H^{\bot}_{pod}S=-(\Mu^{\bot}_{nad}S-\Mu^{\bot}_{pod}S)\Rightarrow H^{\bot}_{nad}-H^{\bot}_{pod}=-(\Mu^{\bot}_{nad}-\Mu^{\bot}_{pod}) \;</MATH>|12.23}}
{{Rysunek|Zastosowanie całkowego prawa Ampere'a w magnetostatyce.jpeg|lk2|Zastosowanie prawa Ampera}}
Obierzmy sobie mały prostokąt, którego powierzchnia jest prostopadła do powierzchni małego wycinka granicy między ośrodkami spolaryzowanymi, tak by ten wycinek przypominał płaską płaszczyznę, z czego skorzystamy na rysunku obok:
{{CentrujWzór|<MATH>H^{||}_{nad}l-H^{||}_{pod}l=I_{sw}\;</MATH>|12.24}}
Gęstość prądu powierzchniowego {{LinkWzór|8.10|Magnetostatyka}}, które też można zapisać równoważnie w postaci, gdy l jest małe, ale na tyle duże od boków bocznych prostokąta, czyli tą wielkość zapisujemy wedle sposobu {{Formuła|<MATH>K_{sw}={{I_{sw}}\over{l}}\;</MATH>}}, to podzielmy równanie {{LinkWzór|12.24}} przez długość boku górnego lub dolnego, które są sobie równe, czyli przez l, a zatem z wspomnianej definicji gęstości prądu powierzchniowego, jest:
{{CentrujWzór|<MATH>H^{||}_{nad}-H^{||}_{pod}=K_{sw}\;</MATH>|12.25}}
Równanie {{LinkWzór|12.25}} możemy również zapisać w postaci wektorowej:
{{CentrujWzór|<MATH>\vec{H}^{||}_{nad}-\vec{H}^{||}_{pod}=\vec{K}_{sw}\times\vec{n}\;</MATH>|12.26}}
* gdzie: {{Formuła|<MATH>\vec{n}\;</MATH>}} jest wektorem jednostkowym prostopadłym do płaszczyzny na której płynie prąd na granicy pomiędzy dwoma ośrodkami.
== Ciała magnetyczne liniowe, podatność i przenikalność magnetyczna ==
Zajmować się tu substancjami, w których występuje liniowe zachowanie natężenia pola magnetycznego od jej magnetyzacji dla ciała spolaryzowanego magnetycznie:
{{CentrujWzór|<MATH>\vec{\Mu}=\chi\vec{H}\;</MATH>|12.27}}
* gdzie χ jest to podatność magnetyczna dla pola magnetycznego.
Z definicji indukcji magnetycznej, zależności od namagnesowania i natężenia pola magnetycznego {{LinkWzór|12.18}} można je zapisać wiedząc, że namagnesowanie ciała w danym punkcie jest według {{LinkWzór|12.27}}, zapisujemy go wynikających z jego definicji:
{{CentrujWzór|<MATH>\vec{B}=\mu_0\left(\vec{H}+\vec{\Mu}\right)=\mu_0\left(\vec{H}+\chi\vec{H}\right)=
\mu_0(1+\chi)\vec{H}\;</MATH>|12.28}}
Z definiujmy sobie względną przenikalność magnetyczną występującą w {{LinkWzór|12.28}} wedle sposobu:
{{CentrujWzór|<MATH>\mu_r=1+\chi\;</MATH>|12.29}}
Wyrażenie na indukcję pola magnetycznego w zależności od jego natężenia {{LinkWzór|12.28}} przy definicji względnej przenikalności magnetycznej {{LinkWzór|12.29}} można zapisać:
{{CentrujWzór|<MATH>\vec{B}=\mu_0\mu_r\vec{H}\;</MATH>|12.30}}
Jeśli zdefiniujemy przenikalność magnetyczną ośrodka liniowego:
{{CentrujWzór|<MATH>\mu=\mu_0\mu_r\;</MATH>|12.31}}
wtedy wzór {{LinkWzór|12.30}} na podstawie definicji przenikalności magnetycznej {{LinkWzór|12.31}} można zapisać:
{{CentrujWzór|<MATH>\vec{B}=\mu\vec{H}\;</MATH>|12.32}}
Jak widać, że kierunek i zwrot wektora indukcji magnetycznej i natężenia pola magnetycznego są ze sobą zgodne dla ciał magnetycznych linowych.
Prąd objętościowy zdefiniowany w zależności od jego magnetyzacji jest napisany wedle wzoru {{LinkWzór|12.12}}, co korzystając ze wzoru {{LinkWzór|12.27}} dla ciał liniowych magnetycznie, powiemy:
{{CentrujWzór|<MATH>\vec{J}_{zw}=\nabla\times\vec{\Mu}=\nabla\times\left(\chi\vec{H}\right)=\chi\nabla\times\vec{H}=\chi J_{sw}\;</MATH>|12.33}}
Widzimy, że wedle wniosków wynikających z {{LinkWzór|12.33}}, gdy nie ma prądów swobodnych objętościowych, to gęstość prądów związanych objętościowych też jest równa zero.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
onf55r6bl9q7yfwxqtqqaq2c3b2dgmd
Elektrodynamika klasyczna/Przewodnik z prądem elektrycznym
0
16782
558881
470170
2026-10-08T00:58:21Z
Persino
2851
558881
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tutaj przedstawimy wszystko co jest związane z prądem, jakie są jego prawa. Dlaczego przewodnik przewodzi prąd.
== Prawo Ohma ==
W przewodniku z prądem gęstość prądu płynącego w nim jest proporcjonalna do siły działający na jednostkowy ładunek na nośniki prądu znajdujących się w rozważanym przewodniku. ta zależność jest pisana:
{{CentrujWzór|<MATH>\vec{J}=\sigma\vec{f}</MATH>|13.1}}
W naszym przypadku σ, nosi nazwę przewodności elektrycznej właściwej, a jego odwrotność nazywamy opornością właściwą zdefiniowanej wedle:
{{CentrujWzór|<MATH>\rho={{1}\over{\sigma}}</MATH>|13.2}}
Siła {{Formuła|<MATH>\vec{f}\;</MATH>}} działająca na jednostkowy ładunek definiujemy jako siłę Lorentza napisanej wedle sposobu {{LinkWzór|8.3|Magnetostatyka}}:
{{CentrujWzór|<MATH>\vec f=\vec{E}+\vec{v}\times\vec{B}</MATH>|13.3}}
Zazwyczaj prędkość ładunków jest mała, to można powiedzieć, że wyrażenie {{LinkWzór|13.3}} w przybliżeniu jest równoważne proporcjonalności {{Formuła|<MATH>\vec f\simeq \vec{E}</MATh>}}, zatem prawo Ohma {{LinkWzór|13.1}} przy ostatnio powiedzianym przybliżeniu, które zachodzi dla wzoru {{LinkWzór|13.3}} jest wedle równania:
{{CentrujWzór|<MATH>\vec{J}=\sigma\vec{E}</MATH>|13.4}}
Widzimy, że gęstość prądu jakie płynie przewodniku jest wprost proporcjonalne do natężenia pola elektrycznego. Prawo {{LinkWzór|13.4}} jest również nazywamy '''różniczkowym prawem Ohma'''.
== Współczynnik przewodnictwa właściwego ==
Prędkość ruchu termicznego w temperaturze T jest v{{Sub|temp}},
a średnia droga swobodna jest λ, jest to droga przebyta od jednego rdzenia atomowego do innego, a ten czas tej drogi z definicji prędkości jest równy:
{{CentrujWzór|<MATH>v_{term}={{\lambda}\over{t}}\Rightarrow t={{\lambda}\over{v_{term}}}</MATH>|13.5}}
Od jednego rdzenia do drugiego elektron porusza się ruchem jednostajnym przyspieszonym, z prędkością średnią:{{Formuła|<MATH>v_{sr}={{1}\over{2}}at</MATH>}}. Zakładamy, że elektron po zderzeniu z rdzeniem traci całkowicie swoją prędkość (energię kinetyczną). A więc jego prędkość średnia na tej drodze definiujemy wedle:
{{CentrujWzór|<MATH>v_{sr}={{1}\over{2}}a{{\lambda}\over{v_{term}}}={{a\lambda}\over{2v_{term}}}</MATH>|13.6}}
Możemy skorzystać z drugiej zasady dynamiki Newtona i wyrazić przyspieszenie cząstki w zależności od niezrównoważonej siły i masy elektronu, zatem równanie {{LinkWzór|13.6}} przyjmuje kształt:
{{CentrujWzór|<MATH>v_{sr}={{F\lambda}\over{2mv_{term}}}</MATH>|13.7}}
Możemy skorzystać z definicji siły elektrostatycznej w zależności od jego natężenia pola {{LinkWzór|1.2|Elektrostatyka}}, wtedy ten wzór na siłę podstawiamy do wzoru {{LinkWzór|13.7}}, wtedy dostajemy:
{{CentrujWzór|<MATH>v_{sr}={{E q\lambda}\over{2mv_{term}}}</MATH>|13.8}}
Gęstość prądu definiujemy wedle wzoru {{LinkWzór|8.7|Magnetostatyka}}, w których "n" jest koncentracją elektronów, z których każda ma f elektronów, przestawia się:
{{CentrujWzór|<MATH>J=qnfv_{sr}\;</MATH>|13.9}}
Do wzoru {{LinkWzór|13.9}} za prędkość średnią podstawiamy wyrażenie {{LinkWzór|13.8}}, które jest zależne od natężenia pola elektrycznego panującego w przewodniku i innych wielkości, zatem:
{{CentrujWzór|<maTH>J=qn{{E q\lambda}\over{2mv_{term}}}\Rightarrow
J={{q^2f\lambda n}\over{2mv_{term}}}E\Rightarrow\vec{J}={{q^2f\lambda n}\over{2mv_{term}}}\vec{E}</MATh>|13.10}}
Przewodność elektryczna jest zdefiniowana tak, że porównując wzory {{LinkWzór|13.10}} z formułą {{LinkWzór|13.4}}, dostajemy:
{{CentrujWzór|<MATH>\sigma={{q^2f\lambda n}\over{2mv_{term}}}</MATH>|13.11}}
Widzimy, że przewodność elektryczna jest wielkością stałą dla danej temperatury przewodzącego przewodnika.
== Definicja SEM-siły elektromotorycznej ==
Załóżmy, że mamy obwód elektryczny wraz ze źródłami prądu elektrycznego. W dowolnym punkcie takiego obwodu można powiedzieć, że całkowita siła działająca na jednostkę ładunku elektrycznego jest równa polu elektrycznemu jakie panuje w danym miejscu przewodnika i siły na jednostkę ładunku odpowiedzialny za przepływ prądu pochodzący od źródła elektrycznego:
{{CentrujWzór|<MATH>\vec{f}=\vec{f}_{\mbox{źr}}+\vec{E}\;</MATH>|13.12}}
* gdzie:{{Formuła|<MATH>\vec{f}_{\mbox{źr}}\;</MATH>}}, jest to siła podtrzymująca prąd elektryczny w obwodzie, ale {{Formuła|<MATH>\vec{f}\;</MATH>}} jest to całkowita siła na jednostkę ładunku, działająca na ładunek w danym punkcie obwodu elektrycznego.
Definicja siły elektromotorycznej określa się jako całkę okrężną z wyrażenia {{LinkWzór|13.12}} wzdłuż przewodnika z prądem i zakładając, że cyrkulacja natężenia pola elektrycznego {{LinkWzór|2.14|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}} na konturze zamkniętym jest równa zero (tutaj oczko).
{{CentrujWzór|<MATH>\mathcal{E}=\oint \vec{f}d\vec{l}=\oint\left(\vec{f}_{\mbox{źr}}+\vec{E}\right)d\vec{l}=
\oint\vec{f}_{\mbox{źr}}d\vec{l}+\oint \vec{E}d\vec{l}=\oint\vec{f}_{\mbox{źr}}d\vec{l}\;</MATH>|13.13}}
Wewnątrz źródła prądu elektrycznego zachodzi między stykami {{Formuła|<MATH>\vec{E}=-\vec{f}_{\mbox{źr}}\;</MATH>}}, czyli pole elektryczne w źródle prądu równoważy siły zewnętrzne, zatem na podstawie powyższych rozważań powinno zachodzić:
{{CentrujWzór|<MATH>\mathcal{E}=\oint \vec{f}_{\mbox{źr}}d\vec{l}=\int_a^b \vec{f}_{\mbox{źr}}d\vec{l}=-\int_a^b \vec{E}d\vec{l}=U\;</MATH>|13.14}}
Zatem siła elektromotoryczna źródła prądu elektrycznego definiujemy jako całkę pomiędzy stykami źródła prądu elektrycznego na podstawie obliczeń {{LinkWzór|13.14}}:
{{CentrujWzór|<MATH>\mathcal{E}=-\int_a^b\vec{E}d\vec{l}\;</MATH>|13.15}}
== Reguła strumienia dla SEM przesuwającego się przewodnika w polu magnetycznym ==
{{Rysunek|Right-hand rule.PNG|lk1|Ramka z prądem poruszających się z pewną prędkością}}
{{Rysunek|Faraday Area.PNG|lk2|Inny przykład obwodu kołowego z prądem}}
Z definiujmy wektor {{Formuła|<MATH>d\vec{S}</MATH>}} jako wektor prostopadły do prędkości ruchu nośników prądu i ruchu samego przewodnia z prądem, koncentrując się na pewnym punkcie S i po przesunięciu jego, mamy wtedy punkt S{{Sup|'}}, to wtedy infinitezymalny wektor {{Formuła|<MATH>d\vec{S}\;</MATH>}} można zapisać:
{{CentrujWzór|<MATH>d\vec{S}=\left(\vec{v}dt\times d\vec{l}\right)\Rightarrow
d\vec{S}=\left(\vec{v}\times d\vec{l}\right)dt
</MATH>|13.16}}
* gdzie: {{Formuła|<MATH>\vec{v}dt</MATH>}} jest to przesunięcie punktu {{Formuła|<MATH>S\;</MATH>}} w punkt {{Formuła|<MATH>S^'\;</MATH>}}.
Wykorzystujemy definicję infinitezymalnego strumienia jako iloczynu indukcji pola magnetycznego i małego wektora {{Formuła|<MATH>d\vec{S}\;</math>}} w sposób:
{{CentrujWzór|<MATH>d\Phi=\vec{B}d\vec{S}\;</MATH>|13.17}}
Możemy zapisać wektor nieskończenie małej powierzchni {{LinkWzór|13.16}} prostopadłej do tej powierzchni, wtedy strumień pola magnetycznego {{linkWzór|13.17}}:
{{CentrujWzór|<MATH>d\Phi=\oint \vec{B}\cdot\left(\vec{v}\times d\vec{l}\right)dt\Rightarrow
{{d\Phi}\over{dt}}=\oint\vec{B}\cdot\left(\vec{v}\times d\vec{l}\right)
</MATH>|13.18}}
Prawa strona jest całkowaniem po całej konturze przewodnika, i tylko tej części, która znajduje się w polu magnetycznym.
Jeśli przez {{Formuła|<MATH>\vec{v}</MATH>}} rozumiemy jako prędkość przewodnika z prądem, a przez {{Formuła|<MATH>\vec{u}</MATH>}} prędkość nośników prądu, a zatem całkowita prędkość nośników z prądem jest wyrażona:
{{CentrujWzór|<MATH>\vec{w}=\vec{u}+\vec{v}</MATH>|13.19}}
Ależ we wzorze na sumowanie prędkości {{LinkWzór|13.19}} zachodzi równoległość wektora {{Formuła|<MATH>d\vec{l}</MATH>}} do wektora prędkości nośników prądu {{Formuła|<MATH>\vec{u}\;</MATH>}}, to wtedy iloczyn wektorowy wektora nieskończenie małej części obwodu i prędkości cząstek {{Formuła|<MATH>\vec{u}\;</MATH>}}, z którą w nim płynie prąd elektryczny, można zapisać jako równe zero. Wzór {{LinkWzór|13.18}} a w nim wielkość prędkości części obwodu {{Formuła|<MATH>\vec{v}\;</MATH>}} zastępujemy przez prędkość całkowitą naszych cząstek w obwodzie, która jest sumą prędkości cząstek w obwodzie w jego poruszającej się układzie odniesienia i prędkości samego obwodu, wtedy wzór {{LinkWzór|13.18}} można zapisać równoważnie do poprzednich dysput:
{{CentrujWzór|<MATH>{{d\Phi}\over{dt}}=\oint\left[\vec{B}\cdot\left(\underbrace{\vec{u}\times d\vec{l}}_{0}\right)+\vec{B}\cdot\left(\vec{v}\times d\vec{l}\right)\right]\Rightarrow {{d\Phi}\over{dt}}=\oint\vec{B}\cdot\left(\vec{w}\times d\vec{l}\right)</MATH>|13.20}}
Można powiedzieć, że wyrażenie występujące z prawej strony wzoru {{LinkWzór|13.20}} z definicji siły magnetycznej na jednostkę ładunku elektrycznego zachodzi tożsamość przedstawia się:
{{CentrujWzór|<MATH>\vec{B}\cdot\left(\vec{w}\times d\vec{l}\right)=d\vec{l}\cdot\left(\vec{B}\times\vec{w}\right)=-d\vec{l}\cdot\left(\vec{w}\times\vec{B}\right)=-d\vec{l}\cdot\vec{f}_{mag}=-\vec{f}_{mag}d\vec{l}</MATH>|13.21}}
Wyrażenie {{LinkWzór|13.20}} z tożsamości udowodnionej dla jego prawej strony wedle przekształceń {{LinkWzór|13.21}} możemy napisać:
{{CentrujWzór|<MATH>{{d\Phi}\over{dt}}=-\oint \vec{f}_{mag}d\vec{l}</MATH>|13.22}}
Korzystając z definicji na siłę elektromagnetyczną {{LinkWzór|13.14}}, wtedy wyrażenie {{LinkWzór|13.22}}, które jest pochodną zmiany strumienia magnetycznego względem czasu jest równa sile elektromagnetycznej wytwarzanej przez zmienne pole magnetyczne i to wyrażenie wzięte jest ze znakiem minus:
{{CentrujWzór|<MATH>\mathcal{E}=-{{d\Phi}\over{dt}}</MATH>|13.23}}
a więc nasze prawo na SEM w polu magnetycznym zostało udowodnione.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
8z0ha2sfq30ozy9ycy9sir2q5o8vabm
Elektrodynamika klasyczna/Indukcja elektromagnetyczna
0
16802
558882
470171
2026-10-08T01:01:03Z
Persino
2851
558882
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
== Prawo Faraday'a ==
Wcześniej wyprowadziliśmy prawo, które przedstawia się wzorem {{LinkWzór|13.3|Przewodnik z prądem elektrycznym}}, gdy przewodnik przesuwaliśmy w polu magnetycznym, wtedy to prawo wyglądało:
{{CentrujWzór|<MATH>\mathcal{E}=-{{d\Phi}\over{dt}}\;</MATH>|14.1}}
a teraz przyjmijmy odwrotnie. Pole, magnetyczne jest zmienne, a przewodnik nie zmienia swojego położenia. Wtedy zmienia się strumień Φ, a więc w przewodniku powstaje siła elektromotoryczna o wartości {{Formuła|<MATH>\mathcal{E}\;</MATH>}}. Również siła elektromotoryczna powstaje, gdy powierzchnia obejmująca zamknięty przewodnik zmienia się.
=== Całkowe prawo Faraday ===
W przewodniku zamkniętym powstaje wewnętrzne natężenie pola elektrycznego o wartości:{{Formuła|<MATH>\vec{E}_{sw}=-\vec{E}\;</MATH>}}, gdzie:{{Formuła|<MATH>\vec{E}\;</MATH>}} jest to natężenie pola elektrycznego, które powstaje w wyniku zmiany pola magnetycznego. Wektor natężenia pola elektrycznego wewnętrznego panujące w przewodniku ma przeciwny znak do natężenia pola, który go wywołuje. Natężenie elektryczne w przewodniku spełnia warunek wynikającego z prawa na zmianę potencjału elektrycznego, czy dla przewodnika jest to napięcie {{LinkWzór|3.1|Pole skalarne}}:
{{CentrujWzór|<MATH>\mathcal{E}=-\oint \vec{E}_{sw}d\vec{l}=-\oint\left(-\vec{E}\right)d\vec{l}\Rightarrow \mathcal{E}=\oint\vec{E}d\vec{l}\;</MATH>|14.2}}
Zatem prawo Faraday'a w postaci całkowej {{LinkWzór|14.1}} w stosunku do tożsamości {{LinkWzór|14.2}} można zapisać:
{{CentrujWzór|<MATH>\oint\vec{E}d\vec{l}=-{{d\Phi}\over{dt}}\;</MATH>|14.3}}
To prawo jest bardzo podobne do prawa Stokesa {{LinkWzór|2.14|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}}, gdy pole magnetyczne wcale się nie zmienia.
=== Różniczkowe Prawo Faradaya ===
Z korzystajmy z definicji infinitezymalnego strumienia pola magnetycznego {{LinkWzór|13.17|Przewodnik_z_prądem_elektrycznym}}, wtedy nasz strumień jest całką owej wielkości po powierzchni, którą ogranicza zamknięty kontur:
{{CentrujWzór|<MATH>\Phi=\int_S\vec{B}d\vec{S}\;</MATH>|14.4}}
Prawo {{LinkWzór|14.3}} przy wykorzystaniu wzoru na całkowity strumień indukcji pola magnetycznego {{LinkWzór|14.4}} wygląda:
{{CentrujWzór|<MATH>\oint_L\vec{E}d\vec{l}=-{{d}\over{dt}}\oint_S\vec{B}d\vec{S}\;</MATH>|14.5}}
Dla stałej powierzchni zamkniętej ograniczonej przez zamknięty kontur prawo Faraday'a jest w postaci całkowej {{LinkWzór|14.5}}, w którym po przeniesieniu w tym równaniu pochodnej zupełnej po czasie pod całkę po powierzchni, wtedy pochodna zupełna po czasie zamienia się w pochodną cząstkową po czasie:
{{CentrujWzór|<MATH>\oint_L\vec{E}d\vec{l}=-\oint_S {{\partial \vec{B}}\over{\partial t}}d\vec{S}\;</MATH>|14.6}}
Możemy wykorzystać prawo Stokesa dla lewej strony równania {{LinkWzór|14.6}} dla całki okrężnej po konturze zamkniętym i zamienić to całkowanie po powierzchni zamkniętej ograniczonej przez ten właśnie kontur:
{{CentrujWzór|<MATH>\int_S \nabla\times\vec{E}d\vec{S}=-\oint_S {{\partial\vec{B}}\over{\partial t}}d\vec{S}\;</MATH>|14.7}}
Prawo {{LinkWzór|14.7}} jest spełnione dla dowolnej powierzchni ograniczonego przez dowolny kontur, zatem funkcje podcałkowe wspomnianego ostatnio wzoru są sobie równe, bo całkowanie po obu stronach jest całkowaniem po tej samej powierzchni:
{{CentrujWzór|<MATH>\nabla\times\vec{E}=-{{\partial\vec{B}}\over{\partial t}}\Rightarrow
\operatorname{rot}\vec{E}=-{{\partial\vec{B}}\over{\partial t}}
\;</MATH>|14.8}}
Gdy zmiany pola magnetycznego w czasie w danym punkcie przestrzeni są równe zero, wtedy prawo {{LinkWzór|14.8}} przechodzi w prawo Stokesa dla magnetostatyki {{LinkWzór|2.17|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}}.
== Indukcyjność ==
Będziemy tu badać, gdy obwód jeden oddziałuje magnetycznie z obwodem dwa o pewnej indukcyjności wzajemnej, w szczególnej własności indukcyjność wzajemna przechodzi w indukcyjność własną, gdy ten sam obwód oddziałuje z samym sobą magnetycznie.
=== Indukcyjność wzajemna, wzór Neumanna ===
{{Rysunek|Mutual Inductivity.svg|lk1|Indukcyjność wzajemna dwóch przewodników z prądem}}
{{Rysunek|Loi de Lenz.svg|lk2|Ilustracja prawa Lenz'a w wyniku indukcji wzajemnej}}
Załóżmy, że mamy dwie przewodzące pętle, na pętle numer jeden oddziałuje z nią pętla numer dwa, powodując w niej strumień indukcji magnetycznej, korzystając przy tym z równości na strumień indukcji pola magnetycznego {{LinkWzór|14.4}} i definicji indukcji pola magnetycznego poprzez wektorowy potencjał pola magnetycznego {{LinkWzór|10.1|Magnetyczny_potencjał_wektorowy}} i zamienieniu w tym strumieniu na całkę po powierzchni ograniczonej przez zamknięty kontur na całkę po konturze, wtedy:
{{CentrujWzór|<MATH>\Phi_1=\int\vec{B}_2d\vec{S}_1=\int \left(\nabla\times\vec{A}_2\right)d\vec{S}_1=\oint \vec{A}_2d\vec{l}_1\;</MATH>|14.9}}
Z magnetostatyki wektorowy potencjał magnetyczny pola magnetycznego {{LinkWzór|10.8|Magnetyczny_potencjał_wektorowy}} pochodzącego od pętli pierwszej jest napisany wzorem:
{{CentrujWzór|<MATH>\vec{A}_2={{\mu_0I_2}\over{4\pi}}\oint{{d\vec{l}_2}\over{R}}\;</MATH>|14.10}}
Jeśli podstawimy wzór na wektorowy potencjał magnetyczny {{LinkWzór|14.10}} do wzoru na strumień magnetyczny ograniczonej pewnym dowolnym konturem {{LinkWzór|14.9}}, to:
{{CentrujWzór|<MATH>\Phi_1=I_2\oint\left[{{\mu_0}\over{4\pi}}\oint{{d\vec{l}_2}\over{R}}\right]d\vec{l}_1\;</MATH>|14.11}}
Oczywiste jest, że wzór {{LinkWzór|14.11}} po przegrupowaniu operatorów całek okrężnych w jedno miejsce, wtedy ten nasz wzór jest równoważny:
{{CentrujWzór|<MATH>\Phi_1={{\mu_0}\over{4\pi}}\oint\oint{{d\vec{l}_2d\vec{l}_2}\over{R}}\;</MATH>|14.12}}
* Tutaj R jest to odległość od siebie odcinków: {{Formuła|<MATH>d\vec{l}_1\;</MATH>}} od {{Formuła|<MATH>d\vec{l}_2\;</MATH>}}.
Wzór {{LinkWzór|14.12}} możemy zapisać w postaci wydzielając stałą M{{Sub|12}}, wtedy:
{{CentrujWzór|<MATH>\Phi_1=I_2 M_{12}\;</MATH>|14.13}}
* gdzie:
{{CentrujWzór|<MATH>M_{12}={{\mu_0}\over{4\pi}}\oint\oint {{d\vec{l}_2d\vec{l}_1}\over{R}}\;</MATH>|14.14}}
Wzór na wielkość indukcji wzajemnej {{LinkWzór|14.14}} jest symetryczny ze względu na przestawienie {{Formuła|<MATH>d\vec{l}_1\;</MATH>}} z {{Formuła|<MATH>d\vec{l}_2\;</MATH>}}, czyli zamiana według schematu {{Formuła|<MATH>1\rightarrow 2\;</MATH>}} oraz {{Formuła|<MATH>2\rightarrow 1\;</MATH>}}, wtedy indukcja wzajemna po tej zamianie się nie zmienia się, czyli jest symetryczny. Oczywiste jest, że ona nie zależy od czasu. Oznaczmy je przez literkę {{Formuła|<MATH>M\;</MATH>}}.
Wzór na {{Formuła|<MATH>M_{12}\;</MATH>}} {{LinkWzór|14.14}} jest to '''wzór Neumanna'''.
Jeśli podstawimy wzór {{LinkWzór|14.13}} do wzoru na prawo Faraday'a {{LinkWzór|14.1}} dla pierwszej pętli, podobnie mamy dla drugiej pętli, wtedy wzory na indukcję wzajemną drugiej pętli względem pierwszej pętli na siłę elektromotoryczną dla dwóch pętli jednocześnie są wyrażone wzorami:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\mathcal{E}_1=-M_{12}{{dI_2}\over{dt}}=-M{{dI_2}\over{dt}}\;</MATH>|14.15}}
| 2 = {{CentrujWzór|<MATH>\mathcal{E}_2=-M_{21}{{dI_1}\over{dt}}=-M{{dI_1}\over{dt}}\;</MATH>|14.16}}
}}
Widzimy, że wzory na siłę elektromagnetyczną są takie same, ale zależą od zmian w czasie natężenia prądu elektrycznego w pętli drugiej (wzór {{LinkWzór|14.15}}) lub w pętli pierwszej (wzór {{LinkWzór|14.16}}).
=== Indukcyjność własna ===
Tutaj zajmować się będziemy się tylko jednym obwodem, który oddziałuje magnetycznie sam ze sobą.
==== Prawo Faraday a indukcyjność własna ====
Z indukcyjnością własną mamy do czynienia, gdy ten sam obwód oddziałuje z tym samym obwodem na w sposób magnetyczny, czyli jest to szczególny przypadek indukcyjności wzajemnej. Wzór {{LinkWzór|14.13}} zapisujemy dla tej sytuacji:
{{CentrujWzór|<MATH>\Phi=LI\;</MATH>|14.17}}
Wtedy wzór na tą siłę elektromagnetyczną powstaje po podstawieniu {{LinkWzór|14.17}} do prawa Faraday'a {{LinkWzór|14.1}}:
{{CentrujWzór|<MATH>\mathcal{E}=-L{{dI}\over{dt}}\;</MATH>|14.18}}
Wzór na L jest taki sam, jak wzór Neumanna {{LinkWzór|14.14}}, tylko jest podwójne całkowanie po tym samym obwodzie, czyli geometria dotyczy tylko jednego obwodu.
==== Energia własna układu magnetycznego ====
Moc wykonana przeciwko SEM w indukcyjności własnej jakiegoś obwodu zależy od siły elektromotorycznej spowodowanej przez indukcję własną, jeśli w nim płynie prądy o natężeniu I, co jego praca wykonana przeciwko sile elektromagnetycznej SEM w jednostce czasu (dlatego tam jest znak minus lub inaczej prąd płynie przeciwnie do natężenia sił obcych elektrycznych spowodowanych zmianą indukcji pola magnetycznego w wyniku zmiany płynięcia natężenia prądu elektrycznego w tymże obwodzie) jest równa:
{{CentrujWzór|<MATH>{{dW}\over{dt}}=-\mathcal{E}I\;</MATH>|14.19}}
Wykorzystując definicję siły elektromotorycznej spowodowaną indukcyjnością własną {{Formuła|<MATH>\mathcal{E}\;</MATH>}} {{LinkWzór|14.18}}, która wynika z prawa indukcyjności Faradaya {{LinkWzór|14.1}}, pytamy siebie jaką pracę wykonał układ przy zmianie prądu w układzie o indukcyjności własnej L od I równego zero do pewnej wielkości niezerowej, stąd dochodzimy do wniosku:
{{CentrujWzór|<MATH>{{dW}\over{dt}}=L{{dI}\over{dt}}I\Rightarrow dW=LIdI\Rightarrow W={{1}\over{2}}LI^2\;</MATH>|14.20}}
Praca wykonana przeciwko SEM w układzie o indukcyjności własnej L, po przepisaniu końcowego wniosku z {{LinkWzór|14.20}} dla przejrzystości wykładu, jest wyrażona:
{{CentrujWzór|<MATH>W={{1}\over{2}}LI^2\;</MATH>|14.21}}
Nie zależy ona jak długo płynie prąd, ale jedynie od geometrii układu i natężenia prądu płynącego w tym naszym obwodzie, który oddziałuje sam ze sobą w wyniku pola magnetycznego.
== Energia układu z polem magnetycznym ==
Powyżej zakładaliśmy, że mamy ośrodek, który jest próżnią i w nim płyną prądy, ale w tym przypadku rozważmy ośrodek materialny o pewnej polaryzowalności magnetycznej, w której płyną prądy swobodne, zatem we wzorze na energię własną układu magnetycznego i na strumień indukcji magnetycznej zastępujemy w nim wielkości prądów przez prądy swobodne I{{Sub|sw}}. Czyli wzory te są nadal słuszne po dokonaniu tejże zamiany.
Strumień pola magnetycznego {{LinkWzór|14.4}} i wyrażeniu w nim indukcji pola magnetycznego przez wektorowy potencjał magnetyczny {{LinkWzór|10.1|Magnetyczny_potencjał_wektorowy}}, wtedy tą wielkość piszemy:
{{CentrujWzór|<MATH>\Phi=\int_S\vec{B}d\vec{S}=\int_S\left(\nabla\times\vec{A}\right)d\vec{S}=\oint_K\vec{A}d\vec{l}\;</MATH>|14.22}}
Wzór {{LinkWzór|14.17}}, który jest zapisany jako iloczyn indukcyjności własnej i natężenia prądów swobodnych w nim płynących, w którym do tak zdefiniowanego strumienia możemy podstawić wzór {{LinkWzór|14.22}}, który jest całką po pewnym zamkniętym konturze, w którym wielkością podcałkową jest magnetyczny potencjał wektorowy.
{{CentrujWzór|<MATH>LI_{sw}=\oint_k\vec{A}d\vec{l}\;</MATH>|14.23}}
Po podstawieniu wzoru {{LinkWzór|14.23}} do wzoru na energię obwodu zapisanej w punkcie {{LinkWzór|14.21}}, który po dokonaniu podstawieniu za LI{{Sub|sw}} jest wprost proporcjonalny do natężenia prądu elektrycznego ładunków swobodnych, o stałej proporcjonalności równej połowie indukcyjności własnej pomnożonej cyrkulacje potencjału skalarnego, co go zapisujemy:
{{CentrujWzór|<MATH>W={{1}\over{2}}LI^2_{sw}={{1}\over{2}}I_{sw}LI_{sw}={{1}\over{2}}I_{sw}\oint_K\vec{A}d\vec{l}\Rightarrow W={{1}\over{2}}\oint_K\left(\vec{A}\vec{I}_{sw}\right)dl\;</MATH>|14.24}}
Powyższy wynik końcowy można uogólnić na gęstość prądu elektrycznego, jeśli w całce {{LinkWzór|14.24}} zamieniamy całkowanie względem natężenia prądu na całkowanie po gęstości prądu wykorzystując wzór {{LinkWzór|10.7|Magnetyczny_potencjał_wektorowy}}, zatem:
{{CentrujWzór|<MATH>W={{1}\over{2}}\int_K\left(\vec{A}\vec{J}_{sw}\right)dV\;</MATH>|14.25}}
Wzór {{LinkWzór|12.19|Prądy_związane_z_polem_namagnesowanego_ciała}} możemy podstawić do wzoru {{LinkWzór|14.25}} za gęstość natężenia prądu elektrycznego swobodnego, otrzymujemy:
{{CentrujWzór|<MATH>W={{1}\over{2}}\int_K\vec{A}\left(\nabla\times\vec{H}\right)dV\;</MATH>|14.26}}
Wyznaczmy wyrażenie pomocnicze, które będzie nam później potrzebne do dalszych rozważań:
{{CentrujWzór|<MATH>\nabla\left(\vec{A}\times\vec{H}\right)=\nabla_i\epsilon_{ijk}A_jH_k=
\epsilon_{ijk}H_k\nabla_i A_j+\epsilon_{ijk}A_j\nabla_i H_k=
\epsilon_{kij}H_k\nabla_i A_j-\epsilon_{jik}A_j\nabla_iH_k=\vec{H}\left(\nabla\times\vec{H}\right)-\vec{A}\left(\nabla\times\vec{H}\right)\;</MATH>|14.27}}
Wtedy energia własna układu {{LinkWzór|14.26}}, po skorzystaniu z udowodnionej tożsamości {{LinkWzór|14.27}}, jest przedstawiona:
{{CentrujWzór|<MATH>W={{1}\over{2}}\int_K\left(\vec{H}\left(\nabla\times\vec{A}\right)-\nabla\left(\vec{A}\times\vec{H}\right)\right)dV\;</MATH>|14.28}}
Po skorzystaniu z definicji {{LinkWzór|10.1|Magnetyczny_potencjał_wektorowy}} dla pierwszego wyrazu w całce w wyrażeniu {{LinkWzór|14.28}} i po rozbiciu jej na dwie całki i zamienieniu w tej drugiej z całkowania po objętości ograniczonej pewną powierzchnią zamkniętą na całkowanie po tej powierzchni według twierdzenia Ostrogradskiego-Gaussa, wtedy:
{{CentrujWzór|<MATH>W={{1}\over{2}}\left[\int_K\vec{H}\vec{B}dV-\oint_K\left(\vec{A}\times\vec{H}\right)d\vec{S}\right]\;</MATH>|14.29}}
W drugiej całce w {{LinkWzór|14.29}} będziemy dokonywać całkowania po powierzchni nieskończonej, jak zakładamy:
{{CentrujWzór|<MATH>\oint_K\left(\vec{A}\times\vec{H}\right)d\vec{S}=0\;</MATH>|14.30}}
Równanie {{LinkWzór|14.29}}, na podstawie całki powierzchniowej {{LinkWzór|14.30}}, jest równe:
{{CentrujWzór|<MATH>W={{1}\over{2}}\int_{\vec{r}\in R^3}\vec{H}\vec{B}dV\;</MATH>|14.31}}
Gęstość energii w danym punkcie w przestrzeni z polem magnetycznym o pewnej indukcji na podstawie równania {{LinkWzór|14.31}} określamy:
{{CentrujWzór|<MATH>u_{mag}={{1}\over{2}}\vec{H}\vec{B}\;</MATH>|14.32}}
Widzimy, że gęstość energii pola magnetycznego w danym punkcie w próżni jest zależna od wektorów indukcji i natężenia pola magnetycznego.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
0asbmg72qv0u9nl4mjh3er0ruu1g0av
Elektrodynamika klasyczna/Elektrodynamika Maxwella
0
16805
558883
513485
2026-10-08T01:05:56Z
Persino
2851
558883
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
W tym rozdziale przypomnimy równania w postaci różniczkowej magnetostatyki i elektrostatyki, i uogólnimy tak by stały się równaniami elektrodynamiki Maxwella.
== Równania elektrostatyki i magnetostatyki oraz prawo Faraday'a ==
Dotychczas poznaliśmy prawa dotyczące elektrostatyki i magnetostatyki wraz z prawem Faradaya, w postaci:
{{Tabelka|opcje=width="100%"|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=4|{{Center|'''Różniczkowe równania elektrostatyki i magnetostatyki oraz prawo indukcji elektromagnetycznej Faraday'a:'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Prawo Gaussa w elektrostatyce''' {{LinkWzór|2.11|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}}}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Prawo Gaussa w magnetostatyce''' {{LinkWzór|9.7|Wektor_indukcji_magnetycznej}}}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Prawo Faraday'a''' {{LinkWzór|14.1|Indukcja_elektromagnetyczna}}}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Prawo Stokesa w magnetostatyce''' {{LinkWzór|9.14|Wektor_indukcji_magnetycznej}}}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{E}={{\rho}\over{\epsilon_0}}</MATH>|15.1}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{B}=0</MATH>|15.2}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{E}=-{{\partial\vec{B}}\over{\partial t}}\;</MATH>|15.3}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{B}=\mu_0\vec{J}</MATH>|15.4}}}}<!--
-->}}<!--
-->}}
Załóżmy, że powyższe równania są również spełnione dla zmiennych pół elektromagnetycznych, i wykażmy, że powyższe równania są wzajemnie niesprzeczne, jeśli je w miarę uzupełnijmy.
Podziałajmy operatorem {{Formuła|<MaTH>\nabla\cdot \;</MATH>}} na lewą i prawą stronę równania {{LinkWzór|15.1}} i wyznaczymy, że jeśli lewa strona tej równości jest równa zero, przy tym korzystając ze wzoru {{LinkWzór|15.2}}, to prawa też:
{{CentrujWzór|<MATH>\nabla\cdot\left(\nabla\times\vec{E}\right)=\nabla\cdot\left(-{{\partial\vec{B}}\over{\partial t}}\right)=-{{\partial}\over{\partial t}}\left(\nabla\cdot\vec{B}\right)=-{{\partial 0}\over{\partial t}}=0</MATH>|15.5}}
* co jest tożsamościowo równe zero, zatem doszliśmy do wniosku, że drugie i trzecie równania są ze sobą niesprzeczne, czyli są poprawne.
Podziałajmy operatorem {{Formuła|<MATH>\nabla\cdot\;</MAtH>}} na lewą i prawą stronę równania {{LinkWzór|15.4}} i dojdziemy do wniosku, że w zmiennym polu magnetycznym, w których płynie prąd niestały w ogólności i zgodnie z prawem ciągłości, że jest ona logicznie sprzeczna, co możemy powiedzieć:
{{CentrujWzór|<MATH>\nabla\cdot\left(\nabla\times\vec{B}\right)=\nabla\cdot\left(\mu_0\vec{J}\right)=\mu_0\left(\nabla\cdot\vec{J}\right)</MATH>|15.6}}
Powyższe równanie jest spełnione dla prądów stałych w przestrzeni, gdy w magnetostatyce jest spełniony wzór {{LinkWzór|8.19|Magnetostatyka}}, ale ogólnie dla zmiennych prądów objętościowych nie jest już spełnione to prawo a także też równanie {{LinkWzór|15.6}}.
Prawo ciągłości dla ładunków elektrycznych znane z mechaniki teoretycznej wygląda:
{{CentrujWzór|<MATH>{{\partial\rho}\over{\partial t}}+\nabla\left(\rho\vec{v}\right)=0</MATH>|15.7}}
Można udowodnić, że można zapisać powyższe prawo przy wykorzystaniu przy pomocy definicji gęstości prądu elektrycznego, która wyraża się w zależności od prędkości ładunków {{Formuła|<MATH>\vec{v}\;</MATH>}}, którego gęstość ładunku elektrycznego jest równa ρ.
{{CentrujWzór|<MATH>\Delta q=\rho v S\Delta t\Rightarrow I={{\Delta q}\over{\Delta t}}=\rho v S\Rightarrow J=\rho v\Rightarrow\vec{J}=\rho\vec{v}</mATH>|15.8}}
Wtedy równanie ciągłości {{LinkWzór|15.7}} zastępując w nim iloczyn {{Formuła|<MATH>\rho\vec{v}\;</MATH>}} innym wyrażeniem, który wyprowadziliśmy na podstawie wyprowadzonej tożsamości {{LinkWzór|15.8}}, wtedy można zapisać to prawo w postaci:
{{CentrujWzór|<MATH>{{\partial\rho}\over{\partial t}}+\nabla\cdot\vec{J}=0</MATH>|15.9}}
W prawie ciągłości zastępujemy gęstość objętościową zmieniającego się ładunku wedle wyrażenia {{LinkWzór|15.1}} i biorąc wszystkie wyrazy w nim występujące pod operator ∇, dostajemy:
{{CentrujWzór|<MATH>\epsilon_0\nabla{{\partial\vec{E}}\over{\partial t}}+\nabla\cdot\vec{J}=0\Rightarrow
\nabla\cdot\left(\vec{J}+\epsilon_0{{\partial\vec{E}}\over{\partial t}}\right)=0</MATH>|15.10}}
Aby wyrażenie {{LinkWzór|15.4}} było spełnione dla zmiennych pól elektromagnetycznych należy w nim zastąpić wedle schematu gęstość prądu ładunków elektrycznych {{Formuła|<MATH>\vec{J}\;</MATH>}} przez sumę dwóch wielkości, tzn. gęstości ładunków elektrycznych i gęstości ładunku przesunięcia, wedle: {{Formuła|<MATH>\vec{J}+\vec{J}_p\;</MATH>}},
* gdzie prąd przesunięcia {{Formuła|<MATH>\vec{J}_p\;</maTh>}}, na podstawie równania {{LinkWzór|15.10}}, definiujemy:
{{CentrujWzór|<MATH>\vec{J}_p=\epsilon_0{{\partial\vec{E}}\over{\partial t}}</MATH>|15.11}}
Oczywiste jest, gdy prąd przesunięcia znika, to natężenie pola elektrycznego wcale się nie zmienia w czasie w danym punkcie w przestrzeni, wtedy w {{LinkWzór|15.10}} możemy nie uwzględnić dodatkowego członu, czyli prądu przesunięcia {{Formuła|<MATH>\vec{J}_p\;</MATH>}}.
Po uzupełnieniu równania {{LinkWzór|15.4}} o dodatkowy człon związanej z prądem przesunięcia, dostajemy równanie:
{{CentrujWzór|<MATH>\nabla\times\vec{B}=\mu_0\left(\vec{J}+\vec{J}_p\right)\Rightarrow\nabla\times\vec{B}=\mu_0\vec{J}+\epsilon_0\mu_0{{\partial\vec{E}}\over{\partial t}}</MATH>|15.12}}
Podziałajmy równanie {{LinkWzór|15.12}} operatorem {{Formuła|<MATH>\nabla\cdot\;</MATH>}}, wtedy jego lewa strona jest równa zero, a prawa strona jak udowodnimy na podstawie {{LinkWzór|15.10}}, też jest równa zero:
{{CentrujWzór|<MATH>\nabla\cdot\left(\nabla\times\vec{B}\right)=\nabla\cdot\left(\mu_0\vec{J}+\epsilon_0\mu_0{{\partial\vec{E}}\over{\partial t}}\right)=\mu_0\nabla\left(\vec{J}+\epsilon_0{{\partial\vec{E}}\over{\partial t}}\right)=0</MATH>|15.13}}
Powyższa równość po tej poprawce jest tożsamościowo równa zeru na mocy prawa ciągłości.
Dochodzimy, zatem do wniosku, że prawa elektromagnetyzmu zawierają w sobie prawo ciągłości ładunku elektrycznego po zamienieniu {{LinkWzór|15.4}} przez równanie {{LinkWzór|15.12}}, to wszystko stanowi treść równań Maxwella.
== Zestaw równań dla dowolnego pola elektromagnetycznego w ogólności zmiennego ==
Poniżej wypiszmy zestaw równań, które obowiązują w prawie elektromagnetyzmu Maxwella jako wniosek z poprzedniego rozdziału.
{{Tabelka|opcje=width="100%"|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=4|{{Center|'''Różniczkowe równania elektrodynamiki klasycznej Maxwella:'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Pierwsze prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Drugie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Trzecie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Czwarte prawo Maxwella'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{E}={{\rho}\over{\epsilon_0}}</MATH>|15.14}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{B}=0</MATH>|15.15}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{E}=-{{\partial\vec{B}}\over{\partial t}}</MATH>|15.16}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{B}=\mu_0\vec{J}+\epsilon_0\mu_0{{\partial\vec{E}}\over{\partial t}}</MATH>|15.17}}}}<!--
-->}}<!--
-->}}
== Ładunek elektryczny i magnetyczny a prawa Maxwella ==
Wcześniej nie uwzględnialiśmy ładunku magnetycznego w równaniach Maxwella, a teraz uwzględnimy ten wniosek:
{{Tabelka|opcje=width="100%"|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Pełny zestaw różniczkowych równań Maxwella z uwzględnieniem ładunku elektrycznego i magnetycznego:'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Pierwsze prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Drugie prawo Maxwella'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{E}={{\rho_e}\over{\epsilon_0}}</MATH>|15.18}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{B}=\mu_0\rho_m</MATH>|15.19}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Trzecie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Czwarte prawo Maxwella'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{E}=-\mu_0\vec{J}_m-{{\partial\vec{B}}\over{\partial t}}</MATH>|15.20}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{B}=\mu_0\vec{J}_e+\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}</MATH>|15.21}}}}<!--
-->}}<!--
-->}}
* Zakładamy, że istnieje prawo zachowaniu ładunku magnetycznego tak samo, jak ładunku elektrycznego {{LinkWzór|15.9}}, czyli zachodzą tożsamości:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\nabla\cdot\vec{J}_e+{{\partial\rho_e}\over{\partial t}}=0</MATH>|15.22}}
| 2 = {{CentrujWzór|<MATH>\nabla\cdot\vec{J}_m+{{\partial\rho_m}\over{\partial t}}=0</MATH>|15.23}}
}}
Jeśli wykorzystamy lokalną zasadę zachowania ładunku {{LinkWzór|15.22}}, i jeśli do niego podstawimy za gęstość ładunku elektrycznego {{Formuła|<MATH>\rho_e\;</MATH>}} równanie {{LinkWzór|15.18}}, wyznaczając z niego tą właśnie gęstość, wtedy otrzymamy wzór:
{{CentrujWzór|<MATH>\nabla\cdot\vec{J}_e+{{\partial}\over{\partial t}}\left(\epsilon_0 \nabla\vec{E}\right)\Rightarrow\nabla\cdot\left(\vec{J}_e+\epsilon_0{{\partial\vec{E}}\over{\partial t}}\right)=0</MATH>|15.24}}
Do prawa zachowania ładunku magnetycznego {{LinkWzór|15.23}} podstawimy wzór na gęstość objętościową ładunków magnetycznych wynikających ze wzoru {{LinkWzór|15.19}}, i w ten sposób dostajemy tożsamość zgodną z prawem ciągłości:
{{CentrujWzór|<MATH>\nabla\cdot\vec{J}_m+{{\partial}\over{\partial t}}\left[{{1}\over{\mu_0}}\left(\nabla\cdot\vec{B}\right)\right]=0\Rightarrow
\nabla\cdot\left(\vec{J}_m+{{1}\over{\mu_0}}{{\partial\vec{B}}\over{\partial t}}\right)=0</MATH>|15.25}}
Aby sprawdzić czy prawa elektromagnetyzmu Maxwella z uwzględnieniem ładunku magnetycznego, tzn. czy {{LinkWzór|15.20}} i {{LinkWzór|15.21}} są poprawnymi równaniami elektrodynamiki, wtedy na pierwsze z nich działamy operatorem obustronnie {{Formuła|<MATH>\nabla\cdot\;</MATH>}}, wtedy dostajemy tożsamość, że prawa strona jest równa lewej:
{{CentrujWzór|<MATH>\nabla\cdot\left(\nabla\times\vec{E}\right)=\nabla\cdot\left(-\mu_0\vec{J}_m-{{\partial\vec{B}}\over{\partial t}}\right)=-\mu_0\nabla\cdot\left(\vec{J}_m+{{1}\over{\mu_0}}{{\partial\vec{B}}\over{\partial t}}\right)=0</MATH>|15.26}}
Powyższa tożsamość jest spełniona na mocy zasady zachowania ładunku magnetycznego {{LinkWzór|15.25}}.
* Prawo Maxwella uwzględnia zasadę zachowania ładunku magnetycznego.
Następnie policzmy działając obustronnie operatorem ∇ na równanie {{LinkWzór|15.21}}:
{{CentrujWzór|<MATH>\nabla\cdot\left(\nabla\times\vec{B}\right)=\nabla\cdot\left(\mu_0\vec{J}_e+\mu_0
\epsilon_0{{\partial\vec{E}}\over{\partial t}}\right)=\mu_0\nabla\cdot\left(\vec{J}_e+\epsilon_0{{\partial\vec{E}}\over{\partial t}}\right)=0</MATH>|15.27}}
Powyższa tożsamość jest spełniona na mocy zasady zachowania ładunku elektrycznego {{LinkWzór|15.24}}.
* Prawo Maxwella również uwzględnia zasadę zachowania ładunku elektrycznego.
A więc powyższy zestaw równań Maxwella, tzn. {{LinkWzór|15.18}}, {{LinkWzór|15.19}}, {{LinkWzór|15.20}} i {{LinkWzór|15.21}} uwzględniający monopole elektryczne i magnetyczne z zasadą zachowania tychże monopoli jest zapisem równań wewnętrznie spójnym.
== Materia a różniczkowa postać równań elektrodynamiki Maxwella ==
W treści o elektrostatyce poznaliśmy wzór na gęstość powierzchniową ładunków związanych {{LinkWzór|7.8|Ciało_spolaryzowane_a_jego_pole}}, czyli jakakolwiek zmiana polaryzacji powoduje zmianę płynącego prądu w postaci:
{{CentrujWzór|<MATH>\Delta I=\Delta{{\sigma_{zw}\Delta S^{\bot} }\over{\Delta t}}={{\Delta \sigma_{zw}}\over{\Delta t}}\Delta S^{\bot}\Rightarrow d I={{\partial \sigma_{zw}}\over{\partial t}}dS^{\bot}\Rightarrow
J_p={{dI}\over{dS^{\bot}}}={{\partial\sigma_{zw}}\over{\partial t}}\Rightarrow J_p={{\partial P}\over{\partial t}}
</MATh>|15.28}}
* gdzie {{Formuła|<MatH>dS^{\bot}\;</MATH>}} jest to powierzchnia prostopadła do płynącego prądu, a więc do wektora {{Formuła|<MATH>\vec{n}\;</MATH>}} w wyniku zmiany polaryzacji elektrycznej. Zatem wektor gęstości prądu związanego ze zmianą polaryzacji elektrycznej w danym punkcie ośrodka względem czasu zapisujemy:
{{CentrujWzór|<MATH>\vec{J}_p={{\partial\vec{P}}\over{\partial t}}</MATH>|15.29}}
Całkowita gęstość objętościowa ładunku w danej infinitezymalnej objętości jest sumą gęstości ładunków swobodnych i związanych zdefiniowany przy pomocy dywergencji polaryzacji elektrycznej {{LinkWzór|7.9|Ciało_spolaryzowane_a_jego_pole}}:
{{CentrujWzór|<MATH>\rho=\rho_{sw}+\rho_{zw}=\rho_{sw}-\nabla\cdot\vec{P}</MATH>|15.30}}
Całkowita gęstość prądu objętościowego jest sumą gęstości prądów swobodnych, związanych {{LinkWzór|12.12|Prądy_związane_z_polem_namagnesowanego_ciała}} i prądu polaryzacyjnego {{LinkWzór|15.29}}, tzn.:
{{CentrujWzór|<MATH>\vec{J}=\vec{J}_{sw}+\vec{J}_{zw}+\vec{J}_p=\vec{J}_{sw}+\nabla\times\vec{M}+{{\partial\vec{P}}\over{\partial t}}</MATH>|15.31}}
Całkowita gęstość ładunku objętościowego {{LinkWzór|15.30}} wstawiamy do pierwszego prawa Maxwella {{LinkWzór|15.14}} dostając końcowy w wyniku tej operacji wzór:
{{CentrujWzór|<MATH>\nabla\cdot\vec{E}={{1}\over{\epsilon_0}}\rho\Rightarrow
\nabla\cdot\vec{E}={{1}\over{\epsilon_0}}\left(\rho_{sw}-\nabla\vec{P}\right)\Rightarrow
\nabla\cdot\left(\epsilon_0\vec{E}+\vec{P}\right)=\rho_{sw}</MATH>|15.32}}
Wektor indukcji magnetycznej zapisujemy podobnie jak dla elektrostatyki dla pewnego ośrodka, który istnieje w danym punkcie {{LinkWzór|7.14|Ciało_spolaryzowane_a_jego_pole}}, który jest funkcją natężenia pola elektrycznego ogólnie zmiennego i polaryzacji elektrycznej, które panują w danym punkcie w przestrzeni danego ośrodka, czyli wedle:
{{CentrujWzór|<MATH>\vec{D}=\epsilon_0\vec{E}+\vec{P}</MATH>|15.33}}
wtedy prawo {{LinkWzór|15.32}}, po wykorzystaniu zależności na indukcję pola elektrycznego {{LinkWzór|15.33}} (nie elektrostatycznego w tym przypadku), zapisujemy wedle:
{{CentrujWzór|<MATH>\nabla\cdot\vec{D}=\rho_{sw}</MATH>|15.34}}
Do czwartego prawa Maxwella wstawiamy wzór na całkowitą gęstość prądu objętościowego {{LinkWzór|15.31}}, wtedy można powiedzieć, że zachodzi na pewno:
{{CentrujWzór|<MATH>\nabla\times\vec{B}=\mu_0\vec{J}+\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}\Rightarrow
\nabla\times\vec{B}=\mu_0\left(\vec{J}_{sw}+\nabla\times\vec{M}+{{\partial\vec{P}}\over{\partial t}}\right)+\epsilon_0\mu_0{{\partial\vec{E}}\over{\partial t}}\Rightarrow\nabla\times\left(\vec{B}-\mu_0\vec{M}\right)=\mu_0\vec{J}_{sw}+\;</MATH>{{Br}}<MATH>=\mu_0{{\partial}\over{\partial t}}\left(\epsilon_0\vec{E}+\vec{P}\right)\Rightarrow
\nabla\times\left({{1}\over{\mu_0}}\vec{B}-\vec{M}\right)=\vec{J}_{sw}+{{\partial\vec{D}}\over{\partial t}}</MATH>|15.35}}
Skorzystajmy z definicji na natężenia pola magnetycznego w zależności od indukcji pola magnetycznego i polaryzacji pola magnetycznego, która dla pola zmiennego elektromagnetycznego definicja jest taka sama jak dla pola magnetostatycznego {{LinkWzór|12.17|Prądy_związane_z_polem_namagnesowanego_ciała}}, co powtarzając tą definicję dla pola magnetycznego zmiennego:
{{CentrujWzór|<MATH>\vec{H}={{1}\over{\mu_0}}\vec{B}-\vec{M}</Math>|15.36}}
wtedy równanie różniczkowe {{LinkWzór|15.35}} można zapisać przy pomocy równania na natężenie pola magnetycznego w danym ośrodku w ściśle określonym punkcie {{LinkWzór|15.37}}, który jest słuszny nie tylko dla pola magnetostatycznego:
{{CentrujWzór|<MATH>\nabla\times\vec{H}=\vec{J}_{sw}+{{\partial\vec{D}}\over{\partial t}}</MATH>|15.37}}
Poniżej przedstawiłem zestaw równań Maxwella słusznych dla dowolnego ośrodka zarówno magnetycznego i elektrycznego, a nawet te równania są słuszne dla próżni, dowody tych równań przedstawiłem powyżej w tym rozdziale:
{{Tabelka|opcje=width="100%"|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=4|{{Center|'''Różniczkowe prawa Maxwella dla materii''':}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Pierwsze prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Drugie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Trzecie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Czwarte prawo Maxwella'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{D}=\rho_{sw}</MATH>|15.38}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{B}=0</MATH>|15.39}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{E}=-{{\partial\vec{B}}\over{\partial t}}</MATH>|15.40}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{H}=\vec{J}_{sw}+{{\partial\vec{D}}\over{\partial t}}</MATH>|15.41}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=4|{{Center|'''Definicja pewnych wektorów w prowadzonych dla dowolnego ośrodka'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Wektor indukcji elektrycznej'''}}}}<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Wektor natężenia pola magnetycznego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|opcje=colspan=2|{{CentrujWzór|<MATH>\vec{D}=\epsilon_0\vec{E}+\vec{P}</MATH>|15.42}}}}<!--
-->{{Komórka|opcje=colspan=2|{{CentrujWzór|<MATH>\vec{H}={{1}\over{\mu_0}}\vec{B}-\vec{M}</MATH>|15.43}}}}<!--
-->}}<!--
-->}}
== Ośrodek liniowy a postać różniczkowa równań Maxwella ==
Ośrodek liniowy zarówno elektrycznie i magnetycznie ma podobne związki jak dla pola elektrostatycznego {{LinkWzór|7.38|Ciało_spolaryzowane_a_jego_pole}} i dla pola magnetostatycznego {{LinkWzór|12.32|Prądy_związane_z_polem_namagnesowanego_ciała}}, które są również słuszne dla ogólnie zmiennego pola elektromagnetycznego:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{D}=\epsilon\vec{E}</MATH>|15.44}}
| 2 = {{CentrujWzór|<MATH>\vec{H}={{1}\over{\mu}}\vec{B}</MATH>|15.45}}
}}
Wtedy prawa elektrodynamiki Maxwella dla ośrodka materialnego, spełniają zależności:
{{Tabelka|opcje=width="100%"|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=4|{{Center|'''Prawa Maxwella dla ośrodka liniowego''':}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Pierwsze prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Drugie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Trzecie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Czwarte prawo Maxwella'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{E}={{1}\over{\epsilon}}\rho_{sw}</MATH>|15.46}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{B}=0</MATH>|15.47}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{E}=-{{\partial\vec{B}}\over{\partial t}}</MATH>|15.48}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{B}=\mu\vec{J}_{sw}+\epsilon\mu{{\partial\vec{E}}\over{\partial t}}</MATH>|15.49}}}}<!--
-->}}<!--
-->}}
== Materia a całkowa postać równań elektrodynamiki Maxwella ==
Wykorzystując prawo Gaussa i Stokesa znane z matematyki możemy wyznaczyć prawa elektrodynamiki Maxwella z ich postaci różniczkowej.
{{Tabelka|opcje=width="100%"|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=4|{{Center|'''Całkowa postać równań elektrodynamiki Maxwella dla ośrodka materialnego:'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Pierwsze prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Drugie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Trzecie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Czwarte prawo Maxwella'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\oint_S \vec{D}d\vec{S}=q_{sw}</MATH>|15.50}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\oint_S\vec{B}d\vec{S}=0</MATH>|15.51}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\oint_P\vec{E}d\vec{l}=-{{d\Phi_B}\over{dt}}</MATH>|15.52}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\oint_P\vec{H}d\vec{l}=I_{sw}+{{d\Phi_D}\over{dt}}</MATH>|15.53}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Definicja pewnych wektorów'''}}}}<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Definicja strumieni'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<Math>\vec{D}=\epsilon_0\vec{E}+\vec{P}\;</MaTH>|15.54}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\vec{H}={{1}\over{\mu_0}}\vec{B}-\vec{M}\;</MaTH>|15.55}}}}<!--
-->{{Komórka|{{CentrujWzór|<math>\Phi_D=\int_S\vec{D}d\vec{S}\;</MaTH>|15.56}}}}<!--
-->{{Komórka|{{CentrujWzór|<math>\Phi_B=\int_S\vec{B}d\vec{S}\;</MaTH>|15.57}}}}<!--
-->}}<!--
-->}}
== Graniczne warunki brzegowe dla równań elektrodynamiki Maxwella dotyczące materii ==
{{Rysunek|Zastosowanie prawa Faraday'a w elektrodynamice klasycznej.jpeg|lk1|Rysunek przedstawiający cyrkulację natężenia pola elektrycznego względem strumienia indukcji pola magnetycznego}}
Obierzmy sobie pewien prostokąt, którego krawędzie górne i dolne są równoległe do małego wycinka powierzchni między dwoma ośrodkami, której wycinek przypomina płaską płaszczyznę w przybliżeniu. Ten strumień magnetyczny liczymy po powierzchni tego prostokąta zastępując ją jako strumień z średniego pola magnetycznego pojawiającego się na tej powierzchni tej figury, co poniżej nie będziemy specjalnie oznaczać. Strumień indukcji pola magnetycznego {{LinkWzór|15.57}}, która jest całką indukcji pola magnetycznego względem powierzchni tegoż obranego prostokąta, zapisujemy:
{{CentrujWzór|<MATh>\Phi_B=\oint_S\vec{B}d\vec{S}=B^{||}lh=hlB^{||}\;</MATH>|15.58}}
Zdefiniujmy pochodną zupełną strumienia indukcji pola magnetycznego {{LinkWzór|15.58}} względem czasu, jest ona zależna od długości l i wysokości prostokąta h:
{{CentrujWzór|<MATH>{{d}\over{dt}}\Phi_B=hl{{d B^{||}}\over{dt}}\;</MATH>|15.59}}
Cyrkulacja pola magnetycznego obliczonego na wspomnianym konturze, który jest prostokątem, można zapisać przy pomocy też długości i szerokości naszego obranego prostokąta, ale w oddzielnych składnikach, który zapisujemy:
{{CentrujWzór|<MATH>\oint_K\vec{E}d\vec{l}=E^{||}_{nad}l-E^{||}_{pod}l+E^{||}_{prawy}h-E^{||}_{lewy}h</MATH>|15.60}}
Dochodzimy do wniosku, że trzecie prawo Maxwella dla ośrodków materialnych {{LinkWzór|15.52}}, korzystając przy tym z wniosków {{LinkWzór|15.59}} (prawa strona tego prawa) i {{LinkWzór|15.60}} (lewa strona tego prawa), łącząc te wnioski w prawie Faraday'a, dochodzimy więc do równania:
{{CentrujWzór|<MATH>E^{||}_{nad}l-E^{||}_{pod}l+E^{||}_{prawy}h-E^{||}_{lewy}h=-hl{{d B^{||}}\over{dt}}</MATH>|15.61}}
Równanie {{LinkWzór|15.61}} dzielimy obustronnie przez zmienną l charakteryzującego długość obranego ścisłego prostokąta, wtedy dostajemy inne równoważne stwierdzenie:
{{CentrujWzór|<MATH>E^{||}_{nad}-E^{||}_{pod}+{{h}\over{l}}\left(E^{||}_{prawy}-E^{||}_{lewy}\right)=-h{{dB^{||}}\over{dt}}</MATH>|15.62}}
Jeśli dodatkowo obrany powyżej prostokąt jest mały, dla którego zachodzi: {{Formuła|<MATH>{{h}\over{l}}\rightarrow 0</MATH>}}, a także {{Formuła|<MATH>l\rightarrow 0</MATH>}}, czyli wszystkie krawędzie prostokąta dążą do zera, ale stosunek krawędzi bocznych przez długość boku górnego lub dolnego dąży do zera, i dlatego ten stosunek jest taki, by byśmy mieli w końcowym wniosku doczynienia z tylko składowymi równoległymi wektora natężenia pola elektrycznego do granicy dwóch ośrodków ściśle określonych, to z równości {{LinkWzór|15.62}} wynika, że wektor składowej natężenia pola elektrycznego równoległej do bardzo małego wycinka powierzchni granicy pomiędzy ośrodkami zmienia się przechodząc z jednego ośrodka do drugiego na w sposób:
{{CentrujWzór|<MATH>E^{||}_{nad}-E^{||}_{pod}=0</MATH>|15.63}}
Otrzymaliśmy takie samo prawo jak dla elektrostatyki w wykorzystaniu prawa Stokesa {{LinkWzór|7.33|Ciało_spolaryzowane_a_jego_pole}}.
{{Rysunek|Zastosowanie czwartego prawa Maxwella w elektrodynamic klasycznej.jpeg|lk2|Rysunek przedstawiający cyrkulację pola natężenia pola magnetycznego względem strumienia indukcji pola elektrycznego}}
Obierzmy drugi prostokąt, którego strumień indukcji pola elektrycznego {{LinkWzór|15.56}} zapisujemy jako całkę względem indukcji pola elektrycznego w ośrodku materialnym przy powierzchni prostokąta równej lh, którą zastepujemy przez iloczyn średniej indukcji pola elektrycznego przez pole tego prostokata, dostajemy przy tych rozważaniach wniosek:
{{CentrujWzór|<MATH>\Phi_D=\oint_S\vec{D}d\vec{S}=lhD^{||}</MATH>|15.64}}
Zmiana strumienia indukcji elektrycznej {{LinkWzór|15.64}} względem czasu, jak zobaczymy, że ona jest zależna od długości l i wysokości kwadratu h i przedstawiamy ją wedle sposobu:
{{CentrujWzór|<MATH>{{d\Phi_D}\over{dt}}=lh{{dD^{||}}\over{dt}}</MATH>|15.65}}
Cyrkulacja natężenia pola elektrycznego przedstawiamy jako całkę okrężną po konturze naszego obranego prostokąta i wyrazimy ją według wzoru:
{{CentrujWzór|<MATH>\oint_K\vec{H}d\vec{l}=H^{||}_{nad}l-H^{||}_{pod}l+H^{||}_{prawy}h-H^{||}_{lewy}h</MATH>|15.66}}
Obliczone już wnioski {{LinkWzór|15.66}} i {{LinkWzór|15.65}} podstawiamy do prawa czwartego Maxwella {{LinkWzór|15.53}}, tzn. do lewej i prawej jego stronie, dochodzimy do:
{{CentrujWzór|<MATH>H^{||}_{nad}l-H^{||}_{pod}l+H^{||}_{prawy}h-H^{||}_{lewy}h=I_{sw}+lh{{dD^{||}}\over{dt}}</MATH>|15.67}}
Podzielmy równanie {{LinkWzór|15.67}} przez niezerową wielkość l, która jest długością obranego wcześniej prostokąta, mamy:
{{CentrujWzór|<MATH>H^{||}_{nad}-H^{||}_{pod}+{{h}\over{l}}\left(H^{||}_{prawy}-H^{||}_{lewy}\right)={{I_{sw}}\over{l}}+h{{dD^{||}}\over{dt}}</MATH>|15.68}}
Jeśli dodatkowo obrany powyżej prostokąt jest mały, dla którego zachodzi {{Formuła|<MATH>{{h}\over{l}}\rightarrow 0</MATH>}}, a także {{Formuła|<MATH>l\rightarrow 0</MATH>}}, czyli długości wszystkich krawędzi tego prostokąta dążą do zera, ale stosunek długości dowolnej krawędzi bocznej przez długości krawędzi dolnego i górnego dąży do zera, ależ też w równości {{LinkWzór|15.68}} {{Formuła|<MATH>I_{sw}\;</MATH>}} dąży do zera, jako bardzo małe natężenie prądu elektrycznego przepływającego przez nieskończenie mały prostokąt, to wzór {{LinkWzór|15.68}} na podstawie wspomnianych warunków przechodzi w równość:
{{CentrujWzór|<MATH>H^{||}_{nad}-H^{||}_{pod}={{I_{sw}}\over{l}}</MATH>|15.69}}
Jeśli zastosujemy definicję gęstości prądu powierzchniowego {{LinkWzór|8.10|Magnetostatyka}}, wtedy prawo {{LinkWzór|15.69}} zapisujemy skalarnie w postaci:
{{CentrujWzór|<MATH>H^{||}_{nad}-H^{||}_{pod}=K</MATH>|15.70}}
W prowadzając obliczenia na wektorach w {{LinkWzór|15.70}} biorąc normalną {{Formuła|<MATH>\vec{n}\;</MaTH>}} jako wektor prostopadły do powierzchni granicy dwóch obranych prostokątów, wtedy mamy:
{{CentrujWzór|<MATH>\vec{H}^{||}_{nad}-H^{||}_{pod}=\vec{K}\times\hat{n}</MATH>|15.71}}
Prawo {{LinkWzór|15.71}} wynikającego z prawa Maxwella, jak doszliśmy do wniosku, że ono też jest słuszne dla stałych prądów w ośrodku materialnym {{LinkWzór|12.26|Prądy_związane_z_polem_namagnesowanego_ciała}} i nie tylko.
Warunki graniczne według pierwszego lub drugiego prawa Maxwella otrzymujemy jak elektrostatyce lub magnetostatyce, tylko operujemy na gęstościach powierzchniowych ładunków i prądach swobodnych. Wniosek wynikającego z pierwszego prawa Maxwella dla ośrodków materialnych jest taki sam jak wniosek wynikającego z prawa Gaussa dla elektrostatyki {{LinkWzór|7.30|Ciało_spolaryzowane_a_jego_pole}}:
{{CentrujWzór|<MATH>D^{||}_{nad}-D^{||}_{pod}=\sigma_{sw}</MATH>|15.72}}
A także wniosek wynikającego z drugiego prawa Maxwella, który jest identyczny z prawem Gaussa dla magnetostatyki {{LinkWzór|10.30|Magnetyczny_potencjał_wektorowy}}:
{{CentrujWzór|<MATH>B^{||}_{nad}-B^{\bot}_{pod}=0</MATH>|15.73}}
Zestaw warunków granicznym przyjmuje postać na granicy między dwoma ośrodkami zarówno magnetycznie i elektrycznie w elektrodynamice klasycznej Maxwella:
{{Tabelka|opcje=width="100%"|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Zestaw warunków granicznych dla dowolnego ośrodka materialnego:'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>D^{||}_{nad}-D^{||}_{pod}=\sigma_{sw}</MATH>|15.74}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>E^{||}_{nad}-E^{||}_{pod}=0</MATH>|15.75}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>B^{||}_{nad}-B^{\bot}_{pod}=0</MATH>|15.76}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\vec{H}^{||}_{nad}-\vec{H}^{||}_{pod}=\vec{K}\times\hat{n}</MATH>|15.77}}}}<!--
-->}}<!--
-->}}
Jeśli mamy do czynienia z ośrodkiem magnetycznym zarówno liniowo magnetycznie i jak elektrycznie, to zestaw tych warunków dla ośrodków spełniającego warunki {{LinkWzór|15.44}} (elektryczność) i {{LinkWzór|15.45}} (magnetyzm) są:
{{Tabelka|opcje=width="100%"|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Zestaw warunków granicznych:'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\epsilon_{nad} E^{\bot}_{nad}-\epsilon_{pod} E^{\bot}_{pod}=\sigma_{sw}</MATH>|15.78}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>E^{||}_{nad}-E^{||}_{pod}=0</MATH>|15.79}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\mu_{nad} H^{\bot}_{nad}-\mu_{pod} H^{\bot}_{pod}=0</MATH>|15.80}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\vec{H}^{||}_{nad}-\vec{H}^{||}_{pod}=\vec{K}\times\hat{n}</MATH>|15.81}}}}<!--
-->}}<!--
-->}}
Dla ośrodka liniowego magnetycznie i elektrycznie, gdy w szczególności nie mamy ładunków swobodnych, czy powierzchniowych prądów swobodnych, to zestaw tych warunków brzegowych wygląda wtedy:
{{Tabelka|opcje=width="100%"|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Warunki graniczne, gdy brak ładunków i prądów powierzchniowych'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\epsilon_{nad} E^{\bot}_{nad}-\epsilon_{pod} E^{\bot}_{pod}=0</MATH>|15.82}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>E^{||}_{nad}-E^{||}_{pod}=0</MATH>|15.83}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\mu_{nad} H^{\bot}_{nad}-\mu_{pod} H^{\bot}_{pod}=0</MATH>|15.84}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\vec{H}^{||}_{nad}-\vec{H}^{||}_{pod}=0</MATH>|15.85}}}}<!--
-->}}<!--
-->}}
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
lgpoyymxfknpjdsdf0kvz47wwdnl6js
Elektrodynamika klasyczna/Zasady zachowania a twierdzenia o właściwościach pola elektromagnetycznego
0
16824
558884
513486
2026-10-08T01:09:41Z
Persino
2851
558884
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy się zajmować właściwościami pola w elektrodynamice według elektrodynamiki klasycznej (Maxwella), jego energię, pęd, moment pędu, i wiedząc coś o tych wielkościach powiemy o ich zasadach zachowania.
== Zasada zachowania ładunku elektrycznego, równanie ciągłości ==
Według globalnej zasady zachowania ładunku, ładunek w danej objętości zmienia się o wartość, która uszła z tej lub doszła do tej właśnie objętości.
Wyobraźmy sobie pewną objętość zamkniętą, w której znajduje się ładunek q, w tej objętości ładunek jest rozłożony w każdej jej punkcie z pewną gęstością objętościową, zatem całkowity omawiany ładunek znajdujący się w tej objętości jest sumą wszystkich nieskończenie małych ładunków znajdujących się w tej właśnie objętości:
{{CentrujWzór|<MATH>q=\int_V \rho dV\;</MATH>|16.1}}
Ilość ładunku, która przybyła do tej objętości na jednostkę czasu wyraża się jako pochodna zupełna wielkości całkowitego ładunku znajdującego się w tej właśnie objętości {{LinkWzór|16.1}} i piszemy go przy pomocy:
{{CentrujWzór|<MATH>{{dq}\over{dt}}={{d}\over{dt}}\int_V\rho dV=\int_V{{\partial\rho}\over{\partial t}}dV\;</MATH>|16.2}}
Jeśli powierzchnię zamkniętą ograniczającą objętość V podzielimy na nieskończenie wiele małych takich fragmentów, a te fragmenty mają wektor powierzchni {{Formuła|<MATH>d\vec{S}\;</MATH>}} prostopadły do niej, zatem objętość ładunku z jaką wypłynęła z omawianej powierzchni jest wyrażona przez {{Formuła|<MATH>dV=vdt\cos\alpha dS=\vec{v}d\vec{S}dt\;</MATH>}}
* gdzie α jest kątem między wektorami tej nieskończenie małej powierzchni, a wektorem prędkości z jaką wypływa ten właśnie ładunek.
Ubytek ładunku i prędkość ubytku ładunku są napisane:
{{CentrujWzór|<MATH>-dq=\oint_S\rho \vec{v}d\vec{S}dt\Rightarrow -{{dq}\over{dt}}=\oint_S\rho\vec{v}d\vec{S}\;</MATH>|16.3}}
Oczywiste jest, że końcowe wzory {{LinkWzór|16.2}} i {{LinkWzór|16.3}} możemy ze sobą połączyć, w rezultacie otrzymując tożsamość:
{{CentrujWzór|<MATH>-\int_V{{\partial\rho}\over{\partial t}}dV=\oint_S\rho\vec{v}d\vec{S}\;</MATH>|16.4}}
Następnym krokiem jest zastosowanie prawa Ostrogradskiego-Gaussa przy zamianie całki powierzchniowej przy całkowaniu na powierzchni zamkniętej na całkę po objętości, którą ogranicza ta właśnie powierzchnia, dla prawej strony równania {{LinkWzór|16.4}}, stąd wniosek:
{{CentrujWzór|<MATH>-\int_V{{\partial\rho}\over{\partial t}}dV=\int_V\nabla\cdot\left(\rho\vec{v}\right)dV\;</MATH>|16.5}}
W równaniu {{LinkWzór|16.5}} możemy przenieść wszystko na jedną stronę, wtedy otrzymujemy, że całka po objętości, którą ogranicza dowolna objętość jest zawsze równa zero:
{{CentrujWzór|<MATh>\int_V\left[\nabla\cdot\left(\rho\vec{v}\right)+{{\partial\rho}\over{\partial t}}\right]dV=0\;</MATH>|16.6}}
Ponieważ w równaniu {{LinkWzór|16.6}} nic nie powiedzieliśmy po jakiej objętości całkujemy, którego całka zawsze jest zawsze równa zero, zatem dostajemy, że funkcja podcałkowa lewej strony wspomnianego równania jest zawsze równa zero.
{{CentrujWzór|<MATH>\nabla\cdot\left(\rho\vec{v}\right)+{{\partial\rho}\over{\partial t}}=0\;</MATH>|16.7}}
Wyobraźmy sobie przewodnik z prądem, w której płynie prąd o gęstości ładunku ρ przez powierzchnię S , i w nim płyną ładunki z prędkością {{Formuła|<MATH>\vec{v}\;</MATH>}}, zatem ilość ładunków Δ q, które przepłyną przez tę powierzchnię w czasie Δt, a także natężenie prądu elektrycznego, są wyrażone przez:
{{CentrujWzór|<MATH>\Delta q=\rho\vec{v}\vec{S}\Delta t\Rightarrow I={{\Delta q}\over{\Delta t}}=\rho\vec{v}\vec{S}\;</MATH>|16.8}}
W ostatecznych rachunkach przyjmujemy, że powierzchnia jest prostopadła do prędkości nośników tychże wspomnianych ładunków, czyli wektor tej powierzchni jest równoległy do tej prędkości, zatem gęstość prądu ładunków elektrycznych jest równoległa do prędkości tych ładunków, i jego wartość wyrażamy ją jako stosunek natężenia prądu elektrycznego przez powierzchnię, przez który przepływa ten ładunek:
{{CentrujWzór|<MATH>I=\rho v S\Rightarrow J={{I}\over{S}}=\rho v\Rightarrow\vec{J}=\rho\vec{v}\;</MATH>|16.9}}
'''Równanie ciągłości''' {{LinkWzór|16.7}} na podstawie definicji gęstości prądu {{LinkWzór|16.9}} przedstawia się bardziej eleganckiej postaci:
{{CentrujWzór|<MATH>\nabla\cdot\vec{J}+{{\partial\rho}\over{\partial t}}=0\;</MATH>|16.10}}
Co jest równoważne wzorowi {{LinkWzór|16.10}} zapisanej za pomocą nie operatora ∇, tylko za pomocą operatora dywergencji:
{{CentrujWzór|<MATH>\operatorname{div}\vec{J}+{{\partial\rho}\over{\partial t}}=0\;</MATH>|16.11}}
Powyższe równanie jest treścią '''lokalnej zasady zachowania ładunku''' w danym punkcje należącym do naszej wspomnianej objętości.
Innym wariantem lokalnej zasady zachowania ładunku obowiązujące dla danej zakrzywionej płaszczyzny analogicznie do równania {{LinkWzór|16.11}} wyraża się za pomocą gęstości ładunku i prądu ładunku powierzchniowego, co zapisujemy w tym przypadku:
{{CentrujWzór|<MATH>\operatorname{div}\vec{K}+{{\partial\vec{\sigma}}\over{\partial t}}=0</MATH>|16.12}}
== Twierdzenie Poyntinga, a energia pola elektromagnetycznego, wektor Poyntinga ==
Tutaj policzymy moc wykonywaną przez siły elektromagnetyczne nad przesunięciem ładunku swobodnego q{{sub|sw}} i jaka jest energia pola elektromagnetycznego.
Infinitezymalna praca wykonana nad ładunkiem q przy przesunięciu jego o wektor {{Formuła|<MATH>d\vec{l}\;</MATH>}} przez siłę {{Formuła|<MATH>\vec{F}\;</MATH>}} jest napisana przez:
{{CentrujWzór|<MATH>dW_q=\vec{F}\cdot d\vec{l}\;</MATH>|16.13}}
Gdzie wektor siły {{Formuła|<MATH>\vec{F}\;</MATH>}} występujący we wzorze {{LinkWzór|16.13}} jest to siła Lorentza zdefiniowaną wedle wzoru {{LinkWzór|8.3|Magnetostatyka}}
A także przesunięcie występujące w nim zdefiniujmy za pomocą wektora prędkości z jaką dana cząstka porusza się, czyli wedle {{Formuła|<MATH>d\vec{l}=\vec{v}dt\;</MATH>}}, wtedy nieskończenie mała praca wykonana nad przesunięciem ładunku q{{sub|sw}} w czasie dt jest równa:
{{CentrujWzór|<MATH>dW_q=q_{sw}\left(\vec{E}+\vec{v}\times\vec{B}\right)\vec{v}dt=q_{sw}\vec{E}\cdot\vec{v}dt+q_{sw}\left(\vec{v}\times\vec{B}\right)\vec{v}dt=q_{sw}\vec{E}\cdot\vec{v}dt\;</MATH>|16.14}}
Moc wykonywana nad ładunkiem q{{sub|sw}} jest równa stosunkowi nieskończenie małej pracy dW{{sub|q}} w czasie dt przez ten czas, zatem całkowita praca na jednostkę czasu wykonana nad układem nieskończenie małych ładunków rozłożonych w sposób ciągły z gęstością ładunku ρ{{sub|sw}}, w których w tych punktach te ładunki poruszają się z pewnymi prędkościami, w których to punktach o pewnym natężeniu jest pole elektryczne, jest równa:
{{CentrujWzór|<math>{{dW_q}\over{dt}}=q_{sw}\vec{E}\cdot\vec{v}\Rightarrow {{dW}\over{dt}}=\int_V\rho_{sw}\vec{E}\cdot\vec{v}dV\;</MATH>|16.15}}
Ale ponieważ zachodzi {{LinkWzór|16.9}}, to moc {{LinkWzór|16.15}} można wyrazić za pomocą gęstości prądu ładunku elektrycznego, ale swobodnego:
{{CentrujWzór|<math>{{dW}\over{dt}}=\int_V\left(\vec{E}\cdot\vec{J}_{sw}\right)dV\;</MATH>|16.16}}
Energia mechaniczna układu jest zależna od pewnej całki po pewnej objętości, którą ogranicza pewna zamknięta powierzchnia, w której funkcją podcałkową jest iloczynem skalarnym natężenie pola elektrycznego i gęstości ładunków swobodnych.
Gęstość prądu elektrycznego objętościowego ładunku swobodnego możemy policzyć z czwartego prawa Maxwella {{LinkWzór|15.41|Elektrodynamika_Maxwella}} dla ośrodków materialnych:
{{CentrujWzór|<MATH>\nabla\times\vec{H}=\vec{J}+{{\partial\vec{D}}\over{\partial t}}\Rightarrow\vec{J}_{sw}=\left(\nabla\times\vec{H}\right)-{{\partial\vec{D}}\over{\partial t}}\;</MATH>|16.17}}
Jeśli podstawimy końcowy wzór {{LinkWzór|16.17}} do wzoru (na moc podczas przesuwania układu ładunków swobodnych ciągłych w polu elektrycznym) {{LinkWzór|16.16}}, to:
{{CentrujWzór|<MATH>{{dW}\over{dt}}=\int_V\vec{E}\cdot\left(\left(\nabla\times\vec{H}\right)-{{\partial\vec{D}}\over{\partial t}}\right)dV=\int_V\vec{E}\cdot\left(\nabla\times\vec{H}\right)dV-\int_V\vec{E}{{\partial\vec{D}}\over{\partial t}}\;</MATH>|16.18}}
Policzmy teraz wyrażenie pomocnicze, które będzie nam potrzebne w punkcie {{LinkWzór|16.18}}, by dalej można było przeprowadzić dalsze obliczenia:
{{CentrujWzór|<MATH>\nabla\cdot\left(\vec{E}\times\vec{H}\right)=\nabla_i\epsilon_{ijk}E_jH_k=
\epsilon_{ijk}E_j\nabla_iH_k+\epsilon_{ijk}H_k\nabla_i E_j=
-\epsilon_{jik}E_j\nabla_i H_k+\epsilon_{kij}H_k\nabla_i E_j=\vec{H}\cdot\left(\nabla\times\vec{E}\right)-\vec{E}\cdot\left(\nabla\times\vec{H}\right)\;</MATH>|16.19}}
Zastosowanie wniosków wynikających ze wzoru {{LinkWzór|16.19}} możemy zastosować do równania {{LinkWzór|16.18}}:
{{CentrujWzór|<MATH>{{dW}\over{dt}}=\int_V\left[\vec{H}\cdot\left(\nabla\times\vec{E}\right)-\nabla\cdot\left(\vec{E}\times\vec{H}\right)\right]dV-\int_V\vec{E}\cdot{{\partial\vec{D}}\over{\partial t}}dV\;</MATH>|16.20}}
Do wniosku {{LinkWzór|16.20}} możemy zastosować trzecie prawo Maxwella {{LinkWzór|15.14|Elektrodynamika_Maxwella}} dla ośrodków materialnych:
{{CentrujWzór|<MATH>{{dW}\over{dt}}=-\int_V\vec{H}\cdot{{\partial\vec{B}}\over{\partial t}}dV-\int_V\vec{E}\cdot{{\partial\vec{D}}\over{\partial t}}dV-\int_V\nabla\left(\vec{E}\times\vec{H}\right)dV\;</MATH>|16.21}}
Wektor natężenia pola magnetycznego możemy przedstawić przy pomocy indukcji pola magnetycznego i magnetyzacji, wedle wzoru {{LinkWzór|15.36|Elektrodynamika_Maxwella}}, a wektor magnetyzacji jak dla ośrodków magnetycznych {{LinkWzór|11.30|Elementarne_właściwości_materii_w_polu_magnetycznym}}, a wektor indukcji elektrycznej pola elektrycznego możemy zapisać wedle wzoru {{LinkWzór|15.33|Elektrodynamika_Maxwella}}, a polaryzację w zależności od panującego w nim pola elektrycznego zapisujemy za pomocą wzoru {{LinkWzór|6.16|Elementarne_właściwości_materii_w_polu_elektrostatycznym}}. Jeśli biorąc wszystkie te wnioski i wyrażając wektor indukcji pola magnetycznego przez jego natężenie, a wektor indukcji pola elektrycznego przez jego natężenie, to mamy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{B}=\mu_0\vec{H}+\vec{M}=(\mu_0+\hat{\chi})\vec{H}\;</MATH>|16.22}}
| 2 = {{CentrujWzór|<MATh>\vec{D}=\epsilon_0\vec{E}+\vec{P}=(\epsilon_0+\hat{\beta})\vec{E}\;</MATH>|16.23}}
}}
Jeśli założymy dodatkowo, że tensory {{Formuła|<MATH>\hat{\chi}\;</MATH>}} i {{Formuła|<MATh>\hat{\beta}\;</MATH>}} nie zależą od czasu,
to po wykorzystaniu wniosku {{LinkWzór|16.22}} i {{LinkWzór|16.23}}, wtedy wzór {{LinkWzór|16.21}}, po zastosowaniu prawa Ostrogradskiego-Gaussa dla ostatniego składnika tego równania, zapisujemy:
{{CentrujWzór|<MATH>{{dW}\over{dt}}=-{{d}\over{dt}}\int_V{{1}\over{2}}\left( \vec{E}\vec{D}+\vec{H}\vec{B}\right)-\oint_S\left(\vec{E}\times\vec{H}\right)d\vec{S}\;</MATH>|16.24}}
Wektorem Poyntinga nazywamy wektor, którego wartość jest energię przenoszoną przez pole elektromagnetyczne w jednostce czasu na jednostkę powierzchni, o kierunku i zwrocie zgodnej z przenoszeniem energii w danym punkcie:
{{CentrujWzór|<MATH>\vec{P}=\left(\vec{E}\times\vec{H}\right)\;</MATH>|16.25}}
Wielkość {{Formuła|<MATH>\vec{P}\cdot d\vec{S}\;</MATH>}} nazywamy strumieniem energii przechodzący przez infinitezymalną powierzchnię {{Formuła|<MATH>d\vec{S}\;</MATH>}}, zatem {{Formuła|<MATH>\vec{P}\;</MATH>}} jest gęstością tego strumienia.
Energię pola elektromagnetycznego na podstawie równania {{LinkWzór|16.24}}, która jest zależna od indukcji i natężenia pola elektrycznego, a także od indukcji i natężenia pola magnetycznego, nazywamy równość:
{{CentrujWzór|<MATH>U_{em}={{1}\over{2}}\int_V\left(\vec{E}\vec{D}+\vec{H}\vec{B}\right)dV</MATH>|16.26}}
Twierdzenie Poytinga, które piszemy według wzoru {{LinkWzór|16.24}} rysujemy je przy pomocy oznaczenia dla wektora Poytinga {{LinkWzór|16.25}} i przy pomocy oznaczenia energii pola elektromagnetycznego {{LinkWzór|16.26}}, zapisujemy:
{{CentrujWzór|<MATH>{{dW}\over{dt}}=-{{dU_{em}}\over{dt}}-\oint_S\vec{P}\cdot d\vec{S}\;</MATH>|16.27}}
Jeśli cząstka poruszająca się w polu elektromagnetycznym, to ma pewną energię mechaniczną, to można napisać wiedząc, że: {{Formuła|<MATH>u_{mech}\;</MATH>}} jest to gęstość energii mechanicznej zapisanej na podstawie wzoru {{LinkWzór|16.26}}
{{CentrujWzór|<MATH>u_{em}={{1}\over{2}}\left(\vec{E}\vec{D}+\vec{H}\vec{B}\right)\;</MATH>|16.28}}
Definicja gęstości energii elektromagnetycznej u{{sub|em}} zależy od wektora natężenia i indukcji pola elektrycznego oraz od natężenia i indukcji pola magnetycznego. W ogólności jak się przekonano się wcześniej, że wektory charakteryzujące pole elektryczne lub magnetyczne występujące we wzorze {{LinkWzór|16.28}} nie są w ogólności równoległe, lecz mogą, a nie muszą być pod zerowym pewnym kątem.
Wedle definicji {{LinkWzór|16.28}} wzór {{LinkWzór|16.27}}, przy definicji gęstości energii mechanicznej u{{sub|mech}}, zapisujemy w postaci:
{{CentrujWzór|<MATH>{{d}\over{dt}}\int_V u_{mech}dV=-{{d}\over{dt}}\int_Vu_{em}dV-\oint_S\vec{P}\cdot d\vec{S}\;</MATH>|16.29}}
Wtedy ostatecznie wzór {{LinkWzór|16.29}} możemy napisać biorąc w jedno miejsce gęstość energii mechanicznej i elektromagnetycznej, mamy:
{{CentrujWzór|<MATH>{{d}\over{dt}}\int_V\left(u_{mech}+u_{em}\right)dV=-\int_V\left(\nabla\cdot\vec{P}\right)d\vec{S}\Rightarrow\int_V{{\partial}\over{\partial t}}\left(u_{mech}+u_{em}\right)dV=-\int_V\left(\nabla\cdot\vec{P}\right)dV\;</MATH>|16.30}}
Ponieważ we wzorze {{LinkWzór|16.30}} mamy do czynienia z dowolnymi objętościami, zatem również słuszny jest wzór:
{{CentrujWzór|<MATH>{{\partial}\over{\partial t}}\left(u_{mech}+u_{em}\right)=-\nabla\cdot\vec{P}\Rightarrow {{\partial}\over{\partial t}}\left(u_{mech}+u_{em}\right)+\operatorname{div}\vec{P}=0\;</MATH>|16.31}}
Prawo {{LinkWzór|16.31}} możemy zapisać jako '''równanie ciągłości''' {{LinkWzór|16.11}} przy którym gęstość ładunku elektrycznego odpowiada gęstość energii układu mechanicznego u{{sub|mech}} i pola elektromagnetycznego u{{sub|em}} {{LinkWzór|16.28}}, a gęstości prądu elektrycznego odpowiada wektorowi Poytinga {{LinkWzór|16.25}}.
== Tensor napięć Maxwella ==
Gęstością objętościową siły nazywamy stosunek nieskończenie małej siły Lorenzta {{LinkWzór|8.3|Magnetostatyka}} działający na nieskończenie mały ładunek swobodny dq{{sub|sw}} znajdujący się w objętości dV w danym punkcie przestrzeni, w której gęstość ładunku wynosi ρ{{sub|sw}} przez objętość dV, w której znajduje się ten nasz wspomniany ładunek, co przedstawiamy:
{{CentrujWzór|<MATH>\vec{f}={{d\vec{F}}\over{dV}}=
{{dq_{sw}}\over{dV}}\left(\vec{E}+\vec{v}\times\vec{B}\right)dV=
\rho_{sw}\vec{E}+\rho_{sw}\vec{v}\times\vec{B}</MATH>|16.32}}
Gęstość objętościowa prądu ładunku elektrycznego swobodnego w zależności od jego prędkości i jego gęstości objętościowej piszemy wzorem {{LinkWzór|16.9}}, wtedy na podstawie tego wzór {{LinkWzór|16.32}} piszemy:
{{CentrujWzór|<MATH>\vec{f}=\rho_{sw}\vec{E}+\vec{J}_{sw}\times\vec{B}</MATH>|16.33}}
Całkowita siła działająca na układ nieskończenie małych ładunków znajdujących się w objętości V ograniczonej przez powierzchnię zamkniętą piszemy ją jako całkę z funkcji {{LinkWzór|16.33}} względem objętości po całej tej objętości ograniczonej przez nas wspomniany obiekt.
{{CentrujWzór|<MATH>\vec{F}=\int_V\vec{f}dV=\int_V\left(\rho_{sw}\vec{E}+\vec{J}_{sw}\times\vec{B}\right)dV</MATH>|16.34}}
Będziemy korzystać z pierwszego {{LinkWzór|15.38|Elektrodynamika_Maxwella}} i czwartego {{LinkWzór|15.41|Elektrodynamika_Maxwella}} prawa Maxwella dla materii, wtedy wzór {{LinkWzór|16.34}} przyjmuje formę:
{{CentrujWzór|<MATH>\vec{f}=\rho_{sw}\vec{E}+\vec{J}_{sw}\times\vec{B}\Rightarrow
\left(\nabla\cdot\vec{D}\right)\vec{E}+\left[\left(\nabla\times\vec{H}\right)-{{\partial\vec{D}}\over{\partial t}}\right]\times\vec{B}</MATH>|16.35}}
Wzór {{LinkWzór|16.35}} po opuszczeniu w nim nawiasów przyjmuje bardziej przyzwoity wygląd:
{{CentrujWzór|<MATH>\vec{f}=\left(\nabla\vec{D}\right)\vec{E}+\left(\nabla\times\vec{H}\right)\times\vec{B}-
{{\partial\vec{D}}\over{\partial t}}\times\vec{B}</MATH>|16.36}}
Wyznaczmy tożsamość, która będzie nam potrzebna w późniejszych obliczeniach, przy okazji będziemy korzystać z trzeciego prawa Maxwella dla materii {{LinkWzór|15.40|Elektrodynamika_Maxwella}}.
{{CentrujWzór|<MATH>{{\partial}\over{\partial t}}\left(\vec{D}\times\vec{B}\right)={{\partial\vec{D}}\over{\partial t}}\times\vec{B}+\vec{D}\times{{\partial\vec{B}}\over{\partial t}}\Rightarrow{{\partial}\over{\partial t}}\left(\vec{D}\times\vec{B}\right)={{\partial\vec{D}}\over{\partial t}}\times\vec{B}-\vec{D}\times\left(\nabla\times\vec{E}\right)\Rightarrow{{\partial\vec{D}}\over{\partial t}}\times\vec{B}={{\partial}\over{\partial t}}\left(\vec{D}\times\vec{B}\right)+\;</MATH>{{Br}}<MATH>+\vec{D}\times\left(\nabla\times\vec{E}\right)</MATH>|16.37}}
Gęstość siły {{LinkWzór|16.36}}, po uwzględnieniu udowodnionej tożsamości {{LinkWzór|16.37}}, jest równa:
{{CentrujWzór|<mATh>\vec{f}=\left(\nabla\vec{D}\right)\vec{E}+\left(\nabla\times\vec{H}\right)\times\vec{B}-
\left[{{\partial}\over{\partial t}}\left(\vec{D}\times\vec{B}\right)+\vec{D}\times\left(\nabla\times\vec{E}\right)\right]=\left(\nabla\vec{D}\right)\vec{E}-\left[\vec{B}\times\left(\nabla\times\vec{H}\right)+\vec{D}\times\left(\nabla\times\vec{E}\right)\right]+\;</MATH>{{Br}}<MATH>-
{{\partial}\over{\partial t}}\left(\vec{D}\times\vec{B}\right)</MATH>|16.38}}
Wyznaczmy wyrażenie pomocnicze potrzebne do dalszych obliczeń w punkcie {{LinkWzór|16.38}}, w końcowych jego obliczeniach w tym naszym wyrażeniu z korzystamy z definicji indukcji pola elektrycznego {{LinkWzór|15.33|Elektrodynamika_Maxwella}} dla ośrodka materialnego o pewnej polaryzacji elektrycznej napisanej wzorem {{LinkWzór|6.16|Elementarne_właściwości_materii_w_polu_elektrostatycznym}}, czyli korzystamy ze wzoru {{LinkWzór|16.23}}, to wtedy możemy przeprowadzić nasze obliczenia:
{{CentrujWzór|<MATH>\vec{D}\times\left(\nabla\times\vec{E}\right)=
\vec{k}_{i}\epsilon_{ijk}D_j\left(\nabla\times\vec{E}\right)_k=
\vec{k}_{i}\epsilon_{jk}D_j\epsilon_{klm}\nabla_l E_m=
\vec{k}_i\epsilon_{ijk}\epsilon_{klm}D_j\nabla_l E_m=\vec{k}_i\left(\delta_{il}\delta_{jm}-\delta_{im}\delta_{jl}\right)D_j\nabla_l E_m=</MATH>{{Br}}
<MATH>=
\vec{k}_i\delta_{il}\delta_{jm}D_j\nabla_l E_m-\vec{k}_i\delta_{im}\delta_{jl}D_j\nabla_l E_m=\vec{k}_i D_j\nabla_i E_j-\vec{k}_i D_j\nabla_j E_i={{1}\over{2}}\nabla \vec{E}\vec{D}-\left(\vec{D}\nabla\right)\vec{E}</MATH>|16.39}}
Również otrzymujemy inną tożsamość, jeśli we wniosku {{LinkWzór|16.39}} zastąpimy wektor indukcji pola elektrycznego wektorem indukcji pola magnetycznego, a wektor natężenia pola elektrycznego wektorem natężenia pola magnetycznego, mając na myśli gdy mamy ośrodek materialny o pewnej polaryzacji magnetycznej, której natężenie pola elektrycznego definiujemy wzorem {{LinkWzór|15.36|Elektrodynamika_Maxwella}}, czyli łącznie korzystając ze wzoru {{LinkWzór|16.22}}, otrzymujemy:
{{CentrujWzór|<MATH>\vec{B}\times\left(\nabla\times\vec{H}\right)={{1}\over{2}}\nabla\vec{H}\vec{B}-\left(\vec{B}\nabla\right)\vec{H}</MATh>|16.40}}
Według wysuniętych wniosków {{LinkWzór|16.39}} dla pola elektrycznego i {{LinkWzór|16.40}} dla pola magnetycznego równanie na gęstość siły {{LinkWzór|16.38}} przyjmuje postać:
{{CentrujWzór|<MATh>\vec{f}=\left(\nabla\vec{D}\right)\vec{E}-\left[\left({{1}\over{2}}\nabla \vec{H}\vec{B}-\left(\vec{B}\nabla\right)\vec{H}\right)+\left({{1}\over{2}}\nabla \vec{E}\vec{D}-\left(\vec{D}\nabla\right)\vec{E}\right)\right]-
{{\partial}\over{\partial t}}\left(\vec{D}\times\vec{B}\right)</MATH>|16.41}}
Po krótkich przekształceniach w punkcie {{LinkWzór|16.41}} nad wielkością, która jest gęstością siły działającej na ładunek swobodny, można powiedzieć:
{{CentrujWzór|<MATH>\vec{f}=\left[\left(\nabla\vec{D}\right)\vec{E}+\left(\vec{D}\nabla\right)\vec{E}\right]
+\left(\vec{B}\nabla\right)\vec{H}-{{1}\over{2}}\nabla\left(\vec{E}\vec{D}+\vec{H}\vec{D}\right)-{{\partial}\over{\partial t}}\left(\vec{D}\times\vec{B}\right)</MATH>|16.42}}
Następnym krokiem jest skorzystanie z drugiego prawa Maxwella {{LinkWzór|15.39|Elektrodynamika_Maxwella}} dla materii, wedle tego wzór {{LinkWzór|16.42}} przyjmuje postać:
{{CentrujWzór|<MATH>\vec{f}=\left[\left(\nabla\vec{D}\right)\vec{E}+\left(\vec{D}\nabla\right)\vec{E}\right]
+\left[\left(\nabla\vec{B}\right) \vec{H}+\left(\vec{B}\nabla\right)\vec{H}\right]-{{1}\over{2}}\nabla\left(\vec{E}\vec{D}+\vec{H}\vec{B}\right)-{{\partial}\over{\partial t}}\left(\vec{D}\times\vec{B}\right)</MATH>|16.43}}
W prowadźmy ogólnie niesymetryczny tensor T{{sub|ij}}, który nazwiemy tensorem napięć Maxwella, co go zapisujemy:
{{CentrujWzór|<MATH>T_{ij}=\left(D_iE_j-{{1}\over{2}}\delta_{ij}\vec{E}\vec{D}\right)+\left(B_iH_j-{{1}\over{2}}\delta_{ij}\vec{H}\vec{B}\right)</Math>|16.44}}
Tensor {{LinkWzór|16.44}} jest z oczywistych powodów w ogólności tensorem asymetrycznym, ale tylko dla ośrodków liniowych jest tensorem symetrycznym dla ośrodka liniowego zarówno magnetycznie i elektrycznie, tzn. w którym zachodzą wzory {{LinkWzór|15.44|Elektrodynamika_Maxwella}} i {{LinkWzór|15.45|Elektrodynamika_Maxwella}}.
Wyznaczmy dywergencję tensora napięć Maxwella zdefiniowanej w punkcie {{LinkWzór|16.44}} i policzmy co wtedy wyjdzie:
{{CentrujWzór|<MATH>\vec{k}_i\nabla_i T_{ij}=\vec{k}_i\left(E_j\nabla_i D_i+D_i\nabla_i E_j\right)+\vec{k}_i\left(H_j\nabla _iB_i+B_i\nabla_i H_j\right)-{{1}\over{2}}\nabla\left(\vec{E}\vec{D}+\vec{H}\vec{B}\right)=</MATH>{{Br}}
<MATH>=\left[\left(\nabla\vec{D}\right)\vec{E}+\left(\vec{D}\nabla\right)\vec{E}\right]
+\left[\left(\nabla\vec{B}\right) \vec{H}+\left(\vec{B}\nabla\right)\vec{H}\right]-{{1}\over{2}}\nabla\left( \vec{E}\vec{D}+\vec{H}\vec{B}\right)</MATH>|16.45}}
Równanie na gęstość siły {{LinkWzór|16.43}}, na podstawie definicji tensora napięć Maxwella {{LinkWzór|16.44}}, korzystając z obliczeń przedstawionych w punkcie {{LinkWzór|16.45}}, przedstawiamy:
{{CentrujWzór|<MATH>\vec{f}=\nabla\cdot \hat{T}-{{\partial}\over{\partial t}}\underbrace{\left(\vec{D}\times\vec{B}\right)}_{\vec{P}_a}</MATH>|16.46}}
Wielkość występująca we wzorze {{LinkWzór|16.46}} pod pochodną cząstkową względem czasu nazwijmy '''tensorem Poitinga''' i oznaczmy go przez {{Formuła|<MATH>\vec{P}_a\;</MATH>}}. Dla pola elektromagnetycznego znajdujących się nie w ośrodku, ale w próżni, to ten wektor można oznaczyć przy pomocy wektora Poytinga {{LinkWzór|16.25}} wedle:
{{CentrujWzór|<math>\vec{P}_a=\vec{D}\times\vec{B}=\epsilon_0\mu_0\left(\vec{E}\times\vec{H}\right)=\epsilon_0\mu_0\vec{P}\;</MATH>|16.47}}
Wzór na gęstość siły działającej na ładunki swobodne przy definicji wektora {{Formuła|<MATH>\vec{P}_a\;</MATH>}}, możemy zatem napisać:
{{CentrujWzór|<MATH>\vec{f}=\nabla \hat{T}-{{\partial}\over{\partial t}}\vec{P}_a</MATH>|16.48}}
Całkowita siła działająca na ładunki swobodne w materii znajdującej się w pewnej objętości ograniczonej przez powierzchnię zamkniętą wyraża się:
{{CentrujWzór|<MATH>\vec{F}=\int_V\nabla\hat{T}dV-\int_V{{\partial}\over{\partial t}}\vec{P}_adV=\oint_S \hat{T}d\vec{S}-{{d}\over{dt}}\int_V\vec{P}_adV=\oint_S \hat{T}d\vec{S}-{{d}\over{dt}}\int_V\left(\vec{D}\times\vec{B}\right)dV</MATH>|16.49}}
== Zasada zachowania pędu a pole elektromagnetyczne ==
Tutaj dowiemy się, że pole elektromagnetyczne posiada również pęd, tak jak układy mechaniczne.
Z drugiej jednak strony z zasady dynamiki Einsteina siła działająca na ładunek powoduje zmianę pędu mechanicznego układu wszystkich ładunków p{{sub|mech}}, co piszemy równaniem:
{{CentrujWzór|<MATH>{{d\vec{p}_{mech}}\over{dt}}=\vec{F}</MATH>|16.50}}
Jeśli wykorzystamy wzór na całkowitą siłę działająca na układ ładunków znajdujących się w pewnej objętości ograniczonej powierzchnią zamkniętą {{LinkWzór|16.49}} i podstawieniu jego do wzoru {{LinkWzór|16.50}}, wtedy dostajemy równanie:
{{CentrujWzór|<MATH>{{d\vec{p}_{mech}}\over{dt}}=\oint_S\hat{T}d\vec{S}-{{d}\over{dt}}\int_V\vec{P}_adV</MATH>|16.51}}
W prowadźmy definicje pędu pola elektromagnetycznego poprzez wektor indukcji elektrycznej i magnetycznej:
{{CentrujWzór|<MATH>\vec{p}_{em}=\int_V\vec{P}_adV=\int_V\left(\vec{D}\times\vec{B}\right)dV</MATH>|16.52}}
Równanie {{LinkWzór|16.50}} na podstawie definicji pędu pola elektromagnetycznego {{LinkWzór|16.52}} przyjmuje bardziej uproszczoną postać, wtedy wyrazy związane z pędem elektromagnetycznym w powstałym równaniu przenosimy na jej lewą stronę i włączając go pod operator pochodnej zupełnej względem czasu, wtedy całościowo dochodzimy do wniosku:
{{CentrujWzór|<MATH>{{d\vec{p}_{mech}}\over{dt}}=-{{d}\over{dt}}\vec{p}_{em}+\oint_S\hat{T}d\vec{S}\Rightarrow{{d}\over{dt}}\left(\vec{p}_{mech}+\vec{p}_{em}\right)=\oint_S\hat{T}d\vec{S}</MATH>|16.53}}
Dochodzimy więc do wniosku, że wielkość {{Formuła|<MATH>\oint_S\hat{T}d\vec{S}</MATH>}} spełnia rolę siły działającej na układ mechaniczny i pole elektromagnetyczne.
Gęstością pędu elektromagnetycznego, który panuje w danym punkcie w przestrzeni, piszemy na podstawie definicji pędu pola magnetycznego:
{{CentrujWzór|<MATH>\vec{\mathfrak{p}}_{em}=\vec{P}_a=\vec{D}\times\vec{B}\;</MATH>|16.54}}
Jeśli we wzorze końcowym {{LinkWzór|16.53}} podstawimy za pęd elektromagnetyczny i pęd mechaniczny pewne całki objętościowe, którymi funkcjami podcałkowymi są gęstość pędu elektromagnetycznego i gęstość pędu mechanicznego, i zastosujemy twierdzenie Ostrogradskiego-Gaussa dla prawej strony tego wzoru, w rezultacie:
{{CentrujWzór|<MATH>{{d}\over{dt}}\left(\int_V\vec{\mathfrak{p}}_{mech}dV+\int\vec{\mathfrak{p}}_{em}dV\right)=\int_V\nabla\cdot\hat{T}dV\Rightarrow {{d}\over{dt}}\int_V\left(\vec{\mathfrak{p}}_{mech}+\vec{\mathfrak{p}}_{em}\right)dV=\int_V\nabla\cdot\hat{T}dV\Rightarrow\int_V\left[{{\partial}\over{\partial t}}\left(\vec{\mathfrak{p}}_{mech}+\vec{\mathfrak{p}}_{em}\right)\right]dV=\;</MATH>{{Br}}<MATH>=\int_V\nabla\cdot\hat{T}dV</MATH>|16.55}}
Równanie {{LinkWzór|16.55}} jest spełnione dla dowolnych objętości, zatem funkcje podcałkowe prawej i lewej strony tego równania muszą być sobie równe, otrzymujemy:
{{CentrujWzór|<MATH>{{\partial}\over{\partial t}}\left(\vec{\mathfrak{p}}_{mech}+\vec{\mathfrak{p}}_{em}\right)=\nabla\cdot\hat{T}\Rightarrow {{\partial}\over{\partial t}}\left(\vec{\mathfrak{p}}_{mech}+\vec{\mathfrak{p}}_{em}\right)+\nabla\cdot(-\hat{T})=0\;</MATh>|16.56}}
Powyższe równanie wynikowe jest odpowiednikiem równania ciągłości dla zasady zachowania pędu.
== Moment pędu pola elektromagnetycznego ==
Jeśli pole elektromagnetyczne posiada pęd, to również musi posiadać również moment pędu, jak tutaj udowodnimy.
Pęd pola elektromagnetycznego przestawiamy wedle wzoru {{LinkWzór|16.52}}, a gęstość pędu pola elektromagnetycznego możemy napisać na podstawie definicji pędu wedle {{LinkWzór|16.54}}.
Gęstość momentu pędu według definicji momentu pędu jest iloczynem wektorowym danego punktu w przestrzeni i gęstości pędu elektromagnetycznego w tym punkcie {{LinkWzór|16.54}}:
{{CentrujWzór|<MATH>\vec{\mathfrak{l}}_{em}=\vec{r}\times\vec{\mathfrak{p}}_{em}</MATH>|16.57}}
A więc całkowity moment pędu pola elektromagnetycznego znajdujący się w pewnej objętości ograniczony powierzchnią zamkniętą jest całką objętościową funkcji gęstości momentu pędu elektromagnetycznego {{LinkWzór|16.57}}:
{{CentrujWzór|<MATH>\vec{L}_{em}=\int_V\vec{\mathfrak{l}}_{em}dV=\int_V\left(\vec{r}\times\vec{\mathfrak{p}}_{em}\right)dV</MATH>|16.58}}
Równość {{LinkWzór|16.56}} mnożymy lewostronnie przez {{Formuła|<MATH>\vec{r}\times\;</MATH>}}, otrzymujemy:
{{CentrujWzór|<MATH>\vec{r}\times{{\partial}\over{\partial t}}\left(\mathfrak{p}_{mech}+\mathfrak{p}_{em}\right)+\vec{r}\times\nabla\cdot\left(-\hat{T}\right)=0\Rightarrow {{\partial}\over{\partial t}}\left(\vec{\mathfrak{l}}_{mech}+\vec{\mathfrak{l}}_{em}\right)+\nabla\cdot\left(\hat{T}\times\vec{r}\right)=0\;</math>|16.59}}
Równanie {{LinkWzór|16.59}} jest lokalnym równaniem ciągłości zachowania momentu pędu.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
myzsrdnxn3eu7rgwg4q2bb43glypml7
Elektrodynamika klasyczna/Fale elektromagnetyczne w elektrodynamice Maxwella
0
16837
558885
513487
2026-10-08T01:19:59Z
Persino
2851
558885
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy zajmować się falami elektromagnetycznymi rozchodzące się w próżni lub w jakimś ośrodku.
== Fale elektromagnetyczne w ośrodku liniowym w tym próżni ==
=== Równanie falowe pola elektrycznego ===
Bardzo nam będzie potrzebna tożsamość, którą zastosujemy do wyprowadzenia równania falowego, obrazującą falowy charakter natężenia pola elektrycznego od czasu, która jak udowodnimy później, przedstawia fale elektromagnetyczne rozchodzące się z prędkością światła v w danym ośrodku liniowym materialnym.
{{CentrujWzór|<MATH>\nabla\times\left(\nabla\times\vec{E}\right)=\epsilon_{ijk}\nabla_j\epsilon_{klm}\nabla_lE_m=
\epsilon_{ijk}\epsilon_{klm}\nabla_j\nabla_l E_m=\left(\delta_{il}\delta_{jm}-\delta_{im}\delta_{jl}\right)\nabla_j\nabla_l E_m=\delta_{il}\delta_{jm}\nabla_j\nabla_l E_m-\delta_{im}\delta_{jl}\nabla_j\nabla_l E_m
=\;</MATH>{{Br}}<MATH>=\nabla_j\nabla_i E_j-\nabla_j\nabla_j E_i=\nabla_i\nabla_j E_j-\nabla_j\nabla_j E_i=\nabla\left(\nabla\vec{E}\right)-\Delta\vec{E}\;</MATH>|17.1}}
Wykorzystując pierwsze {{LinkWzór|15.46|Elektrodynamika_Maxwella}} i czwarte {{LinkWzór|15.49|Elektrodynamika_Maxwella}} prawo Maxwella dla ośrodków liniowych, zakładając przy tym, że nie rozkładu ładunków i prądów swobodnych, tam gdzie rozchodzą się fale elektromagnetyczne, tzn. w tych obszarach gęstość ładunków swobodnych i prąd objętościowy swobodny są równe zero, przestawiamy je:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\nabla\times\vec{B}=\epsilon\mu{{\partial\vec{E}}\over{\partial t}}\;</MATH>|17.2}}
| 2 = {{CentrujWzór|<MATH>\nabla\vec{E}=0\;</MATH>|17.3}}
}}
Wykorzystując prawa elektrodynamiki bez ładunków i prądów w przestrzeni , czyli wzoru {{LinkWzór|15.48|Elektrodynamika_Maxwella}} i wzoru {{LinkWzór|17.3}} do prawa {{LinkWzór|17.1}}, wtedy mamy:
{{CentrujWzór|<MATH>\nabla\times\left(-{{\partial\vec{B}}\over{\partial t}}\right)=-\Delta\vec{E}\Rightarrow
{{\partial}\over{\partial t}}\left(\nabla\times\vec{B}\right)=\Delta\vec{E}
\;</MATH>|17.4}}
Następnym krokiem jest zastosowanie czwartego prawa Maxwella bez prądów objętościowych ładunków elektrycznych {{LinkWzór|17.2}} do wzoru końcowego wynikowego {{LinkWzór|17.4}} podstawiając za jego lewą stronę prawą stronę przedostatniego równania, zatem w ostateczności dostajemy wniosek słuszny dla ośrodka liniowego, w tym próżni, który też jest w pewnym sensie ośrodkiem liniowym o względnych przenikalnościach elektrycznych μ{{Sub|r}} i magnetycznych μ{{Sub|r}} równej jeden.
{{CentrujWzór|<MATH>{{\partial}\over{\partial t}}\left(\mu\epsilon{{\partial\vec{E}}\over{\partial t}}\right)=\Delta\vec{E}\Rightarrow\Delta\vec{E}=\epsilon\mu{{\partial^2 \vec{E}}\over{\partial t^2}}\;</MATH>|17.5}}
Równanie końcowe zapisane w punkcie {{LinkWzór|17.5}} jest to równanie falowe dla natężenia pola elektrycznego dla fali elektrycznej.
=== Równanie falowe pola magnetycznego ===
Bardzo nam będzie potrzebna tożsamość, którą zastosujemy do wyprowadzenia równania falowego, obrazujące falowy charakter indukcji pola magnetycznego od czasu, która jak udowodnimy później rozchodzi się z prędkością światła v w danym ośrodku liniowym materialnym. Zależność udowodnioną w punkcie {{LinkWzór|17.1}} dla natężenia pola elektrycznego, jak się okazuje słuszna, gdy zamiast wektora {{Formuła|<MATH>\vec{E}\;</MAtH>}} występuje {{Formuła|<MATH>\vec{B}\;</MAth>}}, zatem tę tożsamość piszemy:
{{CentrujWzór|<MATH>\nabla\times\left(\nabla\times\vec{B}\right)=\nabla\left(\nabla\vec{B}\right)-\Delta\vec{B}\;</MATH>|17.6}}
Korzystamy z czwartego prawa Maxwella {{LinkWzór|17.2}}, które jest słuszne, gdy płynące prądy objętościowe wynoszą zero, i z drugiego prawa Maxwella {{LinkWzór|15.47|Elektrodynamika_Maxwella}}, wtedy równanie {{LinkWzór|17.6}} przyjmuje postać:
{{CentrujWzór|<MATH>\mu\epsilon\nabla\left(-{{\partial}\over{\partial t}}\vec{E}\right)=-\Delta\vec{B}\Rightarrow \epsilon\mu{{\partial}\over{\partial t}}\left(\nabla\times\vec{E}\right)=\Delta\vec{B}\;</MATH>|17.7}}
Ostatnim krokiem jest wykorzystanie trzeciego prawa Maxwella {{LinkWzór|15.48|Elektrodynamika_Maxwella}} do równania {{LinkWzór|17.7}} podstawiając za jego lewą stronę w naszej wspomnianej tożsamości jej prawą stronę, zatem w ostateczności dostajemy wniosek słuszny dla ośrodka liniowego, w tym próżni, a dlaczego co wcześniej wytłumaczyliśmy w przypadku fali pola elektrycznego.
{{CentrujWzór|<MATH>\epsilon\mu{{\partial^2\vec{B}}\over{\partial t^2}}=\Delta\vec{B}\;</MATH>|17.8}}
Równanie końcowe zapisane w punkcie {{LinkWzór|17.8}} jest to równanie falowe dla indukcji pola magnetycznego dla fali magnetycznej.
=== Prędkość fali pola elektromagnetycznego ===
Równania falowe równań pola elektromagnetycznego dla fali magnetycznej {{LinkWzór|17.8}} i elektrycznej {{LinkWzór|17.5}} są to równania falowe, bo spełniają ogólne równanie falowe:
{{CentrujWzór|<MATH>\nabla \vec{f}={{1}\over{v^2}}{{\partial^2 \vec{f}}\over{\partial t^2}}\;</MATH>|17.9}}
* gdzie v jest to prędkość grupowa fali.
A zatem dla fal elektromagnetycznych dla wspomnianych wcześniej wzorów dla fali zarówno magnetycznej i elektrycznej mamy na pewno:
{{CentrujWzór|<MATH>{{1}\over{v^2}}=\epsilon\mu\Rightarrow v={{1}\over{\sqrt{\epsilon\mu}}}\;</MATH>|17.10}}
Zatem udowodniliśmy, że wielkość wynikająca z końcowych obliczeń liczbowo razem z mianami {{LinkWzór|17.10}} jest to prędkość światła "v", czyli tym samym co prędkość fal elektromagnetycznych rozchodzących się w ośrodku liniowym.
=== Propagacja fal elektromagnetycznych w ośrodku liniowym ===
Prędkość fali elektromagnetycznej w ośrodku liniowym wyraża się wzorem {{LinkWzór|17.10}}, a dla próżni mamy μ=μ{{Sub|0}} i ε=ε{{Sub|0}}, wyraża się:
{{CentrujWzór|<MATH>c={{1}\over{\sqrt{\epsilon_0\mu_0}}}\;</MATH>|17.11}}
Jeśli zastosujemy związki {{LinkWzór|7.36|Ciało_spolaryzowane_a_jego_pole}} dla pola elektrycznego i {{LinkWzór|12.31|Prądy_związane_z_polem_namagnesowanego_ciała}} dla pola magnetycznego, wtedy związek {{LinkWzór|17.10}} na podstawie tożsamości na prędkość światła w próżni c {{LinkWzór|17.11}}, wtedy wzór na prędkość światła w ośrodku liniowym, w zależności od prędkości światła w próżni i względnych stałych przenikalności elektrycznych i magnetycznych dla tego naszego ośrodka liniowego, przedstawia się:
{{CentrujWzór|<MATH>v={{1}\over{\sqrt{\epsilon\mu}}}=
{{1}\over{\sqrt{\epsilon_r\epsilon_0\mu_r\mu_0}}}=
{{1}\over{\sqrt{\epsilon_r\mu_r}}}{{1}\over{\sqrt{\mu_0\epsilon_0}}}\Rightarrow v={{c}\over{\sqrt{\epsilon_r\mu_r}}}\;</MATH>|17.12}}
Zatem współczynnik załamania dla ośrodka liniowego po skorzystaniu, że współczynnik załamania jest stosunkiem prędkości światła w próżni przez prędkość światła w ośrodku liniowym, zatem piszemy go:
{{CentrujWzór|<MATH>n={{c}\over{v}}=\sqrt{\epsilon_r\mu_r}=\sqrt{{{\epsilon\mu}\over{\epsilon_0\mu_0}}}\;</MATH>|17.13}}
== Monochromatyczna fala elektromagnetyczna płaska w ośrodku liniowym ==
Rozwiązaniem równania falowego zarówno dla pola magnetycznego {{LinkWzór|17.8}} i elektrycznego {{LinkWzór|17.5}} są to rozwiązania w postaci:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}(z,t)=\vec{E}_0e^{i(kz-\omega t)}\;</MATH>|17.14}}
| 2 = {{CentrujWzór|<MATH>\vec{B}(z,t)=\vec{B}_0e^{i(kx-\omega t)}\;</MATH>|17.15}}
}}
Sprawdźmy czy równanie fali dla pola elektrycznego {{LinkWzór|17.14}} spełnia równanie falowe {{LinkWzór|17.5}}, w tym celu policzmy dwie drugie pochodne względem współrzędnej zetowej i czasowej.
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial^2\vec{E}(z,t)}\over{\partial z^2}}=-\vec{E}_0k^2\;</MATH>|17.16}}
| 2 = {{CentrujWzór|<MATH>{{\partial\vec{E}(z,t)}\over{\partial t^2}}=-\vec{E}\omega^2\;</MATH>|17.17}}
}}
Z korzystajmy z równania falowego dla pola elektrycznego, którego ogólne równania dla fali jest {{LinkWzór|17.9}} i załóżmy, że mamy do czynienia z falą płaską rozchodzącą się równolegle do osi zetowej i wykorzystując obliczenia {{LinkWzór|17.16}} i {{LinkWzór|17.17}}, wtedy dochodzimy do wniosku:
{{CentrujWzór|<MATH>-\vec{E}_0k^2=-{{1}\over{v^2}}\vec{E}\omega^2\Rightarrow
{{1}\over{v^2}}={{k^2}\over{\omega^2}}\Rightarrow v={{\omega}\over{k}}\;</MATH>|17.18}}
Oczywiste jest, że na podstawie obliczeń {{LinkWzór|17.18}} zachodzi związek ω=vk.
Zbadajmy następnie, teraz czy fala elektromagnetyczna płaska jest falą podłużną czy poprzeczną.
Ponieważ stałe {{Formuła|<MATH>\vec{B}_0\;</MATH>}} i {{Formuła|<MATH>\vec{E}_0\;</MATH>}} występujące we wzorach {{LinkWzór|17.14}} i {{LinkWzór|17.15}} są stałymi w sensie strykto, zatem skorzystajmy z pierwszego prawa Maxwella dla ośrodka liniowego {{LinkWzór|17.2}}, gdy w ośrodku liniowym w punkcie w której rozchodzi się fala nie ma ładunków elektrycznych, zatem rozwiązanie {{LinkWzór|17.14}} równania falowego możemy podstawić do tego prawa, w ostateczności otrzymujemy wniosek:
{{CentrujWzór|<MATH>0=\nabla\vec{E}=\left(\vec{i}{{\partial}\over{\partial x}}+\vec{j}{{\partial}\over{\partial y}}+\vec{k}{{\partial}\over{\partial z}}\right)\vec{E}(z,t)=
\left(\vec{E}_0\right)_z{{\partial}\over{\partial z}}e^{i(kz-\omega t)}=ik\left(\vec{E}_0\right)_ze^{i(kx-\omega t)}\;</MATH>|17.19}}
Dochodzimy na podstawie wniosku {{LinkWzór|17.19}}, że fala elektryczna jest falą poprzeczną, podobnie fala magnetyczna jest falą poprzeczną jak można udowodnić podobnie.
Następnie z korzystajmy z prawa Faraday'a {{LinkWzór|15.48|Elektrodynamika_Maxwella}}, i udowodnijmy prostopadłość obu pól, tzn. dla pola magnetycznego i elektrycznego fali elektromagnetycznej.
Naszym krokiem jest wyznaczenie dwóch związków występujących w tym naszym wspomnianej wcześniej w prawie, czyli policzmy pierwsze wyrażenie:
{{CentrujWzór|<MATH>-{{\partial}\over{\partial t}}(\vec{B}(z,t))=-i\omega(\vec{B}(z,t))\;</MATH>|17.20}}
Drugie wyrażenie występujące w tym samym prawie:
{{CentrujWzór|<MATH>\nabla\times\vec{E}=\begin{vmatrix}
\vec{i}&\vec{j}&\vec{k}\\
{{\partial}\over{\partial x}}&{{\partial}\over{\partial y}}&{{\partial}\over{\partial z}}\\
(E_0)_x e^{i(kz-\omega t)}&(E_0)_y e^{i(kz-\omega t)}&0\\
\end{vmatrix}=\vec{i}\begin{vmatrix}
{{\partial}\over{\partial y}}&{{\partial}\over{\partial z}}\\
(E_0)_y e^{i(kz-\omega t)}&0\\
\end{vmatrix}-\vec{j}\begin{vmatrix}
{{\partial}\over{\partial x}}&{{\partial}\over{\partial z}}\\
(E_0)_x e^{i(kx-\omega t)}&0\\
\end{vmatrix}+\;</MATH>{{Br}}<math>+\vec{k}\begin{vmatrix}
\vec{i}&\vec{j}\\
{{\partial}\over{\partial x}}&{{\partial}\over{\partial y}}\\
(E_0)_x e^{i(kz-\omega t)}&(E_0)_y e^{i(kz-\omega t)}\\
\end{vmatrix}=-ik\vec{i}(E_0)_ye^{i(kz-\omega t)}+ik\vec{j}(E_0)_xe^{i(kx-\omega t)}
\;</MATH>|17.21}}
Korzystając z obliczeń {{LinkWzór|17.20}} i {{LinkWzór|17.21}} i przyrównując obie strony tych obliczeń do siebie według prawa Faraday'a {{LinkWzór|15.48|Elektrodynamika_Maxwella}} otrzymamy wniosek wynikający z tym dysput.
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>i\omega(B_0)_x=-ik(E_0)_y\Rightarrow \omega(B_0)_x=-k(E_0)_y\;</MATH>|17.22}}
| 2 = {{CentrujWzór|<MATH>i\omega(B_0)_y=ik(E_0)_x\Rightarrow \omega(B_0)_y=k(E_0)_x\;</MATH>|17.23}}
}}
Dwa warunki {{LinkWzór|17.22}} i {{LinkWzór|17.23}} możemy z nich zrobić jeden wzór wektorowy, wtedy otrzymujemy zależność amplitudy indukcji pola magnetycznego od amplitudy natężenia pola elektrycznego, co zapisujemy jako:
{{CentrujWzór|<MATH>\vec{B}_0={{k}\over{\omega}}\left(\hat{z}\times\vec{E}_0\right)\;</MATH>|17.24}}
Dowód równoważności równania wektorowego {{LinkWzór|17.24}} z dwoma wzorami {{LinkWzór|17.22}} i {{LinkWzór|17.23}} możemy przeprowadzić według obliczeń:
{{CentrujWzór|<MATH>{{\omega}\over{k}}\vec{B}_0=\hat{z}\times\vec{E}_0=\begin{vmatrix}
\vec{i}&\vec{j}&\vec{k}\\
0&0&1\\
(E_0)_x&(E_0)_y&0\\
\end{vmatrix}=\vec{i}\begin{vmatrix}
0&1\\
(E_0)_y&0
\end{vmatrix}-\vec{j}\begin{vmatrix}
0&1\\
(E_0)_x&0\\
\end{vmatrix}+\vec{k}\begin{vmatrix}
0&0\\
(E_0)x&(E_0)_y
\end{vmatrix}=-\vec{i}(E_0)_y+\vec{j}(E_0)_x\;</MATH>|17.25}}
Co udało się udowodnić równoważność wzoru wektorowego {{LinkWzór|17.24}} z dwoma równaniami skalarnymi {{LinkWzór|17.22}} i {{LinkWzór|17.23}} na podstawie obliczeń {{LinkWzór|17.25}}.
Sprawdźmy co otrzymamy z czwartego prawa elektrodynamiki Maxwella {{LinkWzór|17.2}}, gdy w przestrzeni nie płyną żadne prądy swobodne dla fali elektromagnetycznej, zatem policzmy prawą stronę tego równania:
{{CentrujWzór|<MATH>\mu_0\epsilon_0{{\partial}\over{\partial t}}\vec{E}e^{i(kz-\omega t)}=-i\mu_0\epsilon_0\omega \vec{E}^{i(kz-\omega t)}=-i\mu_0\epsilon_0\omega \vec{E}_0e^{i(kz-\omega t)}=-i{{1}\over{c^2}}\omega \vec{E}_0e^{i(kz-\omega t)}=-i{{k^2}\over{\omega^2}}\omega\vec{E}_0e^{i(kz-\omega t)}=-i{{k^2}\over{\omega}}\vec{E}_0e^{i(kz-\omega t)}</MATH>|17.26}}
A teraz rotację fali elektromagnetycznej pola magnetycznego, czyli lewej strony wspomnianego wcześniej prawa, ale wyznaczmy dla tej samej fali co poprzednio:
{{CentrujWzór|<MATH>\nabla\times\vec{B}=\begin{vmatrix}
\vec{i}&\vec{j}&\vec{k}\\
{{\partial}\over{\partial x}}&{{\partial}\over{\partial y}}&{{\partial}\over{\partial x}}\\
(B_0)_xe^{i(kz-\omega t)}&(B_0)_ye^{i(kz-\omega t)}&0\\
\end{vmatrix}=
\vec{i}\begin{vmatrix}
{{\partial}\over{\partial y}}&{{\partial}\over{\partial z}}\\
(B_0)_ye^{i(kz-\omega t)}&0\\
\end{vmatrix}-\vec{j}\begin{vmatrix}
{{\partial }\over{\partial x}}&{{\partial}\over{\partial z}}\\
(B_0)_xe^{i(kz-\omega t)}&0\\
\end{vmatrix}+</MATH>{{Br}}
<MATH>+\vec{k}\begin{vmatrix}
{{\partial}\over{\partial x}}&{{\partial}\over{\partial y}}\\
(B_0)_xe^{i(kz-\omega t)}&(B_0)_ye^{i(kz-\omega t)}
\end{vmatrix}=-\vec{i}ik (B_0)_y e^{i(kz-\omega t)}+\vec{j}ik(B_0)_xe^{i(kz-\omega t)}=e^{i(kz-\omega t)}\left[-\vec{i}ik(B_0)_y+\vec{j}ik(B_0)_x\right]</MATH>|17.27}}
Przyrównajmy do siebie obliczone wyrażenia {{LinkWzór|17.26}} i {{LinkWzór|17.27}} według czwartego prawo Maxwella przy zerowej gęstości prądu objętościowego dla fali elektromagnetycznej:
{{CentrujWzór|<MATH>e^{i(kz-\omega t)}\left[-\vec{i}ik(B_0)_y+\vec{j}ik(B_0)_x\right]=-i{{k^2}\over{\omega}}\vec{E}_0e^{i(kz-\omega t)}</MATH>|17.28}}
Z równania wektorowego {{LinkWzór|17.28}} dostajemy dwa skalarne równanie, które są równoważne z tym ostatnim dla pierwszego równania skalarnego:
{{CentrujWzór|<Math>-ik(B_0)_y=-i{{k^2}\over{\omega}}(E_0)_x\Rightarrow -i\omega(B_0)_y=-ik(E_0)_x\;</MATH>|17.29}}
a potem drugiego równania skalarnego:
{{CentrujWzór|<MATH>ik(B_0)_x=-i{{k^2}\over{\omega}}(E_0)_y\Rightarrow i\omega(B_0)_x=-ik(E_0)_y\;</MATH>|17.30}}
Co ostatecznie otrzymujemy na podstawie wniosków {{LinkWzór|17.29}} i {{LinkWzór|17.30}} zależność współrzędnych amplitudy indukcji pola magnetycznego przez współrzędne amplitudy natężenia pola elektrycznego dostając wzory {{LinkWzór|17.22}} i {{LinkWzór|17.23}}, a więc otrzymujemy taki sam wzór wektorowy jak wzór zapisanej w punkcie {{LinkWzór|17.24}}, czyli otrzymaliśmy nić nowego.
{{Rysunek|Onde electromagnetique.svg|fe|Fala elektromagnetyczna}}
A więc wszystko się zgadza się, fala magnetyczna jest prostopadła do fali elektrycznej, której rysunek obok przedstawia wygląd fali elektromagnetycznej.
Jeśli określimy wektor propagacji fali elektromagnetycznej przez wektor jednostkowy:{{Formuła|<MATH>\hat{k}\;</MATH>}}, a przez:{{Formuła|<MATH>\hat{n}\;</MATH>}} wektor polaryzacji fali elektrycznej i uwzględnimy związek między amplitudami fali indukcji magnetycznej i natężenia fali elektrycznej, w dowolnym układzie wedle równania {{LinkWzór|17.24}}, wtedy otrzymujemy wzory na natężenie elektryczne i indukcję pola magnetycznego fali elektromagnetycznej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}(\vec{r},t)=E_0e^{(\vec{k}\vec{r}-\omega t)}\hat{n}\;</MATH>|17.31}}
| 2 = {{CentrujWzór|<MATH>\vec{B}(\vec{r},t)={{\omega}\over{k}}E_0e^{i(\vec{k}\vec{r}-\omega t)}(\hat{k}\times\hat{n})={{1}\over{v}}\hat{k}\times\hat{E}\;</MATH>|17.32}}
}}
== Energia oraz pęd pola elektromagnetycznego w szczególności w ośrodku liniowym lub próżni ==
Wiemy jednak, że amplituda pola magnetycznego wyraża się wzorem {{LinkWzór|17.24}} i wiedząc jeszcze że zachodzi {{Formuła|<MATH>v={{\omega}\over{k}}\;</MATH>}} , to wtedy operując na wartościach ich, dostajemy związek:
{{CentrujWzór|<MATH>B_0={{1}\over{v}}E_0\;</MATH>|17.33}}
Jeśli wykorzystamy związek prędkości fali elektromagnetycznej ze przenikalnościami elektrycznymi ε i magnetycznymi μ, w tym dla ośrodka, którym jest próżnia, czyli związku {{LinkWzór|17.10}}, to związek między kwadratami amplitud indukcji fali pola magnetycznego i natężenia fali pola elektrycznego wyraża się:
{{CentrujWzór|<MATH>B^2_0=\mu\epsilon E_0^2\;</MATH>|17.34}}
Wyznaczmy średnią wartość kwadratu amplitudy fali pola elektrycznego i magnetycznego wedle:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\langle E^2\rangle=E^2_0 \langle\sin^2(kz-\omega t)\rangle={{1}\over{2}}E^2_0\;</MATH>|17.35}}
| 2 = {{CentrujWzór|<MATH>\langle B^2\rangle=B_0^2 \langle\sin^2(kz-\omega t)\rangle={{1}\over{2}}B_0^2={{1}\over{2}}\mu\epsilon E_0^2\;</MATH>|17.36}}
}}
Wykorzystując związki dla ośrodka zarówno liniowego elektrycznie i magnetycznie, tzn. {{LinkWzór|15.44|Elektrodynamika_Maxwella}} i {{LinkWzór|15.45|Elektrodynamika_Maxwella}}, a także z tożsamości na wartość średnią kwadratu natężenia fali elektrycznej {{LinkWzór|17.35}} i na wartość średnią fali magnetycznego fali magnetycznej {{LinkWzór|17.36}}, zatem średnia energia fali elektromagnetycznej według {{LinkWzór|16.28|Zasady_zachowania_a_twierdzenia_o_właściwościach_pola_elektromagnetycznego}} wyraża się:
{{CentrujWzór|<MATH>\langle E\rangle={{1}\over{2}}\left(\epsilon \langle E^2\rangle+{{1}\over{\mu}}\langle B^2\rangle\right)=
{{1}\over{2}}\left(\epsilon {{1}\over{2}}E^2+{{1}\over{2\mu}}\mu\epsilon E_0^2\right)=
{{1}\over{2}}\epsilon E_0^2\;</MATH>|17.37}}
Ilość energii przenoszonej na jednostkę powierzchni na jednostkę czasu, uwzględniający również kierunek propagacji fali elektromagnetycznej, jest równy wektorowi Poytinga {{LinkWzór|16.25|Zasady_zachowania_a_twierdzenia_o_właściwościach_pola_elektromagnetycznego}}, co dla ośrodka liniowego mamy:
{{CentrujWzór|<MATH>\vec{S}=\vec{E}\times\vec{H}={{1}\over{\mu}}\left(\vec{E}\times\vec{B}\right)=
{{1}\over{\mu}}E_0\cos(kz-\omega t)B_0\cos(kz-\omega t)\hat{z}=
{{1}\over{\mu}}{{1}\over{v}}E_0^2\cos^2(kz-\omega t)\hat{z}={{1}\over{\mu}}\sqrt{\mu\epsilon}E_0^2\cos^2(kz-\omega t)\hat{z}=\;</MATH>{{Br}}
<MATH>=\sqrt{{{\epsilon^2}\over{\epsilon\mu}}}E_0^2\cos^2(kz-\omega t)\hat{z}=
\epsilon v E_0^2\cos^2(kz-\omega t)\hat{z}
\;</MATH>|17.38}}
Skorzystamy, że średni kwadrat kosinusa jest równy według wzoru {{Formuła|<MATH>\langle \cos^2(kz-\omega t)\rangle={{1}\over{2}}\;</MATH>}} , zatem wektor Poytinga dla fali elektromagnetycznej policzonej w punkcie {{LinkWzór|17.38}} jest to natężenie fali elektromagnetycznej względem powierzchni, która jest prostopadła do padania tychże fal, to jego średnia wartość jako natężenie fali elektromagnetycznej wyrażamy poprzez:
{{CentrujWzór|<MATH>I=\langle S\rangle ={{1}\over{2}}\epsilon v E_0^2\;</MATH>|17.39}}
Gęstość pędu pola elektromagnetycznego dla ośrodka liniowego wyraża się na podstawie wzoru ogólnego {{LinkWzór|16.54|Zasady_zachowania_a_twierdzenia_o_właściwościach_pola_elektromagnetycznego}}, dla ośrodka liniowego piszemy wedle:
{{CentrujWzór|<MATH>\vec{\mathfrak{p}}_{em}=\mu\epsilon \vec{S}={{1}\over{v^2}}\vec{S}={{1}\over{v^2}}\epsilon v E_0^2\cos^2(kz-\omega t)\hat{z}=
{{1}\over{v}}={{1}\over{v}}\epsilon E^2_0\cos^2(kz-\omega t)\hat{z}\;</MATH>|17.40}}
Wartość średniej gęstości pędu dla ośrodka liniowego na podstawie policzonej gęstości pędu {{LinkWzór|17.40}} wyraża się równaniem:
{{CentrujWzór|<MATH>\langle \mathfrak{p}_{em}\rangle={{1}\over{v}}\epsilon E^2_0\langle\cos^2(kz-\omega t)\rangle={{1}\over{2v}}\epsilon E_0^2\;</MATH>|17.41}}
=== Natężenie i gęstość pędu fali elektromagnetycznej w próżni ===
Średnie natężenie fali elektromagnetycznej względem powierzchni prostopadłej do padania tychże fal i wartość średniej gęstości pędu też dla tego samej fali w próżni piszemy je na podstawie wzoru na natężenie fali elektromagnetycznej {{LinkWzór|17.39}} względem omawianej powierzchni, a także wartość średniej gęstości pędu {{LinkWzór|17.41}} dla ośrodka liniowego zarówno magnetycznie i elektrycznie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>I=\langle S\rangle={{1}\over{2}}\epsilon_0 cE_0^2\;</MATH>|17.42}}
| 2 = {{CentrujWzór|<MATH>\langle\mathfrak{p}_{em}\rangle={{1}\over{2c}}\epsilon_0 E^2_0\;</MATH>|17.43}}
}}
=== Natężenie fali elektromagnetycznej padającej pod pewnym kątem ===
Obliczymy natężenie fali elektromagnetycznej padającej pod pewnym kątem do powierzchni mając natężenie fali elektromagnetycznej padającej padania fal elektromagnetycznej na powierzchnię pod kątem prostym.
{{Rysunek|Padająca fala elektromagnetyczna.jpg|pfeppk|Padające płaska fala elektromagnetyczna pod pewnym kątem}}
Z rysunku widać że stosunek boku b do l w trójkącie prostokątnym jest równy kosinusowi nachylenia płaszczyzny padania i po wyznaczeniu z niej zmiennej b, wtedy mamy:
{{CentrujWzór|<MATH>{{b}\over{l}}=\cos\theta\Rightarrow b=l\cos\theta\;</MATH>|17.44}}
Powierzchnia na którą pada fala elektromagnetyczna, gdy by nie było nachylenia (pierwszy wzór), lub gdy by było nachylenie (drugi wzór), są przestawione według rysunku obok, których definicje:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>S=hb\;</MATH>|17.45}}
| 2 = {{CentrujWzór|<MATH>S_b=hl\;</MATH>|17.46}}
}}
Wyraźmy powierzchnię S {{LinkWzór|17.45}} w zależności od powierzchni S{{Sub|b}} {{LinkWzór|17.46}} wedle sposobu:
{{CentrujWzór|<MATH>S=hb=hl\cos\theta=S_p\cos\theta\;</MATH>|17.47}}
Natężenie fali elektromagnetycznej padającej na powierzchnię prostopadłą jest wyrażona w zależności od natężenia fali padającej na powierzchnię pod pewnym kątem i wyrażając to ostatnie natężenie przez te pierwsze, wtedy dostajemy:
{{CentrujWzór|<MATH>I^{\bot}={{\Delta W}\over{S\Delta t}}={{\Delta W}\over{S_b\Delta t\cos\theta}}=I^{ukos}{{1}\over{\cos\theta}}\Rightarrow I^{ukos}=I^{\bot}\cos\theta\;</MATH>|17.48}}
Dochodzimy, że natężenia fali elektromagnetycznej padające na powierzchnię nieprostopadła do niej, której natężenie fali elektromagnetycznej jest mniejsze lub równe do natężeniu fali jakoby ona padała pod katem prostym do płaszczyzny padania, czyli (θ=0), bo w końcowym wzorze {{LinkWzór|17.48}} występuje kosinus, którego wartość bezwzględna jest mniejsza lub równa jeden. To natężenia ukośne I{{Sup|ukos}} {{LinkWzór|17.48}}, wyrażając w zależności od natężenia amplitudy fali elektromagnetycznej I{{Sup|⊥}} dla ośrodka liniowego, które było zdefiniowane w punkcie {{LinkWzór|17.39}}, jest wyrażone:
{{CentrujWzór|<MATH>I^{ukos}={{1}\over{2}}\epsilon v E_{0}^2\cos\theta\;</MATH>|17.49}}
== Promieniowanie elektromagnetyczne w ośrodku materialnym ==
Tutaj zajmować się będziemy propagacją fal elektromagnetycznych w ośrodku lub w ośrodkach liniowych lub próżni, które spełniając równania {{LinkWzór|15.44|Elektrodynamika_Maxwella}} i {{LinkWzór|15.45|Elektrodynamika_Maxwella}}.
=== Padanie prostopadłe fali elektromagnetycznej na ośrodek, fala odbita i przechodząca ===
Załóżmy, że:{{Formuła|<MATH>\hat{x}\;</MATH>}} i {{Formuła|<MATH>\hat{y}\;</MATH>}}, to wektory polaryzacji fali elektrycznej i magnetycznej.
Równania fali elektromagnetycznej padającej, tzn. natężenia elektrycznego fali pola elektrycznego i indukcji magnetycznej fali pola magnetycznego są wyrażone:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}_p(z,t)=E_{0p} e^{i(k_1z-\omega_p t)}\hat{x}\;</MATH>|17.50}}
| 2 = {{CentrujWzór|<MATH>\vec{B}_p(z,t)={{1}\over{v_1}}E_{0p} e^{i(k_1z-\omega_p t)}\hat{y}\;</MATH>|17.51}}
}}
Równania fali elektromagnetycznej odbitej, tzn. natężenia elektrycznego fali pola elektrycznego i indukcji magnetycznej fali pola magnetycznego są wyrażone:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}_o(z,t)=E_{0o} e^{i(-k_1z-\omega_o t)}\hat{x}\;</MATH>|17.52}}
| 2 = {{CentrujWzór|<MATH>\vec{B}_o(z,t)=-{{1}\over{v_1}}E_{0o} e^{i(-k_1x-\omega t)}\hat{y}\;</MATH>|17.53}}
}}
Równania fali elektromagnetycznej wchodzącej do drugiego ośrodka, tzn. natężenia elektrycznego fali pola elektrycznego i indukcji magnetycznej fali pola magnetycznego są wyrażone:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}_w(z,t)=E_{0w} e^{i(k_2z-\omega_o t)}\hat{x}\;</MATH>|17.54}}
| 2 = {{CentrujWzór|<MATH>\vec{B}_w(z,t)={{1}\over{v_2}}E_{0w} e^{i(k_2z-\omega t)}\hat{y}\;</MATH>|17.55}}
}}
{{Rysunek|Fala padająca, odbita i wchodząca.jpeg|fpop|Fala padająca, odbita i przechodząca przy padaniu prostopadłym}}
Korzystając, że wektory magnetyczne i elektryczne fali elektromagnetycznej są prostopadłe do kierunku ich propagacji, jeśli mamy prostopadłe padanie, dochodzimy do wniosku, że nie ma prostopadłych składowych dla pola elektrycznego i magnetycznego, są tylko ich równoległe składowe do granicy między ośrodkami, zatem dla pola elektrycznego i magnetycznego otrzymujemy:
{{CentrujWzór|<MATH>E_{0p}e^{i(k_1z-\omega_p t)}+E_{0o}e^{i(k_1z-\omega_o t)}=E_{ow}e^{i(k_2z-\omega_p t)}\;</MATH>|17.56}}
Gdy założymy, że granica pomiędzy dwoma ośrodkami jest dla z=0, bo zakładamy że płaszczyzna ograniczająca dwa różne ośrodki znajduje się w tym właśnie wspomnianym położeniu, zatem równanie {{LinkWzór|17.56}} zapisujemy w bardziej uproszonym schemacie:
{{CentrujWzór|<MATH>E_{0p}e^{i(-\omega_p t)}+E_{0o}e^{i(-\omega_o t)}=E_{ow}e^{i(-\omega_w t)}\;</MATH>|17.57}}
Aby powyższe równanie było słuszne dla wszystkich czasów t, to musi być spełniona równość wykładników potęg, czyli:
{{CentrujWzór|<MATH>i(-\omega_p t)=i(-\omega_o t)=i(-\omega_w t)\Rightarrow\omega_p=\omega_o=\omega_w=\omega\;</MATH>|17.58}}
Zatem zachodzi równość częstotliwości kołowych dla fali padającej, odbitej i wchodzącej z ośrodka pierwszego do ośrodka drugiego zarówno dla fali pola elektrycznego i magnetycznego, czyli dla fali elektromagnetycznej.
Równość {{LinkWzór|17.57}} na podstawie własności {{LinkWzór|17.58}} przyjmuje wtedy postać:
{{CentrujWzór|<MATH>E_{0p}+E_{0o}=E_{0w}\;</MATH>|17.59}}
Korzystając z wiadomości o falach elektromagnetycznych i warunku ich padania dochodzimy do wniosku, że dla pola magnetycznego i warunku między polem elektrycznym i magnetycznym dla naszej fali {{LinkWzór|17.24}}, że:
{{CentrujWzór|<MATH>{{1}\over{\mu_1}}\left({{1}\over{v_1}}E_{0p}-{{1}\over{v_1}}E_{0o}\right)={{1}\over{\mu_2}}\left({{1}\over{v_2}}E_{ow}\right)\;</MATH>|17.60}}
Pomnóżmy ostatnie równanie obustronnie przez μ{{Sub|1}}v{{Sub|1}}, zatem w takim przypadku {{LinkWzór|17.60}} przyjmuje postać:
{{CentrujWzór|<MATH>E_{0p}-E_{0o}={{\mu_1v_1}\over{\mu_2v_2}}E_{ow}={{\mu_1}\over{\mu_2}}{{{{c}\over{v_2}}}\over{{{c}\over{v_1}}}}E_{ow}={{\mu_1n_2}\over{\mu_2n_1}}E_{ow}\;</MATH>|17.61}}
Możemy połączyć wzory {{LinkWzór|17.61}} z {{LinkWzór|17.59}} w jeden układ równań, które jednocześnie zachodzą, i to pierwsze zależne jest od parametru β i od wartości amplitud fali pola elektrycznego promienia padającego E{{Sub|0p}}, odbitej E{{Sub|0o}} i wchodzącej do drugiego ośrodka E{{Sub|0w}}, która jest w pewnym sensie symbolizuje promień załamany pod kątek zerowym, jak się przekonamy w następnym rozdziale:
{{CentrujWzór|<MATH>\begin{cases}
E_{0p}-E_{0o}=\beta E_{0w}\\
E_{0p}+E_{0o}=E_{0w}
\end{cases}
\;</MATH>|17.62}}
Jeśli dwa wzory układu równań {{LinkWzór|17.62}} dodamy do siebie, i wyznaczmy stąd wartość amplitudy fali pola elektrycznego wchodzącej do drugiego ośrodka E{{Sub|0w}} poprzez wartość amplitudy fali tego samego pola amplitudy fali padającej E{{Sub|0p}}, wtedy dochodzimy do wniosku:
{{CentrujWzór|<math>2E_{0p}=E_{0w}\left(\beta+1\right)\Rightarrow E_{0w}={{2}\over{1+\beta}}E_{0p}\;</MATH>|17.63}}
Z drugiego układu równań {{LinkWzór|17.62}} wyznaczamy wielkość E{{Sub|0o}} i wykorzystujemy, że amplituda fali wchodzącej jest wyrażona końcowym wzorem {{LinkWzór|17.63}}, wtedy możemy wyrazić amplitudę fali odbitej w zależności od amplitudy fali padającej fali pola elektrycznego:
{{CentrujWzór|<MATH>E_{0o}=E_{0w}-E_{0p}={{2}\over{1+\beta}}E_{0p}-E_{0p}={{2-1-\beta}\over{1+\beta}}E_{0p}={{1-\beta}\over{1+\beta}}E_{0p}\;</MATH>|17.64}}
Ponieważ współczynniki μ{{Sub|1}} i μ{{Sub|2}} są bliskie wartości przenikalności magnetycznej w próżni, wtedy parametr β można zdefiniować jako stosunek współczynnika załamania w ośrodku drugim n{{Sub|2}} przez współczynnik załamania w ośrodku pierwszym n{{Sub|1}}, co zapisujemy jako:
{{CentrujWzór|<MATH>\beta={{\mu_1n_2}\over{\mu_2n_1}}\simeq{{n_2}\over{n_1}}\;</MATH>|17.65}}
Następnie podstawiając za naszą wielkość β jego przybliżoną definicję napisanej w punkcie {{LinkWzór|17.65}} do wielkości na wartość amplitudy fali pola elektrycznego padającego E{{Sub|0w}}, i to samo dla amplitudy fali odbitej E{{Sub|0o}}, zatem te wspomniane wzory na te amplitudy zapisujemy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>E_{0w}={{2}\over{1+\beta}}E_{0p}={{2}\over{1+{{n_2}\over{n_1}}}}={{2n_1}\over{n_1+n_2}}\;</MATH>|17.66}}
| 2 = {{CentrujWzór|<MATH>E_{0o}={{1-\beta}\over{1+\beta}}E_{0p}={{1-{{n_2}\over{n_1}}}\over{1+{{n_2}\over{n_1}}}}={{n_1-n_2}\over{n_1+n_2}}\;</MATH>|17.67}}
}}
Jeśli wykorzystamy wzór {{LinkWzór|17.39}} dla ośrodka liniowego, który zależy od amplitudy fali pola elektrycznego, przenikalności elektrycznej ε i prędkości fali elektromagnetycznej, w której to ośrodku to natężenie zostało wyliczone, zatem współczynnik odbicia jest stosunkiem natężenia fali odbitej I{{Sub|o}} i padającej I{{Sub|p}}, i wyliczmy ten współczynnik dla fali padającej prostopadłej do powierzchni granicznej pomiędzy dwoma ośrodkami:
{{CentrujWzór|<MATH>R={{I_o}\over{I_p}}={{\epsilon_1 v_1}\over{\epsilon_1v_1}}\left({{E_{0o}}\over{E_{0p}}}\right)^2=\left({{n_1-n_2}\over{n_1+n_2}}\right)^2\;</MATH>|17.68}}
Stosunek natężenia fali wchodzącej do ośrodka do natężenia padającej, czyli współczynnik transmisji T możemy napisać wtedy, jeśli wykorzystamy wzór {{LinkWzór|17.39}}, ale dla fali wchodzącej (występuje w liczniku) i padającej (występuje w mianowniku), zatem obliczenia dla fali padającej prostopadle dla wspomnianego w tym tekście współczynnika:
{{CentrujWzór|<MATH>T={{I_w}\over{I_p}}={{\epsilon_2v_2}\over{\epsilon_1v_1}}\left({{E_{0w}}\over{E_{0p}}}\right)^2=
{{v_2}\over{v_1}}{{v_1^2\mu_0}\over{v_2^2\mu_0}}\left({{E_{0w}}\over{E_{0p}}}\right)^2=
{{v_1}\over{v_2}}\left({{E_{0w}}\over{E_{0p}}}\right)^2={{n_2}\over{n_1}}{{4n_1^2}\over{\left(n_1+n_2\right)^2}}={{4n_1n_2}\over{\left(n_1+n_2\right)^2}}
\;</MATH>|17.69}}
Jeśli w elektromagnetyzmie jest spełniona zasada zachowania energii, to powinno na pewno zachodzić, że suma współczynników odbicia R {{LinkWzór|17.68}} i transmisji T {{LinkWzór|17.69}} powinna być zawsze równe jeden, nawet dla tego przypadku.
{{CentrujWzór|<MATH>R+T=1\;</MATH>|17.70}}
Udowodnijmy wzór {{LinkWzór|17.70}} mając już policzony współczynnik odbicia R {{LinkWzór|17.68}} i współczynnik transmisji {{LinkWzór|17.69}}, wtedy możemy przejść do właściwego motta naszego dowodu:
{{CentrujWzór|<MATH>R+T=\left({{n_1-n_2}\over{n_1+n_2}}\right)^2+{{4n_1n_2}\over{\left(n_1+n_2\right)^2}}=
{{\left(n_1-n_2\right)^2+4n_1n_2}\over{\left(n_1+n_2\right)^2}}=
{{n_1^2+n_2^2-2n_1n_2+4n_1n_2}\over{\left(n_1+n_2\right)^2}}=\;</MATH>{{Br}}<MATH>={{n_1^2+n_2^2+2n_1n_2}\over{\left(n_1+n_2\right)^2}}={{\left(n_1+n_2\right)^2}\over{\left(n_1+n_2\right)^2}}=1\;</MATH>|17.71}}
Dowód tożsamości {{LinkWzór|17.70}} został ukończony na podstawie obliczeń {{LinkWzór|17.71}}.
=== Odbicie i załamanie fali elektromagnetycznej przy padaniu pod kątem ===
{{Rysunek|Fala padająca oraz załamana i odbita.jpg|foipppp|Fala odbita i przechodząca przy padaniu prostopadłym}}
Wcześniej omówiliśmy gdy fala padająca pada prostopadle do powierzchni ośrodka, czyli mieliśmy do czynienia z przypadkiem θ=0. Określmy trzy fala elektromagnetyczne, padająca, odbita i załamaną.
Amplituda natężenia fali pola elektrycznego i indukcji pola magnetycznego fali elektromagnetycznej padającej można przedstawić:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}_p=E_{0p}e^{i(\vec{k}_p\vec{r}-\omega_p t)}\;</MATH>|17.72}}
| 2 = {{CentrujWzór|<MATH>\vec{B}_p={{1}\over{v_1}}\left(\vec{k}_p\times\vec{E}_p\right)\;</MATH>|17.73}}
}}
Amplituda natężenia fali pola elektrycznego i indukcji pola magnetycznego fali elektromagnetycznej odbitej można przedstawić:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}_o=E_{0o}e^{i(\vec{k}_o\vec{r}-\omega_o t)}\;</MATH>|17.74}}
| 2 = {{CentrujWzór|<MATH>\vec{B}_o={{1}\over{v_1}}\left(\vec{k}_o\times\vec{E}_o\right)\;</MATH>|17.75}}
}}
Amplituda natężenia fali pola elektrycznego i indukcji pola magnetycznego fali elektromagnetycznej załamanej można przedstawić w postaci:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}_z=E_{0z}e^{i(\vec{k}_z\vec{r}-\omega_z t)}\;</MATH>|17.76}}
| 2 = {{CentrujWzór|<math>\vec{B}_z={{1}\over{v_2}}\left(\vec{k}_z\times\vec{E}_z\right)\;</MATH>|17.77}}
}}
Dla z=0 można powiedzieć, że suma pól elektrycznych składowych równoległych, według warunków granicznych na granicy dwóch ośrodków:
{{CentrujWzór|<MATH>\vec{E}_p^{||}+\vec{E}_o^{||}=\vec{E}_z^{||}\Rightarrow E_{0p}^{||}e^{i(\vec{k}_p\vec{r}-\omega_p t)}+E_{0o}^{||}e^{i(\vec{k}_o\vec{r}-\omega_o t)}=E^{||}_{0z}e^{i(\vec{k}_z\vec{r}-\omega_z t)}\;</MATH>|17.78}}
Powyższe równanie jest tożsamością, więc powinno być spełniona dla wszystkich x i y, przy z=0 i dla wszystkich czasów, wynika stąd równość wykładników potęg, czyli powinno zachodzić:
{{CentrujWzór|<MATH>i(\vec{k}_p\vec{r}-\omega_p t)=i(\vec{k}_o\vec{r}-\omega_o t)=i(\vec{k}_z\vec{r}-\omega_z t)\;</MATH>|17.79}}
Równania Maxwella są słuszne także, gdy dokonamy przesunięcia czasowego o stałą wielkość, tzn. dokonamy zamiany t⇒ t+Δ t, dochodzimy wtedy stąd do wniosku, że występuje równość częstotliwości kołowych, czyli zachodzi:
ω{{Sub|p}}=ω{{Sub|o}}=ω{{Sub|z}}=ω, czyli te wszystkie częstotliwości oznaczmy przez ω.
Do każdej strony równania {{LinkWzór|17.79}} należy dodać wielkość iωt, bo dla poszczególnych przypadków częstotliwości są równe (padającego, odbitego, załamanego) jak udowodniliśmy, to tak otrzymane nasze równanie podzielimy jeszcze przez jednostkę urojoną "i", i wtedy otrzymujemy tożsamość:
{{CentrujWzór|<MATH>\vec{k}_p\vec{r}=\vec{k}_o\vec{r}=\vec{k}_z\vec{r}\;</MATH>|17.80}}
Równanie {{LinkWzór|17.80}} możemy zapisać pamiętając przy tym, że płaszczyzna ograniczająca dwa ośrodki jest płaszczyzną, której położenie jest z=0, wiedząc o tym, to (k{{Sub|p}}){{Sub|z}}, (k{{Sub|o}}){{Sub|z}}, (k{{Sub|z}}){{Sub|z}} przyjmuje wartość w tym naszym równaniu dowolną, chociaż ściśle określoną, dostajemy równanie:
{{CentrujWzór|<MATH>(k_p)_x x+(k_p)_y y=(k_o)_x x+(k_o)_y y=(k_z)_x x+(k_z)_y y\;</MATH>|17.81}}
Ostatnia równość powinna być spełniona dla wszystkich x i y, tzn. dowolnych, zatem otrzymujemy dwie tożsamości:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>(k_p)_x=(k_o)_x=(k_z)_x\;</MATH>|17.82}}
| 2 = {{CentrujWzór|<MATH>(k_p)_y=(k_p)_y=(k_z)_y\;</MATH>|17.83}}
}}
Dochodzimy więc do wniosku na podstawie tożsamości {{LinkWzór|17.82}} i {{LinkWzór|17.83}}, że wektory falowe:{{Formuła|<MATH>\vec{k}_p\;</MATH>}}, {{Formuła|<MAth>\vec{k}_o\;</MATH>}}, a także:{{Formuła|<MATH>\vec{k}_z\;</MATH>}}, leżą w tej samej płaszczyźnie, co stanowi treść '''pierwszego prawa odbicia i załamania'''. Ta płaszczyzna zawiera promień padający i ona jest prostopadła do małego wycinka płaszczyzny, w której rozpoczyna się odbicie i załamanie. Zatem w tej płaszczyźnie zawierają się promień odbity i załamany.
Wykorzystując definicję iloczynu skalarnego w tożsamości {{LinkWzór|17.80}} i skracając obustronnie przez długość wektora {{Formuła|<math>\vec{r}\;</MATH>}}, wtedy dochodzimy do wniosku, że:
{{CentrujWzór|<MATH>k_p\sin\theta_p=k_o\sin\theta_o=k_z\sin\theta_z\;</MATH>|17.84}}
Ponieważ prędkość i częstości w ośrodku pierwszym są takie same i jeśli: {{Formuła|<MATH>k_p={{\omega}\over{v_p}}\;</MATH>}} oraz {{Formuła|<MATH>k_o={{\omega}\over{v_o}}\;</MATH>}} ale v{{Sub|p}}=v{{Sub|o}}, i oznaczymy odpowiednio według naszych wywodów k{{Sub|p}}=k{{Sub|o}}=k, wtedy mamy:
{{CentrujWzór|<MATH>k_p\sin\theta_p=k_o\sin\theta_o\Rightarrow k\sin\theta_p=k\sin\theta_o\Rightarrow \sin\theta_p=\sin\theta_o\Rightarrow \theta_p=\theta_o\;</MATH>|17.85}}
Dochodzimy stąd do wniosku, że kąt padania i odbicia fali elektromagnetycznej na granicę między ośrodkami są sobie równe, czyli zachodzi związek θ{{Sub|p}}=θ{{Sub|o}}, jest to treść '''drugiego prawa odbicia i załamania'''.
Dla fali elektromagnetycznej załamanej i padającej wedle {{LinkWzór|17.84}} zachodzi na pewno tożsamość:
{{CentrujWzór|<MATH>k_o\sin\theta_o=k_z\sin\theta_z\;</MATH>|17.86}}
Wiadomo jednak że zachodzi:{{Formuła|<MATH>k_p={{\omega}\over{v_p}}\;</MATH>}}, a także:{{Formuła|<MATH>k_z={{\omega}\over{v_z}}\;</MATH>}}, bo częstotliwości są sobie równe w tym wzorach. wtedy nasza równość {{LinkWzór|17.86}} zachodzi według wzoru poniżej, w której tak go przekształćmy, by prędkości fal w dwóch granicznych ośrodkach dla promienia padającego i załamanego były po lewej stronie, a kąty padania i załamania były po jego prawej stronie:
{{CentrujWzór|<MATH>{{\omega}\over{v_p}}\sin\theta_p={{\omega}\over{v_z}}\sin\theta_z\Rightarrow{{v_z}\over{v_p}}={{\sin\theta_z}\over{\sin\theta_p}}\;</MATH>|17.87}}
Korzystamy z definicji współczynników załamania w ośrodku promienia padającego {{Formuła|<MATh>n_1={{c}\over{v_p}}\;</MATH>}} i w ośrodku promienia załamanego {{Formuła|<MATH>n_2={{c}\over{v_z}}\;</MATH>}}, wtedy lewą stronę końcowej tożsamości {{LinkWzór|17.87}} zapisujemy:
{{CentrujWzór|<MATh>{{v_z}\over{v_p}}={{{{c}\over{v_p}}}\over{{{c}\over{v_z}}}}={{n_1}\over{n_2}}\;</MATH>|17.88}}
I jeśli oznaczymy przez θ{{Sub|p}}=θ{{Sub|1}} oraz θ{{Sub|z}}=θ{{Sub|2}}, wtedy otrzymujemy prawo załamania na podstawie końcowego wzoru {{LinkWzór|17.87}} i przeprowadzonych obliczeń {{LinkWzór|17.88}} dostajemy wniosek:
{{CentrujWzór|<MATH>{{n_1}\over{n_2}}={{\sin\theta_2}\over{\sin\theta_1}}\Rightarrow n_1\sin\theta_1=n_2\sin\theta_2\;</MATH>|17.89}}
co stanowi treść '''trzeciego prawa odbicia i załamania''' zwanym prawem załamania lub prawem Snella.
Z warunków brzegowych w elektrodynamice dla fal zmiennych w tym przypadku dla fali eletromagnetycznej zachodzą warunki dla ich aplitud czyli aplitud fali magnetycznej i elektrycznej, bo wykładniki potęg są sobie równe, zatem zachodzą wnioski:
{{CentrujWzór|<MATH>\begin{cases}
\epsilon_1\left((E_{0p})_z+(E_{0o})_z\right)=\epsilon_2(E_{0z})_z&\mbox{ z pierwszego prawa Maxwella}\\
(B_{0p})_z+(B_{0o})_z=(B_{0z})_z&\mbox{ z drugiego prawa Maxwella}\\
(E_{0p})_{x,y}+(E_{0o})_{x,y}=(E_{0z})_{x,y}&\mbox{ z trzeciego prawa Maxwella}\\
{{1}\over{\mu_1}}\left((B_{0p})_{x,y}+(B_{0o})_{x,y}\right)={{1}\over{\mu_2}}(B_{0z})_{x,y}&\mbox{ z czwartego prawo Maxwella}\\
\end{cases}</MATH>|17.90}}
{{Rysunek|Odbicie i załamanie dla fal elektromagnetycznych.jpg|fepozppu|Fala elektromagnetyczne padająca, odbita i załamana przy padaniu ukośnym}}
Korzystamy z pierwszego warunku granicznego układu równań {{LinkWzór|17.90}} i wyraźmy go poprzez amplitudy wektora elektrycznego w fali elektromagnetycznej, patrząc na rysunek obok.
{{CentrujWzór|<MATH>\epsilon_1\left(-E_{0p}\sin\theta_p+E_{0o}\sin\theta_o\right)=-\epsilon_2E_{0z}\sin\theta_z</MATH>|17.91}}
Wiedząc, że zachodzi θ{{Sub|p}}=θ{{Sub|o}}, i po krótkich przekształceniach otrzymujemy:
{{CentrujWzór|<MATh>E_{0p}-E_{0o}={{\epsilon_2}\over{\epsilon_1}}{{\sin\theta_z}\over{\sin\theta_p}}E_{0z}</MaTH>|17.92}}
Drugi wzór na warunki brzegowe {{LinkWzór|17.90}} nic nie wnosi, ponieważ w naszym przypadku nie ma składowych fali elektromagnetycznej pola magnetycznego prostopadłej do granicy między ośrodkami, czyli wektory indukcji magnetycznej w płaszczyźnie XY.
Dla składowych prostopadłych zachodzi warunek graniczny (brzegowy) według trzeciego równania układu równań {{LinkWzór|17.90}}:
{{CentrujWzór|<MATH>E_{0p}\cos\theta_p+E_{0o}\cos\theta_o=E_{0z}\cos\theta_z\Rightarrow\;</MATH>{{Br}}<math>\Rightarrow E_{0p}+E_{0o}={{\cos\theta_z}\over{\cos\theta_p}}E_{0z}</MATH>|17.93}}
Jeśli oznaczymy, że:{{Formuła|<MATH>\alpha={{\cos\theta_z}\over{\cos\theta_p}}</MATH>}}, to wtedy równanie {{LinkWzór|17.93}} możemy przepisać używając parametru α i wartości amplitud fali padającej, odbitej i załamanej, zatem piszemy:
{{CentrujWzór|<MATH>E_{0p}+E_{0o}=\alpha E_{0z}\;</MATH>|17.94}}
Z ostatniego warunku brzegowego układu równań {{LinkWzór|17.90}}, wykorzystując wniosek {{Formuła|<MATH>B_{0}={{1}\over{v_1}}E_0</MATH>}}, który wynika z tożsamości {{LinkWzór|17.24}} i z definicji prędkości fazowej, zatem napiszmy na podstawie tego tożsamość:
{{CentrujWzór|<MATH>{{1}\over{\mu_1v_1}}\left(E_{0p}-E_{0o}\right)={{1}\over{\mu_2v_2}}E_{0z}\Rightarrow E_{0p}-E_{0o}={{\mu_1v_2}\over{\mu_2v_2}}E_{0z}</MATH>|17.95}}
Oznaczmy, że parametr β, który występuje z prawej strony równania końcowego {{LinkWzór|17.95}} przy wartości amplitudy promienia padającego E{{Sub|0z}}, piszemy wedle:
{{CentrujWzór|<MATH>\beta={{\mu_1v_1}\over{\mu_2v_2}}={{\mu_1{{c}\over{v_2}}}\over{\mu_2{{c}\over{v_1}}}}={{\mu_1n_2}\over{\mu_2n_1}}</MATH>|17.96}}
Stąd otrzymujemy równoważne równanie do {{LinkWzór|17.95}} przy definicji parametru β zdefiniowanego w punkcie {{LinkWzór|17.96}}:
{{CentrujWzór|<MATH>E_{0p}-E_{0o}=\beta E_{0z}\;</MATH>|17.97}}
Równania {{LinkWzór|17.94}} i {{LinkWzór|17.97}} możemy zebrać w jeden układ równań otrzymując układ dwóch równań, które jednocześnie zachodzą zależne od parametru α i β i od wartości amplitud fali pola elektrycznego padającej E{{Sub|0p}}, odbitej E{{Sub|0o}} i na samym końcu od amplitudy fali załamanej E{{Sub|0z}}:
{{CentrujWzór|<MATH>\begin{cases}
E_{0p}+E_{0o}=\alpha E_{0z}\\
E_{0p}-E_{0o}=\beta E_{0z}
\end{cases}</MATH>|17.98}}
Możemy dodać dwa równania do siebie ostatniego układu równań {{LinkWzór|17.98}} do siebie, otrzymując wzór na amplitudę fali załamanej E{{Sub|0z}} w zależności od amplitudy fali padającej E{{Sub|0p}}, oczywiście dla pola elektrycznego, zatem otrzymujemy ten nasz właśnie wzór:
{{CentrujWzór|<MATH>2E_{0p}=\left(\alpha+\beta\right)E_{0z}\Rightarrow E_{0z}={{2}\over{\alpha+\beta}}E_{0p}</MaTH>|17.99}}
Z drugiego równań układu równań {{LinkWzór|17.98}} wyznaczmy amplitudy natężenia fali elektrycznej odbitej wykorzystując wzór na amplitudę fali załamanej wedle:
{{CentrujWzór|<MATH>E_{0o}=E_{0p}-\beta E_{0z}=E_{0p}-\beta{{2}\over{\alpha+\beta}}E_{0p}={{\alpha+\beta-2\beta}\over{\alpha+\beta}}E_{0p}=
{{\alpha-\beta}\over{\alpha+\beta}}E_{0p}</MATH>|17.100}}
Widzimy, że przy α=β, fala odbita jest całkowicie stłumiona. zajmijmy się teraz tym przypadkiem.
Przekształćmy wyrażenie na parametr α, który występuje w wyrażeniu {{LinkWzór|17.94}} zamieniając cosθ{{Sub|z}} na wyrażenie w której występuje sinθ{{Sub|z}}, wiedząc, że cosθ{{Sub|z}} jest w zjawisku załamania i odbicia wielkością nieujemną:
{{CentrujWzór|<MATH>\alpha={{\cos\theta_z}\over{\cos\theta_p}}={{\sqrt{1-\sin^2\theta_z}}\over{\cos\theta}}</MATH>|17.101}}
W {{LinkWzór|17.101}} występujący w nim sinθ{{Sub|z}} możemy wyrazić za pomocą prawa Snella {{LinkWzór|17.89}} sinusa kąta załamania wedle:
{{CentrujWzór|<MATH>\alpha={{\sqrt{1-\left[{{n_1}\over{n_2}}\sin\theta_p\right]^2}}\over{\cos\theta_p}}</MATH>|17.102}}
Dla całkowicie stłumionej fali odbitej według {{LinkWzór|17.98}} parametr α jest równy współczynnikowi β, czyli: α=β, zatem wykorzystując wzór na α {{LinkWzór|17.102}}, następnie zamieniamy w nim parametr α na parametr β, dzięki temu piszemy go w nowej odsłonie:
{{CentrujWzór|<MATH>\beta={{\sqrt{1-\left[{{n_1}\over{n_1}}\sin\theta_p\right]^2}}\over{\cos\theta_p}}</MATH>|17.103}}
Poprzekształcajmy nasze równanie {{LinkWzór|17.103}}, by wyznaczyć tangens kąta padania, w tym celu podnieśmy obie strony tego naszego równania do kwadratu, by zlikwidować pierwiastek w nim występujący, a potem go dalej przekształcając w celu wyznaczenia kwadratu sinusa kąta padającego w zależności od parametru β i współczynników załamania w ośrodku pierwszym n{{Sub|1}} i drugim n{{Sub|2}}.
{{CentrujWzór|<MATh>\beta^2\cos^2\theta_p=1-{{n_1^2}\over{n_1^2}}\sin^2\theta_p\Rightarrow\beta^2(1-\sin^2\theta_p)=1-{{n_1^2}\over{n_2^2}}\sin^2\theta_p\Rightarrow\sin^2\theta_p\left(\beta^2-{{n_1^2}\over{n_2^2}}\right)=-1+\beta^2\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\sin^2\theta_p={{1-\beta^2}\over{\left({{n_1}\over{n_2}}\right)^2-\beta^2}}</MATH>|17.104}}
Weźmy definicję β {{LinkWzór|17.96}} i wiedząc, że w nim występujące współczynniki μ{{Sub|1}} i μ{{Sub|2}} są w przybliżeniu równe przenikalności magnetycznej w próżni μ{{Sub|0}}, czyli ten nasz wspomniany obiekt piszemy w przybliżeniu w postaci:
{{CentrujWzór|<MATH>\beta={{\mu_1n_2}\over{\mu_2n_1}}\simeq {{n_2}\over{n_1}}\Rightarrow{{n_1}\over{n_2}}\simeq{{1}\over{\beta}}</MATH>|17.105}}
Tożsamość {{LinkWzór|17.104}} na podstawie końcowego wniosku {{LinkWzór|17.105}}, który jest odwrotnością parametru β zdefiniowanym jako stosunek współczynnika załamania w ośrodku pierwszym przez ośrodek drugi, stąd wniosek:
{{CentrujWzór|<MATH>\sin^2\theta_p={{1-\beta^2}\over{{{1}\over{\beta^2}}-\beta^2}}\Rightarrow
{{\beta^2(1-\beta^2)}\over{1-\beta^4}}=\beta^2{{1-\beta^2}\over{(1-\beta^2)(1+\beta^2)}}=\beta^2{{1}\over{1+\beta^2}}</MATH>|17.106}}
Ponieważ zachodzi tożsamość z znana z matematyki, że: {{Formuła|<MATH>\sin^2\theta={{\operatorname{tg}^2\theta}\over{1+\operatorname{tg}^2\theta}}</MATH>}}, i porównując definicję sin{{Sup|2}}θ ze wzorem {{LinkWzór|17.106}}, otrzymujemy, że zachodzi na pewno:
{{CentrujWzór|<MATH>\operatorname{tg}\theta_p={{n_2}\over{n_1}}</MATH>|17.107}}
Ostatni wzór stanowi treść '''twierdzenie Brewsteta''', mówi ona przy jakim kącie zwanym kątem Brewstera nie ma promienia odbitego.
Policzmy wyrażenie, które jest kosinusem sumy kątów padania i załamania dla kąta padania Brewstera, tzn.: θ{{Sub|p}}=θ{{Sub|B}}, czyli dla którego zachodzi związek {{LinkWzór|17.107}}:
{{CentrujWzór|<MATH>\cos(\theta_p+\theta_z)=\cos\theta_p\cos\theta_z-\sin\theta_p\sin\theta_z=
\cos\theta_p\sqrt{1-\sin^2\theta_z}-\sin\theta_p\sin\theta_z=\cos\theta_p\sqrt{1-{{n_1^2}\over{n_2^2}}\sin^2\theta_p}-{{n_1}\over{n_2}}\sin^2\theta_p=</MATH>{{Br}}<MATH>={{1}\over{\sqrt{1+{{n_2^2}\over{n_1^2}}}}}\sqrt{1-{{n_1^2}\over{n_2^2}}{{{{n_2^2}\over{n_1^2}}}\over{1+{{n_2^2}\over{n_1^2}}}}}-{{n_1}\over{n_2}}{{{{n_2^2}\over{n_1^2}}}\over{1+{{n_2^2}\over{n_1^2}}}}={{1}\over{\sqrt{1+{{n_2^2}\over{n_1^2}}}}}\sqrt{1-{{1}\over{1+{{n_2^2}\over{n_1^2}}}}}-{{{{n_2}\over{n_1}}}\over{1+{{n_2^2}\over{n_1^2}}}}=
{{1}\over{\sqrt{1+{{n_2^2}\over{n_1^2}}}}}{{\sqrt{1+{{n_2^2}\over{n_1^2}}-1}}\over{\sqrt{1+{{n_2^2}\over{n_1^2}}}}}-{{{{n_2}\over{n_1}}}\over{{1+{{n_2^2}\over{n_1^2}}}}}=
</MATH>{{Br}}
<MATH>={{{{n_2}\over{n_1}}}\over{1+{{n_2^2}\over{n_1^2}}}}-{{{{n_2}\over{n_1}}}\over{1+{{n_2^2}\over{n_1^2}}}}=0</MaTH>|17.108}}
Dochodzimy do wniosku z ostatnich obliczeń dla kąta padania Brewstera, dla którego promień odbity jest całkowicie tłumiony, że cos(θ{{Sub|p}}+θ{{Sub|z}})=0, a to z kolei owocuje, jak napiszemy poniżej, że suma kąta padania θ{{Sub|p}} i załamania θ{{Sub|z}} fali elektrycznej jest równa kątowi prostemu:
{{CentrujWzór|<mATH>\theta_p+\theta_z={{\pi}\over{2}}</MATH>|17.109}}
Odejdźmy od twierdzenia Brewstera i zajmijmy się ponownie ogólnym wnioskiem procesu odbicia i załamania.
Korzystając ze wzoru na natężenie fali w ośrodku liniowym fali elektromagnetycznej padającej pod kątem θ do powierzchni granicznej {{LinkWzór|17.49}}, wyznaczmy wielkość, która jest stosunkiem natężenia fali elektromagnetycznej odbitej I{{Sub|o}} do fali padającej I{{Sub|p}}, czyli współczynnik odbicia R. We wzorach na natężenia pola dla promienia odbitego, padającego, a nawet dla załamanego, co później uwzględnimy dla współczynnika transmisji, tzn. kąty pod którymi są względem prostej prostopadłej do płaszczyzny rozgraniczającej oba wspomniane wcześniej te dwa różne ośrodki względem tychże wymienionych promieni, co uwzględnienie tego dla współczynnika odbicia R nic nie wnosi, ponieważ kąty padania i odbicia są jednakowe, a dla współczynnika transmisji T katy padania i załamania mają jakiś wkład.
{{CentrujWzór|<MATH>R={{I_o}\over{I_p}}=\left({{E_{0o}}\over{E_{0p}}}\right)^2=\left({{\alpha-\beta}\over{\alpha+\beta}}\right)^2</MATH>|17.110}}
A następnie stosunek natężenia fali elektromagnetycznej załamanej I{{Sub|z}} do fali padającej I{{Sub|p}}, czyli współczynnik transmisji T, korzystając przy tym ze wzoru {{LinkWzór|17.49}} dla natężenia fali załamanej i padającej przy uwzględnieniu, że wszystkie te fale w szczególności załamane i odbite padają pod pewnym kątem do prostej prostopadłej do płaszczyzny rozgraniczającej oba te ośrodki, jak powiedziano wcześniej przy współczynniku odbicia R {{LinkWzór|17.110}}:
{{CentrujWzór|<MATH>T={{I_z}\over{I_p}}={{\epsilon_2v_2}\over{\epsilon_1v_1}}\left({{E_{0z}}\over{E_{0p}}}\right)^2{{\cos\theta_z}\over{\cos\theta_p}}=
{{v_2\mu_1v_1^2}\over{\mu_2v_2^2v_1}}\left({{E_{0z}}\over{E_{0p}}}\right)^2\alpha=
\alpha\beta\left({{E_{0z}}\over{E_{0p}}}\right)^2=\alpha\beta{{4}\over{\left(\alpha+\beta\right)^2}}</MATH>|17.111}}
Policzmy wyrażenie będącej sumą współczynnika odbicia R {{LinkWzór|17.110}} i współczynnika transmisji T {{LinkWzór|17.111}}, czyli sprawdźmy czy spełniona jest zasada zachowania energii:
{{CentrujWzór|<MATH>R+T=\left({{\alpha-\beta}\over{\alpha+\beta}}\right)^2+\alpha\beta{{4}\over{\left(\alpha+\beta\right)^2}}=
{{(\alpha-\beta)^2+4\alpha\beta}\over{\left(\alpha+\beta\right)^2}}={{\alpha^2+\beta^2-2\alpha\beta+4\alpha\beta}\over{\left(\alpha+\beta\right)^2}}={{\alpha^2+\beta^2+2\alpha\beta}\over{\left(\alpha+\beta\right)^2}}=
{{\left(\alpha+\beta\right)^2}\over{\left(\alpha+\beta\right)^2}}=1</MATH>|17.112}}
Na podstawie obliczeń {{LinkWzór|17.112}} udowodniliśmy, że spełnione jest prawo zachowania energii dla procesu załamania i odbicia, bo suma współczynników odbicia R {{LinkWzór|17.110}} i transmisji T {{LinkWzór|17.111}} jest równa jeden.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
pye9cly4tnwd3aaltykvj4972zl48ua
Elektrodynamika klasyczna/Absorpcja i dyspersja w materii
0
16891
558886
513488
2026-10-08T01:31:52Z
Persino
2851
558886
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy się zajmować absorpcją, czyli pochłanianiem energii fali elektromagnetycznej przez przewodnik i dyspersji, a więc zależnością współczynnika załamania od częstości dla ośrodka przewodzącego.
== Rozchodzenie się fal elektromagnetycznych w przewodnikach ==
Będziemy się zajmować rozchodzeniem fal elektromagnetycznych w ośrodkach liniowych, dla których spełnione jest różniczkowe prawo Ohma.
W naszym przypadku będziemy zakładać, że gęstość objętościowa ładunku swobodnego jest równa zero, tylko gęstość prądu swobodnego jest różna od zera i jest według różniczkowego prawa Ohma {{LinkWzór|13.4|Przewodnik_z_prądem_elektrycznym}}, które tutaj powtórzymy dla przejrzystości wykładu:
{{CentrujWzór|<MATH>\vec{J}_{sw}=\sigma\vec{E}\;</MATH>|18.1}}
Nasze prawa dla ośrodków liniowych przewodzących {{LinkWzór|15.46|Elektrodynamika_Maxwella}}, {{LinkWzór|15.47|Elektrodynamika_Maxwella}}, {{LinkWzór|15.48|Elektrodynamika_Maxwella}} i {{LinkWzór|15.49|Elektrodynamika_Maxwella}}, gdy nie ma objętościowych ładunków swobodnych są:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Pierwsze prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Drugie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Trzecie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Czwarte prawo Maxwella z prawem Ohma'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{E}=0\;</MATH>|18.2}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{B}=0\;</MATH>|18.3}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{E}=-{{\partial\vec{B}}\over{\partial t}}\;</MATH>|18.4}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{B}=\mu\sigma\vec{E}+\mu\epsilon{{\partial\vec{E}}\over{\partial t}}\;</MATH>|18.5}}}}<!--
-->}}<!--
-->}}
W naszym przypadku jest spełniona zasada zachowania ładunku (równanie ciągłości) dla ładunku swobodnego {{LinkWzór|16.11|Zasady_zachowania_a_twierdzenia_o_właściwościach_pola_elektromagnetycznego}}, ale ponieważ gęstość objętościowa ładunku swobodnego jest zawsze równa zero, zatem to równanie ciągłości przechodzi w równanie:
{{CentrujWzór|<MATH>\nabla\cdot\vec{J}_{sw}=0\;</MATH>|18.6}}
Korzystając z równania ciągłości {{LinkWzór|18.6}} i podstawiając do niego różniczkowe prawo Ohma {{LinkWzór|18.1}}, wtedy otrzymamy nasze pierwsze prawo Maxwella {{LinkWzór|18.2}}, które jest równe zero.
{{CentrujWzór|<MATH>0=\nabla\cdot\vec{J}_{sw}=\nabla\cdot\left(\sigma\vec{E}\right)=\sigma\left(\nabla\cdot\vec{E}\right)=0\;</MATH>|18.7}}
Czyli doszliśmy do sedna sprawy, że według obliczeń {{LinkWzór|18.7}}, doszliśmy do wniosku, że gęstość ładunków objętościowych jest równa zero, tak jak zakładaliśmy.
=== Równanie falowe fali elektromagnetycznej pola elektrycznego ===
Wzór {{LinkWzór|17.4|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}} tak samo się wyprowadzało, jak się wyprowadza się w naszym przypadku, gdy dołożymy dodatkowo prawo Ohma. Do wzoru {{LinkWzór|17.4|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}} podstawmy czwarte prawo Maxwella z namiastką prawa Ohma {{LinkWzór|18.5}}, i po dalszych przekształceniach ostatniego równania otrzymujemy ostateczne równanie falowe dla fali tłumionej wedle:
{{CentrujWzór|<MATH>\Delta\vec{E}={{\partial}\over{\partial t}}\left(\mu\sigma\vec{E}+\mu\epsilon{{\partial\vec{E}}\over{\partial t}}\right)\Rightarrow\Delta\vec{E}=\mu\sigma{{\partial\vec{E}}\over{\partial t}}+\mu\epsilon{{\partial^2\vec{E}}\over{\partial t^2}}\;</MATH>|18.8}}
Co końcowe równanie różniczkowe {{LinkWzór|18.8}} jest równaniem falowym dla pola elektrycznego dla ośrodka liniowego przewodzącego.
=== Równanie falowe fali elektromagnetycznej pola magnetycznego ===
Mamy sobie tożsamość różniczkową {{LinkWzór|17.6|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}} i podstawmy do niego drugie prawo Maxwella {{LinkWzór|18.3}}, a także czwarte prawo Maxwella z namiastką prawa Ohma {{LinkWzór|18.5}}, wtedy przekształcając go dalej, dostajemy wzór:
{{CentrujWzór|<MATH>-\Delta\vec{B}=\nabla\times\left(\mu\sigma\vec{E}+\mu\epsilon{{\partial\vec{E}}\over{\partial t}}\right)\Rightarrow-\Delta\vec{B}=\mu\sigma\left(\nabla\times\vec{E}\right)+\mu\epsilon{{\partial}\over{\partial t}}\left(\nabla\times\vec{E}\right)\;</MATH>|18.9}}
Następnym krokiem jest wykorzystanie trzeciego prawa Maxwella dla ośrodka przewodzącego {{LinkWzór|18.4}} do tożsamości {{LinkWzór|18.9}}, otrzymujemy:
{{CentrujWzór|<MATH>-\Delta\vec{B}=\mu\sigma\left(-{{\partial\vec{B}}\over{\partial t}}\right)+\mu\epsilon {{\partial}\over{\partial t}}\left(-{{\partial\vec{B}}\over{\partial t}}\right)\Rightarrow\Delta\vec{B}=\mu\sigma{{\partial\vec{B}}\over{\partial t}}+\mu\epsilon{{\partial^2\vec{B}}\over{\partial t^2}}\;</MATH>|18.10}}
Co równanie różniczkowe {{LinkWzór|18.10}} jest równaniem falowym pola magnetycznego dla ośrodka liniowego przewodzącego.
=== Równanie fali elektromagnetycznej płaskiej ===
Zakładamy, że rozwiązaniami równania falowego dla fali pola elektrycznego {{LinkWzór|18.8}}, i dla fali pola magnetycznego {{LinkWzór|18.10}}, oczywiście dla ośrodka linowego zarówno magnetycznie i elektrycznie, ale przewodzącego są równaniami fali płaskiej płaskiej dla tych pół:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}(z,t)=\vec{\tilde{E}}_0 e^{i(\tilde{k}z-\omega t)}\;</MATH>|18.11}}
| 2 = {{CentrujWzór|<math>\vec{B}(z,t)=\vec{\tilde{B}}_0 e^{i(\tilde{k}z-\omega t)}\;</MATH>|18.12}}
}}
Równanie dla fali zespolonej pola elektrycznego {{LinkWzór|18.8}} możemy zapisać go równoważnie wprowadzając zespolone przenikalności elektryczne i magnetyczne i zespoloną liczbę falową {{Formuła|<MATH>\tilde{k}\;</Math>}}, która występuje w równaniu {{LinkWzór|18.11}}, zatem ten wzór piszemy:
{{CentrujWzór|<MATH>\Delta \vec{\tilde{E}}=\tilde{\epsilon}\tilde{\mu}{{\partial^2\vec{\tilde{E}}}\over{\partial t^2}}</MATH>|18.13}}
Ponieważ zespoloną prędkość fazową definiowaną poprzez przenikalności zespolone elektryczne {{Formuła|<MAth>\tilde{\epsilon}\;</MATh>}} i magnetyczne {{Formuła|<MATH>\tilde{\mu}\;</MATH>}}, a także to z kolei definiujemy, dzięki stosunkowi częstotliwości fazowej przez zespoloną liczbę falową {{Formuła|<MATH>\tilde{k}\;</MAth>}}, wtedy jego przestawienia piszemy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\tilde{v}={{1}\over{\sqrt{\tilde{\epsilon}\tilde{\mu}}}}\;</MATH>|18.14}}
| 2 = {{CentrujWzór|<MATH>\tilde{v}={{\omega}\over{\tilde{k}}}\;</MATH>|18.15}}
}}
Wyznaczmy prawą stronę równania różniczkowego dla fali pola elektrycznego {{LinkWzór|18.8}}, gdy jego rozwiązaniem jest {{LinkWzór|18.11}}, i prawą stronę równania {{LinkWzór|18.13}} przy definicji zespolonej prędkości fazowej {{LinkWzór|18.14}} i jego definicji przez zespoloną liczbę falową {{LinkWzór|18.15}} w drugim wzorze, zatem do dzieła:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\mu\epsilon{{\partial^2\vec{E}}\over{\partial t^2}}+\mu\sigma{{\partial\vec{E}}\over{\partial t}}=\left(-\omega^2\mu\epsilon-i\omega\mu\sigma\right)\vec{\tilde{E}}_0 e^{i(\tilde{k}z-\omega t)}\;</MATH>|18.16}}
| 2 = {{CentrujWzór|<MATH>\tilde{\epsilon}\tilde{\mu}{{\partial^2\vec{E}}\over{\partial t^2}}={{\tilde{k}^2}\over{\omega^2}}\omega^2e^{i(\tilde{k}z-\omega t)}=\tilde{k}^2e^{i(\tilde{k}z-\omega t)}\;</Math>|18.17}}
}}
Ponieważ wzory {{LinkWzór|18.3}} i {{LinkWzór|18.8}} oznaczają to samo, zatem możemy zdefiniować kwadrat zespolonej liczby falowej poprzez przenikalności elektryczne i magnetyczne w ośrodku liniowym w sposób:
{{CentrujWzór|<MATH>\tilde{k}^2=\omega^2\mu\epsilon+i\omega\mu\sigma\;</MATH>|18.18}}
Dochodzimy więc do wniosku, że równanie falowe dla ośrodków przewodzącej jest szczególnym przypadkiem równania falowego dla fali elektromagnetycznej dla ośrodka nieprzewodzącego o liczbie falowej zespolonej {{Formuła|<MATH>\tilde{k}</MATH>}} i częstości fali elektromagnetycznej {{Formuła|<MATH>\omega</MATH>}} i zespolonych przenikalnościach elektrycznych i magnetycznych.
Naszą zespoloną liczbę falową {{Formuła|<MATH>\tilde{k}\;</MATH>}} możemy zdefiniować jako sumę właściwej liczby falowej k i liczby, która jest iloczynem jednostki zespolonej i i współczynnika tłumienia κ:
{{CentrujWzór|<MATH>\tilde{k}=k+i\kappa\;</MATH>|18.19}}
Wyznaczmy rzeczywistą liczbę falową k i współczynnik tłumienia κ podstawiając wzór na zespolony współczynnik falowy {{LinkWzór|18.19}} do wzoru {{LinkWzór|18.8}}, i wykonując działania potęgowania po jego lewej stronie, dostajemy pokolei równania:
{{CentrujWzór|<MATH>\left(k+i\kappa\right)^2=\omega^2\mu\epsilon+i\omega\mu\sigma\Rightarrow k^2-\kappa^2+2ik\kappa=\omega^2\mu\epsilon+i\omega\mu\sigma\;</MATH>|18.20}}
Następnym krokiem jest przyrównanie części rzeczywistej i zespolonej odpowiednio do siebie z dwóch stron równania {{LinkWzór|18.20}}, wtedy dostajemy:
{{CentrujWzór|<MATh>\begin{cases}
k^2-\kappa^2=\omega^2\mu\epsilon\\
2k\kappa=\omega\mu\sigma\Rightarrow\kappa={{\omega\mu\sigma}\over{2k}}
\end{cases}\;</MATH>|18.21}}
Ostatnie wynikowe równanie układu równań {{LinkWzór|18.21}} podstawiając do pierwszego równania tego samego układu równań, wtedy tak powstałe równanie możemy pomnożyć przez 4k{{Sup|2}}, by potem poprzenosić wszystko na jedną stronę i przegrupować w nim wyrazy tworząc równanie czwartego stopnia:
{{CentrujWzór|<MATH>k^2-\left({{\omega\mu\sigma}\over{2k}}\right)^2=\omega^2\mu\epsilon\Rightarrow 4k^4-\omega^2\mu_0^2\sigma^2=4k^2\omega^2\mu\epsilon\Rightarrow 4k^4-4k^2\omega^2\mu\epsilon-\omega^2\mu^2\sigma^2=0\;</MATH>|18.22}}
Oznaczmy przez zmienną t kwadrat liczby zespolonej k{{Sup|2}}, czyli według t=k{{Sup|2}}, wtedy z równania czwartego stopnia dostajemy równanie kwadratowe zmiennej t:
{{CentrujWzór|<MATH>4t^2-4t\omega^2\mu\epsilon-\omega^2\mu^2\sigma^2=0\;</MATH>|18.23}}
Policzmy wyróżnik trójmianu kwadratowego równania kwadratowego {{LinkWzór|18.23}}, a na samym końcu pierwiastek tejże wielkości:
{{CentrujWzór|<MATH>\Delta=\left(-4\omega^2\mu\epsilon\right)^2-4\cdot 4\cdot\left(-\omega^2\mu^2\sigma^2\right)=
16\omega^4\mu^2\epsilon^2+16\omega^2\mu^2\sigma^2=
16\omega^2\mu_0^2\left(\epsilon^2\omega^2+\sigma^2\right)=16\omega^4\epsilon^2\mu_0^2\left(1+\left({{\sigma}\over{\epsilon\omega}}\right)^2\right)\Rightarrow\;</MATH><BR><MATH>\Rightarrow\sqrt{\Delta}=4\omega^2\epsilon\mu_0\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}\;</MATH>|18.24}}
Mając już pierwiastek trójmianu kwadratowego Δ możemy wyznaczyć pierwiastki równania kwadratowego {{LinkWzór|18.23}}, zatem do dzieła. Pierwszy jego pierwiastek t{{Sub|1}} jest w postaci:
{{CentrujWzór|<MATH>t_1=
{{4\omega^2\mu_0\epsilon-4\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}}
\over{2\cdot 4}}=
{{1}\over{2}}\omega^2\mu_0\epsilon
\left(1-\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}\right)<0\;</MATH>|18.25}}
Drugi jego pierwiastek jest w postaci:
{{CentrujWzór|<MATH>t_2=
{{4\omega^2\mu_0\epsilon+4\omega^2\epsilon\mu_0\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}}
\over{2\cdot 4}}={{1}\over{2}}\omega^2\mu_0\epsilon\left(1+\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}\right)>0\;</MATH>|18.26}}
Pierwsze rozwiązanie równania kwadratowego {{LinkWzór|18.23}} jest mniejsze od zera a drugi większe, ale ponieważ kwadrat liczby falowej jest zawsze liczbą nieujemną i ona jest równa zmiennej t, zatem na podstawie tego wybierzmy to drugie rozwiązanie, czyli {{LinkWzór|18.26}} wedle:
{{CentrujWzór|<MATH>k^2=t_2\Rightarrow k=\omega\sqrt{{{\mu\epsilon}\over{2}}}\sqrt{\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}+1}\;</MATH>|18.27}}
Następnym krokiem jest policzenie κ, podstawiając wzór na liczbę falową fali tłumionej {{LinkWzór|18.27}} do drugiego równania układu równań {{LinkWzór|18.21}}, wtedy możemy policzyć ten właśnie parametr:
{{CentrujWzór|<MATH>\kappa={{\omega\mu\sigma}\over{2k}}=
{{\omega\mu\sigma}\over{2\omega\sqrt{{{\mu\epsilon}\over{2}}}\sqrt{1+\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}}}}=
\sqrt{{\mu\sigma^2}\over{2\epsilon}}{{\sqrt{-1+\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}}}\over{\sqrt{1+\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}}\sqrt{-1+\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}}}}=\sqrt{{{\mu\sigma^2}\over{2\epsilon}}}{{\sqrt{\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1}}
\over{{{\sigma}\over{\epsilon\omega}}}}=\;</MATH><BR><MATH>=\omega\sqrt{{{\mu\epsilon}\over{2}}}\sqrt{\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1}\;</MATH>|18.28}}
Obliczone parametry rzeczywistej liczby falowej k {{LinkWzór|18.27}} i współczynnika tłumienia fali κ {{LinkWzór|18.28}} piszemy pod postacią:
{{CentrujWzór|<MATH>
\begin{cases}
k=\omega\sqrt{{{\mu\epsilon}\over{2}}}\sqrt{\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}+1}\\
\kappa=\omega\sqrt{{{\mu\epsilon}\over{2}}}
\sqrt{\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1}\\
\end{cases}
\;</MATH>|18.29}}
Również otrzymamy taką samą rzeczywistą liczbę falową k i współczynnik tłumienia κ rozwiązując równanie falowe dla ośrodka przewodzącego dla fali elektromagnetycznej pola magnetycznego {{LinkWzór|18.10}}, więc nie trzeba powtarzać rachunku.
Wyznaczymy równanie fali elektromagnetycznej tłumionej dla ośrodka przewodzącego dla pola elektrycznego i magnetycznego wykorzystując przy tym wzór {{LinkWzór|18.19}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}(z,t)=\vec{\tilde{E}}_0e^{i(\tilde{k}z-\omega t)}=\vec{\tilde{E}}_0e^{i\left[i(k+i\kappa)z-\omega t\right]}=\vec{\tilde{E}}_0 e^{-\kappa z}e^{i(kz-\omega t)}\;</MATH>|18.30}}
| 2 = {{CentrujWzór|<MATH>\vec{B}(z,t)=\vec{\tilde{B}}_0e^{-\kappa z}e^{(kz-\omega t)}\;</MATH>|18.31}}
}}
Prędkość fali elektromagnetycznej dla ośrodków przewodzących piszemy wedle {{Formuła|<MATH>v={{\omega}\over{k}}\;</MATH>}}, zatem zbadajmy czy nasza fala elektromagnetyczna jest falą poprzeczną czy podłużną, zatem tutaj będziemy się posługiwać wielkością zespolonej liczby falowej {{Formuła|<MATH>\tilde{k}\;</MATH>}}, zamiast wielkości rzeczywistej liczby falowej k. Podobne dowodząc jak w ośrodku nieprzewodzącego, dochodzimy do wniosku, że fala elektromagnetyczna w ośrodku przewodzącym też jest falą poprzeczną, ponieważ wykorzystaliśmy równanie falowe dla tego ośrodka {{LinkWzór|18.13}}, które dla ośrodka nieprzewodzącego jest złudząco podobne, bo zachodzi {{LinkWzór|17.5|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}}. Dla fali pola magnetycznego jest podobnie.
Dotychczas badaliśmy fale w ośrodkach przewodzących lub nie, w tych przypadkach doszliśmy do wniosku, że fala elektromagnetyczna zarówno dla pola magnetycznego i elektrycznego jest falą poprzeczną.
Posługując się wielkością {{Formuła|<MATH>\tilde{k}\;</MATH>}}, dochodzimy do wniosku tak samo jak w ośrodku nieprzewodzącym, że amplituda pola magnetycznego w zależności od amplitudy pola elektrycznego dla tego pierwszego jest wyrażona wzorem {{LinkWzór|17.24|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}}, co dla ośrodka przewodzącego jest podobnie, tzn.:
{{CentrujWzór|<MATH>\vec{\tilde{B}}_0={{\tilde{k}}\over{\omega}}\left(\vec{k}\times\tilde{E}\right)\;</MATH>|18.32}}
Zespoloną liczbę falową {{Formuła|<MATH>\tilde{k}\;</MATH>}}, można wyrazić poprzez wyrażenie znane z pewnego twierdzenia z algebry o liczbach zespolonych w postaci:
{{CentrujWzór|<MATH>\tilde{k}=Ke^{i\Phi}\;</MATH>|18.33}}
Aby wyznaczyć wielkość K oraz Φ występującej we wzorze {{LinkWzór|18.33}} dokonajmy poniższe rachunki, ale najpierw wyznaczmy tą wielkość pierwszą:
{{CentrujWzór|<MATH>K=|\tilde{k}|=\sqrt{k^2+\kappa^2}=
\sqrt{\omega^2{{\epsilon\mu}\over{2}}\left(\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}+1\right)+\omega^2{{\epsilon\mu}\over{2}}\left(\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1\right)}=\;</MATH><BR>
<MATH>=\omega\sqrt{\epsilon\mu\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}}\;</MATH>|18.34}}
Kąt Φ można wyznaczyć ze wzoru znanego z algebry, który występuje we wzorze {{LinkWzór|18.33}} i który będziemy go wyznaczać ze wzoru:
{{CentrujWzór|<MATh>\Phi=\operatorname{arctg}\left({{\kappa}\over{k}}\right)=
\operatorname{arctg}{{\omega\sqrt{{{\mu\epsilon}\over{2}}}
\sqrt{\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1}}\over{\omega\sqrt{{{\mu\epsilon}\over{2}}}\sqrt{\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}+1}
}}=\operatorname{arctg}\sqrt{{{\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1}\over{\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}+1}}}=\;</MATH><BR><MATH>=\operatorname{arctg}\sqrt{{{\left[\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1\right]\left[\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1\right]}\over{\left[\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}+1\right]\left[\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1\right]}}}=
\operatorname{arctg}\sqrt{{{\left(\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1\right)^2}\over{\left({{\sigma}\over{\epsilon\omega}}\right)^2}}}=\operatorname{arctg}\left\{{{\epsilon\omega}\over{\sigma}}\left[\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}-1\right]\right\}\;</MATH>|18.35}}
Przedstawmy amplitudy fali pola magnetycznego i elektrycznego występujących w równaniach {{LinkWzór|18.11}} i {{LinkWzór|18.12}} w postaci:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\tilde{E}_0=E_0e^{i\delta_E}\;</MATH>|18.36}}
| 2 = {{CentrujWzór|<MATH>\tilde{B}_0=B_0 e^{i\delta_B}\;</MATH>|18.37}}
}}
Mając związki na amplitudę fali pola elektrycznego {{LinkWzór|18.36}} i fali pola magnetycznego {{LinkWzór|18.37}}, wtedy korzystając, że fala magnetyczna i elektryczna są falami poprzecznymi, oraz z tożsamości {{LinkWzór|18.32}}, biorąc wyniki z tego wzoru na wartościach, wtedy dochodzimy do wniosku:
{{CentrujWzór|<MATH>B_0e^{i\delta_B}={{K e^{i\Phi}}\over{\omega}}E_0e^{i\delta_E}\Rightarrow B_0={{K}\over{\omega}}E_0 e^{i(\delta_E-\delta_B+\phi)}\;</MATH>|18.38}}
Ale lewa strona naszego równania jest liczbą rzeczywistą, to również musi być też prawa strona, stąd otrzymujemy, że wykładnik potęgi z prawej strony jest wielokrotnością liczmy 2π, więc przyjmijmy najmniejszą wielokrotność równą zero, zatem otrzymujemy:
{{CentrujWzór|<MATH>\delta_E-\delta_B+\Phi=0\Rightarrow\delta_B-\delta_E=\Phi\;</MATH>|18.39}}
Zatem dla ośrodka przewodzącego, w którym rozchodzi się fala elektromagnetyczna Istnieje pewna różnica faz miedzy polem magnetycznym, a elektrycznym dla fali elektromagnetycznej.
Na podstawie wcześniejszych rozważań dostajemy, że równanie fali magnetycznej i elektrycznej zapisujemy wedle sposobu:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}(z,t)=E_0 e^{-\kappa z}e^{i(kz-\omega t+\delta_E)}\hat{x}\;</MATH>|18.40}}
| 2 = {{CentrujWzór|<MATH>\vec{B}(z,t)=B_0 e^{-\kappa z}e^{i(kz-\omega t+\delta_E+\Phi)}\hat{y}\;</MATH>|18.41}}
}}
Policzmy stosunek amplitudy fali magnetycznej przez amplitudę fali elektrycznej wykorzystując przy tym wzór {{LinkWzór|18.38}} wiedząc ze exponens w nim występujący po wykorzystaniu {{LinkWzór|18.39}} jest równy jeden.
{{CentrujWzór|<MATH>{{B_0}\over{E_0}}={{K}\over{\omega}}={{\omega\sqrt{\epsilon\mu\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}}}\over{\omega}}
=\sqrt{\epsilon\mu\sqrt{1+\left({{\sigma}\over{\epsilon\omega}}\right)^2}}\;</MATH>|18.42}}
== Odbicie fali elektromagnetycznej od powierzchni przewodzącej ==
Rozważmy jak fala elektromagnetyczna z obszaru nieprzewodzącego pada na obszar przewodzący. Gęstość ładunków przewodzących zakładamy, że jest równa zero, również prąd powierzchniowy jest równy zero, bo gdy by nie był równy zero, to by wymagało nieskończonej wartości pola elektrycznego, ale wtedy byśmy mieli nieskończoną wartość gęstości objętościowej prądu powierzchniowego.
Zakładamy, że nasza fala elektromagnetyczna pada prostopadle na powierzchnię przewodzącą.
Wektory pól fali elektromagnetycznej pola elektrycznego i magnetycznego fali padającej w pierwszym ośrodku, wykorzystując dla tego drugiego wzór {{LinkWzór|17.33|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}}, która ta fala rozchodzi się w ośrodku nieprzewodzącym przedstawia się jako:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}_p(z,t)=\tilde{E}_{0p} e^{i(k_1z-\omega t)}\;</MATH>|18.43}}
| 2 = {{CentrujWzór|<MATH>\vec{E}_p(z,t)={{1}\over{v_1}}\tilde{E}_{0p} e^{i(k_1z-\omega t)}\;</MATH>|18.44}}
}}
Wektory pól fali elektromagnetycznej pola elektrycznego i magnetycznego fali odbitej w pierwszym ośrodku, wykorzystując dla tego drugiego wzór {{LinkWzór|17.33|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}}, ale rozchodząca się w ośrodku nieprzewodzącym przedstawiają się jako:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}_o(z,t)=\tilde{E}_{0o} e^{i(k_1z-\omega t)}\;</MATH>|18.45}}
| 2 = {{CentrujWzór|<MATH>\vec{B}_o(z,t)=-{{1}\over{v_1}}\tilde{E}_{0o}e^{i(k_1z-\omega t)}\;</MATH>|18.46}}
}}
Wektory pól fali elektromagnetycznej pola elektrycznego i magnetycznego fali wchodzącej w drugim ośrodku, wykorzystując dla tego drugiego odpowiednik wzoru {{LinkWzór|17.33|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}}, ale w nim występująca prędkość nie jest już wartością rzeczywistą, ale zespoloną zdefiniowaną wedle wzoru {{LinkWzór|18.15}}, ale formalnie dla ośrodka przewodzącego lub nieprzewodzącego jak powiedzieliśmy wcześniej wzory formalnie są takie same, zatem dla ośrodka przewodzącego wzoru na wspomniane amplitudy przedstawiają się:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}_w(z,t)=\tilde{E}_{0w}e^{i(\tilde{k}_2 z-\omega t)}\;</MATH>|18.47}}
| 2 = {{CentrujWzór|<MATH>\vec{B}_w(z,t)={{\tilde{k}_2}\over{\omega}}\tilde{E}_{0w}e^{i(\tilde{k}_2 z-\omega t)}\;</MATH>|18.48}}
}}
Jeśli zastąpimy we wzorze {{LinkWzór|18.47}} i w {{LinkWzór|18.48}} wedle schematu {{Formuła|<MATH>{{\tilde{k}_2}\over{\omega}}\rightarrow{{1}\over{\tilde{v}_2}}\;</MATH>}}, to formalnie otrzymujemy te same wzory jak dla powierzchni padającej nieprzewodzącej.
Zatem amplitudy fali elektromagnetycznej pola elektrycznego odbitej i wchodzącej na podstawie jego odpowiednika dla ośrodka nieprzewodzącego, których te amplitudy piszemy wzorami {{LinkWzór|17.66|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}} i {{LinkWzór|17.67|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}}, zatem te same amplitudy, ale dla ośrodka przewodzącego piszemy wzorami:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\tilde{E}_{0o}={{1-\tilde{\beta}}\over{1+\tilde{\beta}}}\tilde{E}_{0p}\;</MATH>|18.49}}
| 2 = {{CentrujWzór|<MATH>\tilde{E}_{0w}={{2}\over{1+\tilde{\beta}}}\tilde{E}_{0p}\;</MATH>|18.50}}
}}
Gdzie definicja {{Formuła|<MATH>\tilde{\beta}\;</MATH>}} jest formalnie takie same jak dla powierzchni nieprzewodzącej {{LinkWzór|17.65|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}} (pierwsza równość) i wynosi:
{{CentrujWzór|<MATH>\tilde{\beta}={{\mu_1v_1}\over{\mu_2\tilde{v}_2}}={{\mu_1v_1}\over{\mu_2{{\omega}\over{\tilde{k}_2}}}}={{\mu_1v_1}\over{\mu_2\omega}}\tilde{k}_2\;</MATH>|18.51}}
Dla doskonałego przewodnika przewodność elektryczna σ jest równa nieskończoność i korzystając ze wzoru {{LinkWzór|18.34}} mamy K=∞, zatem moduł z zespolonej liczby falowej {{LinkWzór|18.33}} jest równy nieskończoność, zatem parametr {{Formuła|<Math>\tilde{\beta}\;</MATH>}} na podstawie wzoru {{LinkWzór|18.51}} też jest liczbą nieskończoną.
Rozważając wzory na amplitudy fali odbitej i wchodzącej według wzorów {{LinkWzór|18.49}} i {{LinkWzór|18.50}} przy wcześniejszych rozważaniach dla doskonałego drugiego przewodnika, wtedy dostajemy, że amplituda fali wchodzącej jest równa zero, a amplituda fali odbitej z dokładnością do minusa jest równa fali padającej, co mamy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>E_{0o}=-E_{0p}\;</MATH>|18.52}}
| 2 = {{CentrujWzór|<MATH>E_{0w}=0\;</MATH>|18.53}}
}}
Widzimy, że dla dobrze przewodzącej powierzchni przewodzącej wcale nie ma fali załamanej dla fali elektromagnetycznej padającej na tą powierzchnię i całkowita energia fali odbitej jest równa energii fali padającej.
== Zależność przenikalności elektrycznej w materii od częstości ==
Przedstawimy ruch cząstki naładowanej o ładunku q, na którą działa siłą potencjalna pochodząca od tego, że nasz ośrodek jest przewodzący, siły działające pochodzące od zderzeń od rdzeni atomowych i siły pochodzącej od fali elektromagnetycznej pola elektrycznego, następnie policzymy moment dipolowy naszej cząstki w tym przewodniku, następnie polaryzację w danym punkcie ośrodka , na podstawie tego wyznaczymy podatność elektryczna i na jej podstawie przenikalność elektryczną naszego ośrodka.
Rozważając poszczególne cząstki dochodzimy do wniosku, że na każdy elektron posiada energię potencjalną, który jest funkcję x i ma wartość U(x), zatem rozłóżmy tą funkcję w szereg Taylora w sposób:
{{CentrujWzór|<MATH>U(x)=U(0)+x U^'(0)+{{1}\over{2}}x^2 U^{''}(0)+...\;</MATH>|18.54}}
Dalsze wyrazy o stopniu wyższym niż dwa można pominąć, zakładamy że potencjał w położeniu zerowym jest równy zero, czyli U(0)=0. W położeniu minimalnym cząstka posiada minimum energii potencjalnej, a więc zachodzi U{{Sup|'}}(0)=0, zatem pozostaje tylko trzeci niezerowy wyraz w {{LinkWzór|18.54}}, zatem tą naszą rozważana funkcję piszemy:
{{CentrujWzór|<MATH>U(x)={{1}\over{2}}x^2 U^{''}(0)\;</MATH>|18.55}}
Siła potencjalna działająca na naładowaną cząstkę jest pochodną funkcji potencjału elektrycznego {{LinkWzór|18.55}} wziętej z minusem, którą razem piszemy:
{{CentrujWzór|<MATH>F_{\mbox{pot}}=-{{dU(x)}\over{dx}}=-{{d}\over{dx}}\left({{1}\over{2}}x^2U^{''}(0)\right)=-xU^{''}(0)\;</MATH>|18.56}}
Jeżeli na naszą cząstkę działa tylko siła potencjalną {{LinkWzór|18.56}}, nie ma sił oporu, to z drugiej zasady dynamiki Newtona, w której niezrównoważona siła jest napisana przez:
{{CentrujWzór|<maTh>m\ddot{x}=-xU^{''}(0)\Rightarrow \ddot{x}=-x {{U^{''}(0)}\over{m}}\;</MATH>|18.57}}
Z rozważań nad ruchem harmonicznym, można powiedzieć, że wielkość U{{Sup|"}}(0) jest równe kwadratowi częstotliwości podstawowej ω{{Sub|0}}{{Sup|2}} pomnożonej przez masę cząstki:
{{CentrujWzór|<MATH>\omega_0^2={{U^{''}(0)}\over{m}}\Rightarrow U^{''}(0)=m\omega_0^2\;</MATH>|18.58}}
* gdzie ω{{Sub|0}} jest to częstość kołowa rezonansowa układu.
Zatem nasza siła potencjalna działająca na nasz układ wyrażamy wzorem poniżej, która jest wprost proporcjonalna do położenia cząstki w układzie harmonicznym.
{{CentrujWzór|<MATH>F_{\mbox{pot}}=-m\omega_0^2 x\;</MATH>|18.59}}
Na naszą cząstkę oprócz siły potencjalnej również uwzględnijmy siłę tłumiącą, która jest proporcjonalna do jej prędkości dla cząstki, którą rozważamy o współczynniku tłumienia γ, co ten wzór na tą siłę można zapisać:
{{CentrujWzór|<MATH>F_{\mbox{tłum}}=-m\gamma\dot{x}</MATH>|18.60}}
A także siła pochodząca od fali elektromagnetycznej pola elektrycznego o natężeniu E działającej na ładunek q, którego wzór na siłę wektorowo piszemy ze wzoru wynikającego z {{LinkWzór|1.2|Elektrostatyka}}, co dla tylko współrzędnej iksowej piszemy na pewno w pierwszym wzorze poniżej, co jeszcze łatwiej można zapisać wykorzystując funkcje eksponencjalne według drugiego wzoru poniżej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>F_{\mbox{wym}}=q E=q E_0\cos(\omega t)\;</MATH>|18.61}}
| 2 = {{CentrujWzór|<MATH>F_{\mbox{wym}}=q E_0 e^{-i\omega t}\;</MATH>|18.62}}
}}
Wtedy również należy zamienić współrzędną iksową x na jego odpowiednik zespolony {{Formuła|<MATH>\tilde{x}\;</MATH>}}. Z drugiej zasady dynamiki Newtona uwzględniając siłę potencjalną {{LinkWzór|18.59}}, tłumiącą {{LinkWzór|18.60}} i na końcu siłę elektryczną {{LinkWzór|18.62}}, która pochodzi od fali elektromagnetycznej, zatem ta zasada przyjmuje postać:
{{CentrujWzór|<MATH>m{{d^2\tilde{x}}\over{d t}}=F_{\mbox{pot}}+F_{\mbox{tłum}}+F_{\mbox{wym}}\Rightarrow m{{d^2\tilde{x}}\over{dt}}=-m\omega_0^2 \tilde{x}-m\gamma {{d\tilde{x}}\over{dt}}+q E_0 e^{-i\omega t}\;</MATH>|18.63}}
Przenosimy wszystkie wyrazy stojące na prawej stronie równości różniczkowej {{LinkWzór|18.63}} na jego lewą stronę i dzieląc w tak powstałym równaniu przez wielkość m, wtedy dostajemy:
{{CentrujWzór|<MATH>m {{d^2\tilde{x}}\over{dt}}+m\gamma{{d\tilde{x}}\over{dt}}+m\omega_0^2 \tilde{x}=qE_0 e^{-i\omega t}\Rightarrow{{d^2\tilde{x}}\over{dt}}+\gamma {{d\tilde{x}}\over{dt}}+\omega_0^2\tilde{x}={{q}\over{m}} E_0 e^{-i\omega t}\;</MATH>|18.64}}
Do zespolonego równania różniczkowego {{LinkWzór|18.64}} podstawiamy położenie zespolone, która zależy od częstotliwości ω naszego układu mechanicznego i od czasu, który stoi pod zespoloną potęgą w eksponensie.
{{CentrujWzór|<MATH>\tilde{x}(t)=\tilde{x}_0 e^{-i\omega t}\;</MATH>|18.65}}
Rozwiązanie zespolone {{LinkWzór|18.65}} podstawiamy do równania różniczkowego, wtedy tak powstałe równanie dzielimy przez e{{Sup|iω t}}, bo ona jest zawsze nie równa zero, wtedy otrzymujemy:
{{CentrujWzór|<MATH>-\omega^2 \tilde{x}_0 e^{-i\omega t}+\gamma(-i\omega) \tilde{x}_0 e^{-i\omega t}+\omega_0^2\tilde{x}_0 e^{-i\omega t}={{q}\over{m}} E_0 e^{-i\omega t}\Rightarrow\;</MATH><BR><MATH>\Rightarrow-\omega^2\tilde{x}_0-i\omega\gamma\tilde{x}_0+\omega_0^2\tilde{x}_0={{q}\over{m}}E_0 e^{-i\omega t}\;</MATH>|18.66}}
Wyznaczmy przed nawias wyraz w wyrażeniu {{LinkWzór|18.66}} stałą zespoloną {{Formuła|<MATH>\tilde{x}_0\;</MATH>}}, i wtedy możemy z niego wyznaczyć tą właśnie amplitudę:
{{CentrujWzór|<MATH>\tilde{x}_0\left(-\omega^2-i\omega\gamma+\omega_0^2\right)={{q}\over{m}}E_0\Rightarrow\tilde{x}_0={{{{q}\over{m}} E_0}\over{\omega_0^2-\omega^2-i\omega\gamma}}\;</MATH>|18.67}}
Odchylenie od czasu przy ustalonej amplitudzie zależnej od częstości zewnętrznej fali elektromagnetycznej jest wyrażona wzorem {{LinkWzór|18.65}} przy definicji stałej w nim występującej wedle końcowego wzoru wynikającego {{LinkWzór|18.67}}, wtedy dostajemy wzór:
{{CentrujWzór|<MATH>\tilde{x}(t)={{{{q}\over{m}} E_0}\over{\omega_0^2-\omega^2-i\omega\gamma}}e^{-i\omega t}={{q}\over{m}}E_0Ke^{i\Phi}e^{-i\omega t}={{q}\over{m}}E_0Ke^{i(-\omega t+\Phi)}\;</MATH>|18.68}}
Napiszmy stałą i nazwijmy ją jako {{Formuła|<MATH>\tilde{K}\;</MATH>}} stojąca przy eksponensie w {{LinkWzór|18.68}} , i tak go przekształcajmy by w nim w mianowniku występowała tylko liczba rzeczywista:
{{CentrujWzór|<MATH>\tilde{K}={{}\over{\omega_0^2-\omega-i\omega\gamma}}=
{{\omega_0^2-\omega+i\omega\gamma}\over{\left(\omega_0^2-\omega-i\omega\gamma\right)\left(\omega_0^2-\omega+i\omega\gamma\right)}}=
{{\omega_0^2-\omega^2+i\omega\gamma}\over{\left(\omega^2-\omega_0^2\right)^2+\omega^2\gamma^2}}\;</MATH>|18.69}}
Następnie krokiem jest wyznaczenie modułu z liczby {{LinkWzór|18.69}} korzystając z wiadomości z algebry przy jego liczeniu:
{{CentrujWzór|<MATH>K=|\tilde{K}|={{\sqrt{\left(\omega^2-\omega_0^2\right)^2+\omega^2\gamma^2}}\over{\left(\omega^2-\omega_0^2\right)^2+\omega^2\gamma^2}}=
{{1}\over{\sqrt{(\omega^2-\omega_0^2)^2+\omega^2\gamma^2}}}\;</MATH>|18.70}}
Następnym znów krokiem jest policzenie parametru Φ znając definicję liczby {{Formuła|<MATH>\tilde{K}\;</MATH>}} występujacej w punkcie {{LinkWzór|18.69}}.
{{CentrujWzór|<MATH>\Phi=\operatorname{arctg}{{{{q}\over{m}}E_0{{ \omega\gamma}\over{\left(\omega^2-\omega_0^2\right)^2+\omega^2\gamma^2}}}\over{{{q}\over{m}}E_0{{\omega_0^2-\omega^2}\over{\left(\omega^2-\omega_0^2\right)^2+\omega^2\gamma^2}}}}=
\operatorname{arctg}{{\omega\gamma}\over{\omega_0^2-\omega^2}}\;</MATH>|18.71}}
Położenie cząstki w zależności od czasu jest dane wzorem {{LinkWzór|18.68}} przy definicji K {{LinkWzór|18.70}} i definicji Φ danej wzorem {{LinkWzór|18.71}}, zatem moment dipolowy poszczególnych elektronów liczymy z jego definicji:
{{CentrujWzór|<MATH>\tilde{p}(t)=q\tilde{x}(t)={{{{q^2}\over{m}}}\over{\omega_0^2-\omega^2-i\gamma m}}E_0e^{-i\omega t}\;</MATH>|18.72}}
Każda cząsteczka posiada elektrony o częstościach własnych (ω{{Sub|0}}){{Sub|1}},(ω{{Sub|0}}),..., a liczba elektronów o takich częstościach własnych kołowych jest równa kolejno f{{Sub|1}}, f{{Sub|2}},....
Każda taka cząsteczka posiada elektrony o różnych częstościach własnych, czyli każda cząsteczka posiada elektrony mające różne częstości kołowe (ω{{Sub|0}}){{Sub|j}} i liczbą elektronów o takich samych częstościach i współczynników tłumienia jest f{{Sub|j}}. Liczba takich cząsteczek o takich właściwościach jest N na jednostkę objętości.
Liczba N ma miano w postaci m{{Sup|-3}}, co jest odwrotnością jednostki objętości. Polaryzacja układu elektrycznego na podstawie powyższych omówień piszemy według:
{{CentrujWzór|<MATH>\tilde{P}=
{{N q^2}\over{m}}\left(\sum_j{{f_i}\over{(\omega_0)_j^2-\omega^2-i\gamma_j\omega}}\right)
E_0e^{-\omega t}\;</MATH>|18.73}}
Widzimy, że zespolona polaryzacja jest proporcjonalna od natężenia pola elektrycznego fali elektromagnetycznej napisanej wzorem {{Formuła|<MATH>\tilde{E}=E_0e^{-i\omega t}\;</MATH>}}. Zatem zespolona polaryzacja przyjmuje kształt:
{{CentrujWzór|<MATH>\tilde{P}=\epsilon_0\tilde{\chi}_E\tilde{E}\;</MATH>|18.74}}
Prawdziwa polaryzacja jest równe jej części rzeczywistej {{LinkWzór|18.74}}, która jest napisana przez:
{{CentrujWzór|<MATH>P=\operatorname{Re}(\tilde{P})\;</MATH>|18.75}}
Wielkość {{Formuła|<MATH>\tilde{\chi}_e\;</MATH>}} nosi nazwę zespolonej podatności elektrycznej i ma się według wzoru na polaryzację ośrodka {{LinkWzór|18.73}} i wzoru tożsamego z nim przy użyciu zespolonej podatności elektrycznej wedle {{LinkWzór|18.75}}:
{{CentrujWzór|<MATH>\tilde{\chi}_e={{N q^2}\over{m\epsilon_0}}\left(\sum_j{{f_i}\over{(\omega_0)_j^2-\omega^2-i\gamma_j\omega}}\right)\;</MATH>|18.76}}
A wielkość {{Formuła|<MATH>\tilde{\epsilon}=\epsilon_0\left(1+\tilde{\chi}_e\right)\;</MATH>}} nosi nazwę zespolonej przenikalności ośrodka, a {{Formuła|<MATH>\tilde{\epsilon}_e=1+\tilde{\chi}_e\;</MATH>}} zespolonej względnej przenikalności elektrycznej i ona ma się:
{{CentrujWzór|<MATH>\tilde{\epsilon}_r=1+{{N q^2}\over{m\epsilon_0}}\left(\sum_j{{f_i}\over{(\omega_0)_j^2-\omega^2-i\gamma_j\omega}}\right)\;</MATH>|18.77}}
Dla ośrodka przewodzącego jak udowodniliśmy wcześniej jest spełnione równanie dla zespolonej przenikalności elektrycznej zespolonej, wiedząc że względna przenikalność magnetyczna jest w przybliżeniu równa jeden przy równaniu falowym {{LinkWzór|18.13}}.
Dochodzimy do wniosku, że zespolona prędkość fazowa fali elektromagnetycznej jest napisana wzorem {{LinkWzór|18.14}} i z definicji prędkości fazowej {{LinkWzór|18.15}}, i łącząc te dwa wzoru dostajemy tożsamość, z którego możemy wyznaczyć zespoloną liczbę falową {{Formuła|<math>\tilde{k}\;</MATH>}}:
{{CentrujWzór|<MATH>{{\omega}\over{\tilde{k}}}={{1}\over{\sqrt{\tilde{\epsilon}\mu_0}}}\Rightarrow\tilde{k}=\sqrt{\tilde{\epsilon}\mu_0}\omega</MATH>|18.78}}
Mając napisaną względną zespoloną przenikalność elektryczną {{Formuła|<MATH>\tilde{\epsilon}\;</MATH>}}, to możemy go podstawić do wzoru końcowego na zespoloną liczbę falową {{LinkWzór|18.78}}, przy założeniu, że względna przenikalność ośrodka magnetycznego jest w przybliżeniu równa jeden, czyli μ{{Sub|r}}=1, zatem do dzieła:
{{CentrujWzór|<MATH>\tilde{k}=\sqrt{\epsilon\mu_0}\omega=\sqrt{\epsilon}{{1}\over{c\sqrt{\epsilon_0}}}\omega=\sqrt{{{\epsilon}\over{\epsilon_0}}}{{\omega}\over{c}}={{\omega}\over{c}}\sqrt{\epsilon_r}={{\omega}\over{c}}\sqrt{1+\tilde{\chi}_e}
\simeq{{\omega}\over{c}}\left(1+{{1}\over{2}}\tilde{\chi}_e\right)={{\omega}\over{c}}\left[1+{{N q^2}\over{2m\epsilon_0}}\sum_j{{f_j}\over{(\omega_0)_j-\omega^2-i\gamma_i\omega}}\right]=</MATH><BR>
<MATH>={{\omega}\over{c }}\left[1+{{N q^2}\over{2m\epsilon_0}}\sum_j{{f_i\left[(\omega_0)_j-\omega^2+i\gamma_i\omega\right]}\over{\left[(\omega_0)_j-\omega^2-i\gamma_i\omega\right]\left[(\omega_0)_j-\omega^2+i\gamma_i\omega\right]}}\right]={{\omega}\over{c}}\left[1+{{N q^2}\over{2m\epsilon_0}}\sum_j{{f_i\left[(\omega_0)_j-\omega^2+i\gamma_i\omega\right]}\over{(\omega^2-(\omega_0)_j^2)^2+\gamma_i^2\omega^2}}\right]</MATH>|18.79}}
Ponieważ {{Formuła|<MATH>\tilde{k}</MATH>}} jest liczbą zespoloną, to jej część rzeczywista jest rzeczywistą liczbą falową, za pomocą której możemy zdefiniować współczynnik załamania danego ośrodka.
{{CentrujWzór|<MATH>n={{c}\over{v}}={{c}\over{{{\omega}\over{k}}}}={{ck}\over{\omega}}=
{{c\operatorname{Re}(\tilde{k})}\over{\omega}}=
1+{{N q^2}\over{m\epsilon_0}}\sum_j{{f_j((\omega_0)_j-\omega)}\over{(\omega^2-(\omega_0)_j)^2+\gamma_j^2\omega^2}}</MATH>|18.80}}
Nazwijmy współczynnik absorpcji jako podwojona wartość współczynnika tłumiona, której to współczynnik tłumienia na podstawie {{LinkWzór|18.19}} jest równy części urojonej zespolonej liczby falowej {{LinkWzór|18.79}} wyrażonej:
{{CentrujWzór|<MATH>\alpha=2\kappa=2\operatorname{Im}(\tilde{k})={{N q^2\omega^2}\over{m\epsilon_0 c}}\sum_j{{f_j\gamma_j}\over{(\omega^2-(\omega_0)_j^2)^2+\gamma_i^2\omega^2}}</MATH>|18.81}}
Widzimy, że w szczególnej postaci współczynnik załamania jest większy niż jeden, co mamy do czynienia z prędkościami powyżej prędkości światła, wydaje się, że nasz wzór jest niepoprawny, ależ jest poprawny, bo mamy do czynienia z prędkościami fazowymi, a nie prędkościami grupowymi, prędkość grupowa jest to prędkość propagacji energii fali elektromagnetycznej w naszym przypadku i zawsze powinna być mniejsza niż prędkość światła, ale z prędkością fazową już tak nie jest.
Zgodnie z naszym wzorem i obserwacjami współczynnik załamania rośnie, a w pobliżu jednej częstości rezonansowej gwałtownie maleje, to zjawisko nazywamy dyspersją anomalną.
{{Rysunek|Wykres współczynnika załamania i absorpcji.jpg|zw|Zależność współczynnika załamania i absorpcji od częstości kołowej fali elektromagnetycznej}}
Gdy mamy jedną częstość rezonansową, to wtedy f jest to liczba wszystkich elektronów o tej jednej częstości i tylko tej jednej częstości kołowej znajdujących się w cząsteczce, czyli wszystkie elektrony w cząsteczce mają taką samą tą częstość kołową w danej cząsteczce, zatem współczynnik załamania:
{{CentrujWzór|<MATH>n=1+{{Nq^2f}\over{2m\epsilon_0}}{{\omega_0^2-\omega^2}\over{(\omega^2-\omega_0^2)^2+\gamma^2\omega^2}}</MATH>|18.82}}
A współczynnik absorpcji na podstawie {{LinkWzór|18.81}} definiujemy:
{{CentrujWzór|<MATH>\alpha={{N q^2\omega^2 f\gamma}\over{m\epsilon_0c}}{{1}\over{(\omega^2-\omega_0^2)^2+\gamma^2\omega^2}}</MATH>|18.83}}
Gdy znajdujemy się z dala od jakieś częstości rezonansowej, to wtedy możemy zaniedbać stałą tłumienia, zatem współczynnik załamania {{LinkWzór|18.82}} w takim przypadku możemy napisać:
{{CentrujWzór|<MATH>n\simeq 1+{{N q^2}\over{2m\epsilon_0}}\sum_j{{f_j}\over{\omega_0^2-\omega}}</MATH>|18.84}}
Wtedy współczynnik absorpcji praktycznie znika, czyli fala elektromagnetyczna w ośrodku nie jest praktycznie tłumiona.
Określmy częstości fal elektromagnetycznej według warunku ω<(ω{{Sub|0}}){{Sub|j}}, czyli wyrażenie stojące w punkcie pod sumą {{LinkWzór|18.84}}, możemy zapisać:
{{CentrujWzór|<MATH>{{1}\over{(\omega_0)_j-\omega^2}}={{1}\over{(\omega_0)_j^2\left(1-{{\omega^2}\over{(\omega_0)_j}}\right)}}\simeq
{{1}\over{(\omega_0)_j}}\left(1+{{\omega^2}\over{(\omega_0)_j^2}}\right)={{1}\over{(\omega_0)_j^2}}+{{\omega^2}\over{(\omega_0)_j^4}}</MATH>|18.85}}
To ostatnie równanie na współczynnika załamania {{LinkWzór|18.84}}, gdy zachodzi przybliżenie {{LinkWzór|18.85}}, możemy zapisać wedle:
{{CentrujWzór|<MATH>n=1+{{N q^2}\over{2m\epsilon_0}}\sum_j{{f_j}\over{(\omega_0)_j^2}}+\omega^2\left[{{N q^2}\over{2m\epsilon_0}}\sum_j{{f_j}\over{(\omega_0)_j^4}}\right]</MATH>|18.86}}
Co można zapisać równanie {{LinkWzór|18.86}} dla jednej częstości kołowej rezonansowej:
{{CentrujWzór|<MATH>n=1+{{N q^2 f}\over{2m\epsilon_0\omega_0^2}}\left[1+{{\omega^2}\over{\omega_0^2}}\right]</MATH>|18.87}}
Ponieważ zachodzi warunek na prędkość fazową światła {{Formuła|<MATH>c={{\omega}\over{k}}={{\omega}\over{{{2\pi}\over{\lambda}}}}=
{{\omega\lambda}\over{2\pi}}</MATH>}} i korzystając z tych wniosków do tożsamości {{LinkWzór|18.87}}, wtedy dostajemy wzór na współczynnik załamania w zależności od długości fali jakie mogą przepływać w tym ośrodku materialnym jako:
{{CentrujWzór|<MATH>n=1+{{N q^2 f}\over{2m\epsilon_0\omega_0^2}}\left[1+{{2c\pi}\over{\omega_0^2}}{{1}\over{\lambda^2}}\right]</MATH>|18.88}}
Wzór {{LinkWzór|18.88}} nazywamy '''wzorem Cauchy'ego'''.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
5jbznvf80ngjm37n3lqm06m9v8dilz3
Elektrodynamika klasyczna/Opis fal prowadzonych
0
16918
558887
470447
2026-10-08T01:41:03Z
Persino
2851
558887
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Zajmować się będziemy falami prowadzonymi w falowodach i liniach transmisyjnych i wykażemy, że te fale nie są w ogólności falami poprzecznymi tak ja w zwykłych falach elektromagnetycznych, które rozchodzą się w nieskończonych rozmiarach w przeciwieństwie do fal w falowodach lub liniach transmisyjnych, które ograniczone są do wnętrza rury.
== Opis ogólny fal prowadzonych w falowodach ==
Falowód jest to pewna rura, w których we wnętrzu rozchodzą się fale prowadzone.
Zakładamy, że brzeg rury jest doskonałym przewodnikiem, tzn. jego przewodność elektryczna jest nieskończenie wielka. Na brzegach tej rury natężenie pola elektrycznego i magnetycznego jest równa zero, tzn. zachodzą warunki:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{\tilde{E}}=0\;</MATH>|19.1}}
| 2 = {{CentrujWzór|<MATH>\vec{\tilde{B}}=0\;</MATH>|19.2}}
}}
We wnętrzu rury nie ma prądów swobodnych , a także nie ma ładunków i dlatego gęstość ładunku i prądu objętościowych jest równa zero. Równania Maxwella dla falowodów na podstawie równań {{LinkWzór|15.14|Elektrodynamika_Maxwella}}, {{LinkWzór|15.15|Elektrodynamika_Maxwella}}, {{LinkWzór|15.16|Elektrodynamika_Maxwella}} oraz {{LinkWzór|15.16|Elektrodynamika_Maxwella}} wyglądają:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Pierwsze prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Drugie prawo Maxwella'''}}}}<!--
-->{{komórka|nagłówek=tak|{{Center|'''Trzecie prawo Maxwella'''}}}}<!--
-->{{Komórka|nagłówek=tak|{{Center|'''Czwarte prawo Maxwella'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{\tilde{E}}=0\;</MATH>|19.3}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\cdot\vec{\tilde{B}}=0\;</MATH>|19.4}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{\tilde{E}}=-{{\partial\vec{\tilde{B}}}\over{\partial t}}\;</MATH>|19.5}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\nabla\times\vec{\tilde{B}}=\mu_0\epsilon_0{{\partial\vec{\tilde{E}}}\over{\partial t}}\Rightarrow\nabla\times\vec{\tilde{B}}={{1}\over{c^2}}{{\partial\vec{\tilde{E}}}\over{\partial t}}\;</MATH>|19.6}}}}<!--
-->}}<!--
-->}}
=== Rozwiązania pół elektrycznych i magnetycznych fali prowadzonej ===
Jeśli wybierzemy sobie taki układ współrzędnych, w których zachodzi, że oś zetowa przechodzi przez oś symetrii tej rury, wtedy rozwiązania równań Maxwella dla fal prowadzonych we wnętrzu rury są dla pola elektrycznego i magnetycznego:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<math>\vec{\tilde{E}}(x,y,z,t)=\vec{\tilde{E}}_0 e^{i(kz-\omega t)}\;</math>|19.7}}
| 2 = {{CentrujWzór|<MATH>\vec{\tilde{B}}(x,y,z,t)=\vec{\tilde{B}}_0 e^{i(kz-\omega t)}\;</MATH>|19.8}}
}}
Amplitudy dla pola elektrycznego i magnetycznego fali prowadzonej występujące we wzorach {{LinkWzór|19.7}} i {{LinkWzór|19.8}} możemy napisać:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{\tilde{E}}_0=\tilde{E}_{0x}\hat{\vec{x}}+\tilde{E}_{0y}\hat{\vec{y}}+\tilde{E}_{0z}\hat{\vec{z}}\;</MATH>|19.9}}
| 2 = {{CentrujWzór|<MATH>\vec{\tilde{B}}_0=\tilde{B}_{0x}\hat{\vec{x}}+\tilde{B}_{0y}\hat{\vec{y}}+\tilde{B}_{0z}\hat{\vec{z}}\;</MATH>|19.10}}
}}
Poszczególne składowe amplitudy fali prowadzonej zależą od współrzędnej iskowej i igrekowej, i nie zależą od współrzędnej zetowej.
Każda ze składowych {{Formuła|<MATH>\vec{\tilde{E}}_0\;</MATH>}} i {{Formuła|<MATH>\vec{\tilde{B}}_0\;</MATH>}} jest funkcją współrzędnych x i y, co wynika z symetrii rury dla fal prowadzonych.
=== Równania różniczkowe rządzące falami prowadzonymi w falowodzie ===
Wykorzystując trzecie równanie elektrodynamiki Maxwella {{LinkWzór|19.5}}, to policzmy jego lewą stronę, korzystając przy tym z formalnego oznaczenia iloczynu wektorowego w postaci ściśle określonego wyznacznika:
{{CentrujWzór|<MATH>\nabla\times\vec{\tilde{E}}=\begin{vmatrix}
\hat{\vec{x}}&\hat{\vec{y}}&\hat{\vec{z}}\\
{{\partial}\over{\partial x}}&{{\partial}\over{\partial y}}&{{\partial}\over{\partial z}}\\
\tilde{E}_{0x} e^{i(kz-\omega t)}&\tilde{E}_{0y} e^{i(kz-\omega t)}&\tilde{E}_{0z} e^{i(kz-\omega t)}
\end{vmatrix}=\hat{\vec{x}}\begin{vmatrix}
{{\partial}\over{\partial y}}&{{\partial}\over{\partial z}}\\
\tilde{E}_{0y} e^{i(kz-\omega t)}&\tilde{E}_{0z} e^{i(kz-\omega t)}
\end{vmatrix}-\hat{\vec{y}}\begin{vmatrix}
{{\partial}\over{\partial x}}&{{\partial}\over{\partial z}}\\
\tilde{E}_{0x} e^{i(kz-\omega t)}&\tilde{E}_{0z} e^{i(kz-\omega t)}
\end{vmatrix}+\;</MATH>{{Br}}<MATH>+\hat{\vec{z}}\begin{vmatrix}
{{\partial}\over{\partial x}}&{{\partial}\over{\partial y}}\\
\tilde{E}_{0x} e^{i(kz-\omega t)}&\tilde{E}_{0y} e^{i(kz-\omega t)}
\end{vmatrix}=e^{i(kz-\omega t)}\left[\hat{\vec{x}}\left({{\partial \tilde{E}_{0z}}\over{\partial y}}-ik \tilde{E}_{0y}\right)+\hat{\vec{y}}\left(ik \tilde{E}_{0x}-{{\partial \tilde{E}_{0z}}\over{\partial x}}\right)+\hat{\vec{z}}\left({{\partial \tilde{E}_{0y}}\over{\partial x}}-{{\partial \tilde{E}_{0x}}\over{\partial y}}\right)\right]\;</MATH>|19.11}}
A z prawej strony tego samego prawa elektrodynamiki Maxwella, korzystając z przedstawienia fali prowadzonej dla pola magnetycznego wedle równania {{LinkWzór|19.8}}, znając również przedstawienie tejże fali amplitudy pola magnetycznego we współrzędnych kartezjańskich zdefiniowanych wedle sposobu {{LinkWzór|19.10}}, można wyznaczyć:
{{CentrujWzór|<MATH>-{{\partial\vec{\tilde{B}}}\over{\partial t}}=-{{\partial}\over{\partial t}}\vec{\tilde{B}}_0 e^{i(kz-\omega t)}=i\omega\vec{\tilde{B}}_0e^{i(kz-\omega t)}=
i\omega\left(\tilde{B}_{0x}\hat{\vec{x}}+\tilde{B}_{0y}\hat{\vec{y}}+\tilde{B}_{0z}\hat{\vec{z}}\right)
\;</MATH>|19.12}}
Porównując prawą i lewą stronę równań, tzn. dla lewej strony trzeciego prawa elektrodynamiki {{LinkWzór|19.11}} z jej prawą jego stroną wedle {{LinkWzór|19.12}}, otrzymujemy układ równań:
{{CentrujWzór|<MATH>\begin{cases}
{{\partial \tilde{E}_{0z}}\over{\partial y}}-ik \tilde{E}_{0y}=i\omega \tilde{B}_{0x}\\
ik\tilde{E}_{0x}-{{\partial \tilde{E}_{0z}}\over{\partial x}}=i\omega \tilde{B}_{0y}\\
{{\partial \tilde{E}_{0y}}\over{\partial x}}-{{\partial \tilde{E}_{0x}}\over{\partial y}}=i\omega \tilde{B}_{0z}
\end{cases}\;</MATH>|19.13}}
Wykorzystując trzecie równanie elektrodynamiki Maxwella {{LinkWzór|19.6}}, to policzmy jego lewą stronę, korzystając przy tym z formalnego oznaczenia iloczynu wektorowego w postaci ściśle określonego wyznacznika, w celu wyznaczeniu tej strony naszego równania, zatem do dzieła, policzmy ten wyznacznik:
{{CentrujWzór|<MATH>\nabla\times\vec{\tilde{B}}=\begin{vmatrix}
\hat{\vec{x}}&\hat{\vec{y}}&\hat{\vec{z}}\\
{{\partial}\over{\partial x}}&{{\partial}\over{\partial y}}&{{\partial}\over{\partial z}}\\
\tilde{B}_{0x} e^{i(kz-\omega t)}&\tilde{B}_{0y} e^{i(kz-\omega t)}&\tilde{B}_{0z} e^{i(kz-\omega t)}
\end{vmatrix}=
\hat{\vec{x}}\begin{vmatrix}
{{\partial}\over{\partial y}}&{{\partial}\over{\partial z}}\\
\tilde{B}_{0y} e^{i(kz-\omega t)}&\tilde{B}_{0z} e^{i(kz-\omega t)}
\end{vmatrix}-\hat{\vec{y}} \begin{vmatrix}
{{\partial}\over{\partial x}}&{{\partial}\over{\partial z}}\\
\tilde{B}_{0x}e^{i(kz-\omega t)}&\tilde{B}_{0z}e^{i(kz-\omega t)}
\end{vmatrix}+\;</MATH>{{Br}}<MATH>+\hat{\vec{z}}\begin{vmatrix}
{{\partial}\over{\partial x}}&{{\partial}\over{\partial y}}\\
\tilde{B}_{0x} e^{i(kz-\omega t)}&\tilde{B}_{0y} e^{i(kz-\omega t)}
\end{vmatrix}=e^{i(kz-\omega t)}\left[
\hat{\vec{x}}\left({{\partial \tilde{B}_{0z}}\over{\partial y}}-ik \tilde{B}_{0y}\right)+
\hat{\vec{z}}\left(ik \tilde{B}_{0x}-{{\partial \tilde{B}_{0z}}\over{\partial x}}\right)+
\hat{\vec{z}}\left({{\partial \tilde{B}_{0y}}\over{\partial x}}-{{\partial \tilde{B}_{0x}}\over{\partial y}}\right)
\right]\;</MATH>|19.14}}
A prawa strona tego samego prawa elektrodynamiki Maxwella można wyznaczyć, korzystając z przedstawienia fali prowadzonej dla pola elektrycznego wedle równania {{LinkWzór|19.7}}, znając również przedstawienie tejże fali amplitudy pola elektrycznego we współrzędnych kartezjańskich zdefiniowanych wedle sposobu {{LinkWzór|19.9}}.
{{CentrujWzór|<MATH>{{1}\over{c^2}}{{\partial\vec{\tilde{E}}}\over{\partial t}}=
-i\omega{{1}\over{c^2}}\vec{\tilde{E}}_0 e^{i(kz-\omega t)}=
-i\omega{{1}\over{c^2}}\left(\hat{\vec{x}} \tilde{E}_{0x}+\hat{\vec{y}}\tilde{E}_{0y}+\hat{\vec{z}}\tilde{E}_{0z}\right)\;</MATH>|19.15}}
Następnym krokiem jest przyrównanie obu stron w czwartym równaniu Maxwella, tzn. {{LinkWzór|19.14}} i {{LinkWzór|19.15}}, wtedy to przyrównanie prowadzi do równania wektorowego, które jest równoważne trzem równaniom skalarnym, które zapisujemy wedle sposobu:
{{CentrujWzór|<MATH>\begin{cases}
{{\partial \tilde{B}_{0z}}\over{\partial y}}-ik \tilde{B}_{0y}=-{{i\omega}\over{c^2}}\tilde{E}_{0x}\\
ik \tilde{B}_{0x}-{{\partial \tilde{B}_{0z}}\over{\partial x}}=-{{i\omega}\over{c^2}}\tilde{E}_{0y}\\
{{\partial \tilde{B}_{0y}}\over{\partial x}}-{{\partial \tilde{B}_{0x}}\over{\partial y}}=-{{i\omega}\over{c^2}}\tilde{E}_{0z}
\end{cases}\;</MATH>|19.16}}
=== Współrzędne iksowe i igrekowe pola elekrycznego fali prowadzonej w falowodzie ===
Z korzystajmy z równania drugiego układu równań {{LinkWzór|19.13}} i z równania pierwszego układu równań {{LinkWzór|19.16}}, które te równania równań z oczywistych powodów powinny zachodzić jednocześnie. Z tak otrzymanego układu równań, w pierwszym z nich pomnóżmy przez k a drugie z nich przez {{Formuła|<MATH>{{\omega}\over{c^2}}\;</MATH>}}, wtedy dostajemy następny równoważny układ równań:
{{CentrujWzór|<MATH>\begin{cases}
ik\tilde{E}_{0x}-{{\partial \tilde{E}_{0z}}\over{\partial x}}=i\omega \tilde{B}_{0y}\Rightarrow
ik\tilde{E}_{0x}=i\omega \tilde{B}_{0y}+{{\partial \tilde{E}_{0z}}\over{\partial x}}\\
{{\partial \tilde{B}_{0z}}\over{\partial y}}-ik \tilde{B}_{0y}=-{{i\omega}\over{c^2}}\tilde{E}_{0x}\end{cases}\Rightarrow\begin{cases}
ik^2\tilde{E}_{0x}=i\omega k \tilde{B}_{0y}+k{{\partial \tilde{E}_{0z}}\over{\partial x}}\\
-{{i\omega^2}\over{c^2}}\tilde{E}_{0x}=\omega{{\partial \tilde{B}_{0z}}\over{\partial y}}-ik\omega \tilde{B}_{0y}\\
\end{cases}\;</MATH>|19.17}}
Tak otrzymany końcowy układ równań {{LinkWzór|19.17}}, co w nim dodajemy do siebie równania, w ten sposób dostajemy równanie wynikowe, z którego będziemy chcieli wyznaczyć współrzędną iksową amplitudy pola elektrycznego fali prowadzonej, zatem dodanie tych wspomnianych równań prowadzi:
{{CentrujWzór|<MATH>i\tilde{E}_{0x}\left[k^2-\left({{\omega}\over{c}}\right)^2\right]=i\omega k \tilde{B}_{0y} +k{{\partial \tilde{E}_{0x}}\over{\partial x}}+\omega{{\partial \tilde{B}_{0z}}\over{\partial y}}-ik\omega \tilde{B}_{0y}\Rightarrow ik\tilde{E}_{0x}\left(k^2-\left({{\omega}\over{c}}\right)^2\right)=k{{\partial \tilde{E}_{0z}}\over{\partial x}}+\omega {{\partial \tilde{B}_{0z}}\over{\partial y}}\;</MATH>|19.18}}
Z końcowego równania {{LinkWzór|19.18}} możemy wyznaczyć współrzędną iksową amplitudy pola elektrycznego:
{{CentrujWzór|<MATH>\tilde{E}_{0x}={{i}\over{\left({{\omega}\over{c}}\right)^2-k^2}}\left(k{{\partial \tilde{E}_{0z}}\over{\partial x}}+\omega{{\partial \tilde{B}_{0z}}\over{\partial y}}\right)\;</MATH>|19.20}}
Z drugiej jednak strony weźmy pierwsze równanie układu równań {{LinkWzór|19.13}} i drugie równanie układu równań {{LinkWzór|19.16}}. Pierwsze równanie tego układu równań mnożymy przez liczbę falową k, a drugie przez częstotliwość kołową ω, w ten sposób dostajemy następny układ równań.
{{CentrujWzór|<MATH>\begin{cases}
{{\partial \tilde{E}_{0z}}\over{\partial y}}-ik \tilde{E}_{0y}=i\omega \tilde{B}_{0x}\Rightarrow
ik\tilde{E}_{0y}={{\partial \tilde{E}_{0z}}\over{\partial y}}-i\omega \tilde{B}_{0x}
\\
ik \tilde{B}_{0x}-{{\partial \tilde{B}_{0z}}\over{\partial x}}=-{{i\omega}\over{c^2}}\tilde{E}_{0y}
\\
\end{cases}\Rightarrow\begin{cases}
ik^2\tilde{E}_{0y}=k{{\partial \tilde{E}_{0z}}\over{\partial y}}-i\omega k \tilde{B}_{0x}\\
-i{{\omega^2}\over{c^2}}\tilde{E}_{0y}=ik\omega \tilde{B}_{0x}-\omega{{\partial \tilde{B}_{0z}}\over{\partial x}}
\end{cases}
\;</MATH>|19.21}}
Dodajmy dwa równania końcowego układu równań {{LinkWzór|19.21}} do siebie, by potem w przyszłości wyznaczyć współrzędną igrekową amplitudy pola magnetycznego, która panuje w falowodzie, w ten sposób otrzymujemy równanie wynikowe, które dalej będziemy przekształcać:
{{CentrujWzór|<MATH>i\tilde{E}_{0y}\left[k^2-\left({{\omega}\over{c}}\right)^2\right]=k{{\partial \tilde{E}_{0z}}\over{\partial y}}-i\omega k \tilde{B}_{0x}+ik\omega \tilde{B}_{0x}-\omega{{\partial \tilde{B}_{0z}}\over{\partial x}}\Rightarrow i\tilde{E}_{0y}\left[k^2-\left({{\omega}\over{c}}\right)^2\right]=k{{\partial \tilde{E}_{0z}}\over{\partial y}}-\omega{{\partial \tilde{B}_{0z}}\over{\partial x}}\;</MATH>|19.22}}
Z końcowego równania {{LinkWzór|19.22}} możemy wyznaczyć współrzędną iksową amplitudy pola elektrycznego w zalezności od współrzędnej zetowej natężenia pola elektrycznego i indukcji pola magnetycznego:
{{CentrujWzór|<MATH>\tilde{E}_{0y}={{i}\over{\left({{\omega}\over{c}}\right)^2-k^2}}\left(k{{\partial \tilde{E}_{0z}}\over{\partial y}}-\omega{{\partial \tilde{B}_{0z}}\over{\partial x}}\right)\;</MATH>|19.23}}
=== Współrzędne iksowe i igrekowe pola magnetycznego fali prowadzonej w falowodzie ===
Mamy sobie te sam układ początkowy, co w punkcie {{LinkWzór|19.21}}, tylko będziemy wyznaczać z niego współrzędną iksową amplitudy pola magnetycznego. W tym celu pierwsze z tych równań pomnóżmy obustronnie przez {{Formuła|<MATH>{{\omega}\over{c^2}}\;</MATH>}}, a drugie przez liczbę falową k, zatem w ten sposób dostajemy następny układ równań, co te czynności możemy zapisać:
{{CentrujWzór|<MATH>\begin{cases}
{{\partial \tilde{E}_{0z}}\over{\partial y}}-ik \tilde{E}_{0y}=i\omega \tilde{B}_{0x}\\
ik \tilde{B}_{0x}-{{\partial \tilde{B}_{0z}}\over{\partial x}}=-{{i\omega}\over{c^2}}\tilde{E}_{0y}\\
\end{cases}\Rightarrow\begin{cases}
i{{\omega^2}\over{c^2}}\tilde{B}_{0x}={{\omega}\over{c^2}}{{\partial \tilde{E}_{0z}}\over{\partial y}}-i{{k\omega}\over{c^2}}\tilde{E}_{0y}\\
ik^2\tilde{B}_{0x}=-i{{\omega k}\over{c^2}}\tilde{E}_{0y}+k{{\partial \tilde{B}_{0z}}\over{\partial x}}
\end{cases}
\;</MATH>|19.24}}
Tak otrzymany końcowy układ równań {{LinkWzór|19.24}} odejmujemy do siebie, tzn. drugie od pierwszego, w ten sposób dostajemy równanie wynikowe z którego będziemy chcieli w przyszłości wyznaczyć współrzędną iksową amplitudy pola magnetycznego fali prowadzonej, zatem odejmowanie tych wspomnianych równań prowadzi do:
{{CentrujWzór|<MATH>ik^2\tilde{B}_{0x}-i{{\omega^2}\over{c^2}}\tilde{B}_{0x}=i{{\omega k}\over{c^2}}\tilde{E}_{0y}+k{{\partial \tilde{B}_{0z}}\over{\partial x}}-{{\omega}\over{c^2}}{{\partial \tilde{E}_{0z}}\over{\partial y}}+i{{k\omega}\over{c^2}}\tilde{E}_{0y}\Rightarrow i\tilde{B}_{0x}\left[k^2-\left({{\omega}\over{c}}\right)^2\right]=k{{\partial \tilde{B}_{0z}}\over{\partial x}}-{{\omega}\over{c^2}}{{\partial \tilde{E}_{0z}}\over{\partial y}}
\;</MATH>|19.25}}
Z końcowego równania {{LinkWzór|19.25}} możemy wyznaczyć współrzędną iksową amplitudy indukcji pola magnetycznego w zalezności od współrzędnych zetowych natęzenia pola magnetycznego i indukcji pola magnetycznego:
{{CentrujWzór|<MATH>\tilde{B}_{0x}={{i}\over{\left({{\omega}\over{c}}\right)^2-k^2}}\left(k{{\partial \tilde{B}_{0z}}\over{\partial x}}-{{\omega}\over{c^2}}{{\partial \tilde{E}_{0z}}\over{\partial y}}\right)\;</MATH>|19.26}}
Posłużmy się znów układem równań {{LinkWzór|19.17}} i pierwsze z nich pomnóżmy przez odwrotność kwadratu wartości światła c, czyli c{{Sup|-2}}, a drugie z nich przez liczbę falową k, w ten sposób dostajemy następny równoważny do poprzedniego układ równań:
{{CentrujWzór|<MATH>\begin{cases}
ik\tilde{E}_{0x}-{{\partial \tilde{E}_{0z}}\over{\partial x}}=i\omega \tilde{B}_{0y}
\\
{{\partial \tilde{B}_{0z}}\over{\partial y}}-ik \tilde{B}_{0y}=-{{i\omega}\over{c^2}}\tilde{E}_{0x}\Rightarrow
ik \tilde{B}_{0y}={{\partial \tilde{B}_{0z}}\over{\partial y}}+{{i\omega}\over{c^2}}\tilde{E}_{0x}\end{cases}\Rightarrow\begin{cases}
i{{\omega}\over{c^2}}\tilde{B}_{0y}=i{{k\omega}\over{c^2}}\tilde{E}_{0x}-{{\omega}\over{c^2}}{{\partial \tilde{E}_{0z}}\over{\partial x}}\\
ik^2 \tilde{B}_{0y}=k{{\partial \tilde{B}_{0z}}\over{\partial y}}+i{{\omega k}\over{c^2}}\tilde{E}_{0x}
\end{cases}
\;</MATH>|19.27}}
Odejmijmy od siebie dwa równania końcowego układu równań {{LinkWzór|19.27}}, tzn. pierwsze od drugiego, by potem w przyszłości wyznaczyć współrzędną igrekową amplitudy pola magnetycznego, która panuje w falowodzie, w ten sposób otrzymujemy równanie wynikowe, które dalej będziemy przekształcać:
{{CentrujWzór|<MATH>ik^2 \tilde{B}_{0y}-i{{\omega}\over{c^2}}=k{{\partial \tilde{B}_{0z}}\over{\partial y}}+i{{\omega k}\over{c^2}}\tilde{E}_{0x}-i{{k\omega}\over{c^2}}\tilde{E}_{0x}+{{\omega}\over{c^2}}{{\partial \tilde{E}_{0z}}\over{\partial x}}\Rightarrow
i \tilde{B}_{0y}\left[k^2-{{\omega}\over{c^2}}\right]=k{{\partial \tilde{B}_{0z}}\over{\partial y}}+{{\omega}\over{c^2}}{{\partial \tilde{E}_{0z}}\over{\partial x}}\;</MATH>|19.28}}
Z końcowego równania {{LinkWzór|19.28}} możemy wyznaczyć współrzędną igrekową amplitudy pola elektrycznego występująca w rozwiązaniu jako fale prowadzone układu równań {{LinkWzór|19.8}}, zatem tą współrzędną można napisać:
{{CentrujWzór|<MATH> \tilde{B}_{0y}={{i}\over{\left({{\omega}\over{c}}\right)^2-k^2}}\left(k{{\partial \tilde{B}_{0z}}\over{\partial y}}+{{\omega}\over{c^2}}{{\partial \tilde{E}_{0z}}\over{\partial x}}\right)\;</MATH>|19.29}}
Znając współrzędne {{Formuła|<MATH>\tilde{E}_{0z}\;</MATH>}} i {{Formuła|<MAtH>\tilde{B}_{0z}\;</MATH>}}, które z kolei zależą od współrzędej kartezjańskiej x i y, wtedy możemy wyznaczyć pozostałe współrzędne pola elektrycznego i magnetycznego fali prowadzonej.
=== Współrzędne zetowe pola elektrycznego i magnetycznego fali prowadzonej w falowodzie ===
Z korzystajmy z pierwszego prawa {{LinkWzór|19.3}}, oraz z drugiego prawa Maxwella {{LinkWzór|19.4}}, które są słuszne dla fali prowadzonej, wtedy amplitudy tych fal z definiowanych w punkcie {{LinkWzór|19.7}} i {{LinkWzór|19.8}} podstawiamy do tych równań, wtedy dostając końcowe równania różniczkowe, których postać podamy poniżej:
{{CentrujWzór|<MATH>\begin{cases}
\nabla\cdot\vec{\tilde{E}}=0\Rightarrow {{\partial\tilde{E}_x}\over{\partial x}}+{{\partial\tilde{E}_y}\over{\partial y}}+{{\partial\tilde{E}_z}\over{\partial z}}=0\Rightarrow
e^{i(kz-\omega t)}\left({{\partial\tilde{E}_{0x}}\over{\partial x}}+{{\partial\tilde{E}_{0y}}\over{\partial y}}+ik\tilde{E}_{0z}\right)=0\\
\nabla\cdot\vec{\tilde{B}}=0\Rightarrow {{\partial\tilde{B}_x}\over{\partial x}}+{{\partial\tilde{B}_y}\over{\partial y}}+{{\partial\tilde{B}_z}\over{\partial z}}=0\Rightarrow
e^{i(kz-\omega t)}\left({{\partial\tilde{B}_{0x}}\over{\partial x}}+{{\partial\tilde{B}_{0y}}\over{\partial y}}+ik\tilde{B}_{0z}\right)=0
\end{cases}\;</MATH>|19.30}}
Równania {{LinkWzór|19.30}} możemy zapisać po podzieleniu ich przez eksponens z liczby i(kz-ω t), wtedy dostajemy układ równań w postaci:
{{CentrujWzór|<MATH>\begin{cases}
{{\partial\tilde{E}_{0x}}\over{\partial x}}+{{\partial\tilde{E}_{0y}}\over{\partial y}}+ik\tilde{E}_{0z}=0\\
{{\partial\tilde{B}_{0x}}\over{\partial x}}+{{\partial\tilde{B}_{0y}}\over{\partial y}}+ik\tilde{B}_{0z}=0
\end{cases}\;</MATH>|19.31}}
Do układu równań {{LinkWzór|19.31}} podstawiamy już obliczone wartości na {{Formuła|<MATH>\tilde{E}_{0x}\;</MATH>}} {{LinkWzór|19.20}}, na {{Formuła|<MATH>\tilde{E}_{0y}\;</MATH>}} {{LinkWzór|19.23}} oraz na {{Formuła|<MATH>\tilde{B}_{0x}\;</MATH>}} {{LinkWzór|19.26}} i ostatecznie na {{Formuła|<MATH>\tilde{B}_{0y}\;</MATH>}} {{LinkWzór|19.29}}, wtedy dostaniemy układ równań, z których będziemy mogli wyznaczyć współrzędne zetowe amplitud fali prowadzonej pola elektrycznego i magnetycznego, dostajemy:
{{CentrujWzór|<MATH>\begin{cases}
{{i}\over{\left({{\omega}\over{c}}\right)^2-k^2}}\left(k{{\partial^2\tilde{E}_{0z}}\over{\partial x^2}}+\omega{{\partial^2 \tilde{B}_{0z}}\over{\partial y\partial x}}+k{{\partial^2 \tilde{E}_{0z}}\over{\partial y^2}}-\omega{{\partial^2 \tilde{B}_{0z}}\over{\partial x\partial y}}\right)+ik\tilde{E}_{0z}=0\\
{{i}\over{\left({{\omega}\over{c}}\right)^2-k^2}}\left(k{{\partial^2\tilde{B}_{0z}}\over{\partial x^2}}-{{\omega}\over{c^2}}{{\partial \tilde{E}_{0z}}\over{\partial y\partial x}}+k{{\partial^2 \tilde{B}_{0z}}\over{\partial y^2}}+{{\omega}\over{c^2}}{{\partial\tilde{E}_{0z}}\over{\partial y\partial x}}\right)+ik\tilde{B}_{0z}=0
\end{cases}\;</MATH>|19.32}}
Bezpośrednio z układzie dwóch równań {{LinkWzór|19.32}} dokonujemy redukcji pewnych wyrazów związanych z pochodnymi mieszanymi, i współrzędne zetowe amplitud pola elektrycznego i magnetycznego włączamy za nawias, w ten sposób dostajemy do poprzedniego przekształcony, ale równoważny układ równań:
{{CentrujWzór|<MATH>\begin{cases}
{{i}\over{\left({{\omega}\over{c}}\right)^2-k^2}}
k\left({{\partial^2\tilde{E}_{0z}}\over{\partial x^2}}+{{\partial^2\tilde{E}_{0z}}\over{\partial y^2}}\right)+ik\tilde{E}_{0z}=0\Rightarrow
\left[{{\partial^2}\over{\partial x^2}}+{{\partial^2}\over{\partial y^2}}+\left({{\omega}\over{c}}\right)-k^2\right]\tilde{E}_{0z}=0
\\
{{i}\over{\left({{\omega}\over{c}}\right)^2-k^2}}
k\left({{\partial^2\tilde{B}_{0z}}\over{\partial x^2}}+{{\partial\tilde{B}_{0z}}\over{\partial y^2}}\right)+ik\tilde{B}_{0z}=0\Rightarrow
\left[{{\partial^2}\over{\partial x^2}}+{{\partial^2}\over{\partial y^2}}+\left({{\omega}\over{c}}\right)-k^2\right]\tilde{B}_{0z}=0
\end{cases}
\;</MATH>|19.33}}
Z powyższego układu równań {{LinkWzór|19.33}} możemy wyznaczyć {{Formuła|<MATH>\tilde{E}_{0z}\;</MATH>}} i {{Formuła|<MATH>\tilde{B}_{0z}\;</MATH>}} jako funkcje x,y, już mając te funkcje, to można wyznaczyć pozostałe współrzędne pola elektrycznego i magnetycznego fali prowadzonej.
Jeśli współrzędna zetowa amplitudy pola elektrycznego jest równa zero, czyli {{Formuła|<MATH>\tilde{E}_{0z}=0\;</MATH>}}, to mamy do czynienia z poprzecznymi falami elektrycznymi (TE), a jeśli amplituda pola magnetycznego jest równa zero, czyli {{Formuła|<MATH>\tilde{B}_{0z}=0\;</MATH>}}, to mamy do czynienia z poprzecznymi falami magnetycznymi (TM), a jeśli zarówno oba te współrzędne zetowe pól elektrycznych i magnetycznych są równe zero, czyli {{Formuła|<MATH>\tilde{E}_{0z}=0\;</MATH>}} i {{Formuła|<MATH>\tilde{B}_{0z}=0\;</MATH>}}, to mówimy o falach poprzecznych elektromagnetycznych (TEM), to w takim przypadku mamy na pewno:
{{CentrujWzór|<MATH>\left({{\omega}\over{c}}\right)^2-k^2=0\Rightarrow {{\omega}\over{c}}=k\Rightarrow c={{\omega}\over{k}}\;</MATH>|19.34}}
=== Rozchodzenie się fal elektromagnetycznych w falowodzie ===
Fale elektromagnetyczne nie mogą rozchodzić się w pustej falowodzie, udowodnijmy to. Wiadomo jednak, że fale elektromagnetyczne są falami poprzecznymi, więc ich składowa zetowa obu pól są rówe zero. Z pierwszego i trzeciego prawa Maxwella mamy wtedy równania w takim przypadku:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial \tilde{E}_{0x}}\over{\partial x}}+{{\partial \tilde{E}_{0y}}\over{\partial y}}=0\;</MATH>|19.35}}
| 2 = {{CentrujWzór|<MATH>{{\partial\tilde{E}_{0y}}\over{\partial x}}-{{\partial\tilde{E}_{0x}}\over{\partial y}}=0\;</MATH>|19.36}}
}}
Dla pola elektromagnetycznego mamy zerową dywergencję i rotację, zatem pole elektromagnetyczne pola elektrycznego można przedstawić jako gradient pewnej funkcji zwanej potencjałem, która zależy od współrzędnej x i y. Co mamy podobnie w elektrostatyce. Potencjał na powierzchni rury (falowodu) musi mięć różnice potencjałów, ale z drugiej strony pole na powierzchni rury jest zerowe, zatem potencjał nie zmienia się z punku do punktu na naszej rurze. Dochodzimy więc do wniosku, że pole elektryczne we wnętrzu rury jest zerowe.
Podobnie dowodzimy dla pola magnetycznego.
== Propagacja fal prowadzonych w falowodzie prostokątnym ==
Falowodem prostokątnym nazywamy falowód o wysokości a i szerokości b.
Wyznaczmy współrzędną zetową pola magnetycznego fali prowadzonej pole według równania, które wyprowadziliśmy w punkcie {{LinkWzór|19.33}} jako drugie końcowe równanie, i w nim dokonajmy za tą współrzędną amplitudy odpowiednie podstawienia:
{{CentrujWzór|<MATH>\tilde{B}_{0z}(x,y)=f(x)g(y)\;</MATH>|19.37}}
Zatem otrzymujemy rówanie różniczkowe, które jest zależne od funkcji f(x) i g(y) względem współrzędnych iksowych i igrekowych.
{{CentrujWzór|<MATH>g(y){{d^2f(x)}\over{dx^2}}+f(x){{d^2g(y)}\over{dy^2}}+\left[\left({{\omega}\over{c}}\right)^2-k^2\right]f(x)g(y)=0\;</MATH>|19.38}}
Równanie {{LinkWzór|19.38}} możemy podzielić obustronnie przez funkcję, która jest iloczynem funkcji zależnej od współrzędnej iksowej f(x) i fukcji zależnej od współrzędnej igrekowej g(y), zatem dostajemy równanie wynikowe:
{{CentrujWzór|<MATH>{{1}\over{f(x)}}{{d^2f(x)}\over{dx^2}}+{{1}\over{g(y)}}{{d^2g(y)}\over{dy^2}}+\left({{\omega}\over{c}}\right)-k^2=0\;</MATH>|19.39}}
Z wiadomości o równaniach różniczkowych z pełną premedytacją możemy zapisać, tożsamość zależną od k{{Sub|x}}, k{{Sub|y}}, wedle wyglądu:
{{CentrujWzór|<MATH>-k_x^2-k_y^2+\left({{\omega}\over{c}}\right)-k^2=0\;</MATH>|19.40}}
Patrząc na równanie różniczkowe {{LinkWzór|19.39}} i równanie do niego odpowiednie {{LinkWzór|19.40}}, wtedy dostajemy układ dwóch równań różniczkowych, z których każda zależy od innej współrzędnej przestrzennej.
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{1}\over{f(x)}}{{d^2f(x)}\over{dx^2}}=-k_x^2\;</MATH>|19.41}}
| 2 = {{CentrujWzór|<MATH>{{1}\over{g(y)}}{{d^2g(y)}\over{dy^2}}=-k_y^2\;</MATH>|19.42}}
}}
Stąd z równań {{LinkWzór|19.41}} i {{LinkWzór|19.42}} możemy wyznaczyć ich rozwiązania w postaci funkcji f(x) i g(x):
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<math>f(x)=A\sin(k_x x)+B\cos(k_x x)\;</MATH>|19.43}}
| 2 = {{CentrujWzór|<MATH>g(y)=C\sin(k_y y)+D\cos(k_y y)\;</MATH>|19.44}}
}}
Gdy mamy rozwiązanie {{LinkWzór|19.43}}, to dla x=0, to wtedy mamy f(0)=A k{{Sub|x}}cos(k{{Sub|x}} 0)=A k_x=0, zatem otrzymujemy, że A=0, wtedy ta nasza wspomniana funkcja przechodzi w równanie:
{{CentrujWzór|<MATH>f(x)=B\sin(k_x x)\;</MATH>|19.45}}
Ale już dla x=a powinno być f(a)=0, a więc wtedy funkcja {{LinkWzór|19.45}} przy tym warunku brzegowym jest spełniona, gdy stała k{{Sub|x}} jest zależna od liczby falowej n wedle:
{{CentrujWzór|<MATH>k_x a=n\pi\Rightarrow k_x={{n\pi}\over{a}}\;</MATH>|19.46}}
Ostatecznie funkcja f(x) zdefiniowana wzorem {{LinkWzór|19.45}} przy definicji stałej k{{Sub|x}} można napisać wedle sposobu:
{{CentrujWzór|<MATH>f(x)=B\cos\left({{n\pi}\over{a}}x\right)\;</MATH>|19.47}}
Podobnie otrzymujemy dla fukcji g(x) {{LinkWzór|19.44}}, w której parametr D jest równy zero i jeszcze raz w której parametr k{{Sub|y}} jest zależny od dyskretnej zmiennej m, to go zapisujemy:
{{CentrujWzór|<MATH>k_y b= m\pi\Rightarrow k_y={{m\pi}\over{a}}\;</MATH>|19.48}}
Zatem nasza funkcja {{LinkWzór|19.37}}, przy znajomości funkcji f(x) i g(y) i stałej k{{Sub|x}} {{LinkWzór|19.46}}, a także stałej k{{Sub|y}} {{LinkWzór|19.48}}, piszemy wedle:
{{CentrujWzór|<MATH>\tilde{B}_{0z}=B_0\cos\left({{n\pi}\over{a}}x\right)\cos\left({{m\pi}\over{b}}y\right)\;</MATH>|19.49}}
Z równania {{LinkWzór|19.40}}, znając stałe k{{Sub|x}} {{LinkWzór|19.46}}i k{{Sub|y}} {{LinkWzór|19.48}}, możemy wyznaczyć k, możemy podstawić do nich za te stałe, wtedy otrzymujemy kwadrat stałej k, z którego wyznaczymy samo k, zatem do dzieła:
{{CentrujWzór|<MATH>k^2=\left({{\omega}\over{c}}\right)^2-\left({{n\pi}\over{a}}\right)^2-\left({{m\pi}\over{b}}\right)^2\Rightarrow k=\sqrt{\left({{\omega}\over{c}}\right)^2-\pi^2\left[\left({{n}\over{a}}\right)^2+\left({{m}\over{b}}\right)^2\right]}\;</MATH>|19.50}}
Oznaczmy wielkość występująca w końcowym wzorze {{LinkWzór|19.50}} wedle schematu:
{{CentrujWzór|<MATH>\omega_{nm}=c\pi\sqrt{\left({{n}\over{a}}\right)^2+\left({{m}\over{b}}\right)^2}\;</MATH>|19.51}}
i nazywamy go '''częstością kołową obcięcia'''. Zgodnie umową przyjmujemy, że a≥ b, to najniższą częstość obcięcia zatem jest równa wzorowi:
{{CentrujWzór|<MATH>\omega_{n0}={{c\pi}\over{a}}\;</MATH>|19.52}}
Częstości mniejsze od ω{{Sub|10}} w falowodzie prostokątnym nie mogą się rozchodzić.
Liczba falowa fali prowadzonej jest równa na podstawie jej definicji {{LinkWzór|19.51}}, wtedy wzór {{LinkWzór|19.50}} możemy zapisać wedle:
{{CentrujWzór|<maTH>k=\sqrt{\left({{\omega}\over{c}}\right)^2-\left({{\omega_{nm}}\over{c}}\right)^2}\Rightarrow k={{1}\over{c}}\sqrt{\omega^2-\omega_{nm}^2}\;</MATH>|19.53}}
Jeśli mamy ω≥ω{{Sub|nm}}, to mamy do czynienia z zwykłą falą nietłumioną, a jeśli ω<ω{{Sub|nm}}, to wtedy z falą prowadzoną tłumioną. Gdy jest spełniony ten pierwszy warunek, to wtedy prędkość fazowa fali prowadzonej jest wyrażona wzorem:
{{CentrujWzór|<MATH>v={{\omega}\over{k}}={{c}\over{\sqrt{\omega^2-\omega_{nm}^2}}}\;</MATH>|19.54}}
I zawsze jest ona większa od prędkości światła c.
Prawdziwą prędkością rozchodzenia się energii fali elektromagnetycznej jest to jej prędkość grupowa liczoną jak poniżej:
{{CentrujWzór|<MATH>v_{g}={{d\omega}\over{dk}}={{1}\over{{{dk}\over{d\omega}}}}=
{{c\sqrt{\omega^2-\omega_{nm}^2}}\over{{{1}\over{2}}2\omega}}=
c\sqrt{\omega^2-\omega_{nm}^2}\omega^{-1}=c\sqrt{1-\left({{\omega_{nm}}\over{\omega}}\right)^2}\;</MATH>|19.55}}
Gdy spełniona jest zależność ω{{Sub|nm}}<ω wtedy prędkość grupowa jest rzeczywista mniejsza niż prędkość światła, co jest zgodnie ze szczególną teorią względności.
=== Fale prowadzone jako fala płaska rozchodząca się pod kątem ===
Tym razem nie będziemy rozpatrywali fali prowadzonej według równań Maxwella, ale załóżmy, że jednak mamy falę elektromagnetyczną płaską, która rozchodzi się pod pewnym kątem.
Równanie fali płaskiej rozchodzącej się w falowodzie można zapisać w postaci wzoru jako kombinacji funkcji sinus i kosinus według wzoru:
{{CentrujWzór|<MATH>y=A\cos(\mathbf{k}^'\cdot\mathbf{r})+B\cos(\mathbf{k}^'\cdot\mathbf{r})\;</MATH>|19.56}}
Rozpatrzmy przypadek <MATH>\mathbf{r}=(x,0,0)\;</MATH>, to wtedy funkcję y {{LinkWzór|19.56}} możemy zapisać wedle sposobu:
{{CentrujWzór|<MATH>y=A\cos (k^'_x x)+B\sin(k^'_x x)\;</MATH>|19.57}}
Dla funkcji {{LinkWzór|19.57}}, gdy zachodzi x=0, to wtedy mamy y(0)=A, ale ponieważ ta funkcja w tymże punkcie jest równa zero, to musi być A=0, bo zakładamy, że na ściankach naczynia są węzły fali stojącej. Zatem otrzymujemy odpowiednik wzoru {{LinkWzór|19.57}} w tym przypadku:
{{CentrujWzór|<MATH>y=B\sin(k^'_x x)\;</MATH>|19.58}}
A teraz sprawdźmy dla x=a, dla funkcji {{LinkWzór|19.58}}, która w tym punkcie powinna przyjmować wartość zero, bo też mamy węzeł, zatem dostajemy definicję współrzędnej iksowej liczby falowej k{{Sup|'}}{{Sub|x}}.
{{CentrujWzór|<MATH>0=y(a)=B\sin(k^'_x a)\Rightarrow k_x a=m\pi\Rightarrow k^'_x={{n\pi}\over{a}}\;</MATH>|19.59}}
Podobnie liczymy dla {{Formuła|<MATH>\mathbf{r}=(0,y,0)\;</MATH>}}.
Współrzędna liczby falowej wzdłuż osi z jak przyjmować będziemy jest równa k.
Zatem nasz wektor falowy fali płaskiej występujący w równaniu {{LinkWzór|19.56}} jest wyrażony przez:
{{CentrujWzór|<MATH>\mathbf{k}^'={{n\pi}\over{a}}\hat{\vec{x}}+{{m\pi}\over{b}}\hat{\vec{y}}+k\hat{\vec{z}}\;</MATH>|19.60}}
Długość liczby falowej {{Formuła|<MATH>\mathbf{k}^'\;</MATH>}} zdefiniowanej w punkcie {{LinkWzór|19.60}} jest zależna od liczby dyskretnych n i m, a także od wymiarów naszego falowodu a i b. Ponadto ona jest również zależna od współrzędnej zetowej fali elektromagnetycznej k w tym naszym falowodzie.
{{CentrujWzór|<MATH>|\mathbf{k}^'|=
\sqrt{k^2+\left({{n\pi}\over{a}}\right)^2+\left({{m\pi}\over{b}}\right)^2}\;</MATH>|19.61}}
Jej częstość kołowa, bo fala płaska porusza się z prędkością c jest wyrażona wzorem w zależności od długości liczby falowej napisanej w {{LinkWzór|19.61}}.
{{CentrujWzór|<MATH>\omega=c|\mathbf{k}^'|=c\sqrt{k^2+\left({{n\pi}\over{a}}\right)^2+\left({{m\pi}\over{b}}\right)^2}\;</MATH>|19.62}}
Wtedy w równaniu {{LinkWzór|19.62}} możemy wyznaczyć parametr k{{Sup|2}}c{{Sup|2}}, który ostatecznie przyjmuje postać:
{{CentrujWzór|<MATH>\omega^2=c^2\left(k^2+\left({{n\pi}\over{a}}\right)^2+\left({{m\pi}\over{b}}\right)^2\right)\Rightarrow c^2k^2=\omega^2-c^2\pi^2\left[\left({{n}\over{a}}\right)^2+\left({{m}\over{b}}\right)^2\right]\;</MATH>|19.63}}
I jeśli dodatkowo oznaczymy w równaniu {{LinkWzór|19.63}} wielkość ω{{Sub|nm}}, której definicja jest taka sama jak w punkcie {{LinkWzór|19.51}}, wtedy otrzymamy taki sam wzór na parametr k dla fali płaskiej jak w punkcie {{LinkWzór|19.53}} dla fali prowadzonej.
Kat między liczbą falową {{Formuła|<MATH>\mathbf{k}^'\;</MATH>}} a {{Formuła|<MATH>k\hat{\vec{x}}\;</MATH>}} jest wyrażony przez:
{{CentrujWzór|<MATH>\cos\theta={{k}\over{|\mathbf{k}^'|}}=
{{ {{1}\over{c}}\sqrt{\omega^2-\omega_{nm}^2}}\over{{{\omega}\over{c}}}}=
\sqrt{1-\left({{\omega_{nm}}\over{\omega}}\right)^2}\;</MATH>|19.64}}
Ponieważ fala płaska porusza się pod kątem w falowodzie z prędkością światła, zatem nasza prędkość wzdłuż falowodu v{{Sub|g}} jest zależna od ω a także od częstotliwości kołowej obcięcia ω{{Sub|nm}}, zatem tą prędkość definiujemy:
{{CentrujWzór|<MATH>v_g=c\cos\theta=c\sqrt{1-\left({{\omega_{nm}}\over{\omega}}\right)^2}<c\;</MATH>|19.65}}
Co jest prędkością grupową fali prowadzonej {{LinkWzór|19.55}} fali elektromagnetycznej w falowodzie .
Prędkość fazowa jest równa prędkości czoła fali, a zatem:
{{CentrujWzór|<MATH>v={{c}\over{\cos\theta}}={{c}\over{\sqrt{1-\left({{\omega_{nm}}\over{\omega}}\right)^2}}}\;</MATH>|19.66}}
Te same wzory otrzymaliśmy rozważając fale prowadzone rozchodzące się w falowodzie, tak samo i zwykłe fale płaskie poruszające się po katem od osi falowodu polegające, że fale elektromagnetyczne odbijają się w sposób doskonały od przewodnika na powierzchni naszego falowodu, bo powierzchnia falowodu jest doskonałym przewodnikiem.
== Rozchodzenie się fal prowadzonych w koncentrycznej linii transmisyjnej ==
W koncentryczna linia transmisyjna składa się z długiego prostego drutu, który ma promień "a", otoczonej powłoką walcowatą o promieniu "b".
W koncentrycznej linii transmisyjnej mogą rozchodzić się fale elektromagnetyczne, czyli dla których zachodzi E{{Sub|0z}}=0 i B{{Sub|0z}}=0, chociaż to nie jest falowód, bo we wnętrzu rury występuje długi prosty drut, i jest nadal spełnione twierdzenie, że w pustym falowodzie nie mogą rozchodzić się fale elektromagnetyczne.
Równanie fali w linii koncentrycznej jest takie same, tylko nie ma składowej zetowej pola elektrycznego i magnetycznego, zatem można przepisać równania falowe wynikające z praw elektrodynamiki Maxwella dla falowodów, z tym zaznaczeniem że nie ma fal podłużnych dla obu pól, po przepisaniu tych równań, otrzymujemy, że:
{{CentrujWzór|<MATH>\begin{cases}
{{\partial E_{0x}}\over{\partial x}}+{{\partial E_{0y}}\over{\partial y}}=0\Rightarrow \operatorname{div}\vec{E}_0=0\\
{{\partial B_{0x}}\over{\partial x}}+{{\partial B_{0y}}\over{\partial y}}=0\Rightarrow\operatorname{div}\vec{B}_0=0\\
{{\partial E_{0y}}\over{\partial x}}-{{\partial E_{0x}}\over{\partial y}}=0\Rightarrow\operatorname{rot}\vec{E}_0=0\\
{{\partial B_{0y}}\over{\partial x}}-{{\partial B_{0x}}\over{\partial y}}=0\Rightarrow\operatorname{rot}\vec{B}_0=0\\
B_{0y}={{1}\over{c}}E_{0x}\\
B_{0x}=-{{1}\over{c}}E_{0y}
\end{cases}</MATH>|19.67}}
Widzimy, że pierwsze i czwarte oraz drugie i trzecie równanie są to równania ze sobą równoważne, pierwsze równanie przedstawia dywergencję amplitudy fali w linii koncentrycznej, a trzecie sanowi jakoby rotację wektora tej amplitudy. jeśli wektor amplitudy pola elektrycznego przedstawimy jako gradient pewnej wielkości skalarnej, to wtedy rotacja tego wektora jest automatycznie równa zero, to samo postępujemy z równaniem drugim i czwartym w układzie równań {{LinkWzór|19.67}}.
Są to dokładnie prawa elektrostatyki i magnetostatyki dla dwóch wymiarów tylko z tym zaznaczeniem, że dla współrzędnych ich amplitud fali elektrycznej i magnetycznej.
Dokładnie te równania można otrzymać dla nieskończonej linii naładowanej, w której płynie prąd. Które można zapisać w postaci całkowej znanych z elektrostatyki i magnetostatyki. Z równań dla elektrostatyki dla ich amplitud z jej całkowej postaci można otrzymać:
{{CentrujWzór|<MATH>E_0\cdot2\pi r l=q\Rightarrow E_0={{q}\over{2\pi l r}}\Rightarrow \mathbf{E}_0={{A}\over{r}}\mathbf{e}_r</MATH>|19.68}}
Ponieważ nie ma współrzędnej zetowej dla tej fali, bo mamy w tym przypadku falę poprzeczną, czyli na pewno jest spełniony wzór {{LinkWzór|17.24|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}}, zatem amplituda fali pola magnetycznego zapisujemy wedle sposobu:
{{CentrujWzór|<MATH>\mathbf{B}_0={{A}\over{cr}}\mathbf{e}_{\theta}</MATH>|19.69}}
* Gdzie: {{Formuła|<MATH>\mathbf{e}_r</MATH>}} i {{Formuła|<MATH>\mathbf{e}_{\theta}</MATH>}} są to wersory układu biegunowego.
A zatem równania fali dla koncentrycznej linii transmisyjnej dla pola elektrycznego i magnetycznego są:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\mathbf{E}(r,\theta,z,t)={{A}\over{r}}e^{i(kz-\omega t)}\mathbf{e}_{r}</MATH>|19.70}}
| 2 = {{CentrujWzór|<MATH>\mathbf{B}(r,\theta,z,t)={{A}\over{cr}}e^{i(kz-\omega t)}\mathbf{e}_{\theta}</MATH>|19.71}}
}}
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
57fcnrgdkvdxi30rzdrt48be19dc7n6
Elektrodynamika klasyczna/Pola skalarne i wektorowe a równania elektrodynamiki Maxwella
0
16954
558888
513489
2026-10-08T01:43:07Z
Persino
2851
558888
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy się zajmować, gdy pola elektryczne i magnetyczne w ogólności są zmienne w czasie i na jej podstawie wprowadzimy pojęcie pola skalarnego za pomocą potencjału skalarnego i pola wektorowego za pomocą potencjału wektorowego, które w ogólności zmieniają się w czasie.
== Wprowadzenie do potencjałów - skalarnego i wektorowego ==
Definicja potencjału wektorowego jest taka sama jak w magnetostatyce, którego definicja jest w punkcie {{LinkWzór|10.1|Magnetyczny_potencjał_wektorowy}}, ale my dla przejrzystości wykładu powtórzymy tą definicję i powiemy, że ona jest słuszna również dla pól zmiennych w czasie:
{{CentrujWzór|<MATH>\vec{B}=\nabla\times\vec{A}\;</MATH>|20.1}}
W magnetostatyce taka definicją prowadziła, że spełnione jest prawo Gaussa {{LinkWzór|9.7|Wektor_indukcji_magnetycznej}}, także również zachodzi to samo w elektrodynamice Maxwella dla drugiego prawa Maxwella {{LinkWzór|15.15|Elektrodynamika_Maxwella}}.
Posłużmy się trzecim prawem i dokonajmy w nim pewnych przekształceń, stosując w nim wzór na indukcję pola magnetycznego w zależności od potencjału wektorowego, i po tej czynności wszystkie wyrazy wsadźmy pod dywergencję (operator nabla):
{{CentrujWzór|<MATH>\nabla\times\vec{E}=-{{\partial\vec{B}}\over{\partial t}}\Rightarrow\nabla\times\vec{E}=-{{\partial}\over{\partial t}}\left(\nabla\times\vec{A}\right)\Rightarrow\nabla\times\vec{E}+
\nabla\times{{\partial\vec{A}}\over{\partial t}}=0\Rightarrow\nabla\times\left(\vec{E}+{{\partial\vec{A}}\over{\partial t}}\right)=0\;</MATH>|20.2}}
Aby powyższe równanie było tożsamościowo równe zero, to w powyższym równaniu należy zastąpić wyrażenie, która jest mnożnikiem wyrażeniem -∇φ, zatem przeprowadzając te same obliczenia, co w punkcie {{LinkWzór|3.11|Pole_skalarne}}, dostajemy, że podstawienie jest automatycznie spełnione.
Zatem na podstawie tego zastąpienia i końcowego równania {{LinkWzór|20.2}}, otrzymujemy wtedy gradient potencjału skalarnego definiowany wedle sposobu:
{{CentrujWzór|<MATH>-\nabla \varphi=\vec{E}+{{\partial\vec{A}}\over{\partial t}}\;</MATH>|20.3}}
Natężenie pole elektrycznego, używając powyższego równania {{LinkWzór|20.3}}, jak się przekonamy w tym równaniu jest ona zależna od gradientu potencjału skalarnego i od potencjału wektorowego zależnego od czasu.
{{CentrujWzór|<MATh>\vec{E}=-\nabla\varphi-{{\partial\vec{A}}\over{\partial t}}\;</MATH>|20.4}}
Widzimy, że gdy pole magnetyczne nie zmienia się w czasie, to definicja natężenia pola elektrycznego poprzez potencjał skalarny jest taki sama jak w elektrostatyce, tzn. jak w punkcie {{LinkWzór|3.5|Pole_skalarne}}.
Znając definicję potencjału wektorowego, że jeśli potencjał skalarny i wektorowy zmieniać się będą w czasie, to wektor natężenia pola elektrycznego będzie w ogólności też się zmieniać w czasie.
Gdy potencjał wektorowy zmienia się w czasie, to wektor indukcji pola magnetycznego w danym punkcje też w ogólności będzie się zmieniał w czasie.
Drugie równanie Maxwella jest automatycznie spełnione, bo zachodzi na podstawie obliczeń {{LinkWzór|10.11|Magnetyczny_potencjał_wektorowy}}.
Wprowadzając potencjał skalarny i wektorowy w elektromagnetyzmie, to wtedy dochodzimy do wniosku, że drugie i trzecie prawo elektrodynamiki Maxwella dla próżni stają tożsamościami, zostało nam tylko dwa równania, tzn.: pierwsze i trzecie równanie. Pierwsze z nich zależy od gęstości objętościowej ładunku, a ostanie zależy od gęstości prądu płynącego w naszym przewodniku.
== Cechowania w magnetostatyce i elektrodynamice Maxwella ==
Mamy już wyznaczone natężenie pola elektrycznego poprzez potencjał skalarny i wektorowy, oraz indukcję pola magnetycznego przez potencjał wektorowy.
Weźmy pod lupę czwarte prawo elektrodynamiki Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}}, podstawmy do niego definicję indukcji magnetycznej poprzez potencjał wektorowy {{LinkWzór|20.1}} i definicję natężenia pola elektrycznego poprzez potencjał skalarny i wektorowy, dalej wykorzystując związek udowodniony w punkcie {{LinkWzór|17.1|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}}, ale tym razem zamiast natężenia pola elektrycznego występuje potencjał wektorowy, zatem dochodzimy do wniosku:
{{CentrujWzór|<MATH>\nabla\times\left(\nabla\times\vec{A}\right)=\mu_0\vec{J}+\mu_0\epsilon_0{{\partial}\over{\partial t}}\left(-\nabla\varphi-{{\partial\vec{A}}\over{\partial t}}\right)\Rightarrow \nabla\left(\nabla\vec{A}\right)-\Delta\vec{A}=\mu_0\vec{J}-
\mu_0\epsilon_0\nabla{{\partial\varphi}\over{\partial t}}-\mu_0\epsilon_0{{\partial^2\vec{A}}\over{\partial t^2}}\;</MATH>|20.5}}
Teraz przenosimy wyrazy z prawej strony na lewą jej stronę, oprócz wyrazu z gęstością prądu elektrycznego, i odpowiednie je grupować będziemy, zatem otrzymujemy:
{{CentrujWzór|<MATH>\nabla\cdot\left(\nabla\vec{A}+\mu_0\epsilon_0{{\partial\varphi}\over{\partial t}}\right)-\left(\Delta\vec{A}-\mu_0\epsilon_0{{\partial\vec{A}}\over{\partial t^2}}\right)=\mu_0\vec{J}\;</MATH>|20.6}}
Przyjmijmy cechowanie, które wiąże potencjał skalarny z potencjałem wektorowym pola elektromagnetycznego. Widzimy, że w tym cechowaniu poniżej jest ona zależna od dywergencji potencjału wektorowego i od pochodnej pierwszej względem czasu potencjału skalarnego:
{{CentrujWzór|<MATH>\nabla\vec{A}+\mu_0\epsilon_0{{\partial\varphi}\over{\partial t}}=0\;</MATH>|20.7}}
Powyższe równanie jest cechowaniem Lorentza, a gdy potencjał nie zmienia się w czasie, to otrzymujemy cechowanie Coulomba w postaci równania {{LinkWzór|10.4|Magnetyczny_potencjał_wektorowy}}.
Zatem nasze czwarte prawo Maxwella po uwzględnieniu naszego cechowania Lorentza i podstawiając go do pierwszego składnika pod operatorem nabla (∇), wtedy otrzymujemy równanie różniczkowe zależne tylko od potencjału wektorowego pola elektromagnetycznego:
{{CentrujWzór|<MATH>\Delta\vec{A}-\mu_0\epsilon_0{{\partial\vec{A}}\over{\partial t^2}}=-\mu_0\vec{J}\;</MATH>|20.8}}
Następnie krokiem jest skorzystanie z pierwszego prawa Maxwella {{LinkWzór|15.14|Elektrodynamika_Maxwella}} i zastosowanie w nim związku {{LinkWzór|20.4}} na natężenie pola elektrycznego w zależności od dywergencji pola potencjału skalarnego i względem pochodnej czasowej potencjału wektorowego względem czasu, wtedy dostajemy związek:
{{CentrujWzór|<MATH>\nabla\cdot\vec{E}=0\Rightarrow\nabla\cdot\left(-\nabla\varphi-
{{\partial\vec{A}}\over{\partial t}}\right)=0\Rightarrow
-\Delta\varphi-{{\partial}\over{\partial t}}\nabla\vec{A}={{1}\over{\epsilon_0}}\rho\;</MATH>|20.9}}
Równanie na cechowanie Lorentza {{linkWzór|20.7}} zastosujmy do równania {{linkWzór|20.9}} wyznaczając z tego cechowania dywergencję potencjału wektorowego podstawiając do niego, wtedy dostając wzór zależny tylko od potencjału skalarnego φ
{{CentrujWzór|<math>-\Delta\varphi+\mu_0\epsilon_0{{\partial^2\varphi}\over{\partial t^2}}={{1}\over{\epsilon_0}}\rho\Rightarrow
\Delta\varphi-\mu_0\epsilon_0{{\partial^2\varphi}\over{\partial t^2}}=-{{1}\over{\epsilon_0}}\rho\;</MATH>|20.10}}
Określając ze wzoru {{LinkWzór|17.11|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}} wielkość {{Formuła|<MATH>\mu_0\epsilon_0={{1}\over{c^2}}\;</MATH>}}, że iloczyn przenikalności elektrycznej i magnetycznej w próżni, że jest odwrotnością kwadratu wartości prędkości światła, zatem nasze te dwa uzyskane równania zależne tylko od potencjału wektorowego {{LinkWzór|20.8}} i od potencjału skalarnego {{LinkWzór|20.10}} są one w postaci:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\Delta\vec{A}-{{1}\over{c^2}}{{\partial\vec{A}}\over{\partial t^2}}=-\mu_0\vec{J}\;</MATH>|20.11}}
| 2 = {{CentrujWzór|<MATH>\Delta\varphi-{{1}\over{c^2}}{{\partial^2\varphi}\over{\partial t^2}}=-{{1}\over{\epsilon_0}}\rho\;</MATH>|20.12}}
}}
Jeśli zdefiniujemy operator, który jest zależna od kwadratu operatora nabla, czyli operatora delty i od drugiej pochodnej względem czasu, którego definicję podajemy tutaj:
{{CentrujWzór|<MATH>\square=\Delta-{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}\;</MATH>|20.13}}
co {{LinkWzór|20.13}} nazywamy '''dalambercjanem'''.
Zatem nasze równania elektrodynamiki Maxwella dla potencjału wektorowego {{LinkWzór|20.11}} i skalarnego {{LinkWzór|20.12}}, przy zastosowaniu definicji operatora dalambercjanu {{LinkWzór|20.13}}, zapisujemy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\square\varphi=-{{1}\over{\epsilon_0}}\rho\;</MATH>|20.14}}
| 2 = {{CentrujWzór|<MATh>\square\vec{A}=-\mu_0\vec{J}\;</MATH>|20.15}}
}}
Jak widzimy, że możemy osobno wyznaczyć potencjały skalarne i potencjały wektorowe, a później za pomocą cechowania Lorentza powiązać oba te pola, tzn. potencjał skalarny φ z wektorowym {{Formuła|<MATH>\vec{A}\;</MATH>}}, a następnie na tej podstawie wyznaczyć pola wektorowe, tzn. natężenia pola elektrycznego oraz indukcję pola magnetycznego.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
7o9pt7zj5e9ofk4955qdklwqdj48idc
Elektrodynamika klasyczna/Rozkłady ciągłe gęstości ładunku i gęstości prądu objętościowego
0
16966
558889
513704
2026-10-08T01:47:46Z
Persino
2851
558889
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy się zajmować wielkościami opóźnionymi - zależnymi od zdarzeń przeszłości, i przedwczesnymi - zależnymi od zdarzeń w przyszłości. Przy czym te pierwsze wielkości są fizyczne a drugie nie, bo narusza świętą zasadę przyczynowości, że przyczyna poprzedza skutek.
== Pole potencjałów opóźnionych i przedwczesnych ==
Przypomnijmy sobie prawa w elektrostatyce i magnetostatyce przy pomocy potencjału wektorowego i skalarnego, czyli te wzory są napisane w puntach {{LinkWzór|3.10|Pole_skalarne}}, którego rozwiązaniem jest {{LinkWzór|3.20|Pole_skalarne}}. Dla wzoru napisanego w punkcie {{LinkWzór|10.5|Magnetyczny_potencjał_wektorowy}} rozwiązaniem jest {{LinkWzór|10.6|Magnetyczny_potencjał_wektorowy}}. Widzimy, że te rozwiązania wcale nie zależą od czasu. Dla rozważań naszych jest istotne stan źródeł wcześniejszym czasie opóźnionym w chwili napisanej w czasie t{{Sub|r}}, który jest zdefiniowany według:
{{CentrujWzór|<MATH>t_r=t-{{R}\over{c}}</MATH>|21.1}}
* gdzie t jest to czas rzeczywisty pewnej chwili, w której występuje pewny rozkład gęstości i prądów objętościowej w układzie.
* R jest to odległość od punktu, w którym liczymy pole zarówno magnetyczne i elektryczne od ładunku. Odległość punktu w czasie t od ładunku w czasie t{{Sub|r}} jest to R.
* c jest to prędkość fali elektromagnetycznej w próżni, równej {{LinkWzór|17.11|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}}. Interesuje nam wpływ ładunków ich prądów z przeszłości na czas teraźniejszy. Przy stałym czasie przedwczesnym dla t{{Sub|r}} zachodzi wzór: {{Formuła|<MATH>c={{dR}\over{dt}}</MATH>}}, czyli nasze pole rozprzestrzenia się z prędkością światła. Czyli zaburzenia pola skalarnego i wektorowego rozchodzą się z prędkością światła.
Czasem przedwczesnym nazywamy czas zdefiniowany:
{{CentrujWzór|<MATH>t_a=t+{{R}\over{c}}</MATH>|21.2}}
* R w czasie przedwczesnym ma takie same właściwości, co w czasie opóźnionym.
Z definicji tego czasu wynika, że mamy wpływ ładunków i prądów z przyszłości, co fizycznie jest niemożliwe. Przy stałym t{{Sub|a}} wynika, że: {{Formuła|<MATH>c=-{{dR}\over{dt}}</mATH>}}.
Oba te czasy opóźniony {{LinkWzór|21.1}} i przedwczesny {{LinkWzór|21.2}} można zapisać ogólnie:
{{CentrujWzór|<MATH>t_{ra}=t\mp{{R}\over{c}}</MATH>|21.3}}
Czas opóźniony (z minusem) lub przedwczesny (z plusem) nazywamy czas rzeczywisty, w którym zostało wysłane pole od jakiegoś punktu w przestrzeni, w którym znajduje się cząstka o ładunku Δ q. Dla czasu opóźnionego (z minusem) czas opóźniony spełnia warunek t{{Sub|r}}<t, czyli ładunki z przeszłości wpływają na pole w punkcie {{Formuła|<MATH>\vec{r}</MATH>}}, co spełnia zasadę przyczynowości. Dla czasu przedwczesnego zachodzi warunek t{{Sub|a}}t, czyli ładunki z przyszłości w pływają na ładunki w teraźniejszości, co jest niezgodne z zasadą przyczynowości, ten przypadek zwykle nie uwzględniamy.
Rozszerzmy nasze nasze dysputy uwzględniając czas opóźniony i przedwczesny zdefiniowanych wcześniej, a zatem nasze wzory są na definicję potencjału skalarnego i wektorowego.
Jeśli mamy {{Formuła|<MATH>\rho(\vec{r}^',t^')</MATH>}}, gdzie pierwszym argumentem jest położenie cząstki o nieskończenie małej objętości znajdującej się w punkcie {{Formuła|<MATH>\vec{r}^'\;</MATH>}} w czasie t', to wtedy w gęstości objętościowej ładunku równej {{Formuła|<MATH>\rho\;</MATH>}}, w którym zamiast {{Formuła|<MATH>t^'\;</MATH>}} piszemy: {{Formuła|<MATH>t_{ra}=t\pm{{R}\over{c}}</MATH>}}, co jest czasem opóźnionym (przedwczesnym), aby policzyć wielkość, którą jest potencjał skalarny. Dla gęstości prądu objętościowego przy liczeniu potencjału wektorowego podobnie postępujemy. Zatem te wielkości definiujemy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\varphi(\vec{r},t)={{1}\over{4\pi\epsilon_0}}\int {{\rho\left(\vec{r}^',t\mp{{R}\over{c}}\right)}\over{R}}dV^'</MATH>|21.4}}
| 2 = {{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0}\over{4\pi}}\int{{\vec{J}\left(\vec{r}^',t\mp{{R}\over{c}}\right)}\over{R}}dV^'</MATH>|21.5}}
}}
Gdy we tych dwóch wzorach, tzn. w {{LinkWzór|21.4}} i w {{LinkWzór|21.5}} wybierzemy znak minus, to wtedy mamy doczynienia z potencjałami opóźnionymi, a znak plus, to z potencjałami przedwczesnymi.
Sprawdźmy, czy nasze równania na potencjał skalarny i wektorowy spełniają prawa elektrodynamiki klasycznej, tzn. równania {{LinkWzór|20.14|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} i {{LinkWzór|20.15|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}.
Poniżej skorzystamy ze wzoru, który jest operatorem pochodnej względem czasu {{LinkWzór|21.3}}, który zamienimy do pochodnych względem położenia i zwykłego czasu t.
{{CentrujWzór|<MATH>{{\partial}\over{\partial t_{ra}}}={{\partial x_i}\over{\partial t_{ra}}}{{\partial}\over{\partial x_i}}+{{\partial t}\over{\partial t_{ra}}}{{\partial}\over{\partial t}}</MATH>|21.6}}
A więc zmienne t{{Sub|ra}} i x,y,z są to zmienne niezależne od siebie, zatem zachodzi tożsamość różniczkowa {{Formuła|<MATH>{{\partial x_i}\over{\partial t_{ra}}}=0</MATH>}}, a także: {{Formuła|<MATH>{{\partial t}\over{\partial t_{ra}}}=1</MATH>}}, zatem ostatecznie zachodzi więc związek:
{{CentrujWzór|<MATH>{{\partial}\over{\partial t_{ra}}}={{\partial}\over{\partial t}}</MATH>|21.7}}
Co {{LinkWzór|21.7}} jest równoważne dwóm warunkom:{{Formuła|<MATH>{{\partial}\over{\partial t_{r}}}={{\partial}\over{\partial t}}</MATH>}} i
{{Formuła|<MATH>{{\partial}\over{\partial t_{a}}}={{\partial}\over{\partial t}}</MATH>}}.
Wyznaczmy gradient potencjału skalarnego {{LinkWzór|21.4}}, wykorzystując przy tym twierdzenie o pochodnej iloczynu, znając że operator nabla (∇) jest w pewnym sensie wektorem operatorowym, wtedy na podstawie tychże rozważań dostajemy tożsamość:
{{CentrujWzór|<MATH>\nabla\varphi={{1}\over{4\pi\epsilon_0}}\int\nabla{{\rho}\over{R}}dV^'=
{{1}\over{4\pi\epsilon_0}}\int\left[\left(\nabla\rho\right){{1}\over{R}}+\rho\nabla\left({{1}\over{R}}\right)\right]dV^'</MATH>|21.8}}
We wzorze {{LinkWzór|21.8}} gradient gęstości objętościowej ładunku w danym punkcie możemy rozpisać, korzystając przy tym z tożsamości {{LinkWzór|21.7}}, i definicji czasu opóźnionego (przedwczesnego) napisanej w sposób ogólny w punkcie {{LinkWzór|21.3}}, zatem dochodzimy do wniosku, że tą wielkość możemy rozpisać poprzez pochodną względem czasu gęstości objętościowej i za pomocą wektora normalnego wskazujący kierunek, w której to punkcie będziemy liczyć takie wielkości jak potencjał skalarny lub wektorowy dla teorii elektromagnetyzmu:
{{CentrujWzór|<MATH>\nabla\rho=\vec{k}_i{{\partial}\over{\partial x_i}}\rho=\vec{k}_i{{\partial\rho}\over{\partial t_p}}{{\partial t_p}\over{\partial x_i}}=\vec{k}_i{{\partial\rho}\over{\partial t}}{{\partial t_p}\over{\partial x_i}}=\dot{\rho}\nabla t_p=\mp{{1}\over{c}}\dot{\rho}\nabla R=\mp{{\dot{\rho}}\over{c}}\hat{\vec{R}}</MATH>|21.9}}
Zatem nasz gradient potencjału {{LinkWzór|21.8}}, na podstawie obliczeń nad gradientem gęstości objętościowej ładunku {{LinkWzór|21.9}}, możemy zapisać wedle:
{{CentrujWzór|<MATH>\nabla\varphi=
{{1}\over{4\pi\epsilon_0}}\int\left[\mp{{\dot{\rho}}\over{c}}{{\hat{\vec{R}}}\over{R}}-\rho{{\hat{\vec{R}}}\over{R^2}}\right]dV^'</MATH>|21.10}}
Następnym krokiem jest obliczenie dywergencji tożsamości {{LinkWzór|21.10}}, która jest dywergencją potencjału skalarnego {{LinkWzór|21.4}}, czyli mamy policzyć Laplasjan tego samego potencjału skalarnego, zatem do dzieła:
{{CentrujWzór|<MATH>\Delta\varphi=\nabla(\nabla\varphi)=
\nabla\left({{1}\over{4\pi\epsilon_0}}\int\left[\mp{{\dot{\rho}}\over{c}}{{\hat{\vec{R}}}\over{R}}-\rho{{\hat{\vec{R}}}\over{R^2}}\right]dV^'\right)=
{{1}\over{4\pi\epsilon_0}}\int\nabla\left[\mp{{\dot{\rho}}\over{c}}{{\hat{\vec{R}}}\over{R}}-\rho{{\hat{\vec{R}}}\over{R^2}}\right]dV^'=</MATH>{{Br}}
<MATH>={{1}\over{4\pi\epsilon_0}}\int\left\{{{1}\over{c}}\left[
\mp\nabla\dot{\rho}{{\hat{\vec{R}}}\over{R}}\mp\dot{\rho}\nabla{{\hat{\vec{R}}}\over{R}}
\right]-\left[
{{\hat{\vec{R}}}\over{R^2}}\nabla\rho+\rho\nabla{{\hat{\vec{R}}}\over{R^2}}
\right]
\right\}dV^'</MATH>|21.11}}
Naszym celem jest zastosowanie tożsamości różniczkowej {{LinkWzór|2.13|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}}, a także tym razem też innej tożsamości {{LinkWzór|7.4|Ciało_spolaryzowane_a_jego_pole}} w przeprowadzanych obliczeń w punkcie {{LinkWzór|21.11}}, a także chcemy wiedzieć co wyjdzie z obliczeń, gradientu pochodnej gęstości objętościowej względem czasu w danym punkcie w przestrzeni, zatem musimy przeprowadzić rachunek:
{{CentrujWzór|<MATH>\nabla\dot{\rho}=\mp{{1}\over{c}}\ddot{\rho}\nabla R=\mp{{1}\over{c}}\ddot{\rho}\hat{\vec{R}}</MATH>|21.12}}
Zatem laplasjan potencjału skalarnego {{LinkWzór|21.11}}, po skorzystaniu z tożsamości, którą jest gradientem pochodnej względem czasu gęstości ładunku w danym punkcie i w czasie w którym ona panuje, czyli z tożsamości {{LinkWzór|21.12}}, wtedy możemy napisać nasz laplasjan omawianej wielkości wedle sposobu:
{{CentrujWzór|<MATH>\Delta\varphi={{1}\over{4\pi\epsilon_0}}\int\left\{
{{1}\over{c}}\left[{{1}\over{c}}\ddot{\rho}{{1}\over{R}}\mp{{\dot{\rho}}\over{R^2}}\right]-
\left[
\mp{{1}\over{c}}{{\dot{\rho}}\over{R^2}}+\rho 4\pi\delta^3(\vec{R})
\right]
\right\}dV^'={{1}\over{4\pi\epsilon_0}}\int\left[{{1}\over{c^2}}{{\ddot{\rho}}\over{R}}-4\pi\rho\delta^{3}(\vec{R})\right]dV^'=
{{1}\over{4\pi\epsilon_0 c^2}}\int{{\ddot{\rho}}\over{R}}dV^'-{{1}\over{\epsilon_0}}\rho(\vec{r})=\;</MATH>{{Br}}<MATH>={{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}{{1}\over{4\pi\epsilon_0}}\int{{\rho}\over{R}}dV^'-{{1}\over{\epsilon_0}}\rho(\vec{r})</MATH>|21.13}}
Wykorzystując definicję potencjału skalarnego {{LinkWzór|21.4}}, wtedy przeprowadzone obliczenia {{LinkWzór|21.13}}, korzystając przy tym z definicji dalambercjanu {{LinkWzór|20.13|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, wtedy wspomniane wyrażenie możemy napisać wedle sposobu:
{{CentrujWzór|<MATH>\Delta\varphi={{1}\over{c^2}}{{\partial^2\varphi}\over{\partial t^2}}-{{1}\over{\epsilon_0}}\rho\Rightarrow\Delta\varphi-{{1}\over{c^2}}{{\partial^2\varphi}\over{\partial t^2}}=-{{1}\over{\epsilon_0}}\rho\Rightarrow\square\varphi=-{{1}\over{\epsilon_0}}\rho</MATH>|21.14}}
Zatem przy definicji potencjału skalarnego {{LinkWzór|21.4}} otrzymaliśmy, że ona jest rozwiązaniem równania różniczkowego {{LinkWzór|20.14|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}.
Potencjał przedwczesny i opóźniony spełnia niejednorodne równanie elektrodynamiki Maxwella. Podobnie dowodzimy dla potencjału wektorowego dla czasu opóźnionego i przedwczesnego {{LinkWzór|21.5}}.
== Równania Jefimienki ==
Potencjały opóźnione jak udowodniliśmy wcześniej spełniają równania Maxwella, i one wyglądają jak w punkcie {{LinkWzór|21.4}} i {{LinkWzór|21.5}}, a natężenie pola elektryczne i magnetycznego są zdefiniowane w zależności od potencjału skalarnego i wektorowego w elektromagnetyzmie wedle sposobu {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} i {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}.
Wyznaczmy wyrażenie, które jest dywergencją potencjału skalarnego {{LinkWzór|21.4}} dla czasu opóźnionego.
{{CentrujWzór|<MATH>\nabla\varphi={{1}\over{4\pi\epsilon_0}}\int\nabla{{\rho}\over{R}}dV^'=
{{1}\over{4\pi\epsilon_0}}\int\left[\rho\nabla{{1}\over{R}}-{{\dot{\rho}}\over{cR}}\hat{\vec{R}}\right]dV^'=
{{1}\over{4\pi\epsilon_0}}\int\left[-{{\rho}\over{R^2}}\hat{\vec{R}}-{{\dot{\rho}}\over{cR}}\hat{\vec{R}}\right]dV^'</MATH>|21.15}}
Następnie policzmy pochodną cząstkową potencjału wektorowego {{LinkWzór|21.5}} dla czasu opóźnionego, co go zapisujemy:
{{CentrujWzór|<MATH>{{\partial\vec{A}}\over{\partial t}}={{\mu_0\epsilon_0}\over{4\pi\epsilon_0}}\int{{\dot{\vec{J}}}\over{R}}dV^'=
{{1}\over{4\pi\epsilon_0}}{{1}\over{c^2}}\int{{\dot{\vec{J}}}\over{R}}dV^'</MATH>|21.16}}
Następnym krokiem jest wyznaczenie natężenie pola elektrycznego, korzystając przy tym z jego definicji {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} i już wcześniej obliczonych wielkości, tzn. gradientu potencjału skalarnego {{LinkWzór|21.15}} i pochodnej cząstkowej potencjału wektorowego {{LinkWzór|21.16}}, zatem tą wielkość piszemy wedle sposobu:
{{CentrujWzór|<MATH>\vec{E}={{1}\over{4\pi\epsilon_0}}\int\left[{{\rho}\over{R^2}}\hat{\vec{R}}+
{{\dot{\rho}}\over{cR}}\hat{\vec{R}}-{{\dot{\vec{J}}}\over{c^2R}}\right]dV^'</MATH>|21.17}}
Następnym krokiem jest policzenie indukcji pola magnetycznego znając jego potencjał wektorowy {{LinkWzór|21.5}} dla czasu opóźnionego, korzystając przy tym ze wzoru {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, zatem policzmy rotację tego potencjału wektorowego w czasie opóźnionym.
{{CentrujWzór|<MATH>\nabla\times\vec{A}=
{{\mu_0}\over{4\pi}}\int\nabla\times\left({{\vec{J}}\over{R}}\right)dV^'=
{{\mu_0}\over{4\pi}}\int \left[{{\nabla\times\vec{J}}\over{R}}-\vec{J}\times\nabla\left({{1}\over{R}}\right)\right]dV^'</MATH>|21.18}}
Wyznaczmy nasze pomocnicze wyrażenie, które będzie nam potrzebne do dokończenia obliczeń przeprowadzanych w punkcie {{LinkWzór|21.18}}, czyli rotację gęstości prądu objętościowego:
{{CentrujWzór|<MATH>\nabla\times\vec{J}=
\vec{k}_i\epsilon_{ijk}{{\partial}\over{\partial x_j}}J_k=
\vec{k}_i\epsilon_{ijk}{{\partial t_r}\over{\partial x_j}}{{\partial}\over{\partial t_r}}J_k=-\vec{k}_i\epsilon_{ijk}{{1}\over{c}}\nabla R \dot{J}_k=-{{1}\over{c}}\vec{k}_i\epsilon_{ijk}{{x_j}\over{\vec{R}}}\dot{J}_k=-{{1}\over{Rc}}\vec{R}\times\dot{\vec{J}}=
{{1}\over{cR}}\left(\dot{\vec{J}}\times\vec{R}\right)</MATH>|21.19}}
Obliczenia przeprowadzone w punkcie {{LinkWzór|21.19}} pozwalają dokończyć obliczenia rotacji potencjału wektorowego {{LinkWzór|21.18}}, która jest tym samym co wektor indukcji pola magnetycznego:
{{CentrujWzór|<MATH>\vec{B}=\nabla\times\vec{A}={{\mu_0}\over{4\pi}}\int\left\{\left[{{\vec{J}}\over{R^2}}+
{{\dot{\vec{J}}}\over{cR}}\right]\times\hat{\vec{R}}\right\}dV^'</MATH>|21.20}}
Zatem otrzymaliśmy dwa równania całkowe, tzn. dla pola elektrycznego {{LinkWzór|21.17}} i dla pola magnetycznego {{LinkWzór|21.20}}, które zależą od pochodnych czasowych gęstości i prądu ładunku elektrycznego:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MaTH>\vec{E}={{1}\over{4\pi\epsilon_0}}\int\left[{{\rho}\over{R^2}}\hat{\vec{R}}+{{\dot{\rho}}\over{cR}}\hat{\vec{R}}-{{\dot{\vec{J}}}\over{c^2R}}\right]dV^'\;</MATH>|21.20a}}
| 2 = {{CentrujWzór|<MATH>\vec{B}=\nabla\times\vec{A}={{\mu_0}\over{4\pi}}\int\left\{\left[{{\vec{J}}\over{R^2}}+
{{\dot{\vec{J}}}\over{cR}}\right]\times\hat{\vec{R}}\right\}dV^'</MATH>|21.22}}
}}
Jak widzimy pierwszy wzór jest uogólnieniem prawa Coulomba, a drugi uogólnieniem prawa Biota-Savarta. Powyższe wzory dla pola elektrycznego, zależą od pochodnych gęstości objętościowych ładunku elektrycznego i pochodnej gęstości prądu elektrycznego. Te pochodne występują pod kolejnymi potęgami wartości prędkości fal elektromagnetycznych w próżni, a więc uzasadnione jest zastosowanie dla pola elektrycznego {{LinkWzór|21.20a}} w elektromagnetyzmie przypadku jego quasistatycznym {{LinkWzór|1.7|Elektrostatyka}}, których te pochodne można pominąć, podobnie jest dla pola magnetycznego {{LinkWzór|21.22}}, którego jego przypadek quasistatyczny {{LinkWzór|9.5|Wektor_indukcji_magnetycznej}}. Zatem przypadki quasistatyczne dla pola magnetycznego i elektrycznego nie są wcale takie złe. Można powiedzieć, że one są raczej dobrym przybliżeniem opisywania rzeczywistości w elektrostatyce lub magnetostatyce.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
n5wbjmq7fxk3wjb65rcj2ms0ahi0b0f
Elektrodynamika klasyczna/Rozkłady dyskretne ładunków punktowych
0
16986
558890
470182
2026-10-08T01:53:32Z
Persino
2851
558890
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy się zajmować przypadkami, gdy rozkład nie jest w ogólności ciągły, ale dyskretny. Także ich potencjałami, tzn. potencjałem skalarnym i dyskretnym.
== Potencjał skalarny i wektorowy Liénarda-Wiecherta ==
Wyobraźmy sobie pociąg nadjeżdżający do nas, ale znajdujemy się pod pewnym kątem do lokomotywy względem o wartości θ względem toru na którym porusza się pociąg. Niech światło leci do nas z ostatniego końca wagonu zaczepionej do lokomotywy i w odpowiednim czasie ono doleci do nas, wtedy lokomotywa zdążyła przybyć drogę równą L{{Sup|'}}-L w czasie t. Możemy wyrazić prędkość lokomotywy poprzez odległość z jaką lokomotywa zdążyła przebyć podzielonej przez prędkość światła:
{{CentrujWzór|<MATH>v={{L^'-L}\over{t}}\Rightarrow t={{L^'-L}\over{v}}\;</MATH>|22.1}}
W tym czasie wyrażony wzorem {{LinkWzór|22.1}} światła zdążyło przebyć drogę równą L{{Sup|'}}cosθ, zatem stosunek tej drugi przez wspomniany czas jest równy prędkości światła, z którego możemy wyrazić ten właśnie czas:
{{CentrujWzór|<MATH>t={{L^'\cos\theta}\over{c}}\;</MATH>|22.2}}
Przyrównajmy dwa czasy, tzn. {{LinkWzór|22.1}} i {{LinkWzór|22.2}} do siebie, bo one oznaczają to samo, zatem dostajemy równość:
{{CentrujWzór|<MATH>{{L^'\cos\theta}\over{c}}={{L^'-L}\over{v}}\Rightarrow L^'\left({{\cos\theta}\over{c}}-{{1}\over{v}}\right)=-{{L}\over{v}}\Rightarrow
L^'\left({{v\cos\theta-c}\over{vc}}\right)=-{{L}\over{v}}\;</MATH>|22.3}}
Z równania {{LinkWzór|22.3}} możemy wyznaczyć obserwowaną długość pociągu L{{Sup|'}}, ze względu że światło ma skończoną prędkość, zatem tą wielkość piszemy:
{{CentrujWzór|<MATH>L^'{{\left(c-v\cos\theta\right)}\over {c}}=L\Rightarrow
L^'={{Lc}\over{c-v\cos\theta}}\Rightarrow L'={{L}\over{1-\cos\theta{{v}\over{c}}}}\;</MATH>|22.4}}
Jeśli wprowadzimy definicję iloczynu skalarnego do końcowego wzoru {{LinkWzór|22.4}}, ale przedtem odpowiednio definiują jednostkowy wektor {{Formuła|<MATh>\hat{R}\;</MATH>}}, która jest równoległa do kierunku dotarcia światła do obserwatora, ale jego zwrot jest w kierunku jego, zatem wzór na obserwowaną długość pociągu {{LinkWzór|22.4}} możemy napisać:
{{CentrujWzór|<MATH>L^'={{L}\over{1-{{\hat{\vec{R}}\cdot\vec{v}}\over{c}}}}\;</MATH>|22.5}}
Obserwowaną objętość małego elementu przestrzeni jest wyrażona poprzez prawdziwe określenie tej wielkości, to ta się tak dzieje, ponieważ ta fałszywa objętość jest powodowana, jak wcześniej powiedzieliśmy w przypadku długości pociągu, jest powodowana tylko dlatego, że światło potrzebuje czasu ściśle określonego by dotrzeć do obserwatora, zatem nasza rozważana objętość efektywna jest:
{{CentrujWzór|<MATH>V^'={{V}\over{1-{{\hat{\vec{R}}\cdot\vec{v}}\over{c}}}}\;</MATH>|22.6}}
Jeśli będziemy rozważań nieskończenie małe objętości, to wtedy wzór {{LinkWzór|22.6}} przepisujemy, ale z tą zmianką, że rozpatrujemy bardzo małe elementy objętości:
{{CentrujWzór|<MATH>dV^'={{dV}\over{1-{{\hat{\vec{R}}\cdot\vec{v}}\over{c}}}}\;</MATH>|22.7}}
Całkowite pole liczone w czasie rzeczywistym t pochodzi od ładunków z różnych czasów opóźnionych wysłanych przez ładunki z prędkością światła w czasie opóźnionych, jeśli objętość cząstki jest dV w czasie t{{Sup|r}} (nie przedziale), to widoczna objętość jest napisana dV{{Sup|'}}, która pochodzi dla czasów wysłanych przez ładunki w przedziale czasów rzeczywistych (t{{Sub|r}},t{{Sub|r}}+dt{{Sub|r}}) i dlatego używamy objętości dV{{Sup|'}}, a nie dV, w prawie na potencjał skalarny i wektorowy.
=== Położenie, prędkość oraz przyspieszenie w czasie opóźnionym w elektromagnetyzmie ===
{{Rysunek|Pole elektromagnetyczne wysyłane przez ciało o ładunku q w czasie opóźnionym.jpeg|kw1|Odległość R i położenie ciała o ładunku q w czasie opóźnionym}}
Z rysunku obok widzimy, że odległość ładunku q od punktu, w którym liczymy te nasze wspomniane wielkości jest różnicą wektora, w którym liczymy te właśnie potencjały {{Formuła|<MATh>\vec{r}\;</MATh>}} i wektora wodzącego cząstki o ładunku q {{Formuła|<MATH>\vec{w}(t_r)\;</maTH>}} w czasie opóźnionym
{{CentrujWzór|<MATH>\vec{R}=\vec{r}-\vec{w}(t_r)</MATH>|22.8}}
Wektor wodzący {{LinkWzór|22.8}} można policzyć znając położenie początkowe ładunku {{Formuła|<math>\vec{r}_0\;</MATH>}} i przesunięcia cząstki w czasie od t{{Sub|0}} do t{{Sub|r}}.
{{CentrujWzór|<MATH>\vec{w}(t_r)=\vec{r}_0+\int_{t_0}^{t_r}\vec{v}dt=\underbrace{r_0+\int_{t_0}^t\vec v dt}_{\vec r(t)}-\int_t^{t_r}\vec v dt=\vec r(t)+\int_{t_r}^t\vec vdt</MATH>|22.9}}
Wiedząc, że zachodzi tożsamość {{LinkWzór|21.7|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}} dla czasu opóźnionego, zatem możemy policzyć prędkość i przyspieszenie cząstki w czasie t{{Sub|r}} wedle:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\dot{\vec{w}}(t_r)=\vec{v}(t_r)</MATH>|22.10}}
| 2 = {{CentrujWzór|<MATH>\ddot{\vec{w}}(t_r)=\dot{\vec{v}}(t_r)=\vec{a}(t_r)</MATH>|22.11}}
}}
=== Skalarny potencjał pola elektromagnetycznego dla ładunku punktowego ===
Jeśli mamy ładunki punktowe, to należy w tym przypadku użyć delty Diraca pomnożonej przez wartość ładunku q. co mamy:
{{CentrujWzór|<MATH>\rho(\vec{r}^',t_r)dV={{dq^'}\over{dV^'}}dV=q\delta^3\left(\vec r^'-w(t_r)\right)dV=q\delta^3\left[\vec r^'-\left(\vec r(t)+\int_{t_r}^t\vec vdt\right)\right]dV=q\delta^3\left[\left(\vec r^'-\int_{t_r}^t\vec vdt\right)-\vec r(t)\right]dV=\;</MATH>{{Br}}<MATH>=q\delta^3\left(\vec r-\vec r(t)\right)dV\;</MATH>|22.12}}
Potencjał skalarny znany elektromagnetyzmie jest zapisany w punkcie {{LinkWzór|21.4|Rozkłady ciągłe gęstości ładunku i gęstości prądu objętościowego}}, korzystając przy tym z obliczeń przeprowadzonej w punkcie {{LinkWzór|22.12}} na gęstość objętością ładunku elektrycznego punktowego, która jest zawsze równa zero, oprócz jednego punktu, w którym przyjmuje wartość ściśle określoną nieskończoność, wtedy tą wielkość piszemy wedle:
{{CentrujWzór|<MATH>\varphi(\vec{r},t)={{q}\over{4\pi\epsilon_0}}\int{{\delta^3\left(\vec r-\vec r(t)\right)}\over{R}}{{dV}\over{1-{{\hat{\vec{R}}\cdot\vec{v}}\over{c}}}}=
{{q}\over{4\pi\epsilon_0}}{{1}\over{R\left(1-{{\hat{\vec{R}}\cdot\vec{v}}\over{c}}\right)}}=
{{1}\over{4\pi\epsilon_0}}{{qc}\over{Rc-\vec{R}\cdot\vec{v}}}\;</MATH>|22.13}}
=== Wektorowy potencjał pola elektromagnetycznego dla ładunku punktowego ===
Następie zajmijmy się potencjałem wektorowym {{LinkWzór|21.5|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}}, wykorzystując bezpośrednio tożsamość {{LinkWzór|22.7}}, na obserwsowaną infinitezymalną objętość, w której znajduje się ładunek punktowy, zatem te wywody możemy przeprowadzić wedle schematu:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0}\over{4\pi}}\int{{\vec{J}(\vec{r}^',t_r)}\over{R}}dV^'=
{{\mu_0}\over{4\pi}}\int{{\vec{J}(\vec{r}^',t_r)}\over{R}}{{dV}\over{1-{{\hat{\vec{R}}\cdot\vec{v}}\over{c}}}}={{\mu_0}\over{4\pi}}\int{{c\vec{J}(\vec{r}^',t_r)dV}\over{Rc-\vec{R}\cdot\vec{v}}}\;</MATH>|22.14}}
Jeśli dodatkowo policzymy iloczyn infinitezymalnej objętości dV i gęstości prądu w czasie opóźnionych, wtedy to nasze wyrażenie możemy zapisać:
{{CentrujWzór|<MATH>J(\vec{r}^',t_r)dV={{dq}\over{dtdS}}dV={{dq}\over{dSdl}}{{dl}\over{dt}}dV=q\delta^3\left(\vec r^'-w(t_r)\right)vdV=q\delta^3\left(\vec r^'-\vec r(t)\right)vdV=\;</MATH>{{Br}}<MATH>=q\delta^3\left[\vec r^'-\left(\vec r(t)+\int_{t_r}^t\vec vdt\right)\right]vdV=q\delta^3\left[\left(\vec r^'-\int_{t_r}^t\vec vdt\right)-\vec r(t)\right]vdV=q\delta^3\left(\vec r-\vec r(t)\right)vdV</MATH>|22.15}}
Potencjał wektorowy napisany w punkcie {{LinkWzór|22.14}} wedle przeprowadzonych obliczeń {{LinkWzór|22.15}}, który jest iloczynem gęstości prądu objętościowego przez infintezymanlą objętość i innych wielkości, w której ten właśnie prąd przepływa w danym punkcie przestrzeni, piszemy wedle:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_{0}}\over{4\pi}}\int{{q\delta^3\left(\vec r-\vec r(t)\right)c\vec{v}}\over{Rc-\vec{R}\cdot\vec{v}}}={{\mu_{0}}\over{4\pi}}{{qc\vec{v}}\over{Rc-\vec{R}\cdot\vec{v}}}\;</MATH>|22.16}}
Jeśli przyjmować będziemy, że {{Formuła|<MATH>\mu_0\epsilon_0={{1}\over{c^2}}\Rightarrow \mu_0={{1}\over{c^2}}{{1}\over{\epsilon_0}}\;</MATH>}}, to wtedy potencjał wektorowy{{LinkWzór|22.16}} przy definicji potencjału skalarnego {{LinkWzór|22.13}} przepisujemy wzorem wektorowym:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\vec{v}}\over{c^2}}\varphi(\vec{r},t)\;</MATH>|22.17}}
=== Zestawienie wzorów na potencjał skalarny i wektorowy elektryczny ===
Ostatecznie zbierzmy wszystkie wyniki wyprowadzonych wzorów napisanych na potencjał skalarny {{LinkWzór|22.13}} i wektorowy w {{LinkWzór|22.17}}, zatem:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\varphi(\vec{r},t)={{1}\over{4\pi\epsilon_0}}{{qc}\over{Rc-\vec{R}\cdot\vec{v}}}\;</MATH>|22.18}}
| 2 = {{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0}\over{4\pi}}{{qc\vec{v}}\over{Rc-\vec{R}\cdot\vec{v}}}={{\vec{v}}\over{c^2}}\varphi(\vec{r},t)\;</MATH>|22.19}}
}}
== Natężenie pole elektrycznego i indukcja pola magnetycznego dla poruszającego się ładunku punktowego ==
Potencjał skalarny pochodzący od ładunku punktowego q w odległości od niego o R względem danego kierunku jest piszany wzorem {{LinkWzór|22.18}}, zatem dywergencja potencjału skalarnego elektrycznego piszemy wedle:
{{CentrujWzór|<MATH>\nabla\varphi=\nabla\cdot\left({{1}\over{4\pi\epsilon_0}}{{qc}\over{Rc-\vec{R}\cdot\vec{v}}}\right)=
{{qc}\over{4\pi\epsilon_0}}{{-1}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^2}}
\nabla\cdot\left(Rc-\vec{R}\cdot\vec{v}\right)</MATH>|22.20}}
Wyznaczmy dywergencji liczby R, która jest odległością ładunku od punktu w czasie opóźnionym, w której będziemy wyznaczali różne wielkości elektromagnetyczne:
{{CentrujWzór|<MATH>\nabla R=\vec{k}_i{{\partial}\over{\partial x_i}}R=\vec{k}_i {{\partial t_r}\over{\partial x_i}}{{\partial R}\over{\partial t_r}}=\nabla t_r(-c)=-c\nabla t_r</MATH>|22.21}}
Następnym krokiem jest wyznaczenie dywergencji z iloczynu skalarnego wektora odległości między położeniem ładunku a samym ładunkiem, którego zwrot jest w stronę tego punktu w czasie opóźnionym, i prędkości tego właśnie ładuku, według tożsamości udowodnionej w matematyce:
{{CentrujWzór|<MATH>\nabla\cdot(\vec{R}\cdot\vec{v})=
(\vec{R}\cdot\nabla)\vec{v}+(\vec{v}\cdot\nabla)\vec{R}+
\vec{R}\times(\nabla\times\vec{v})+\vec{v}\times(\nabla\times\vec{R})</MATH>|22.22|Obramuj}}
Policzmy pierwszy człon występujący we wzorze {{LinkWzór|22.22}} po jego prawej stronie, korzystając z definicji przyspieszenia cząstki napisanej {{Formuła|<MATH>\vec{a}={{d\vec{v}}\over{dt}}</MATH>}}, wtedy ten wyraz mozna wyrazić:
{{CentrujWzór|<MATH>(\vec{R}\cdot\nabla)\cdot\vec{v}=
\left(R_x{{\partial}\over{\partial x}}+R_y{{\partial}\over{\partial y}}+R_z{{\partial}\over{\partial z}}\right)\vec{v}(t_r)=
R_x{{d\vec{v}}\over{dt_r}}{{\partial t_r}\over{\partial x}}+R_y{{d\vec{v}}\over{dt_r}}{{\partial t_r}\over{\partial y}}+R_z{{d\vec{v}}\over{dt_r}}{{\partial t_r}\over{\partial z}}=\vec{a}\cdot(\vec{R}\cdot\nabla t_r)</MATH>|22.23}}
Teraz policzmy drugi człon wyrażenia {{LinkWzór|22.22}} i potem wyznaczmy kolejne jego otrzymane podwyrazy, by potem w sposób całkowity wyznaczyć to właśnie wyrażenie:
{{CentrujWzór|<MATH>(\vec{v}\cdot\nabla)\vec{R}=
(\vec{v}\cdot\nabla)\vec{r}-(\vec{v}\cdot\nabla)\vec{w}</MATH>|22.24}}
Policzmy pierwszy wyraz występujący we tożsamości {{LinkWzór|22.24}}, wykorzystując definicję iloczynu skalarnego, który występuje w nawiasie w wyrażeniu poniżej i przekonamy się, że końcowe wyrażenie tego samego wyrażenia jest równoważne prędkości cząstki o ładunku Q, czyli źródła pola elektromagnetycznego.
{{CentrujWzór|<MATH>(\vec{v}\cdot\nabla)\vec{r}=\left(v_x{{\partial}\over{\partial x}}+v_y{{\partial}\over{\partial y}}+v_z{{\partial}\over{\partial z}}\right)(x\hat{\vec{x}}+y\hat{\vec{y}}+z\hat{\vec{z}})=v_x\hat{\vec{x}}+v_y\hat{\vec{y}}+v_z\hat{\vec{z}}=\vec{v}</MATH>|22.25}}
Policzmy drugi wyraz występujący we tożsamości {{LinkWzór|22.24}}, wykorzystując definicję iloczynu skalarnego, który występuje w nawiasie w wyrażeniu poniżej i przekonamy się, że końcowe wyrażenie tej samego wyrażenia jest równoważne pewnemu wyrażeniu zależnego od gradientu czasu opóźnionego t{{Sub|r}}, czyli ∇t{{Sub|r}}, które ten gradient później wyznaczymy z obliczeń. Końcowe wyrażenie jak się również przekonamy jest zależna od prędkości ładunku Q.
{{CentrujWzór|<MATH>(\vec{v}\cdot\nabla)\vec{w}=
\left(v_x{{\partial}\over{\partial x}}+v_y{{\partial}\over{\partial y}}+v_z{{\partial}\over{\partial z}}\right)\vec{w}=
\left(v_x{{\partial t_r}\over{\partial x}}{{\partial}\over{\partial t_r}}+v_y{{\partial t_r}\over{\partial y}}{{\partial}\over{\partial t_r}}+v_z{{\partial t_r}\over{\partial z}}{{\partial}\over{\partial t_r}}\right)\vec{w}=\left(\vec{v}\cdot\nabla t_r\right){{\partial}\over{\partial t}}\vec{w}=\vec{v}\left(\vec{v}\cdot\nabla t_r\right)</MATH>|22.26}}
Teraz przejdźmy do trzeciego członu naszego równania {{LinkWzór|22.22}}, wykorzystując przy czym udowodniony wzór {{LinkWzór|21.7|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}} i przez to możemy wykorzystać definicję przyspieszenia cząstki o ładunku q, w końcowych obliczeniach jak się przekonamy, że w wyrażeniu na iloczyn wektorowy występuje gradient czasu opóźnionego t{{Sub|r}} względem współrzędnych kartezjańskich.
{{CentrujWzór|<MATH>\nabla\times\vec{v}=\begin{vmatrix}
\hat{\vec{x}}&\hat{\vec{y}}&\hat{\vec{z}}\\
{{\partial}\over{\partial x}}&{{\partial}\over{\partial y}}&{{\partial}\over{\partial z}}\\
v_x&v_y&v_z\\
\end{vmatrix}=\hat{\vec{x}}\left({{\partial v_z}\over{\partial y}}-{{\partial v_y}\over{\partial z}}\right)+\hat{\vec{y}}\left({{\partial v_x}\over{\partial z}}-{{\partial v_z}\over{\partial x}}\right)+\hat{\vec{z}}\left({{\partial v_y}\over{\partial x}}-{{\partial v_x}\over{\partial y}}\right)=</MATH>{{Br}}
<MATH>=\hat{\vec{x}}\left({{\partial v_z}\over{\partial t_r}}{{\partial t_r}\over{\partial y}}-{{\partial v_y}\over{\partial t_r}}{{\partial t_r}\over{\partial z}}\right)+
\hat{\vec{y}}\left({{\partial v_x}\over{\partial t_r}}{{\partial t_r}\over{\partial z}}-{{\partial v_z}\over{\partial t_k}}{{\partial t_r}\over{\partial x}}\right)+\hat{\vec{z}}\left({{\partial v_y}\over{\partial t_r}}{{\partial t_r}\over{\partial x}}-{{\partial v_x}\over{\partial t_r}}{{\partial t_r}\over{\partial y}}\right)=\nabla t_r\times\vec{a}=-\vec{a}\times\nabla t_r</MATH>|22.27}}
A na sam koniec przejdźmy do ostatniego członu tożsamości {{LinkWzór|22.22}} i wyznaczmy czemu jest równa rotacja wektora położenia danego punktu względem położenia ładunku Q, w której liczymy pewne wielkości elektromagnetyczne, oczywiście w czasie opóźnionym, zatem z definicji {{Formuła|<MATH>\vec{R}\;</MATH>}}, która jest napisana w {{LinkWzór|22.16}} możemy napisać tożsamość:
{{CentrujWzór|<MATH>\nabla\times\vec{R}=\nabla\times\left(\vec{r}-\vec{w}\right)=
\nabla\times\vec{r}-\nabla\times\vec{w}</MATH>|22.28}}
Aby dokończyć wyznaczenia wyrażenia {{LinkWzór|22.28}} wyznaczmy dwa wyrazy występujące w tym samej tożsamości, zatem do dzieła. Wyznaczmy rotację wektora położenia, w której liczymy pewne wielkości pochodzące od pewnego rozkładu ładunków, w ogólności zmieniającego się w czasie, zatem jak się przekonamy, to wyrażenie jest zawsze równe zero.
{{CentrujWzór|<MATH>\nabla\times\vec{r}=\epsilon_{ijk}\nabla_jx_k=\epsilon_{ijk}\delta_{jk}=\epsilon_{ijj}=0</MATH>|22.29}}
A także wyznaczmy drugi wyraz prawej strony tożsamości {{LinkWzór|22.28}}, wykorzystując przy tym definicję prędkości cząstki w czasie opóźnionym {{LinkWzór|22.18}}, a przedtem z {{LinkWzór|21.7|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}}, by potem policzyć tą wspomnianą wielkość. Jak się przekonamy ta wielkość jest zależna od gradientu czasu opóźnionego t{{Sub|r}} i od prędkości cząstki o ładunku Q, czyli źródła pola elektromagnetycznego.
{{CentrujWzór|<MATH>\nabla\times\vec{w}=
\epsilon_{ijk}\nabla_jw_k=\epsilon_{ijk}{{\partial w_k}\over{\partial _r}}{{\partial t_r}\over{\partial x_j}}=
-\epsilon_{ikj}{{\partial w_k}\over{\partial _r}}{{\partial t_r}\over{\partial x_j}}=-\vec{v}\times\nabla t_r</MATH>|22.30}}
Wszystkie wyniki wyznaczone wcześniej w tym podrozdziale wstawiamy do rozważanego pierwotnie wyrażenia {{LinkWzór|22.23}}, wtedy dochodzimy do wniosku, że tą tożsamość zapisujemy wedle:
{{CentrujWzór|<MATH>\nabla(\vec{R}\cdot\vec{v})=
\vec{a}\left(\vec{R}\cdot\nabla t_r\right)+\vec{v}-\vec{v}\left(\vec{v}\cdot\nabla t_r\right)-\vec{R}\times(\vec{a}\times\nabla t_r)
+\vec{v}\times\left(\vec{v}\times\nabla t_r\right)=</MATH>{{Br}}
<MATH>=\vec{a}\left(\vec{R}\cdot\nabla t_r\right)+\vec{v}-\vec{v}(\vec{v}\cdot\nabla t_r)-\vec{a}(\vec{R}\cdot\nabla t_r)+\nabla t_r(\vec{R}\cdot\vec{a})+\vec{v}(\vec{v}\cdot\nabla t_r)-v^2\nabla t_r=\vec{v}+\left(\vec{R}\cdot\vec{a}-v^2\right)\nabla t_r</MATH>|22.31}}
Aby dokończyć obliczenie tożsamości {{LinkWzór|22.31}}, musimy wyznaczyć gradient czasu opóźnionego t{{Sub|r}}, korzystając z definicji czasu opóźnionego {{LinkWzór|21.1|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}}, wtedy przejdźmy do dalszej części tego dowodu.
{{CentrujWzór|<MATH>-c\nabla t_r=\nabla R=\nabla \sqrt{\vec{R}\cdot\vec{R}}=\vec{k}_i{{\partial}\over{\partial x_i}}\sqrt{\vec{R}\cdot\vec{R}}=\vec{k}_i{{{{\partial}\over{\partial x_i}}(\vec{R}\cdot\vec{R})}\over{2\sqrt{\vec{R}\cdot\vec{R}}}}=
{{\nabla(\vec{R}\cdot\vec{R})}\over{2R}}</MATH>|22.32}}
Rozpiszmy gradient długości wektora {{Formuła|<MATH>\vec{R}\;</MATh>}} na sześć składników, ta tożsamość jest szczególnym przypadkiem znanej tożsamości z analizy różniczkowej z matematyki, zatem napiszmy tą tożsamość:
{{CentrujWzór|<MATH>\nabla(\vec{R}\cdot\vec{R})=(\vec{R}\cdot\nabla)\vec{R}+(\vec{R}\cdot\nabla)\vec{R}+\vec{R}\times(\nabla\times\vec{R})+\vec{R}\times(\nabla\times\vec{R})=2(\vec{R}\cdot\nabla)\vec{R}+2\vec{R}\times(\nabla\times\vec{R})</MATH>|22.33}}
Zatem możemy dokończyć wyznaczenie tożsamości {{LinkWzór|22.32}}, korzystając przy tym z obliczonej dla naszego przypadku wyrażenia {{LinkWzór|22.33}}, zatem przejdźmy do wyznaczenia tego wyrażenia:
{{CentrujWzór|<MATH>-c\nabla t_r={{1}\over{R}}\left[\left(\vec{R}\cdot\nabla\right)\vec{R}+\vec{R}\times\left(\nabla\times\vec{R}\right)\right]</MATH>|22.34}}
Aby powyższe wyrażenie {{LinkWzór|22.34}} dokończyć satysfakcjonująco wykorzystajmy tożsamość {{LinkWzór|22.16}} do składnika pierwszego występująca wspomnianej tożsamości pod znakiem różniczkowania, zatem dokonajmy pewnych obliczeń pomocniczych wedle sposobu przestawionego poniżej:
{{CentrujWzór|<MATH>(\vec{R}\cdot\nabla)\vec{R}=(\vec{R}\cdot\nabla)r-(\vec{R}\cdot\nabla)\vec{w}</MATH>|22.35}}
Wyznaczmy pierwszy wyraz występujący po prawej stronie obliczonej tożsamości {{LinkWzór|22.35}}
{{CentrujWzór|<MATH>(\vec{R}\cdot\nabla)\vec{r}=(R_x{{\partial}\over{\partial x}}+R_y{{\partial}\over{\partial y}}+R_z{{\partial}\over{\partial z}})(x\hat{\vec{x}}+y\hat{\vec{y}}+z\hat{\vec{z}})=\vec{R}</MATH>|22.36}}
A także napiszmy drugi wyraz czemu jest on równy w prawej stronie tej samej co poprzednio tożsamości, wtedy wykorzystując tożsamość {{LinkWzór|21.7|Rozkłady ciągłe gęstości ładunku i gęstości prądu objętościowego}}, a także wzór na prędkość cząstki {{LinkWzór|22.18}}, zatem dostajemy wzór, w której nie znamy jeszcze gradientu czasu opóźnionego t{{Sub|r}}.
{{CentrujWzór|<MATH>(\vec{R}\cdot\nabla)\vec{w}=\left(R_x{{\partial}\over{\partial x}}+R_y{{\partial}\over{\partial y}}+R_z{{\partial}\over{\partial z}}\right)\vec{w}=\left(R_x{{\partial t_r}\over{\partial x}}{{\partial}\over{\partial t_r}}+R_y{{\partial t_r}\over{\partial y}}{{\partial}\over{\partial t_r}}+R_z{{\partial t_r}\over{\partial z}}{{\partial}\over{\partial t_r}}\right)\vec{w}=\left(\vec{R}\nabla t_r\right)\vec{v}</MATH>|22.37}}
Mając te wszystkie dane możemy wrócić do wyznaczenia wyrażenia {{LinkWzór|22.34}} mając już wcześniej obliczone wyrażenia, będziemy mogli wyznaczyć czemu jest równy gradient czasu opóźnionego t{{Sub|r}}.
{{CentrujWzór|<MATH>-c\nabla t_r={{1}\over{R}}\left[\vec{R}-v(\vec{R}\cdot\nabla t_r)+\vec{R}\times(\vec{v}\times\nabla t_r)\right]={{1}\over{R}}\left[\vec{R}-\vec{v}(\vec{R}\cdot\nabla t_r)+
\vec{v}(\vec{R}\nabla t_r)-\nabla t_r(\vec{R}\vec{v})\right]=
{{1}\over{R}}\left[\vec{R}-(\vec{R}\vec{v})\nabla t_r\right]</MATH>|22.38}}
Z obliczeń przeprowadzonych w punkcie {{LinkWzór|22.38}} możemy wyznaczyć wtedy gradient czasu opóźnionego t{{Sub|r}} jako funkcję wektora prędkości ładunku Q i wektora łączącego ładunek Q z punktem, w której będziemy wyznaczać pewne wielkości elektromagnetyczne, o zwrocie do tego punktu, zatem ten gradient wspomnianej wielkości fizycznej piszemy wedle sposobu.
{{CentrujWzór|<MATH>\nabla t_r\left((-c+{{1}\over{R}}(\vec{R}\vec{v})\right)={{1}\over{R}}\vec{R}\Rightarrow\nabla t_r\left(-cR+\vec{R}\cdot\vec{v}\right)=\vec{R}\Rightarrow\nabla t_r={{\vec{R}}\over{-cR+\vec{R}\cdot\vec{v}}}={{-\vec{R}}\over{cR-\vec{R}\cdot\vec{v}}}</MATH>|22.39}}
Zatem już możemy dokończyć obliczenie gradientu potencjału skalarnego, znając już policzony gradient czasu opóźnionego napisaną we końcowym wniosku w punkcie {{LinkWzór|22.39}}, zatem ostateczna wersja tego gradientu piszemy w postaci:
{{CentrujWzór|<MATH>\nabla\varphi={{qc}\over{4\pi\epsilon_0}}{{-1}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^2}}\left[-c^2\nabla t_r-\vec{v}-(\vec{R}\cdot\vec{a}-v^2)\nabla t_r\right]={{qc}\over{4\pi\epsilon_0}}{{1}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^2}}\left[\vec{v}+\left(c^2-v^2+\vec{R}\cdot\vec{a}\right)\nabla t_r\right]=\;</MATH>{{Br}}<MATH>={{qc}\over{4\pi\epsilon_0}}{{1}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^2}}
\left[\vec{v}+\left(c^2-v^2+\vec{R}\cdot\vec{a}\right){{-\vec{R}}\over{Rc-\vec{R}\cdot\vec{v}}}\right]={{qc}\over{4\pi\epsilon_0}}{{1}\over{\left(Rc-\vec{R}\vec{v}\right)^3}}\left[
\vec{v}(Rc-\vec{R}\cdot\vec{v})-(c^2-v^2+\vec{R}\vec{a})\vec{R}
\right]</MATH>|22.40}}
Następnie policzmy pochodną cząstkową potencjału wektorowego, korzystając przy tym ze wzoru na potencjał wektorowy zdefiniowanej poprzez potencjał skalarny {{LinkWzór|22.18}}, dalej wykorzystujemy twierdzenie o pochodnej iloczynu dla wyrażenia pewnego wektorowego.
{{CentrujWzór|<MATH>{{\partial\vec{A}}\over{\partial t}}={{\partial}\over{\partial t}}\left({{\vec{v}}\over{c^2}}\varphi\right)=
{{{{\partial\vec{v}}\over{\partial t}}}\over{c^2}}\varphi+{{\vec{v}}\over{c^2}}{{\partial\varphi}\over{\partial t}}=
{{\vec{a}}\over{c^2}}{{\partial t_r}\over{\partial t}}\varphi+{{\vec{v}}\over{c^2}}{{\partial\varphi}\over{\partial t}}
</MATH>|22.41}}
Policzmy pochodną cząstkową czasu opóźnionego t{{Sub|r}} względem czasu t, wykorzystując jego definicję napisaną w {{LinkWzór|21.1|Rozkłady ciągłe gęstości ładunku i gęstości prądu objętościowego}}:
{{CentrujWzór|<MATH>{{\partial t_r}\over{\partial t}}={{\partial t}\over{\partial t}}-{{1}\over{c}}{{\partial R}\over{\partial t}}=1-{{1}\over{c}}{{\partial R}\over{\partial x_i}}{{\partial x_i}\over{\partial t}}=
1-{{1}\over{c}}\nabla R\vec{v}=1+\nabla t_r\vec{v}=1-{{-\vec{R}}\over{Rc-\vec{R}\cdot\vec{v}}}\vec{v}=
1+{{\vec{R}\vec{v}}\over{Rc-\vec{R}\cdot\vec{v}}}=\;</MATH>{{Br}}<MATH>=
{{Rc-\vec{R}\cdot\vec{v}+\vec{R}\cdot\vec{v}}\over{Rc-\vec{R}\cdot\vec{v}}}={{Rc}\over{Rc-\vec{R}\cdot\vec{v}}}</MATH>|22.42}}
Następnie wyznaczmy cząstkową pochodną potencjału skalarnego zdefiniowanej w linijce {{LinkWzór|22.18}} względem czasu rzeczywistego t znając już obliczoną pochodną cząstkową czasu opóźnionego t{{Sub|r}} względem czasu rzeczywistego t, zatem do dzieła.
{{CentrujWzór|<MATH>{{\partial\varphi}\over{\partial t}}=
{{-1}\over{4\pi\epsilon_0}}{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^2}}\left[
c{{\partial R}\over{\partial t}}-{{\partial \vec{R}}\over{\partial t}}\cdot\vec{v}-\vec{R}\cdot{{\partial v}\over{\partial t}}
\right]={{-1}\over{4\pi\epsilon_0}}{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^2}}\Bigg[
c^2\left(1-{{\partial t_r}\over{\partial t}}\right)-\vec{v}{{\partial}\over{\partial t_r}}\left(\vec{r}-\vec{w}\right){{\partial t_r}\over{\partial t}}\;</MATH>{{Br}}<MATH>-\vec{R}{{\partial\vec{v}}\over{\partial t_r}}{{\partial t_r}\over{\partial t}}
\Bigg]={{-1}\over{4\pi\epsilon_0}}{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^2}}\left[
c^2\left(1-{{Rc }\over{Rc-\vec{R}\cdot\vec{v}}}\right)+\vec{v}^2{{Rc}\over{Rc-\vec{v}\cdot\vec{R}}}-\vec{R}\vec{a}{{ Rc}\over{Rc-\vec{R}\cdot\vec{v}}}
\right]={{-1}\over{4\pi\epsilon_0}}\cdot\;</MATH>{{Br}}<MATH>\cdot{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\left[
-c^2\vec{R}\cdot\vec{v}+v^2 Rc-Rc\vec{R}\cdot\vec{a}
\right]</MATH>|22.43}}
Wyznaczmy pochodną cząstkową względem czasu rzeczywistego wielkości fizycznej zwanej potencjałem wektorowym, przy tym korzystając z pochodnej cząstkowej względem czasu rzeczywistego t wielkości czasu opóźnionego t{{Sub|r}}.
{{CentrujWzór|<MATH>{{\partial\vec{A}}\over{\partial t}}={{\vec{a}}\over{c^2}}{{\partial t_r}\over{\partial t}}\varphi+{{\vec{v}}\over{c^2}}{{\partial\varphi}\over{\partial t}}=-{{\vec{a}Rc}\over{c^2(Rc-\vec{R}\cdot\vec{v})}}{{1}\over{4\pi\epsilon_0}}{{qc}\over{Rc-\vec{R}\cdot\vec{v}}}+{{\vec{v}}\over{c^2}}{{-1}\over{4\pi\epsilon_0}}{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\left[
-c^2\vec{R}\cdot\vec{v}+v^2 Rc-Rc\vec{R}\cdot\vec{a}
\right]=</MATH>{{Br}}
<MATH>={{1}\over{4\pi\epsilon_0}}{{qc}\over{c^2\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\left[
\vec{a}Rc(Rc-\vec{R}\vec{v})+c^2\vec{v}(\vec{R}\cdot\vec{v})-v^2Rc\vec{v}+\vec{v}Rc(\vec{R}\cdot\vec{a})
\right]=</MATH>{{Br}}
<MATH>={{1}\over{4\pi\epsilon_0}}{{qc}\over{c^2\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\Big[
\vec{a}Rc(Rc-\vec{R}\cdot\vec{v})-c^2\vec{v}Rc+c^2\vec{v}Rc+
c^2\vec{v}\left(\vec{R}\cdot\vec{v}\right)-v^2Rc\vec{v}+\vec{v}Rc(\vec{R}\cdot\vec{a})
\Bigg]=\;</MATH>{{Br}}<MATH>={{1}\over{4\pi\epsilon_0}}{{qc}\over{c^2\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}
\Bigg[\vec{a}Rc\left(Rc-\vec{R}\cdot\vec{v}\right)-c^2\vec{v}(Rc-\vec{R}\cdot\vec{v})+\vec{v}\left(c^2Rc-v^2Rc+\vec{R}\cdot\vec{a}Rc\right)
\Bigg]=</MATH>{{Br}}
<MATH>={{1}\over{4\pi\epsilon_0}}{{qc}\over{c^2\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\Bigg[
(Rc-\vec{R}\cdot\vec{v})(\vec{a}Rc-c^2\vec{v})+\vec{v}R\left(c^3-v^2 c+\vec{R}\cdot\vec{a}c
\right)\Bigg]=</MATH>{{Br}}
<MATH>={{1}\over{4\pi\epsilon_0}}{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\left[
(Rc-\vec{R}\cdot\vec{v})(-\vec{v}+{{\vec{a}R}\over{c}})+
\vec{v}{{R}\over{c}}\left(c^2-v^2+\vec{R}\cdot\vec{a}\right)\right]</MATH>|22.44}}
Mając już obliczone gradient potencjału elektrycznego {{LinkWzór|22.40}}, a także możemy otrzymać pierwszą pochodną cząstkową potencjału wektorowego względem czasu {{LinkWzór|22.41}}, co do którego podstawiamy wzory pochodną cząstkową czasu opóźnionego t{{Sub|r}} względem czasu t {{LinkWzór|22.42}}, a także następną policzoną tożsamość {{LinkWzór|22.43}}, zatem natężenie pola elektrycznego z jego definicji {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} poprzez potencjał skalarny i wektorowy możemy napisać wedle:
{{CentrujWzór|<MATH>\vec{E}=-\nabla\varphi-{{\partial\vec{A}}\over{\partial t}}=
-{{qc}\over{4\pi\epsilon_0}}{{1}\over{\left(Rc-\vec{R}\vec{v}\right)^3}}\left[
\vec{v}(Rc-\vec{R}\cdot\vec{v})-(c^2-v^2+\vec{R}\vec{a})\vec{R}
\right]+</MATH>{{Br}}
<MATH>-{{1}\over{4\pi\epsilon_0}}{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\left[
(Rc-\vec{R}\cdot\vec{v})(-\vec{v}+{{\vec{a}R}\over{c}})+
\vec{v}{{R}\over{c}}\left(c^2-v^2+\vec{R}\cdot\vec{a}\right)\right]=</MATH>{{Br}}
<MATH>={{-1}\over{4\pi\epsilon_0}}{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\left[
(Rc-\vec{R}\cdot\vec{v})\left(\vec{v}-\vec{v}+{{\vec{a}R}\over{c}}\right)+\left(c^2-v^2+\vec{R}\cdot\vec{a}\right))\left(-\vec{R}+\vec{v}{{R}\over{c}}\right)
\right]=</MATH>{{Br}}
<MATH>={{-1}\over{4\pi\epsilon_0}}{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\left[
\left(Rc-\vec{R}\cdot\vec{v}\right){{\vec{a}R}\over{c}}-\left(c^2-v^2+\vec{R}\cdot\vec{a}\right)\left(\vec{R}-\vec{v}{{R}\over{c}}\right)\right]=</MATH>{{Br}}
<MATH>={{-1}\over{4\pi\epsilon_0}}{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\left[
-{{R}\over{c}}\left(c^2-v^2\right)\left(c\hat{\vec{R}}-\vec{v}\right)-\vec{R}\cdot\vec{a}\left(\vec{R}-\vec{v}{{R}\over{c}}\right)+\left(Rc-\vec{R}\cdot\vec{v}\right){{\vec{a}R}\over{c}}
\right]=</MATH>{{Br}}
<MATH>={{-1}\over{4\pi\epsilon_0}}{{qc}\over{\left(\vec{R}\cdot\left(\hat{\vec{R}}c-\vec{v}\right)\right)^3}}\left[
-{{R}\over{c}}\left(c^2-v^2\right)\left(c\hat{\vec{R}}-\vec{v}\right)-{{R}\over{c}}\left(\vec{R}\cdot\vec{a}\right)\left(\hat{\vec{R}}c-\vec{v}\right)+\vec{R}\cdot\left(\hat{\vec{R}}c-\vec{v}\right){{\vec{a}R}\over{c}}
\right]</MATH>|22.45}}
Wprowadźmy nową zmienną wektorową nazywijmy go <math>\vec{u}\;</MATH>, którego definicja jest napisana poprzez odległość ładunku q od ładunku Q w czasie opóźnionym, zależna jest ona też od prędkości małego ładunku q.
{{CentrujWzór|<MATH>\vec{u}=c\hat{\vec{R}}-\vec{v}</MATH>|22.46}}
Możemy wykorzystać podstawienie {{LinkWzór|22.46}}, które wykorzystamy we wzorze na natężenie pola elektrycznego we wzorze o numerze {{LinkWzór|22.45}}, by potem dostać bardziej uproszczoną równość:
{{CentrujWzór|<MATH>\vec{E}={{1}\over{4\pi\epsilon_0}}{{qR}\over{(\vec{R}\cdot\vec{u})^3}}\left[
(c^2-v^2)\vec{u}+(\vec{R}\cdot\vec{a})\vec{u}-(\vec{R}\cdot\vec{u})\vec{a}
\right]={{1}\over{4\pi\epsilon_0}}{{qR}\over{\left(\vec{R}\cdot\vec{u}\right)^3}}\left[(c^2-v^2)\vec{u}+
\vec{R}\times\left(\vec{u}\times\vec{a}\right)\right]</MATH>|22.47}}
Następnym krokiem jest obliczenie indukcji magnetycznej pola magnetycznego, korzystając przy tym z definicji indukcji pola magnetycznego poprzez potencjał wektorowy magnetyczny, co jego definicję piszemy wzorem {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, dalej podstawiając do tej definicji definicję potencjału wektorowego napisanego dla naszego przypadku w punkcie {{LinkWzór|22.19}}, co do którego tego ostatniego podstawiamy definicję potencjału skalarnego napisaną w linijce {{LinkWzór|22.16}}.
{{CentrujWzór|<MATH>\vec{B}=\nabla\times\vec{A}=
\nabla\times\left({{\vec{v}}\over{c^2}}\varphi\right)=
{{1}\over{c^2}}\vec{k}_i\epsilon_{ijk}\nabla_j(v_k\varphi)=
{{1}\over{c^2}}\vec{k}_i\epsilon_{ijk}v_k\nabla_j\varphi+
{{1}\over{c^2}}\vec{k}_i\epsilon_{ijk}\varphi\nabla_j v_k=</MATH>{{Br}}
<MATH>=-{{1}\over{c^2}}\vec{k}_i\epsilon_{ikj}v_k\nabla_j\varphi+
{{1}\over{c^2}}\vec{k}_i\epsilon_{ijk}\varphi\nabla_j v_k=
-{{1}\over{c^2}}\vec{v}\times(\nabla\varphi)+{{1}\over{c^2}}\varphi\nabla\times\vec{v}=
{{1}\over{c^2}}\varphi\nabla\times\vec{v}-{{1}\over{c^2}}\vec{v}\times(\nabla\varphi)=</MATH>{{Br}}
<MATH>={{1}\over{c^2}}{{1}\over{4\pi\epsilon_0}}{{qc}\over{Rc-\vec{R}\cdot\vec{v}}}\vec{a}\times{{\vec{R}}\over{Rc-\vec{R}\cdot\vec{v}}}-{{1}\over{c^2}}\vec{v}\times\left\{
{{1}\over{4\pi\epsilon_0}}{{qc}\over{\left(Rc-\vec{R}\cdot\vec{v}\right)^3}}\left[
(Rc-\vec{R}\cdot\vec{v})\vec{v}-(c^2-v^2+\vec{R}\cdot\vec{a})\vec{R}
\right]
\right\}=</MATH>{{Br}}
<MATH>={{1}\over{4\pi\epsilon_0 c}}{{q}\over{(\vec{R}\cdot\vec{u})^3}}\left[
(Rc-\vec{R}\cdot\vec{v})\vec{a}\times\vec{R}-\vec{v}\times\vec{v}(Rc-\vec{R}\cdot\vec{v})+\vec{v}\times\vec{R}(c^2-v^2+\vec{R}\cdot\vec{a}\right]=</MATH>{{Br}}
<MATH>={{1}\over{4\pi\epsilon_0 c}}{{q}\over{(\vec{R}\cdot\vec{u})^3}}\left[
(\vec{R}\cdot\vec{u})\vec{a}\times\vec{R}+(\vec{v}\times\vec{R})(c^2-v^2+\vec{R}\cdot\vec{a})
\right]=-{{1}\over{4\pi\epsilon_0 c}}{{q}\over{(\vec{R}\cdot\vec{u})^3}}\vec{R}\times\left[
\vec{a}(\vec{R}\cdot\vec{u})+\vec{v}(c^2-v^2)+\vec{v}(\vec{R}\cdot\vec{a})
\right]</MATH>|22.48}}
Wyznaczmy wyrażenie poniżej, które jest wprost proporcjonalne do iloczynu wektorowego położenia ładunku q względem ładunku Q w czasie opóźnionym i natężenia pola elektrycznego napisaną w {{LinkWzór|22.42}}, i przekonamy się, że ta wielkość jest to po prostu wektor indukcji pola magnetycznego napisanej dla nas w punkcie {{LinkWzór|22.45}}.
{{CentrujWzór|<MATH>{{1}\over{c}}\hat{\vec{R}}\times\vec{E}=
{{1}\over{c}}\hat{\vec{R}}\times\left\{
{{1}\over{4\pi\epsilon_0}}{{qR}\over{\left(\vec{R}\cdot\vec{u}\right)^3}}\left[(c^2-v^2)\vec{u}+
\vec{R}\times\left(\vec{u}\times\vec{a}\right)\right]
\right\}={{1}\over{4\pi\epsilon_0 c}}{{q}\over{(\vec{R}\cdot\vec{u})}}\vec{R}\times\left[
(c^2-v^2)\vec{u}+\vec{R}\times(\vec{u}\times\vec{a})\right]=</MATH>{{Br}}<MATH>={{1}\over{4\pi\epsilon_0c}}{{q}\over{(\vec{R}\cdot\vec{u})^2}}\vec{R}\times\left[
(c^2-v^2)c\hat{\vec{R}}-(c^2-v^2)\vec{v}+\vec{u}(\vec{R}\cdot\vec{a})-\vec{a}(\vec{R}\cdot\vec{u})
\right]=\;</MATH>{{Br}}<MATH>{{1}\over{4\pi\epsilon_0c}}{{q}\over{\left(\vec{R}\cdot\vec{u}\right)^3}}\vec{R}\times\left[
(c^2-v^2)c\hat{\vec{R}}-(c^2-v^2)\vec{v}+c\hat{\vec{R}}(\vec{R}\cdot\vec{a})-\vec{v}(\vec{R}\cdot\vec{a})-a(\vec{R}\cdot\vec{u})
\right]=</MATH>{{Br}}
<MATH>={{1}\over{4\pi\epsilon_0 c}}{{q}\over{\left(\vec{R}\cdot\vec{u}\right)^3}}\left[
-(c^2-v^2)\vec{v}-\vec{v}(\vec{R}\cdot\vec{a})-\vec{a}(\vec{R}\cdot\vec{u})
\right]=-{{1}\over{4\pi\epsilon_0 c}}{{q}\over{(\vec{R}\cdot\vec{u})^3}}\vec{R}\times\left[
(c^2-v^2)\vec{v}+\vec{v}(\vec{R}\cdot\vec{a})+\vec{a}(\vec{R}\cdot\vec{u})
\right]=\vec{B}</MATH>|22.49}}
Udowodniliśmy według przeprowadzonych obliczeń {{LinkWzór|22.49}}, że indukcja pola magnetycznego napisana w punkcie {{LinkWzór|22.48}} jest wektorem prostopadłym do wektora natężenia pola elektrycznego {{LinkWzór|22.45}}:
{{CentrujWzór|<MATH>\vec{B}={{1}\over{c}}\hat{\vec{R}}\times\vec{E}</MATH>|22.50}}
Napiszmy siłę Lorentza {{LinkWzór|8.3|Magnetostatyka}} działający na ładunek Q poruszający się z prędkością {{Formuła|<MATH>\vec{V}</MATH>}}, w którym natężenie pola elektrycznego jest napisane wzorem {{LinkWzór|22.45}}, a indukcja pola magnetycznego wzorem {{LinkWzór|22.48}}, zatem podstawiając te wielkości na definicję siły Lorentza w elektromagnetyzmie, w ten sposób dostajemy wzór na tą opisywaną tutaj wielkość.
{{CentrujWzór|<MATh>\vec{F}={{qQ}\over{4\pi\epsilon_0}}{{R}\over{(\vec{R}\cdot\vec{u})^3}}\left\{
\left[(c^2-v^2)\vec{u}+\vec{R}\times(\vec{u}\times\vec{a})\right]+
{{\vec{V}}\over{c}}\times\left[(c^2-v^2)\vec{u}+\vec{R}\times(\vec{u}\times\vec{a})\right]
\right\}</MATH>|22.51|Obramuj}}
Powyższa siła jest obliczona w czasie opóźnionym, powyższy wzór wynika z praw elektrodynamiki Maxwella i siły Lorentza, a więc cała elektrodynamika zawarta jest w tym równaniu, jak widzimy zależy ona od przyspieszenia cząstki naładowanej {{Formuła|<MATH>\vec{a}</MATH>}} i jej prędkości {{Formuła|<MATH>\vec{v}</MATH>}} i jego ładunku q, oraz prędkości cząstki {{Formuła|<MATH>\vec{V}</MATH>}} na którą działa pole pochodząca od ładunku Q, który jest jakoby źródłem pola elektromagnetycznego.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
dp19oftkhq24853vqo4nboxj8xuegu4
Elektrodynamika klasyczna/Promieniowanie elektromagnetyczne
0
17023
558891
474407
2026-10-08T02:03:45Z
Persino
2851
558891
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Dotychczas mówiliśmy o płaskich falach elektromagnetycznych bez omówienia jak one powstają. Źródłem fal elektromagnetycznych jest rozkład ładunków elektrycznych, który się w czasie zmienia.
Ale one muszą poruszać się ruchem przyspieszonym albo w przypadku prądów muszą być to prądy zmienne. Fale elektromagnetyczne rozchodzą się do nieskończoności od ich źródła.
Oznaką natężenia energii fali elektromagnetycznej jest wektor Poytinga, którą liczymy dla r→∞. Odległość źródła do odbiornika jest bardzo duża. Całkowita moc przechodząca przez daną powierzchnię określana jest przez:
{{CentrujWzór|<MATH>P(r)=\oint \vec{P}\cdot d\vec{S}=\oint (\vec{E}\times\vec{H})d\vec{S}={{1}\over{\mu_0}}\oint(\vec{E}\times\vec{B})\cdot d\vec{S}\;</MATH>|23.1}}
Całkowitą moc wypromieniowana jest pisana przez {{LinkWzór|23.1}} dla bardzo dużego r, czyli praktycznie dla r, mówiąc matematycznie dążącego do nieskończoności, jako:
{{CentrujWzór|<MATH>P_{wyp}=\lim_{r\rightarrow\infty}P(r)</MATH>|23.2}}
== Promieniowanie pochodzące od dipola elektrycznego ==
{{Rysunek|Promieniowanie od dipola elektrycznego.jpg|lk2|Promieniowanie elektromagnetyczne pochodzące od dipola elektrycznego}}
Wyobraźmy sobie taką sytuację, że dwie metalowe sfery są odległe od siebie o odległość równą d. W chwili określonej przez t ładunek na górnej sferze jest równy q(t), a na dolnej -q(t). Ładunek na górnej sferze jest rysowany:
{{CentrujWzór|<MATH>q(t)=q_0\cos(\omega t)\;</MATH>|23.3}}
Moment dipolowy elektryczny z jego definicji przedstawiony jest w punkcie {{LinkWzór|6.6|Elementarne_właściwości_materii_w_polu_elektrostatycznym}}, stąd jego zależność w czasie na podstawie {{LinkWzór|23.3}} zmienia się w sposób harmoniczny określamy przez:
{{CentrujWzór|<MATH>\vec{p}(t)=p_0\cos(\omega t)\hat{\vec{z}}\;</MATH>|23.4}}
* gdzie: p{{Sub|0}}=q{{Sub|0}}d, określa maksymalną wartość momentu dipolowego jaką może posiadać nasz rozważany układ elektryczny dipolowy.
Potencjał w punkcie O od dipola elektrycznego jest zależny od odległości poszczególnych ładunków pochodzących od tego dipola, tzn. od R{{Sub|+}} i R{{Sub|-}}, i jest określany wzorem {{LinkWzór|5.1|Rozwinięcia_kwadrupolowe}}. Jeśli do tego wzoru podstawimy wyrażenie {{LinkWzór|23.3}} i zamieniając czas rzeczywisty na czas opóźniony {{LinkWzór|21.1|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}}:
{{CentrujWzór|<MATH>\varphi(\vec{r})={{1}\over{4\pi\epsilon_0}}
\left\{{{q_0\cos\left[\omega(t-{{R_+}\over{c}})\right]}\over{R_+}}-{{q_0\cos\left[\omega(t-{{R_-}\over{c}})\right]}\over{R_-}}\right\}\;</MATH>|23.5}}
Następnym naszym krokiem jest wykorzystanie przybliżonego wzoru na odwrotność wielkości R{{Sub|±}}, czyli wielkości napisanej w {{LinkWzór|5.4|Rozwinięcia_kwadrupolowe}}, a także samej wielkości R{{Sub|±}}, zatem wyznaczmy wyrażenie pomocnicze w sposób przybliżony:
{{CentrujWzór|<MATH>\cos\left[\omega\left(t-{{R_{\pm}}\over{c}}\right)\right]=
\cos\left\{\omega\left[t-{{r}\over{c}}\left(1\mp{{d}\over{2r}}\cos\phi\right)\right]\right\}=
\cos\left[\omega\left(t-{{r}\over{c}}\right)\pm {{\omega d}\over{2c}}\cos\phi\right]=\;</math>{{Br}}<MATH>=\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\cos\left({{\omega d}\over{2c}}\cos\phi\right)\mp\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\sin\left({{\omega d}\over{2c}}\cos\phi\right)\;</MATH>|23.6}}
W naszych obliczeniach zakładamy, że odległość pomiędzy ładunkami w dipolu elektrycznym jest o wiele mniejsza od stosunku wartości prędkości światła i częstotliwości kołowej z jaką zmienia się ładunek na naszym dipolu w czasie, co zapisujemy jako: {{Formuła|<MATH>d<<{{c}\over{\omega}}\;</MATH>}}, stąd wniosek, że ostatni czynnik występującego w punkcie {{LinkWzór|23.6}} spełnia warunek:
{{CentrujWzór|<MATH>{{\omega d}\over{2c}}\cos\phi<<{{\omega}\over{2c}}{{c}\over{\omega}}\cos\phi={{1}\over{2}}\cos\phi<{{1}\over{2}}\Rightarrow
{{\omega d}\over{2c}}\cos\phi<<{{1}\over{2}}\;</MATH>|23.7}}
zatem możemy dokonać przybliżenia w postaci sinφ≈φ, a także cosφ≈ 1, zatem wyrażenie {{LinkWzór|23.6}} możemy napisać w postaci przybliżonej:
{{CentrujWzór|<MATH>\cos\left[\omega\left(t-{{R_{\pm}}\over{c}}\right)\right]\simeq
\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\mp{{\omega d}\over{2c}}\cos\phi\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\;</MATH>|23.8}}
Mając przybliżony wzór {{LinkWzór|23.8}}, a także wzór na odwrotność wielkości R{{Sub|±}} {{LinkWzór|5.4|Rozwinięcia_kwadrupolowe}}, i to wszystko podstawiamy do wzoru {{LinkWzór|23.5}}, wtedy dostajemy wyrażenie na wartość przybliżoną potencjału elektrycznego wytwarzanej przez układ dwóch ładunków:
{{CentrujWzór|<MATH>\varphi(\vec{r})={{q_0}\over{4\pi\epsilon_0}}\Bigg\{
{{1}\over{r}}\left(1+{{d}\over{2r}}\cos\phi\right)\left\{
\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]-{{\omega d}\over{2c}}\cos\phi\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\right\}-
{{1}\over{r}}\left(1-{{d}\over{2r}}\cos\phi\right)\cdot\;</MATH>{{Br}}<MATH>\cdot\left\{
\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]+{{\omega d}\over{2c}}\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]
\right\}
\Bigg\}={{q_0}\over{4\pi\epsilon_0}}\Bigg\{
{{1}\over{r}}\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\left(1+{{d}\over{2r}}\cos\phi-1+{{d}\over{2r}}\cos\phi\right)+</math>{{Br}}
<math>+{{\omega d}\over{2cr}}\cos\phi\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\left[
-1-{{d}\over{2r}}\cos\phi-1+{{d}\over{2r}}\cos\phi
\right]
\Bigg\}={{q_0 d\cos\phi}\over{4\pi\epsilon_0 r}}\left[-{{\omega}\over{c}}\sin\left(\omega\left(t-{{r}\over{c}}\right)\right)+{{1}\over{r}}\cos\left(\omega\left(t-{{r}\over{c}}\right)\right)\right]=</MATH>{{Br}}
<MATH>={{p_0\cos\phi}\over{4\pi\epsilon_0 r}}\left[-{{\omega}\over{c}}\sin\left(\omega\left(t-{{r}\over{c}}\right)\right)+{{1}\over{r}}\cos\left(\omega\left(t-{{r}\over{c}}\right)\right)\right]</MATH>|23.9}}
Interesują nas duże odległości, zatem przyjmijmy następne przybliżenie, które spełnia wzór: {{Formuła|<MATH>r>>{{c}\over{\omega}}\Rightarrow{{1}\over{r}}<<{{\omega}\over{c}}</MATH>}}, zatem we wzorze {{LinkWzór|23.9}} możemy pominąć drugi człon w tej tożsamości, zatem tą wspomnianą równość piszemy:
{{CentrujWzór|<MATH>\varphi(r,\phi,t)=-{{p_0\omega}\over{4\pi\epsilon_0 c}}\left({{\cos\phi}\over{r}}\right)\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]</MaTH>|23.10}}
Znając zależność ładunków q(t) od czasu na końcach dipola elektrycznego wedle zależności {{LinkWzór|23.3}} możemy z definicji natężenia prądu elektrycznego napisać jego wartość:
{{CentrujWzór|<MATH>\vec{I}(t)={{dq}\over{dt}}\hat{\vec{z}}=\hat{\vec{z}}{{d}\over{dt}}q_0\cos(\omega t)=-q_0\omega \sin(\omega t)\hat{\vec{z}}</MATH>|23.11}}
Ponieważ dipol elektryczny stanowi jakoby drut, w których na końcach znajdują się ładunki. W tym drucie płynie pewny zmienny prąd w czasie rzeczywistym t, zatem potencjał wektorowy na podstawie pierwszej równości {{LinkWzór|21.5|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}}, bo natężenie elektryczne prądu jest zależne od czasu, przedstawia się:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0}\over{4\pi}}\int^{{{d}\over{2}}}_{-{{d}\over{2}}}
{{-q_0\omega\sin\left[\omega\left(t-{{R(z)}\over{c}}\right)\right]}\over{R(z)}}\hat{\vec{z}}dz=-{{\mu_0q_0\omega}\over{4\pi}}\left\{\int^{{{d}\over{2}}}_0{{\sin\left[\omega\left(t-{{R(z)}\over{c}}\right)\right]}\over{R(z)}}dz+
\int^0_{-{{d}\over{2}}}{{\sin\left[\omega\left(t-{{R(z)}\over{c}}\right)\right]}\over{R(z)}}dz\right\}\hat{\vec{z}}=</MATH>{{Br}}
<MATH>=-{{\mu_0q_0\omega}\over{4\pi}}\left\{
\int_0^{{{d}\over{2}}}\left[{{\sin\left[\omega\left(t-{{R_+(z)}\over{c}}\right)\right]}\over{R_+(z)}}+{{\sin\left[\omega\left(t-{{R_-(z)}\over{c}}\right)\right]}\over{R_-(z)}}\right]
\right\}\hat{\vec{z}}</MATH>|23.12}}
Interesuje nasz przypadek, gdy zachodzi d<<r, zatem odległość według wzoru {{LinkWzór|5.4|Rozwinięcia_kwadrupolowe}}, a w nim zastępujemy wielkość d przez z, wtedy możemy napisać dwa wzory:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>R_{\pm}(z)\simeq r\left(1\mp{{z}\over{2r}}\cos\phi\right)</MATH>|23.13}}
| 2 = {{CentrujWzór|<MATH>{{1}\over{R_{\pm}(z)}}\simeq{{1}\over{r}}\left(1\pm{{z}\over{2r}}\cos\phi\right)</MATH>|23.14}}
}}
Następnie policzmy wyrażenie pomocnicze występujące w punkcie {{LinkWzór|23.14}} w postaci pewnych kosinusów, korzystając przy tym z przybliżenia {{LinkWzór|23.13}}, zatem do dzieła:
{{CentrujWzór|<MATH>\sin\left[\omega\left(t-{{R_{\pm}(z)}\over{c}}\right)\right]
\simeq\sin\left\{\omega\left[t-{{r}\over{c}}\left(1\mp{{z}\over{2rc}}\cos\phi\right)\right]\right\}=
\sin\left[\omega\left(t-{{r}\over{c}}\right)\pm{{\omega z}\over{2c}}\cos\phi\right]=</MATH>{{Br}}
<MATH>=\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\cos\left({{\omega z}\over{2c}}\cos\phi\right)\pm\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]
\sin\left({{\omega z}\over{2c}}\cos\phi\right)</MATH>|23.15}}
Niech mamy przybliżenie będzie takie, że odległość pomiędzy ładunkami w dipolu elektrycznym będzie d, by było o wiele mniejsze od stosunku wartości prędkości światła i częstotliwości z jaką zmienia się ładunek na końcach naszego obiektu lub z jaką częstotliwością zmienia się prąd , czyli {{Formuła|<MATH>d<<{{c}\over{\omega}}</MATH>}}, zatem możemy napisać:
{{CentrujWzór|<MATH>\sin\left[\omega\left(t-{{R_{\pm}(z)}\over{c}}\right)\right]\simeq
\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\pm{{\omega z}\over{2c}}\cos\phi\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]</MATH>|23.16}}
Następnym krokiem jest napisanie wyrażenia poniżej występujące pod całką równości {{LinkWzór|23.12}} i korzystać będziemy przy tym z tożsamości przybliżonej {{LinkWzór|23.16}}
{{CentrujWzór|<MATh>{{\sin\left[\omega(t-{{R_+(z)}\over{c}})\right]}\over{R_+(z)}}+{{\sin\left[\omega\left(t-{{R_-(z)}\over{c}}\right)\right]}\over{R_-(z)}}=\left\{\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]+{{\omega z}\over{2c}}\cos\phi\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\right\}{{1}\over{r}}\left(1+{{z}\over{2r}}\cos\phi\right)+</MATH>{{Br}}
<MATH>+\left\{\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]-{{\omega z}\over{2c}}\cos\phi\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\right\}{{1}\over{r}}\left(1-{{z}\over{2r}}\cos\phi\right)={{\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]}\over{r}}\left(1+{{z}\over{2r}}\cos\phi+1-{{z}\over{2r}}\cos\phi\right)+</MATH>{{Br}}
<MATH>+{{\omega z}\over{2c}}\cos\phi\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]{{1}\over{r}}\left(1+{{z}\over{2r}}\cos\phi-1+{{z}\over{2r}}\cos\phi\right)={{2\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]}\over{r}}+
{{\omega z}\over{2c}}\cos\phi\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]{{z}\over{2r^2}}\cos\phi\simeq\;</MATH>{{Br}}<MATH>\simeq {{2\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]}\over{r}}</MATH>|23.17}}
Ostatnim krokiem jest wyznaczenie wyrażenia na potencjał wektorowy magnetyczny pola elektromagnetycznego wytwarzanej przez dipol elektryczny {{LinkWzór|23.12}}, jeśli przy tym będziemy wykorzystywali przybliżenie {{LinkWzór|23.17}}:
{{CentrujWzór|<MATh>\vec{A}(\vec{r},t)=-{{\mu_0 q_0\omega}\over{4\pi}}\int_0^{{{d}\over{2}}}{{2\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]}\over{r}}dz\hat{\vec{z}}=-{{\mu_0 q_0 d\omega}\over{4\pi}}{{2\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]}\over{r}}{{d}\over{2}}\hat{\vec{z}}=-{{\mu_0 p_0\omega}\over{4\pi}}{{\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]}\over{r}}\hat{\vec{z}}</MATH>|23.18}}
Potencjał skalarny zależy tylko od kata zenitalnego, a nie zależy od kąta azymutalnego, zatem gradient potencjału skalarnego napisanej dla dipola elektrycznego w punkcie {{LinkWzór|23.10}} jest w postaci:
{{CentrujWzór|<MATH>\nabla\varphi={{\partial\varphi}\over{\partial r}}\vec{e}_r+{{1}\over{r}}{{\partial\varphi}\over{\partial\phi}}\vec{e}_{\phi}=
-{{p_0\omega}\over{4\pi\epsilon_0 c}}\left\{-{{\cos\phi}\over{r^2}}\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]-{{\omega\cos\phi}\over{cr}}\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\right\}\vec{e}_r+{{p_0\omega\sin\phi}\over{4\pi\epsilon_0 c r^2}}\cdot\;</math>{{Br}}<math>\cdot\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_{\phi}\simeq
{{p_0\omega^2}\over{4\pi\epsilon_0 c^2}}\left({{\cos\phi}\over{r}}\right)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_r</MATH>|23.19}}
Wersor zetowy układu kartezjańskiego układu współrzędnych można rozłożyć w układzie sferycznym następująco:
{{CentrujWzór|<MATH>\hat{\vec{z}}=\cos\phi\vec{e}_r-\sin\phi\vec{e}_{\phi}</MATH>|23.20}}
Potencjał wektorowy pola magnetycznego {{LinkWzór|23.18}} na podstawie tożsamości {{LinkWzór|23.20}} piszemy:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)=-{{\mu_0p_0\omega}\over{4\pi r}}\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\left(\cos\phi \vec{e}_r-\sin\phi\vec{e}_{\phi}\right)</MATH>|23.21}}
Naszym ostatnim krokiem jest wyznaczenie pochodnej cząstkowej względem czasu potencjału wektorowego zdefiniowanego w punkcie {{LinkWzór|23.21}}:
{{CentrujWzór|<MATH>{{\partial\vec{A}}\over{\partial t}}=-{{\mu_0p_0\omega^2}\over{4\pi r}}\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\left(\cos\phi\vec{e}_r-\sin\phi\vec{e}_{\phi}\right)</MATh>|23.22}}
Natężenie pola elektrycznego na podstawie jego definicji {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} możemy napisać, jeśli ściągniemy wyznaczone wcześniej tożsamości dla dipola elektrycznego gradientu pola elektrycznego {{LinkWzór|23.19}} i pochodnej cząstkowej względem czasu potencjału wektorowego {{LinkWzór|23.21}}:
{{CentrujWzór|<MATH>\vec{E}=-\nabla\varphi-{{\partial\vec{E}}\over{\partial t}}=-{{p_0\omega^2}\over{4\pi\epsilon_0 c^2}}\left({{\cos\phi}\over{r}}\right)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_r+{{\mu_0p_0\omega^2}\over{4\pi r}}\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\left(\cos\phi\vec{e}_r-\sin\phi\vec{e}_{\phi}\right)=</MATH>{{Br}}
<MATH>=-{{p_0\omega^2\mu_0}\over{4\pi}}\left({{\cos\phi}\over{r}}\right)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_r+{{\mu_0p_0\omega^2}\over{4\pi r}}\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\left(\cos\phi\vec{e}_r-\sin\phi\vec{e}_{\phi}\right)=\;</MATH>{{Br}}<MATH>=-{{\mu_0p_0\omega^2}\over{4\pi}}\left({{\sin\phi}\over{r}}\right)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_{\phi}</MATH>|23.23}}
Naszym następnym krokiem jest wyznaczenie rotacji potencjału wektorowego {{LinkWzór|23.21}}, otrzymujemy:
{{CentrujWzór|<MATH>\nabla\times\vec{A}={{1}\over{r}}\left[{{\partial}\over{\partial r}}\left(rA_{\phi}\right)-{{\partial A_r}\over{\partial\phi}}\right]\vec{e}_{\theta}={{1}\over{r}}\left[
{{\mu_0p_0\omega^2}\over{4\pi c}}(-\sin\phi)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]+
{{\mu_0p_0\omega}\over{4\pi r}}\sin\left[\omega\left(t-{{r}\over{c}}\right)\right](-\sin\phi)
\right]</MATH>|23.24}}
Drugi człon możemy wyeliminować, ze względu na to, że odległość od dipola elektrycznego punktu O jest o wiele większa niż stosunek wartości prędkości światła i częstotliwości ω z jaką zmienia się ładunek na końcach naszego dipola, czyli {{Formuła|<MATH>r>>{{c}\over{\omega}}\Rightarrow{{\omega}\over{c}}>>{{1}\over{r}}</MATh>}}, zatem wektor indukcji magnetycznej jest równy:
{{CentrujWzór|<MATH>\vec{B}=\nabla\times\vec{A}=-{{\mu_0p_0\omega^2}\over{4\pi c}}\left({{\sin\phi}\over{r}}\right)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_{\theta}</MATH>|23.25}}
A teraz troszkę z tożsamości napiszmy poniższe wyrażenie, które jest iloczynem wektorowym wersorów w układzie kulistym wersora φ-tego i θ-owego:
{{CentrujWzór|<MATH>\vec{e}_{\phi}\times\vec{e}_{\theta}=\vec{e}_r</MATH>|23.26}}
Wektor Poytinga {{LinkWzór|23.1}} przy definicji natężenia pola elektrycznego {{LinkWzór|23.23}} i indukcji pola magnetycznego {{LinkWzór|23.25}}, wtedy znając te wielkości pola elektromagnetycznego w próżni pochodzące od dipola elektrycznego, w której ładunek na jego końcach zmienia się harmonicznie, a także w nim płynie prąd harmoniczny, wtedy ten wektor na podstawie tożsamości {{LinkWzór|23.26}} możemy napisać:
{{CentrujWzór|<MATH>\vec{P}={{1}\over{\mu_0}}\left(\vec{E}\times\vec{B}\right)={{1}\over{\mu_0}}\left\{
\left[-{{\mu_0p_0\omega^2}\over{4\pi}}\left({{\sin\phi}\over{r}}\right)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\right]
\left[-{{\mu_0p_0\omega^2}\over{4\pi c}}\left({{\sin\phi}\over{r}}\right)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\right]
\right\}\vec{e}_r=</MATH>{{Br}}
<MATH>={{\mu_0p_0^2\omega^4}\over{16\pi^2 c}}\left({{\sin^2\phi}\over{r^2}}\right)\cos^2\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_r</MATH>|23.27}}
Średnia wartość wektora Poytinga względem czasu możemy wyznaczyć z jej wartości chwilowej wedle punktu {{LinkWzór|23.27}} wedle wyglądu:
{{CentrujWzór|<MATH>\langle \vec{P}\rangle={{\mu_0p_0^2\omega^4}\over{16\pi^2 c}}{{\sin^2\phi}\over{r^2}}{{1}\over{2}}\vec{e}_r={{\mu_0p_0^2\omega^4}\over{32\pi^2 c}}{{\sin^2\phi}\over{r^2}}\vec{e}_r</MATH>|23.28}}
Całkowita moc promieniowania można obliczyć po sferze o promieniu r, można policzyć jako całkę powierzchniową wyrażenia na średni wektor Poytinga napisanej wedle {{LinkWzór|23.28}}:
{{CentrujWzór|<MATH>\langle P\rangle=\int\langle\vec{P}\rangle={{\mu_0p_0^2\omega^4}\over{32\pi^2 c}}{{\sin^2\phi}\over{r^2}} r^2\sin\phi d\phi d\theta=
{{\mu_0p_0^2\omega^4}\over{32\pi^2 c}}\left(\int_0^{\pi} \sin^3\phi d\phi\right)\int_0^{2\pi} d\theta={{\mu_0p_0^2\omega^4}\over{16\pi c}}\int_0^{\pi}\sin^3\phi d\phi</MATH>|23.29}}
Wyznaczmy całkę nieoznaczoną wedle praw analizy, korzystając z metody całkowania przez podstawienie, a później z metody całkowania przez części, w ten sposób możemy obliczyć postać zwartą naszej całki nieoznaczonej.
{{CentrujWzór|<MATh>\int\sin^3\phi d\phi=\int(1-\cos^2\phi)\sin\phi d\phi=\begin{Bmatrix}\cos\phi=t\\ \sin\phi d\phi=-dt\end{Bmatrix}=
-\int(1-t^2)dt=-\int dt+\int t^2dt=-t+{{1}\over{3}}t^3=\;</MATH>{{Br}}<MATH>=-\cos\phi+{{1}\over{3}}\cos^3\phi</MATH>|23.30}}
Na podstawie już obliczonej całki {{LinkWzór|23.30}} możemy wyznaczyć całkę występującą w wyrażeniu na całkowitą moc wypromieniowaną {{LinkWzór|23.29}}, jeśli najpierw policzymy całkę oznaczoną:
{{CentrujWzór|<MATH>\int_0^{\pi}\sin^3\phi d\phi=\left[-\cos\phi+{{1}\over{3}}\cos^3\phi\right]_{0}^{\pi}=2-{{2}\over{3}}={{6-2}\over{3}}={{4}\over{3}}</MATH>|23.31}}
Zatem średnia moc promieniowania dipola elektrycznego {{LinkWzór|23.29}}, na podstawie całki oznaczonej {{LinkWzór|23.31}}, jest wyrażona wzorem poniżej. Jak się przekonamy, ona jest zależna od częstotliwości kołowej z jaką zmienia się ładunek na końcach tego dipola i od maksymalnej wartości momentu dipolowego p{{Sub|0}} jaką może przyjmować nasz dipol.
{{CentrujWzór|<MATH>\langle P\rangle={{\mu_0p_0^2\omega^4}\over{16\pi c}}{{4}\over{3}}={{\mu_0p_0^2\omega^4}\over{12\pi c}}</MATH>|23.32|Obramuj}}
Widzimy, że średnia moc promieniowania nie zależy od promienia r, co jest zgodne z zasadą zachowania energii.
== Promieniowanie pochodzące od dipola magnetycznego ==
{{Rysunek|Promieniowanie pochodzące od dipola magnetycznego.jpg|lk1|Promieniowanie elektromagnetyczne pochodzące od dipola elektrycznego}}
Niech mamy pętlę jak na rysunku o promieniu b i niech płynie w nim prąd przemienny o częstości kołowej ω o natężeniu natężeniu prądu zależnym od czasu w sposób harmonicznym:
{{CentrujWzór|<MATH>I(t)=I_0\cos(\omega t)\;</MATH>|23.33}}
Moment dipolowy dipola magnetycznego definiujemy jako iloczyn powierzchni jaką tworzy okrągły obwód i natężenia prądu napisanego w punkcie {{LinkWzór|23.33}}
{{CentrujWzór|<MATH>\vec{m}(t)=\pi b^2 I(t)\hat{\vec{z}}=m_0\cos(\omega t)\hat{\vec{z}}\;</MATH>|23.34}}
* gdzie maksymalna wartość momentu dipolowego jest opisana wzorem m{{Sub|0}}=π b{{Sup|2}} I{{Sub|0}}.
Potencjał wektorowy w odległości R od dipola magnetycznego w czasie t jest opisany na podstawie wzoru ogólnego {{LinkWzór|21.5|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}} w sposób:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0}\over{4\pi}}\oint{{I_0\cos\left[\omega\left(t-{{R}\over{c}}\right)\right]}\over{R}}d\vec{l}\;</MATH>|23.35}}
Załóżmy, że wektor {{Formuła|<MATH>\vec{r}</MATH>}} jest nad osią x, to potencjał wektorowy {{Formuła|<MATH>\vec{A}</MATH>}} jest skierowany wzdłuż osi y, bo składowe iskowe redukują się razem z jednej i drugiej strony osi x, bo składowa iskowa dla takiego samego y ma przeciwne zwroty, a więc składowa igrekowa wektora {{Formuła|<MATH>d\vec{l}</MATH>}} jest:
{{CentrujWzór|<MATH>(d\vec {l})_y=dl\cos\theta=b d\theta \cos\phi=b\cos\phi d\phi</MATH>|23.36}}
Potencjał wektorowy {{LinkWzór|23.35}}, na podstawie obliczeń {{LinkWzór|23.36}} na współrzędną igrekową wektora małego wycinka, w którym płynie prąd o natężeniu {{LinkWzór|23.33}}, czyli wielkości {{Formuła|<math>d\vec{l}\;</MATH>}}, piszemy:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0I_0 b}\over{4\pi}}\hat{\vec{y}}\int_0^{2\pi}{{\cos\left[\omega\left(t-{{R}\over{c}}\right)\right]}\over{R}}\cos\theta d\theta</MATH>|23.37}}
Według powyższego wzoru można obliczyć odległość od odcinka prądu {{Formuła|<MATH>d\vec{l}</MATH>}} do punktu, w którym chcemy obliczyć potencjał wektorowy, zatem ta długość R:
{{CentrujWzór|<MATH>R=\sqrt{r^2+b^2-2rb\cos\psi}</MATH> |23.38}}
Wektor {{Formuła|<MATH>\vec{r}</MATH>}} można przedstawić za pomocą składowych we współrzędnych kartezjańskich, a także wektor promienia {{Formuła|<MATH>\vec{b}\;</MaTH>}}, w sposobu:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{r}=(r\sin\phi,0,r\cos\phi)</MATH>|23.39}}
| 2 = {{CentrujWzór|<MATH>\vec{b}=(b\cos\theta,b\sin\theta,0)</MATH>|23.40}}
}}
Można policzyć, z definicji iloczynu skalarnego i definicji wektorów {{Formuła|<MATH>\vec{r}</MATH>}} i {{Formuła|<MATH>\vec{b}</MATH>}} ich iloczyn skalarny, tzn. wielkości {{LinkWzór|23.39}} i {{LinkWzór|23.40}} wedle:
{{CentrujWzór|<MATH>rb\cos\psi=\vec{r}\cdot\vec{b}=rb\sin\phi\sin\theta</MATH>|23.41}}
Wielkość R, która jest odległością od dipola, w której wyznaczamy pewne wielkości elektromagnetyczne, czyli {{LinkWzór|23.38}}, następnie wykorzystując tożsamość {{LinkWzór|23.41}}, tą odległość piszemy jako:
{{CentrujWzór|<MATH>R=\sqrt{r^2+b^2-2rb\sin\phi\sin\theta}</MATH>|23.42}}
W naszym przypadku zakładamy, że pętla dipola magnetycznego była mała w porównaniu z r, czyli zachodzi:{{Formuła|<MATH>b<<r\Rightarrow{{b}\over{r}}<<1</MATH>}}, oczywiste jest, że R w takim przypadku możemy policzyć w sposób przybliżony wykorzystując ostatnio wspomniane związki między promieniem obwodu b a odległością od środka tego obwodu r, zatem na podstawie wspomnianych zależności wielkość {{LinkWzór|23.42}} możemy zapisać jako:
{{CentrujWzór|<MATH>R=r\sqrt{1+\left({{b}\over{r}}\right)^2-2{{b}\over{r}}\sin\phi\cos\theta}=\simeq r\left(1-{{1}\over{2}}{{2b}\over{r}}\sin\phi\cos\theta\right)=r\left(1-{{b}\over{r}}\sin\phi\cos\theta\right)</MATh>|23.43}}
A odwrotność przybliżonej wielkości napisanej w punkcie {{LinkWzór|23.43}} możemy napisać też w bardziej przybliżony sposób:
{{CentrujWzór|<MATH>{{1}\over{R}}={{1}\over{r\left(1-{{b}\over{r}}\sin\phi\cos\theta\right)}}\simeq
{{1}\over{r}}\left(1+{{b}\over{r}}\sin\phi\cos\theta\right)</MATH>|23.44}}
Następnym krokiem jest wyznaczenie wielkości poniżej wykorzystując wzór na przybliżoną wartość na R wedle {{LinkWzór|23.43}}, zatem dokonajmy tychże obliczeń:
{{CentrujWzór|<MATH>\cos\left[\omega\left(t-{{R}\over{c}}\right)\right]=
\cos\left\{\omega\left[t-{{r}\over{c}}\left(1-{{b}\over{r}}\sin\phi\cos\theta\right)\right]\right\}=
\cos\left[\omega\left(t-{{r}\over{c}}\right)+{{\omega b}\over{c}}\sin\phi\cos\theta\right]=</MATH>{{Br}}
<MATH>=\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\cos\left({{\omega b}\over{c}}\sin\phi\cos\theta\right)-\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\sin\left({{\omega b}\over{c}}\sin\phi\cos\theta\right)</MATH>|23.45}}
Obierzmy przybliżenie, które zachodzi jako, że promień obwodu kołowego dipola magnetycznego b jest o wiele mniejsza od stosunku wartości prędkości światła c przez częstotliwość ω z jaką zmienia się prąd elektryczny {{LinkWzór|23.33}}, czyli: {{Formuła|<MATH>b<<{{c}\over{\omega}}\Rightarrow {{b\omega}\over{c}}<<1</MATH>}}, zatem można napisać wedle wyglądu:
{{CentrujWzór|<MATH>\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\simeq
\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]-{{\omega b}\over{c}}\sin\phi\cos\theta\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]</MATH>|23.46}}
Wzór na potencjał wektorowy {{LinkWzór|23.37}} możemy napisać stosując wzór na odwrotność małego wycinka obwodu od punktu, w której wyznaczamy pewne wielkości elektromagnetyczne według {{LinkWzór|23.44}}, a także ze wzoru {{LinkWzór|23.45}}, a do niego stosujemy przybliżenie w postaci {{LinkWzór|23.46}}, zatem tą wielkość piszemy:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0I_0 b}\over{4\pi}}\hat{\vec{y}}\int_0^{2\pi}
\left\{\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]-{{\omega b}\over{c}}\sin\phi\cos\theta\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\right
\}{{1}\over{r}}\left(1+{{b}\over{r}}\sin\phi\cos\theta\right)\cos\theta d\theta=</MATH>{{Br}}
<MATH>={{\mu_0I_0 b}\over{4\pi r}}\hat{\vec{y}}
\int_0^{2\pi}\Bigg\{
\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]-{{\omega b}\over{c}}\sin\phi\cos\theta\sin \left[\omega\left(t-{{r}\over{c}}\right)\right]
+</MATH>{{Br}}
<MATH>+{{b}\over{r}}\sin\phi\cos\theta\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]-
{{b}\over{r}}\sin\phi\cos\theta{{\omega b}\over{c}}\sin\phi\cos\theta\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]
\Bigg\}\cos\theta d\theta=</MATH>{{Br}}
<MATH>\simeq{{\mu_0I_0b}\over{4\pi r}}\hat{\vec{y}}\int_0^{2\pi}\Bigg\{
\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]+b\sin\phi\cos\theta\left(
-{{\omega}\over{c}}\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]+{{1}\over{r}}\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]
\right)
\Bigg\}\cos\theta d\theta</MATH>|23.47}}
Ponieważ zachodzą związki całkowe poniżej, które możemy wyprowadzić poniżej, które będą nam potrzebne do dalszych obliczeń.
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\int_0^{2\pi}\cos\theta d\theta=\sin\theta|_0^{2\pi}=0</MATH>|23.48}}
| 2 = {{CentrujWzór|<MATH>\int_0^{2\pi}\cos^2\theta d\theta=\int_0^{2\pi}{{1}\over{2}}(1+\cos 2\phi)d\phi=\pi</MATH>|23.49}}
}}
Wzór na potencjał wektorowy ostatnio napisanej {{LinkWzór|23.47}}, przy wyznaczonych w całkach {{LinkWzór|23.48}} i {{LinkWzór|23.49}}, jest wedle wyglądu:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0 m_0}\over{4\pi}}\left({{\sin\phi}\over{r}}\right)\left\{
{{1}\over{r}}\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]-{{\omega}\over{c}}\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]
\right\}\hat{\vec{y}}</MATH>|23.50}}
W układzie, gdy <MATH>\vec{r}</MATH> jest nad osią x, można przekształcić do układu, gdy tak nie jest, w tym przypadku wektor potencjału wektorowego jest równoległy do wersora <MATH>\vec{e}_{\theta}</MATH> sferycznego układu współrzędnych, zatem nasz potencjał wektorowy dla potencjału wektorowego {{LinkWzór|23.50}} jest równy:
{{CentrujWzór|<MATH>\vec{A}(r,\phi,t)={{\mu_0 m_0}\over{4\pi}}\left({{\sin\phi}\over{r}}\right)\left\{
{{1}\over{r}}\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]-{{\omega}\over{c}}\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]
\right\}\vec{e}_{\theta}</MATH>|23.51}}
Jeśli zastosujmy następne przybliżenie, tzn.:{{Formuła|<MATH>r>>{{c}\over{\omega}}\Rightarrow{{1}\over{r}}<<{{\omega}\over{c}}</MATH>}}, zatem wzór na potencjał wektorowy {{LinkWzór|23.51}} jest przedstawiony:
{{CentrujWzór|<MATH>\vec{A}(r,\phi,t)=-{{\mu_0m_0\omega}\over{4\pi c}}\left({{\sin\phi}\over{r}}\right)\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_{\theta}</MATH>|23.52}}
Następnym krokiem jest obliczenie natężenia pola elektrycznego w określonym punkcie dla dipola magnetycznego i należy posłużyć się wnioskiem, że potencjał skalarny jest równy zero, a więc jego dywergencja też jest równa zero, zatem jego gradient. Skorzystamy ze wzoru na natężenie pola elektrycznego {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, zatem wyznaczmy tą wielkość:
{{CentrujWzór|<MATH>\vec{E}=-{{\partial\vec{A}}\over{\partial t}}=
{{\mu_0m_0\omega^2}\over{4\pi c}}\left({{\sin\phi}\over{r}}\right)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_{\theta}</MATH>|23.53}}
Jako ostatni krok jest obliczenie indukcji magnetycznej znając potencjał wektorowy {{LinkWzór|23.52}} ze wzoru {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, zatem do dzieła:
{{CentrujWzór|<MATH>\vec{B}=\nabla\times\vec{A}={{1}\over{\sin\phi}}\left[{{\partial}\over{\partial\phi}}\left(\sin\phi A_{\theta}\right)-{{\partial A_{\phi}}\over{\partial \theta}}\right]\vec{e}_r+{{1}\over{r}}\left[{{1}\over{\sin\phi}}{{\partial A_r}\over{\partial\theta}}-{{\partial(rA_{\theta})}\over{\partial r}}\right]\vec{e}_{\phi}={{1}\over{r\sin\phi}}{{\partial\left(\sin\phi A_{\theta}\right)}\over{\partial\phi}}\vec{e}_r-{{1}\over{r}}{{\partial}\over{\partial r}}(r A_{\theta})\vec{e}_{\phi}=</MATH>{{Br}}
<MATH>=-{{\mu_0m_0\omega}\over{4\pi cr^2\sin\phi}}\sin\left[\omega\left(t-{{r}\over{c}}\right)\right]2\sin\phi\cos\phi\vec{e}_r-{{\mu_0m_0\omega^2}\over{4\pi c^2}}\left({{\sin\phi}\over{r}}\right)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_{\phi}\simeq\;</MATH>{{Br}}<MATH>\simeq -{{\mu_0m_0\omega^2}\over{4\pi c^2}}\left({{\sin\phi}\over{r}}\right)\cos\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_{\phi}</MATH>|23.54}}
Ale mamy odległość r od środka dipola magnetycznego spełniającego warunek {{Formuła|<MATH>r>>{{c}\over{\omega}}</MATH>}}, wtedy można pominąć współrzędną radialną wektora indukcji magnetycznej względem współrzędnej φ-ej.
Wiedząc, że zachodzi związek napisanej w punkcie {{LinkWzór|23.26}} w układzie kulistym, wtedy wektor Poytinga {{LinkWzór|23.1}}, na podstawie definicji wektora natężenia pola elektrycznego {{LinkWzór|23.53}} i wektora indukcji pola magnetycznego {{LinkWzór|23.54}}, jest równy:
{{CentrujWzór|<MATH>\vec{P}={{1}\over{\mu_0}}(\vec{E}\times\vec{B})=
{{1}\over{\mu_0}}{{\mu_0^2m_0^2\omega^4}\over{16\pi^2c^3}}{{\sin^2\phi}\over{r}}\cos^2\left[\omega\left(t-{{r}\over{c}}\right)\right]\vec{e}_r</MATH>|23.55}}
Średnia wartość wektora Poytinga policzonej w punkcie {{LinkWzór|23.55}} względem czasu jest wyrysowana:
{{CentrujWzór|<MATH>\langle \vec{P}\rangle={{\mu_0m_0^2\omega^4}\over{32\pi^2c^3}}{{\sin^2\phi}\over{r^2}}\vec{e}_r</Math>|23.56}}
Średnia moc promieniowania wypromieniowana z dipola magnetycznego, liczymy wychodząc od wzoru {{LinkWzór|23.56}}, korzystając przy tym z definicji całki oznaczonej obliczonej wcześniej {{LinkWzór|23.31}}, piszemy według jego definicji:
{{CentrujWzór|<MATH>P=\oint \langle\vec{P}\rangle d\vec{S}={{\mu_0m_0^2\omega^4}\over{32\pi^2c^3}}\int_0^{2\pi}\left(\int_0^{\pi}{{\sin^2\phi}\over{r^2}}r^2\sin\phi d\phi\right) d\theta={{\mu_0m_0^2\omega^4}\over{32\pi^2c^3}}2\pi\int_0^{\pi}\sin^3\phi d\phi={{\mu_0m_0^2\omega^4}\over{16\pi c^3}}{{4}\over{3}}={{\mu_0m_0^2\omega^4}\over{12\pi c^3}}</MATH>|23.57}}
Zatem średnia moc promieniowania dipola magnetycznego {{LinkWzór|23.57}}, jak się przekonamy, ona jest zależna od częstotliwości kołowej z jaką zmienia się prąd w tym dipolu i od maksymalnej wartości momentu magnetycznego m{{Sub|0}} jaką może przyjmować nasz dipol.
== Promieniowanie elektromagnetyczne z dowolnego źródła ==
{{Rysunek|Promieniowanie elektromagnetyczne od różnych źródeł.jpg|w1|Promieniowanie elektromagnetyczne od dowolnego źródła- składanie wektorów.}}
Potencjał skalarny w odległości {{Formuła|<MATH>\vec{r}</MATH>}} od układu współrzędnych jest opisany wzorem {{LinkWzór|21.4|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}} dla przejrzystości wykładu:
{{CentrujWzór|<MATH>\varphi(\vec{r},t)={{1}\over{4\pi\epsilon_0}}
\int{{\rho(\vec{r}^',t-{{R}\over{c}})}\over{R}}dV</MATH>|23.58}}
gdzie:
* {{Formuła|<MATh>\vec{r}^'</MATH>}} jest to odległość danego punktu źródła od początku układu odniesienia,
* {{Formuła|<MATH>\vec{R}</MATH>}} jest to odległość danego punktu źródła do punktu, w którym należy obliczyć potencjał skalarny.
Z twierdzenia o składaniu wektorów według rysunku obok można napisać wzór:
{{CentrujWzór|<MATH>\vec{r}=\vec{r}^'+\vec{R}\Rightarrow\vec{R}=\vec{r}-\vec{r}^'</MATH>|23.59}}
Wykorzystując definicję iloczynu skalarnego, wtedy równanie {{LinkWzór|23.59}} możemy podnieść do kwadratu obie jego strony, wtedy otrzymujemy tożsamość wynikową poniżej, z którego wyznaczymy wyrażenie na sam skalar R:
{{CentrujWzór|<MATH>R^2=(\vec{r}-\vec{r}^')^2=r^2+r^{'2}-2\vec{r}\cdot\vec{r}^'\Rightarrow R=\sqrt{r^2+r^{'2}-2\vec{r}\cdot\vec{r}^'}</MATH>|23.60}}
Dokonajmy przybliżenia wielkości R {{LinkWzór|23.60}}, jeśli punkt w którym liczymy potencjał skalarny jest daleko od źródła w porównaniu z rozmiarami tego ciała, czyli:{{Formuła|<MaTH>r^'<<r\Rightarrow {{r^'}\over{r}}<<1</MATH>}}, dochodzimy do wniosku:
{{CentrujWzór|<MATH>R=r\sqrt{1+\left({{r^'}\over{r}}\right)^2-2{{\vec{r}\cdot\vec{r}^'}\over{r^2}}}\simeq r\left(1-{{\vec{r}\cdot\vec{r}^'}\over{r^2}}\right)</MATH>|23.61}}
Można teraz otrzymać odwrotność odległości wielkości R zdefiniowanej w punkcie {{LinkWzór|23.61}} dokonując odpowiednich przybliżeń:
{{CentrujWzór|<MATH>{{1}\over{R}}={{1}\over{\left(1-{{\vec{r}\cdot\vec{r}^'}\over{r^2}}\right)}}\simeq
{{1}\over{r}}\left(1+{{\vec{r}\cdot\vec{r}^'}\over{r^2}}\right)</MATH>|23.62}}
Również gęstość objętościową ładunku elektrycznego ρ liczoną dla danego położenia względem czasu opóźnionego {{LinkWzór|21.1|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}} możemy rozłożyć w szereg Taylora do wyrazów drugiego rzędu włącznie, a dalsze wyrazy oznaczając wielokropkami, co piszemy jako:
{{CentrujWzór|<MATH>\rho\left(\vec{r}^',t-{{R}\over{c}}\right)\simeq
\rho\left[\vec{r}^',t-{{r}\over{c}}\left(1-{{\vec{r}^'\cdot\vec{r}}\over{r^2}}\right)\right]=
\rho\left(\vec{r}^',t-{{r}\over{c}}+{{\hat{\vec{r}}\cdot\vec{r}}\over{c}}\right)\simeq\rho(\vec{r}^',t_0)+\dot{\rho}(\vec{r}^',t_0)\left({{\hat{\vec{r}}\cdot\vec{r}^'}\over{c}}\right)+\;</MATH>{{Br}}<MATH>+
{{1}\over{2!}}\ddot{\rho}\left({{\hat{\vec{r}}\cdot\vec{r}^'}\over{c}}\right)^2+...</MATH>|23.63}}
* gdzie {{Formuła|<MATH>t_0=t-{{r}\over{c}}</MATH>}}.
Całkowity potencjał skalarny {{LinkWzór|23.58}} możemy wyznaczyć, korzystając ze wzoru na gęstość objętościową ładunku ρ {{LinkWzór|23.63}} obcinając w nim wyrazy kwadratowe i wyższe, a także wykorzystując odwrotność R, czyli {{LinkWzór|23.62}}, w takim przypadku dostajemy:
{{CentrujWzór|<MATH>\varphi(\vec{r}^',t)\simeq{{1}\over{4\pi\epsilon_0}}
\int\left[\rho+\dot{\rho}{{\hat{\vec{r}}\cdot\vec{r}^'}\over{c}}\right]{{1}\over{r}}\left(1+{{\vec{r}\cdot\vec{r}^'}\over{r^2}}\right)dV={{1}\over{4\pi\epsilon_0 r}}\int\left[
\rho+\rho{{\hat{\vec{r}}\cdot\vec{r}^'}\over{r}}+\dot{\rho}{{\hat{\vec{r}}\cdot\vec{r}^'}\over{c}}+\dot{\rho}{{\left(\hat{\vec{r}}\cdot\vec{r}^'\right)^2}\over{cr}}
\right]dV\simeq\;</MATH>{{Br}}<MATH>\simeq{{1}\over{4\pi\epsilon_0 r}}\left[\int\rho dV+{{\hat{\vec{r}}}\over{r}}\int\vec{r}^'\rho dV+{{\hat{\vec{r}}}\over{c}}{{d}\over{dt}}\int\vec{r}^'\rho dV\right]</MATH>|23.64}}
Ponieważ wiadomo, że całkowity ładunek Q jest całką objętościową względem funkcji gęstości objętościowej {{Formuła|<MATH>Q=\int\rho dV</MATH>}} oraz że dipolowy moment elektryczny jest napisany wzorem: {{Formuła|<MATH>\vec{p}=\int\vec{r}^'\rho dV</MATH>}}, to potencjał skalarny {{LinkWzór|23.64}} w takim przypadku piszemy:
{{CentrujWzór|<MATH>\varphi(\vec{r},t)={{1}\over{4\pi\epsilon_0}}\left[{{Q}\over{r}}+
{{\hat{\vec{r}}\cdot\vec{p}(t_0)}\over{r^2}}+{{\hat{\vec{r}}\cdot\dot{\vec{p}}(t_0)}\over{cr}}\right]</MATH>|23.65}}
Gdy nasze ciało nie ma momentu dipolowego, to powyższe równania przechodzi w znane równanie z elektrostatyki, tzn.:
{{CentrujWzór|<MATH>\varphi(\vec{r},t)={{Q}\over{4\pi\epsilon_0 r}}</MATH>}}
Następnym następnym krokiem jest policzenie potencjału wektorowego, co w postaci dokładnej jest napisane według wzoru {{LinkWzór|21.5|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}}, co przepiszemy tutaj go dla przejrzystości wykładu:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0}\over{4\pi}}\int{{\vec{J}\left(\vec{r}^',t-{{R}\over{c}}\right)}\over{R}}dV</MATH>|23.66}}
Można powiedzieć, że gęstość objętościowa prądu elektrycznego możemy rozłożyć w szereg Taylora z dokładnością do conaj wyżej pierwszego rzędu wyrazów w nim występujący, co piszemy:
{{CentrujWzór|<MATH>\vec{J}\left(\vec{r}^',t-{{R}\over{c}}\right)\simeq
\vec{J}(\vec{r}^',t_0)+\dot{\vec{J}}(\vec{r}^',t_0)\left({{\hat{\vec{r}}\cdot\vec{r}^'}\over{c}}\right)</MATH>|23.67}}
To można powiedzieć, że wzór na potencjał wektorowy {{LinkWzór|23.66}}, przy zastosowanym przybliżeniu {{LinkWzór|23.67}}, a także z przybliżonego wzoru na odwrotność wielkości R, czyli {{LinkWzór|23.62}}, piszemy jako:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0}\over{4\pi r}}\left[
\int\vec{J}(\vec{r}^',t_0)dV+
\int {{\hat{\vec{r}}\cdot\vec{r}^'}\over{r}}\vec{J}(\vec{r}^',t_0)dV+
\int {{\hat{\vec{r}}\cdot\vec{r}^'}\over{c}}\dot{\vec{J}}(\vec{r}^',t_0)dV
\right]=</MATH>{{Br}}
<MATH>={{\mu_0}\over{4\pi r}}\left[
\int\vec{J}(\vec{r}^',t_0)dV+{{1}\over{r}}\int\hat{\vec{r}}\cdot\vec{r}^'\vec{J}(\vec{r}^',t_0)dV+{{1}\over{c}}{{d}\over{dt}}\int \hat{\vec{r}}\cdot\vec{r}^'\vec{J}(\vec{r}^',t_0)dV
\right]</MATH>|23.68}}
Ponieważ w danym punkcie {{Formuła|<MATH>\vec{r}^'</MATH>}}, w źródle mamy ściśle określoną gęstość prądu oraz jego pochodną, a ponieważ mamy do czynienia z ciałem bardzo małym, to w wyrażeniu na potencjał wektorowy możemy pominąć dwa kolejne ostatnie wyrazy, wtedy nasz wzór przyjmuje postać:
{{CentrujWzór|<MATH>\vec{A}(\vec{r}^',t)\simeq{{\mu_0}\over{4\pi r}}\int\vec{J}(\vec{r},t_0)dV</MATH>|23.69}}
W rozdziale o elektrodynamice Maxwella udowodniliśmy, że całkowita gęstość prądu objętościowego ładunków jest równa sumie gęstości objętościowego ładunków swobodnych, rotacji namagnesowania i pochodnej cząstkowej względem czasu polaryzacji elektrycznej, co piszemy wzorem {{LinkWzór|15.31|Elektrodynamika_Maxwella}}
A ponieważ rozpatrujemy magnetycznie ciało o bardzo małych rozmiarach względem odległości od punktu, w którym liczymy potencjał wektorowy, zatem polaryzacja magnetyczna {{Formuła|<MATH>\vec{M}</MATH>}} i prąd swobodny są bardzo małe, zatem całkowita gęstość objętościowa prądu elektrycznego jest pochodną polaryzacji elektrycznej względem czasu:
{{CentrujWzór|<MATH>\vec{J}={{\partial\vec{P}}\over{\partial t}}</MATH>|23.70}}
Nasz przybliżony potencjał wektorowy {{LinkWzór|23.69}} na podstawie wzoru na gęstość prądu elektrycznego dla naszego bardzo małego ciała {{LinkWzór|23.70}} jest zapisana:
{{CentrujWzór|<MATH>\vec{A}(\vec{r},t)={{\mu_0}\over{4\pi r}}\int {{\partial\vec{P}(t_0)}\over{\partial t}}dV={{\mu_0}\over{4\pi r}}{{d}\over{dt}}\int \vec{P}(t_0)dV={{\mu_0}\over{4\pi r}}{{d}\over{dt}}\vec{p}(t_0)={{\mu_0}\over{4\pi}}{{\dot{\vec{p}}(t_0)}\over{r}}</MaTH>|23.71}}
Z dokładnością do rzędu {{Formuła|<MATH>{{1}\over{r}}</MATH>}}, przybliżony potencjał skalarny {{LinkWzór|23.65}} można zapisać jako:
{{CentrujWzór|<MATH>\varphi(\vec{r},t)\simeq{{1}\over{4\pi\epsilon_0}}\left[{{Q}\over{r}}+
{{\hat{\vec{r}}\cdot\dot{\vec{p}}(t_0)}\over{rc}}\right]</MATH>|23.72}}
Napiszmy teraz gradient potencjału skalarnego {{LinkWzór|23.72}} jako jedna z wielkości pomocniczych w celu wyznaczenia natężenia pola elektrycznego pochodzącej od naszego ciała:
{{CentrujWzór|<MATH>\nabla\varphi\simeq\nabla\vec{k}_i{{\partial}\over{\partial x_i}}\varphi=
{{\partial\varphi}\over{\partial t_0}}\vec{k}_i{{\partial t_0}\over{\partial x_i}}=
{{\partial\varphi}\over{\partial t_0}}\nabla t_0=
{{1}\over{4\pi\epsilon_0 c}}{{\hat{\vec{r}}\cdot\ddot{\vec{p}}(t_0)}\over{rc}}\left(-{{1}\over{c}}\nabla R\right)={{1}\over{4\pi\epsilon_0 c^2}}{{\hat{\vec{r}}\cdot\ddot{\vec{p}}(t_0)}\over{r}}\hat{\vec{r}}</MATH>|23.73}}
I kolejno możemy policzyć pochodną cząstkową względem czasu wielkości, która jest potencjałem wektorowym napisanej dla naszego rozważanego ciała w punkcie {{LinkWzór|23.71}}, zatem:
{{CentrujWzór|<MATH>{{\partial\vec{A}}\over{\partial t}}={{\partial}\over{\partial t}}\left({{\mu_0}\over{4\pi}}{{\dot{p}(t_0)}\over{r}}\right)={{\mu_0}\over{4\pi}}{{\ddot{\vec{p}}(t_0)}\over{r}}</MATH>|23.74}}
W końcu możemy wyznaczyć natężenie pola elektrycznego wychodząc z ogólnego wzoru panującego w elektrodynamice klasycznej {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} wykorzystując już obliczone wyrażenia na gradient potencjału skalarnego {{LinkWzór|23.73}} i pochodnej cząstkowej względem czasu potencjału wektorowego {{LinkWzór|23.74}}, zatem do dzieła:
{{CentrujWzór|<MATH>\vec{E}=-\nabla\varphi-{{\partial\vec{A}}\over{\partial t}}=
{{1}\over{4\pi\epsilon_0 c^2}}{{\hat{\vec{r}}\cdot\ddot{\vec{p}}(t_0)}\over{r}}\hat{\vec{r}}-{{\mu_0}\over{4\pi}}{{\ddot{\vec{p}}(t_0)}\over{r}}=
{{\mu_0}\over{4\pi r}}\left[\left(\hat{\vec{r}}\cdot\ddot{p}(t_0)\right)\hat{\vec{r}}-\ddot{p}(t_0)\left(\hat{\vec{r}}\cdot\hat{\vec{r}}\right)\right]=</MATH>{{Br}}
<MATH>={{\mu_0}\over{4\pi r}}\left[\hat{\vec{r}}\times\left(\hat{\vec{r}}\times\ddot{p}\right)\right]</MATH>|23.75}}
Kolejnym krokiem jest policzenie indukcji pola magnetycznego, korzystając ze wzoru ogólnego {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} znając dla naszego przypadku policzony potencjał wektorowy {{LinkWzór|23.71}}:
{{CentrujWzór|<MATH>\vec{B}=\nabla\times\vec{A}=\vec{k}_i\epsilon_{ijk}{{\partial}\over{\partial x_j}}A_k=\vec{k}_i\epsilon_{ijk}{{\partial t_0}\over{\partial x_i}}{{\partial A_k}\over{\partial t_0}}=\left(\nabla t_0\right)\times{{\partial\vec{A}}\over{\partial t_0}}=-{{\hat{\vec{r}}}\over{c}}\times{{\mu_0}\over{4\pi}}{{\ddot{p}(t_0)}\over{r}}=-{{\mu_0}\over{4\pi r c}}\left[\hat{\vec{r}}\times\ddot{p}(t_0)\right]</MATH>|23.76}}
Ostatecznie dochodzimy do wniosku, że natężenie pola elektrycznego i indukcja pola magnetycznego dla ciała bardzo małego jest powtórzeniem wzorów, tzn. {{LinkWzór|23.75}} i {{LinkWzór|23.76}}.
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}={{\mu_0}\over{4\pi r}}\left[\hat{\vec{r}}\times\left(\hat{\vec{r}}\times\ddot{p}\right)\right]</MATH>|23.77}}
| 2 = {{CentrujWzór|<MATH>\vec{B}=-{{\mu_0}\over{4\pi r c}}\left[\hat{\vec{r}}\times\ddot{p}(t_0)\right]</MATH>|23.78}}
}}
Używając współrzędnych kulistych można zapisać wyrażenia:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{\vec{r}}\times\ddot{p}=-\ddot{p}\sin\phi\vec{e}_{\theta}</MATH>|23.79}}
| 2 = {{CentrujWzór|<MATH>\hat{\vec{r}}\times\left(\hat{\vec{r}}\times\ddot{p}\right)=-\ddot{p}\sin\phi\hat{\vec{r}}\times\vec{e}_{\theta}=\ddot{p}\sin\phi\vec{e}_{\phi}
</MATH>|23.80}}
}}
A zatem natężenie pola elektrycznego {{LinkWzór|23.77}} i magnetycznego {{LinkWzór|23.78}} we współrzędnych sferycznych są przedstawione:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}(r,\phi,t)\simeq {{\mu_0\ddot{p}(t_0)}\over{4\pi}}\left({{\sin\theta}\over{r}}\right)\vec{e}_{\phi}</MATH>|23.81}}
| 2 = {{CentrujWzór|<MATH>\vec{B}(r,\phi,t)\simeq{{\mu_0\ddot{p}(t_0)}\over{4\pi c}}\left({{\sin\phi}\over{r}}\right)\vec{e}_{\theta}</MATH>|23.82}}
}}
Ostatnim krokiem jest policzenie wektora Poytinga {{LinkWzór|23.1}} wykorzystując wzory na natężenie pola elektrycznego {{LinkWzór|23.81}} i wzór a indukcję pola magnetycznego {{LinkWzór|23.82}}:
{{CentrujWzór|<MATH>\vec{P}={{1}\over{\mu_0}}\left(\vec{E}\times\vec{B}\right)=
{{1}\over{\mu_0}}{{\mu_0^2\ddot{p}^2(t_0)}\over{16\pi^2}}\left({{\sin^2\theta}\over{r^2}}\right)\vec{e}_r=
{{\mu_0\ddot{p}^2(t_0)}\over{16\pi^2}}\left({{\sin^2\theta}\over{r^2}}\right)\vec{e}_r</MATH>|23.83}}
Widzimy, że pole elektryczne i magnetyczne są do siebie prostopadłe i są poprzeczne do kierunku rozchodzeni energii promieniowania (do wektora Poytinga).
Całkowita moc promieniowania można policzyć jako całkę powierzchnią po powierzchni zamkniętej wielkości {{LinkWzór|23.83}}, wiedząc że mamy już policzoną całkę oznaczoną {{LinkWzór|23.31}}.
{{CentrujWzór|<MATH>P=\oint\vec{P}d\vec{S}={{\mu_0\ddot{p}^2}\over{16\pi^2c}}\int_S
{{\sin^2\phi}\over{r^2}}r^2\sin\phi d\phi d\theta={{\mu_0\ddot{p}^2}\over{16\pi^2c}}\int_S\sin^3\phi d\phi d\theta={{\mu_0\ddot{p}^2}\over{16\pi^2c}}2\pi {{4}\over{3}}={{\mu_0\ddot{p}}\over{6\pi c}}</MATH>|23.84}}
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
odw017jap0bbba2wd85otjtxxa92zwd
Elektrodynamika klasyczna/Promieniowanie od ładunków punktowych
0
17090
558892
513490
2026-10-08T02:10:16Z
Persino
2851
558892
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tutaj zajmiemy się promieniowaniem pochodzącego od ładunków punktowych.
== Pole prędkościowe, pole przyspieszone ==
Wykazaliśmy, że pole elektryczne wytwarzane przez ładunek punktowy poruszający się z pewną prędkością i przyspieszeniem wyraża się według wzoru {{LinkWzór|22.47|Rozkłady_dyskretne_ładunków_punktowych}}. W tym wzorze można wyróżnić pole prędkościowe {{Formuła|<MATH>\vec{E}_{pred}\;</Math>}} i pole przyspieszone {{Formuła|<MATH>\vec{E}_{rad}\;</MATH>}}, ich przepisy są:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{E}_{pred}={{q}\over{4\pi\epsilon_0}}{{R}\over{\left(\vec{R}\cdot\vec{u}\right)^3}}(c^2-u^2)\vec{u}</MATH>|24.1}}
| 2 = {{CentrujWzór|<MATH>\vec{E}_{rad}={{q}\over{4\pi\epsilon_0}}{{R}\over{\left(\vec{R}\cdot\vec{u}\right)^3}}\vec{R}\times\left(\vec{u}\times\vec{a}\right)</MATH>|24.2}}
}}
Pole magnetyczne dla ładunków punktowych jest opisany przez wzór {{LinkWzór|22.50|Rozkłady_dyskretne_ładunków_punktowych}}, zatem na podstawie tychże rozważań można zdefiniować dla tego przypadku wektor Poyntinga, który to dalej go przekształcimy:
{{CentrujWzór|<MATH>\vec{P}={{1}\over{\mu_0}}(\vec{E}\times\vec{B})={{1}\over{\mu_0c}}
\left[\vec{E}\times\left(\hat{\vec{R}}\times\vec{E}\right)\right]=
{{1}\over{\mu_0c}}\left(E^2\hat{\vec{R}}-(\hat{\vec{R}}\cdot\vec{E})\vec{E}\right)</MATH>|24.3}}
Pole prędkościowe {{LinkWzór|24.1}} nie wchodzi w skład promieniowania ładunku q, bo zachodzi {{Formuła|<MATH>E\sim{{1}\over{R^2}}\Rightarrow E^2\sim{{1}\over{R^4}}</MATH>}} i {{Formuła|<MATH>\lim_{R\rightarrow \infty}\oint\vec{P}\cdot d\vec{S}=0</MATH>}}, co stąd wynika, że energia wypromieniowana w nieskończoności jest równa zero, czyli pole prędkościowe nie jest promieniowaniem.
Zatem rozważając pole przyspieszone natężenia pola elektrycznego {{LinkWzór|24.2}}, dochodzimy do wniosku, że to pole jest prostopadłe do wektora {{Formuła|<Math>\vec{E}_{rad}\;</MATH>}}, zatem dochodzimy do wniosku, że w nieskończoności wektor Poytinga jest zdefiniowany wzorem na podstawie {{LinkWzór|24.3}}.
{{CentrujWzór|<MATH>\vec{P}={{1}\over{\mu_0 c}}E^2_{rad}\hat{\vec{R}}</MATH>|24.4}}
Załóżmy, że nasz ładunek jest w spoczynku, zatem pole promieniowania, na podstawie {{LinkWzór|22.46|Rozkłady dyskretne ładunków punktowych}} przyjmuje postać:
{{CentrujWzór|<MATH>\vec{E}_{rad}={{q}\over{4\pi\epsilon_0 c^2}}{{1}\over{R}}\left[\hat{\vec{R}}\times\left(\hat{\vec{R}}\times\vec{a}\right)\right]=
{{\mu_0q}\over{4\pi R}}\left[\hat{\vec{R}}(\hat{\vec{R}}\cdot\vec{a})-\vec{a}\right]</MATH>|24.5}}
Wektor Poyntinga dla pola przyspieszonego w takim przypadku wyraża się podobnie, korzystając dla {{LinkWzór|24.5}}, czyli {{Formuła|<MATH>E_{rad}\bot\hat{\vec{R}}</MATH>}}, zatem przyjmuje postać:
{{CentrujWzór|<MATH>\vec{P}={{1}\over{\mu_0 c}}E^2_{rad}\hat{\vec{R}}=
{{1}\over{\mu_0 c}}\left({{\mu_0 q}\over{4\pi R}}\right)^2\left[a^2+(\hat{\vec{R}}\cdot\vec{a})^2-2(\hat{\vec{R}}\cdot\vec{a})^2\right]={{1}\over{\mu_0 c}}\left({{\mu_0 q}\over{4\pi R}}\right)^2\left(a^2-\left(\hat{\vec{R}}\cdot\vec{a}\right)^2\right)=\;</MATH>{{Br}}<MATH>=
{{\mu_0 q^2a^2}\over{16\pi^2 c R^2}}\left(a^2-a^2\cos^2\phi\right)=
{{\mu_0 q^2 a^2}\over{16\pi^2 c}}\left({{\sin\phi}\over{R}}\right)^2\hat{\vec{R}}</MATH>|24.6}}
Całkowita moc promieniowania przez przyspieszoną cząstkę na podstawie definicji wektora Poytinga {{LinkWzór|24.6}} wyraża się wzorem:
{{CentrujWzór|<MATH>P=\oint\vec{P}\cdot d\vec{S}={{\mu_0 q^2 a^2}\over{16\pi^2 c}}\oint{{\sin^2\phi}\over{R^2}}R^2\sin\phi d\phi d\theta={{\mu_0 q^2 a^2}\over{6\pi c}}</MATH>|24.7}}
Powyższy wzór nosi nazwę '''wzoru Larmora'''.
Zatem drugi człon natężenia pola elektrycznego, czyli {{LinkWzór|24.2}} jest jednak promieniowaniem, bo ta energia ucieka do nieskończoności, i jednocześnie na podstawie {{LinkWzór|24.7}} zachodzi {{Formuła|<MATH>\lim_{R\rightarrow\infty}P>0</MAtH>}}.
== Moc promieniowania dla cząstki o prędkości niezerowej ==
Wcześniej policzyliśmy moc promieniowania {{LinkWzór|24.7}}, gdy cząstka chwilowo spoczywa, a teraz wyznaczymy tą właśnie moc gdy cząstka {{Formuła|<math>{{\partial W}\over{\partial t_r}}\;</MATH>}}, która jest źródłem promieniowania, porusza się z pewną skończoną prędkością i z przyspieszeniem w zależności od mocy promieniowania, gdy cząstka spoczywa {{Formuła|<math>{{\partial W}\over{\partial t}}\;</MATH>}}. Zauważmy zatem tożsamość wiedząc, że zachodzi {{LinkWzór|22.42|Rozkłady_dyskretne_ładunków_punktowych}} oraz {{LinkWzór|22.46|Rozkłady_dyskretne_ładunków_punktowych}}.
{{CentrujWzór|<MATH>{{\partial W}\over{\partial t}}={{\partial W}\over{\partial t_r}}{{\partial t_r}\over{\partial t}}+{{\partial W}\over{\partial x^i}}\underbrace{{{\partial x^i}\over{\partial t}}}_0\Rightarrow{{\partial W}\over{\partial t}}={{\partial W}\over{\partial t_r}}{{\partial t_r}\over{\partial t}} \Rightarrow {{\partial W}\over{\partial t_r}}={{\partial W}\over{\partial t}}\left({{\partial t_r}\over{\partial t}}\right)^{-1}\Rightarrow
{{\partial W}\over{\partial t_r}}={{\partial W}\over{\partial t}}{{\vec{R}\cdot\vec{u}}\over{Rc}}</MATH>|24.8}}
Ponieważ jak wcześniej powiedzieliśmy moc promieniowania dla cząstki spoczywającej możemy wyrazić wzorem {{LinkWzór|24.4}}, zatem w takim przypadku wzór {{LinkWzór|24.8}} jako natężenie promieniowania dla cząstki poruszającej przedstawia się wzorem:
{{CentrujWzór|<MATH>{{dP}\over{d\Omega R^2}}={{\vec{R}\cdot\vec{u}}\over{Rc}}{{1}\over{\mu_0 c}}E^2_{rad}</MATH>|24.9}}
Do wzoru na natężenie promieniowania {{LinkWzór|24.9}} podstawiamy wzór na natężenie pola elektrycznego przyspieszonego {{LinkWzór|24.2}}, która jest słuszna, gdy cząstka spoczywa, wtedy dostajemy wzór:
{{CentrujWzór|<MATH>{{dP}\over{d\Omega}}=
{{\vec{R}\cdot\vec{u}}\over{Rc}}{{1}\over{\mu_0 c}}R^2{{q^2}\over{16\pi^2\epsilon_0^2}}{{R^2}\over{(\vec{R}\cdot\vec{u})^6}}
\left[\vec{R}\times(\vec{u}\times\vec{a})\right]^2=
{{q^2}\over{16\pi^2\epsilon_0}}{{\left[\hat{\vec{R}}\times\left(\vec{u}\times\vec{a}\right)\right]^2}
\over{\left(\hat{\vec{R}}\cdot\vec{u}\right)^5}}</MATH>|24.10}}
Całkowita moc wypromieniowana pochodząca od przyspieszonego ładunku {{LinkWzór|24.10}} piszemy jako całkę wielkości {{LinkWzór|24.10}} względem nieskończenie małego kąta bryłowego, w której to dotyczy, zatem możemy napisać:
{{CentrujWzór|<MATH>P=\int {{dP}\over{d\Omega}}d\Omega=\int {{q^2}\over{16\pi^2\epsilon_0}}{{\left[\hat{\vec{R}}\times\left(\vec{u}\times\vec{a}\right)\right]^2}
\over{\left(\hat{\vec{R}}\cdot\vec{u}\right)^5}}d\Omega={{q^2}\over{16\pi^2\epsilon_0}}\int {{\left[\hat{\vec{R}}\times\left(\vec{u}\times\vec{a}\right)\right]^2}
\over{\left(\hat{\vec{R}}\cdot\vec{u}\right)^5}}d\Omega</MATH>|24.11}}
Wyznaczmy wyrażenie pomocnicze występujące we wzorze {{LinkWzór|24.11}}, zatem do dzieła:
{{CentrujWzór|<MATH>\left|\hat{\vec{R}}\times\left(\vec{u}\times\vec{a}\right)\right|^2=
\left|c\hat{\vec{R}}\times\left(\hat{\vec{R}}\times\vec{a}\right)-\hat{\vec{R}}\times\left(\vec{v}\times\vec{a}\right)\right|^2=\left|c\hat{\vec{R}}(\hat{\vec{R}}\cdot\vec{a})-c\vec{a}-\hat{\vec{R}}\times\left(\vec{v}\times\vec{a}\right)\right|^2=c^2(\hat{\vec{R}}\cdot\vec{a})^2+c^2a^2+\;</MATH>{{Br}}<MATH>+\left(\hat{\vec{R}}\times\left(\vec{v}\times\vec{a}\right)\right)^2-
2c^2(\hat{\vec{R}}\cdot\vec{a})^2+
\left[-2c\hat{\vec{R}}(\hat{\vec{R}}\cdot\vec{a})+2c\vec{a}\right]\left[\hat{\vec{R}}\times\left(\vec{v}\times\vec{a}\right)\right]=-c^2(\hat{\vec{R}}\cdot\vec{a
})^2+c^2a^2+|\vec{v}\times\vec{a}|^2+\;</MATH>{{Br}}<MATH>-\left[\hat{\vec{R}}\cdot\left(\vec{v}\times\vec{a}\right)\right]^2+
\left[-2c\hat{\vec{R}}(\hat{\vec{R}}\cdot\vec{a})+2c\vec{a}\right]\left(\vec{v}(\hat{\vec{R}}\cdot\vec{a})-\vec{a}(\hat{\vec{R}}\vec{v})\right)=-c^2(\hat{\vec{R}}\cdot\vec{a})^2+c^2a^2+v^2a^2-\left(\vec{v}\cdot\vec{a}\right)^2+\;</MATH>{{Br}}<MATH>-
\left[\hat{\vec{R}}\cdot\left(\vec{v}\times\vec{a}\right)\right]^2
-2c\left(\hat{\vec{R}}\cdot\vec{v}\right)(\hat{\vec{R}}\cdot\vec{a})^2+2c(\hat{\vec{R}}\cdot\vec{a})^2(\hat{\vec{R}}\cdot\vec{v})+2c(\vec{v}\cdot\vec{a})(\hat{\vec{R}}\cdot\vec{a})-2ca^2(\hat{\vec{R}}\cdot\vec{v})=</MATH>{{Br}}
<MATH>=a^2(c^2+v^2)-(\vec{v}\cdot\vec{a})^2-2ca^2(\hat{\vec{R}}\cdot\vec{v})+2c(\vec{a}\cdot\vec{v})(\hat{\vec{R}}\cdot\vec{a})-c^2(\hat{\vec{R}}\cdot\vec{a})^2-\left[\hat{\vec{R}}\cdot\left(\vec{v}\times\vec{a}\right)\right]^2=</MATH>{{Br}}
<MATH>=c^4\left\{
\dot{\vec{\beta}}^2\left(1+\hat{\beta}^2\right)-(\vec{\beta}\cdot\dot{\vec{\beta}})^2-
2\dot{\vec{\beta}}^2(\hat{\vec{R}}\cdot\vec{\beta})+2(\dot{\vec{\beta}}\cdot\vec{\beta})(\hat{\vec{R}}\cdot\dot{\vec{\beta}})-(\hat{\vec{R}}\cdot\dot{\vec{\beta}})^2-
\left[\hat{\vec{R}}\cdot\left(\vec{\beta}\times\dot{\vec{\beta}}\right)\right]^2
\right\}</MATH>|24.12}}
Teraz policzymy całki pomocnicze, zatem zajmijmy się tą pierwszą:
{{CentrujWzór|<MATH>\int_{-1}^{1}{{dz}\over{\left(1-\beta z\right)^5}}=\begin{Bmatrix}
1-\beta z=t\\
-\beta dz=dt\\
dz=-{{1}\over{\beta}}dt\\
z=-{{t-1}\over{\beta}}
\end{Bmatrix}=-\int^{1-\beta}_{1+\beta}{{dt}\over{\beta t^5}}={{1}\over{4\beta}}{{1}\over{t^4}}|_{1+\beta}^{1-\beta}=
{{1}\over{4\beta}}\left({{1}\over{(1+\beta)^4}}-{{1}\over{(1-\beta)^4}}\right)=</MATH>{{Br}}
<MATH>={{1}\over{4\beta}}\left({{(1+\beta)^4-(1-\beta)^4}\over{(1-\beta^2)^4}}\right)=
-{{1}\over{4\beta}}\left({{(1+\beta^2+2\beta)^2-(1+\beta^2-2\beta)^2}\over{(1-\beta^2)^4}}\right)=</MATH>{{Br}}
<MATH>={{1}\over{4\beta}}{{1+\beta^4+4\beta^2+2\beta^2+4\beta+4\beta^3-1-\beta^4-4\beta-2\beta^2+4\beta+4\beta^3}\over{(1-\beta^2)^4}}={{2\beta(1+\beta^2)}\over{\beta(1-\beta^2)^4}}={{2(1+\beta^2)}\over{(1-\beta^2)^4}}</MATH>|24.13}}
Następnie zajmijmy się liczeniem drugiej całki:
{{CentrujWzór|<MATH>\int_{-1}^{1}{{zdz}\over{(1-\beta z)^5}}=
\int_{1+\beta}^{1-\beta}{{dt(t-1)}\over{\beta^2 t^5}}={{1}\over{\beta^2}}\left[\int_{1+\beta}^{1-\beta}{{dt}\over{t^4}}-\int_{1+\beta}^{1-\beta}{{dt}\over{t^5}}\right]=-{{1}\over{3\beta^2}}t^{-3}|^{1-\beta}_{1+\beta}+2{{1+\beta^2}\over{\beta(1-\beta^2)^4}}=\;</MATH>{{Br}}<MATH>=
-{{1}\over{3\beta^2}}{{(1+\beta)^3-(1-\beta)^3}\over{(1-\beta^2)^3}}+2{{1+\beta^2}\over{\beta(1-\beta^2)^4}}=-{{1}\over{3\beta^2}}{{1+\beta^3+3\beta+3\beta^2-1+\beta^3+3\beta-3\beta^2}\over{(1-\beta^2)^3}}+2{{1+\beta^2}\over{\beta(1-\beta^2)^4}}=\;</MATH>{{Br}}<MATH>=-{{1}\over{3\beta^2}}{{2\beta^3+6\beta}\over{(1-\beta^2)^3}}+2{{1+\beta^2}\over{\beta(1-\beta^2)^4}}=
{{(-2\beta^3-6\beta)(1-\beta^2)+2(1+\beta^2)3\beta}\over{3\beta^2(1-\beta^2)^4}}={{-2\beta^3-6\beta+2\beta^5+6\beta^3+6\beta+6\beta^3}\over{3\beta^2\left(1-\beta^2\right)^4}}=\;</MATH>{{Br}}<MATH>=
{{10\beta^3+2\beta^5}\over{3\beta^2(1-\beta^2)^4}}={{2\beta(5+\beta^2)}\over{3(1-\beta^2)^4}}</MaTH>|24.14}}
A na sam koniec wyznaczmy trzecią całkę:
{{CentrujWzór|<MATH>\int^{1}_{-1}{{z^2dz}\over{(1-\beta z)^5}}=
-\int^{1-\beta}_{1+\beta}{{dt(t-1)^2}\over{\beta^3 t^5}}=
-{{1}\over{\beta^3}}\int^{1-\beta}_{1+\beta}{{t^2-2t+1}\over{t^5}}dt=-{{1}\over{\beta^3}}\int^{1-\beta}_{1+\beta}\left({{1}\over{t^3}}-2{{1}\over{t^4}}+{{1}\over{t^5}}\right)dt=</MATH>{{Br}}
<MATH>={{1}\over{4\beta^3}}{{1}\over{t^4}}|^{1-\beta}_{1+\beta}-{{2}\over{3\beta^4}}{{1}\over{t^3}}|^{1-\beta}_{1+\beta}+{{1}\over{2\beta^3}}{{1}\over{t^2}}|^{1-\beta}_{1+\beta}={{1}\over{4\beta^3}}{{(1+\beta)^4-(1-\beta)^4}\over{(1-\beta^2)^4}}-2{{1}\over{3\beta^3}}{{(1+\beta)^3-(1-\beta)^3}\over{(1-\beta^2)^3}}+\;</MATH>{{Br}}<MATH>+{{1}\over{2\beta^3}}{{(1+\beta)^2-(1-\beta)^2}\over{(1-\beta^2)^2}}=
{{1}\over{\beta^3}}{{(1+\beta^2+2\beta)^2-(1+\beta^2-2\beta)^2}\over{4(1-\beta^2)^4}}-2{{1}\over{3\beta^3}}{{1+\beta^3+3\beta+3\beta^2-1+\beta^3+3\beta-3\beta^2}\over{(1-\beta^2)^3}}+\;</MATH>{{Br}}<MATH>+
{{1}\over{\beta^3}}{{1+\beta^2+2\beta-1-\beta^2+2\beta}\over{2(1-\beta^2)^2}}={{1}\over{4\beta^3}}{{1+\beta^4+4\beta^2+2\beta^2+4\beta+4\beta^3
-1-\beta^4-4\beta^2-2\beta^2+4\beta+4\beta^3}\over{(1-\beta^2)^4}}+\;</MATH>{{Br}}<MATH>-2{{1}\over{3\beta^3}}{{2\beta^3+6\beta}\over{(1-\beta^2)^3}}+{{1}\over{2\beta^3}}{{4\beta}\over{(1-\beta^2)^2}}=
{{1}\over{4\beta^3}}{{8\beta+8\beta^3}\over{(1-\beta^2)^4}}
-2{{1}\over{3\beta^3}}{{2\beta^3+6\beta}\over{(1-\beta^2)^3}}+{{1}\over{2\beta^3}}{{4\beta}\over{(1-\beta^2)^2}}=\;</MATH>{{Br}}<MATH>={{24(\beta+\beta^3)-8(2\beta^3+6\beta)(1-\beta^2)+24\beta(1+\beta^4-2\beta^2)}\over{12\beta^3(1-\beta^2)^4}}=\;</MATH>{{Br}}<MATH>={{24\beta+24\beta^3-16\beta^3-48\beta+16\beta^5+48\beta^3+24\beta+24\beta^5-48\beta^3}\over{12\beta^3(1-\beta^2)^4}}=
{{8\beta^3+40\beta^5}\over{12\beta^3(1-\beta^2)^4}}={{2+10\beta^2}\over{3(1-\beta^2)^4}}={{2(1+5\beta^2)}\over{3(1-\beta^2)^4}}</MATH>|24.15}}
Użyjmy podstawienia w postaci z=cosφ do obliczania całki poniżej {{LinkWzór|24.11}}, w którym kąt bryłowy możemy zapisać jako dΩ=-dz dθ. Weźmy, że wektor jednostkowy {{Formuła|<MATH>\hat{R}\;</MAth>}} jest zdefiniowany: {{Formuła|<MATH>\hat{\vec{R}}=[\sin\phi\cos\theta,\sin\phi\sin\theta,\cos\phi]</MATH>}}, i dodatkowo obierzmy, że {{Formuła|<MATH>\vec{\beta}=[0,0,\beta]</MATH>}}. Następnie wyznaczmy dwie kolejne następne całki:
{{CentrujWzór|<MATH>\int \hat{R}_x d\Omega=\int \sin\phi\cos\theta \sin\phi d\phi d\theta=
\left(\int \sin^2\phi d\phi\right)\int\cos\theta d\theta=\left(\int \sin^2\phi d\phi\right)\sin\theta|_0^{2\pi}=0</MATH>|24.16}}
{{CentrujWzór|<MATH>\int \hat{R}_y d\Omega=\int \sin\phi\sin\theta \sin\phi d\phi d\theta=
\left(\int \sin^2\phi d\phi\right)\left(\int \sin\theta d\theta\right)=\left(\int \sin^2\phi d\phi\right)(-1)\cos\theta\Big|_0^{2\pi}=0</MATH>|24.17}}
Następnie dokonajmy kolejnych obliczeń:
* Wyrażenie pierwsze, korzystając przy tym z obliczonej całki oznaczonej {{LinkWzór|24.13}}:
{{CentrujWzór|<MATH>{{q^2}\over{16c\pi^2\epsilon_0}}\int d\Omega{{\dot{\vec{\beta}}^2(1+\vec{\beta}^2)-(\dot{\vec{\beta}}\cdot\vec{\beta})^2}\over{(1-\hat{\vec{R}}\vec{\beta})^5}}={{q^2}\over{16c\pi^2\epsilon_0}}{{2\pi}\over{c}}\int^{1}_{-1} dz{{\dot{\vec{\beta}}^2(1+\vec{\beta^2})-(\dot{\vec{\beta}}\cdot\vec{\beta})^2}\over{(1-\beta z)^5}}=\;</MATH>{{Br}}<MATH>={{q^2}\over{8 c\pi\epsilon_0}}{{2(1+\beta^2)}\over{(1-\beta^2)^4}}\left[\dot{\vec{\beta}}^2(1+\vec{\beta^2})-(\dot{\vec{\beta}}\cdot\vec{\beta})^2\right]={{q^2}\over{4\pi c\epsilon_0(1-\beta^2)^4}}\left[\dot{\vec{\beta}}^2(1+\vec{\beta^2})-(\dot{\vec{\beta}}\cdot\vec{\beta})^2\right](1+\beta^2)</MATH>|24.18}}
* Wyrażenie drugie, korzystając przy tym z obliczonej całki oznaczonej {{LinkWzór|24.14}}:
{{CentrujWzór|<MATH>{{q^2}\over{16c\pi^2\epsilon_0}}\int d\Omega{{-2\dot{\vec{\beta}}^2(\vec{\beta}\cdot\hat{\vec{R}})+2(\vec{\beta}\cdot\dot{\vec{\beta}})(\dot{\vec{\beta}}\cdot\hat{\vec{R}})}\over{(1-\hat{\vec{R}}\cdot\vec{\beta})^5}}={{q^2}\over{16\pi c\epsilon_0}}\int d\Omega{{-2{\dot{\vec{\beta}}}^2(\beta z+2(\vec{\beta}\cdot\dot{\vec{\beta}})(\vec{\dot{\beta}}_x\hat{R}_x+\vec{\dot{\beta}}_y\hat{R}_y+\vec{\dot{\beta}}_z\hat{R}_z)}\over{(1-z\beta)}}=</MATH>{{Br}}
<MATH>={{q^2}\over{16\pi c\epsilon_0}}\int_{-1}^{1}{{-2\dot{\vec{\beta}}^2\beta z+2(\vec{\beta}\cdot\dot{\vec{\beta}})\dot{\beta}_z z}\over{(1-\beta z)^4}}d\Omega={{q^2}\over{4\pi c\epsilon_0(1-\beta^2)^4}}\left[
-{{2}\over{3}}(\dot{\vec{\beta}})^2\vec{\beta}^2+{{2}\over{3}}\left(\dot{\vec{\beta}}\cdot\vec{\beta}\right)^2
\right](5+\vec{\beta}^2)</MATH>|24.19}}
* Wyrażenie trzecie, korzystając przy tym z obliczonej całki oznaczonej {{LinkWzór|24.15}}:
{{CentrujWzór|<MATH>{{q^2}\over{16\pi^2 c\epsilon_0}}\int d\Omega {{-(\dot{\vec{\beta}}\cdot\hat{\vec{R}})^2}\over{1-\vec{\beta}\cdot\hat{\vec{R}}}}=
{{q^2}\over{16\pi^2\epsilon_0}}\int d\Omega {{-(\hat{R}_x\dot{\beta}_x+\hat{R}_y\dot{\beta}_y+\hat{R}_z\dot{\beta}_z)^2}\over{(1-z\beta)^5}}=</MATH>{{Br}}
<MATH>={{q^2}\over{16\pi^2 c\epsilon_0}}\int d\Omega{{-(\hat{R}_x^2\dot{\beta}^2_x+\hat{R}_y^2\dot{\beta}_y^2+\hat{R}_z^2\dot{\beta}^2_z+\hat{R}_x \hat{R}_y\dot{\beta}_x\dot{\beta}_y+\hat{R}_x\hat{R}_z\dot{\beta}_x\dot{\beta}_z+\hat{R}_y\hat{R}_z\dot{\beta}_y\dot{\beta}_z)}\over{(1-z\beta)^5}}=</MATH>{{Br}}
<MATH>={{q^2}\over{16\pi^2 c\epsilon_0}}\int d\Omega{{-(\hat{R}_x^2\dot{\beta}^2_x+\hat{R}_y^2\dot{\beta}_y^2+\hat{R}_z^2\dot{\beta}^2_z)}\over{(1-z\beta)^5}}=\;</MATH>{{Br}}<MATH>=-{{q^2}\over{16\pi^2 c\epsilon_0}}\left(2\pi
\int^{1}_{-1}dz{{z^2\dot{\beta_z}^2}\over{(1-z\beta)^5}}+\int_0^{\pi}
({{\sin^3\phi}\over{(1-\cos\phi\beta)^5}} d\phi)\int^{2\pi}_0\left({\dot{\beta}_x}^2\cos^2\theta+
{\dot{\beta}_y}^2\sin^2\theta\right)
\right)=</MATH>{{Br}}
<MATH>=-{{q^2}\over{8\pi c\epsilon_0}}\dot{\beta}^2_z{{2(1+5\beta^2)}\over{3(1-\beta^2)^4}}-{{q^2}\over{16\pi^2 c\epsilon_0}}\left(\int^1_{-1}{{(1-z^2)dz}\over{(1-\beta z)^5}}\right)\pi(\dot{\beta}_x^2+\dot{\beta}_y^2)=</MATH>{{Br}}
<MATH>=-{{q^2}\over{4\pi c\epsilon_0}}\dot{\beta}_z^2{{1+5\beta^2}\over{3(1-\beta^2)^4}}-{{q^2}\over{16\pi c\epsilon_0}}\left({{2(1+\beta^2)}\over{
(1-\beta^2)^4}}-{{2(1+5\beta^2)}\over{3(1-\beta^2)^4}}\right)(\dot{\vec{\beta}}^2-\dot{\beta}^2_z)=</MATH>{{Br}}
<MATH>=-{{q^2}\over{16\pi c\epsilon_0}}{{4\dot{\beta}^2_z(1+5\beta^2)+6\dot{\vec{\beta}}^2(1+{\beta}^2)-2\dot{\beta}^2(1+5\beta^2)-6\dot{\vec{\beta}}^2_z(1+{\beta}^2)+2\dot{\beta}_z^2(1+5\beta^2))}\over{3(1-\beta^2)^4}}=</MATH>{{Br}}
<MATH>=-{{q^2}\over{16\pi c\epsilon_0}}{{24\dot{\beta}^2_z\beta^2+4{\dot{\vec{\beta}}}^2-
4\dot{\vec{\beta}}^2\beta^2}\over{3(1-\beta^2)^4}}=-{{q^2}\over{4\pi c\epsilon_0}}{{(6(\beta\cdot\dot{\beta})^2+\dot{\vec{\beta}}^2(1-\vec{\beta}^2)}\over{3(1-\beta^2)^4}}={{q^2}\over{4\pi c\epsilon_0(1-\beta^2)^4}}\left(-2(\vec{\beta}\cdot\dot{\vec{\beta}})^2-{{1}\over{3}}\dot{\vec{\beta}}^2(1-{\vec{\beta}}^2)\right)</MATH>|24.20}}
* Wyrażenie czwarte, korzystając przy tym ze wzoru na policzone wcześniej całek oznaczonych {{LinkWzór|24.13}} i {{LinkWzór|24.15}}:
{{CentrujWzór|<MATH>{{q^2}\over{16\pi^2 c\epsilon_0}}\int d\Omega{{-(\hat{\vec{R}}\cdot\left(\vec{\beta}\times\dot{\vec{\beta}}\right))^2}\over{(1-\hat{\vec{R}}\cdot\vec{v})^5}}=
{{q^2}\over{16\pi^2 c\epsilon_0}}
\int{{-\left[-R_x(\beta\dot{\beta}_y)+R_y(\beta\dot{\beta}_x)\right]^2}\over{(1-z\beta)^5}}=</MATH>{{Br}}
<MATH>=-{{q^2\beta^2}\over{16\pi^2 c\epsilon_0}}\int{{R_x^2\dot{\beta}^2_y+R_y^2\dot{\beta}_x^2}\over{(1-z\beta)^5}}=
-{{q^2\beta^2}\over{16\pi^2 c\epsilon_0}}\int_0^{\pi}{{\sin^3\phi}\over{(1-\cos\phi\beta)^5}}d\phi\int_0^{2\pi}(\dot{\beta}_x^2\sin^2\theta+\dot{\beta}_y^2\cos^2\theta)d\theta=</MATH>{{Br}}
<MATH>=-{{q^2\beta^2}\over{16\pi^2 c\epsilon_0}}\left(\int_{-1}^{1}{{1-z^2}\over{(1-z\beta)^5}}dz\right)\pi(\dot{\beta}_x^2+\dot{\beta}_y^2)=
-{{q^2\beta^2}\over{16\pi c\epsilon_0}}\left[{{2(1+\beta^2)}\over{(1-\beta^2)^4}}-{{2(1+5\beta^2)}\over{3(1-\beta^2)^4}}\right](\dot{\vec{\beta}}^2-\dot{\beta}_z^2)=</MATH>{{Br}}
<MATH>=-{{q^2\beta^2}\over{16\pi c\epsilon_0}}{{6(1+\beta^2)-2(1+5\beta^2)}\over{3(1-\beta^2)^4}}(\dot{\vec{\beta}}^2-\dot{\beta}_z^2)=-{{q^2\beta^2}\over{16\pi c\epsilon_0}}{{4-4\beta^2}\over{3(1-\beta^2)^4}}(\dot{\vec{\beta}}^2-\dot{\vec{\beta}}_z^2)=</MATH>{{Br}}
<MATH>=-{{q^2}\over{4\pi c\epsilon_0}}
{{(1-\beta^2)(\beta^2\dot{\vec{\beta}}^2-\beta^2\dot{\beta}_z^2)}\over{3(1-\beta^2)^4}}=
{{q^2}\over{4\pi c\epsilon_0(1-\beta^2)^4}}\left\{-{{1}\over{3}}(1-\beta^2)\left[\vec{\beta}^2
\dot{\vec{\beta}}^2-\left(\vec{\beta}\cdot\dot{\vec{\beta}})^2\right)\right]\right\}</MATH>|24.21}}
Ostatnim krokiem jest policzenie całkowitej mocy promieniowania {{LinkWzór|24.11}} dla cząstki poruszającej się z pewną dowolną prędkością i z pewnym przyspieszeniem, korzystając przy tym ze wzorów {{LinkWzór|24.18}}, {{LinkWzór|24.19}}, {{LinkWzór|24.20}} oraz {{LinkWzór|24.21}}. Zatem dokonajmy wyznaczenia tejże wielkości.
{{CentrujWzór|<MATH>P={{q^2\gamma^8}\over{4\pi c\epsilon_0}}\left\{
\left[\dot{\vec{\beta}}^2(1+\vec{\beta^2})-(\dot{\vec{\beta}}\cdot\vec{\beta})^2\right](1+\beta^2)
+\Bigg[
-{{2}\over{3}}(\dot{\vec{\beta}})^2\vec{\beta}^2+{{2}\over{3}}\left(\dot{\vec{\beta}}\cdot\vec{\beta}\right)^2
\right](5+\vec{\beta}^2)-2(\vec{\beta}\cdot\dot{\vec{\beta}})^2-{{1}\over{3}}\dot{\vec{\beta}}^2(1-{\vec{\beta}}^2)
+\;</MATH>{{Br}}<MATH>-{{1}\over{3}}(1-\beta^2)\left[\vec{\beta}^2
\dot{\vec{\beta}}^2-\left(\vec{\beta}\cdot\dot{\vec{\beta}})^2\right)\right]
\Bigg\}={{q^2\gamma^8}\over{4\pi c\epsilon_0}}\Bigg\{
\dot{\vec{\beta}}^2+\dot{\vec{\beta}}^2\beta^2-(\dot{\vec{\beta}}\cdot\vec{\beta})^2+
\beta^2\dot{\vec{\beta}}^2+\beta^4\dot{\vec{\beta}}^2-\beta^2(\dot{\vec{\beta}}\cdot\vec{\beta})^2
-{{10}\over{3}}\dot{\vec{\beta}}^2\vec{\beta}^2+{{10}\over{3}}(\dot{\vec{\beta}}\cdot\vec{\beta})^2+\;</MATH>{{Br}}<MATH>-{{2}\over{3}}\beta^4\dot{\vec{\beta}}^2+{{2}\over{3}}\beta^2(\dot{\vec{\beta}}\cdot\vec{\beta})^2
-2(\vec{\beta}\cdot\vec{\beta})^2-{{1}\over{3}}\dot{\vec{\beta}}^2+{{1}\over{3}}\dot{\vec{\beta}}^2\beta^2
-{{1}\over{3}}\vec{\beta}^2\dot{\vec{\beta}}^2+{{1}\over{3}}(\vec{\beta}\cdot\dot{\vec{\beta}})^2+{{1}\over{3}}\beta^4\dot{\vec{\beta}}^2-
{{1}\over{3}}\beta^2(\vec{\beta}\cdot\dot{\vec{\beta}})^2
\Bigg\}=</MATH>{{Br}}
<MATH>={{q^2\gamma^8}\over{4\pi c\epsilon_0}}\Bigg[
\dot{\vec{\beta}}^2\left(1+\beta^2+\beta^2+\beta^4-{{10}\over{3}}\beta^2-{{2}\over{3}}\beta^4-{{1}\over{3}}+
{{1}\over{3}}\beta^2-{{1}\over{3}}\beta^2+{{1}\over{3}}\beta^4\right)+(\vec{\beta}\cdot\dot{\vec{\beta}})^2\Bigg(-1-\beta^2+{{10}\over{3}}+{{2}\over{3}}\beta^2
-2+\;</MATH>{{Br}}<MATH>+{{1}\over{3}}-{{1}\over{3}}\beta^2\Bigg)\Bigg]={{q^2\gamma^8}\over{4\pi c\epsilon_0}}\left\{
\dot{\vec{\beta}}^2\left[{{2}\over{3}}-{{4}\over{3}}\beta^2+{{2}\over{3}}\beta^4\right]
+(\vec{\beta}\cdot\dot{\vec{\beta}})^2\left[{{2}\over{3}}-{{2}\over{3}}\beta^2\right]
\right\}={{q^2\gamma^8}\over{6\pi c \epsilon_0}}\left[\beta^2(1-\beta^2)^2+(\vec{\beta}\cdot\dot{\vec{\beta}})^2(1-\beta^2)\right]=\;</MATH>{{Br}}<MATH>=
{{q^2\gamma^6}\over{6\pi c \epsilon_0}}\left[\dot{\beta}^2(1-\beta^2)+(\vec{\beta}\cdot\dot{\vec{\beta}})^2\right]={{q^2\gamma^6}\over{6\pi c\epsilon_0}}\left[\dot{\vec{\beta}}^2+(\vec{\beta}\cdot\dot{\vec{\beta}})^2-\dot{\vec{\beta}}^2\vec{\beta}^2\right]=
{{q^2\gamma^6}\over{6\pi c\epsilon_0}}\left[\dot{\vec{\beta}}^2+\vec{\beta}^2\dot{\vec{\beta}}^2\cos^2\alpha-\dot{\vec{\beta}}^2\vec{\beta}^2\right]=</MATH>{{Br}}
<MATH>={{q^2\gamma^6}\over{6\pi c\epsilon_0}}\left[\dot{\vec{\beta}}^2-\vec{\beta}^2\dot{\vec{\beta}}^2\sin^2\alpha\right]=
{{q^2\gamma^6}\over{6\pi c\epsilon_0}}\left[\dot{\vec{\beta}}^2-|\vec{\beta}\times\dot{\vec{\beta}}|^2\right]=
{{\mu_0 cq^2\gamma^6}\over{6\pi}}\left[{{a^2}\over{c^2}}-
\left|{{\vec{a}\times\vec{v}}\over{c}}\right|^2{{1}\over{c^2}}\right]={{\mu_0 q^2\gamma^6}\over{6\pi c}}\left(a^2-\left|{{\vec{a}\times\vec{v}}\over{c}}\right|^2\right)</MATh>|24.22}}
'''Uogólnieniem Liénarda''' wzoru Larmora nazywamy na podstawie obliczeń {{LinkWzór|24.22}} wzór w postaci:
{{CentrujWzór|<MATH>P={{\mu_0 q^2\gamma^6}\over{6\pi c}}\left(a^2-\left|{{\vec{a}\times\vec{v}}\over{c}}\right|^2\right)</MATH>|24.23|Obramuj}}
Widzimy, że gdy v<c i v→ c otrzymujemy wtedy γ→∞, czyli moc promieniowania dla tego przypadku jest nieskończenie duża.
Gdy v<<c, wtedy zachodzi przybliżona tożsamość γ≈ 1, zatem otrzymujemy wzór Larmora {{LinkWzór|24.7}}.
Dochodzimy więc do wniosku, że wzór Larmora jest spełniony w przypadku nierelatywistycznym.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
mysssobxnwdu2dh0l5dmqbq4icj97l5
Elektrodynamika klasyczna/Oddziaływanie promieniowania na materię
0
17166
558893
513491
2026-10-08T02:23:22Z
Persino
2851
558893
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy się zajmować oddziaływaniem samego promieniowania na materię, najpierw z zasady zachowania energii, a później będziemy się zajmować jego mechanizmem.
== Pole promieniowania a reakcja odrzutu przez tą samą cząstkę ==
Jak wiadomo pole prędkościowe przenosi energię, ale nie do nieskończoności, energia pola prędkościowego jest wymieniana między tym polem tej cząstki a tą samą cząstką.
Należy tu rozważyć, że pole promieniowania, za którego odpowiedzialne jest przyspieszenie cząstki, średnia moc wypromieniowana do nieskończoności jest równa mocy traconej przez cząstkę, czyli powinno zachodzić:
{{CentrujWzór|<MATH>\vec{F}_{rad}\cdot\vec{v}=-{{\mu_0 q^2}\over{6\pi c}}a^2\;</MATH>|25.1}}
Uwzględnialiśmy tu wzór Larmora {{LinkWzór|24.7|Promieniowanie_od_ładunków_punktowych}}, które jest słuszne w przypadku nierelatywistycznym
Uśrednijmy siłę {{Formuła|<MATh>{\vec{F}_{rad}}\;</MATH>}}, względem czasu t{{Sub|2}}-t{{Sub|1}}.
Praca tracona nieodwracalnie przez cząstkę w tym przedziale czasu i energia tracona przez promieniowanie pola przyspieszonego są wyrażone przez:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>P_1=\int_{t_1}^{t_2}\vec{F}_{rad}\cdot\vec{v}dt\;</MATH>|25.2}}
| 2 = {{CentrujWzór|<MATH>P_2=-{{\mu_0 q^2}\over{6\pi c}}\int_{t_1}^{t_2}a^2 dt\;</MATH>|25.3}}
}}
Policzmy wyrażenie poniżej, które będzie nam potrzebne w dalszych obliczeniach, w tym celu zauważmy, że w czasach t{{Sub|1}} i t{{Sub|2}} sam układu jest identyczny, wtedy mamy {{Formuła|<MATH>\vec{v}\cdot{{d\vec{v}}\over{dt}}|_{t_1}^{t_2}=0\;</MATH>}}, co dalej można dokonać obliczeń:
{{CentrujWzór|<MATH>\int_{t_1}^{t_2}a^2dt=\int_{t_1}^{t_2}{{d\vec{v}}\over{dt}}\cdot{{d\vec{v}}\over{dt}}dt=\vec{v}\cdot{{d\vec{v}}\over{dt}}\Bigg|_{t_1}^{t_2}-\int_{t_1}^{t_2}\vec{v}\cdot{{d^2\vec{v}}\over{dt^2}}dt=-\int_{t_1}^{t_2}{{d^2\vec{v}}\over{dt^2}}\cdot\vec{v}dt=-\int_{t_1}^{t_2}\dot{\vec{a}}\cdot\vec{v}dt\;</MATH>|25.4}}
Dochodzimy do wniosku, że moc promieniowania wysyłanego przez cząstkę poruszającą z pewnym przyspieszeniem {{LinkWzór|25.1}} na podstawie obliczeń {{LinkWzór|25.4}} jest wyrażona:
{{CentrujWzór|<MATH>P_2={{\mu_0 q^2}\over{6\pi c}}\int_{t_1}^{t_2}\dot{\vec{a}}\cdot\vec{v}dt\;</MATH>|25.5}}
Ponieważ zachodzi P{{Sub|1}}=P{{Sub|2}} oczywiste jest, że możemy przyrównać wielkość {{LinkWzór|25.2}} z {{LinkWzór|25.3}}, wtedy dostajemy równanie poniżej, by potem wszystko przenieść na jedną stronę pod całkę oznaczoną, zatem dochodzimy do wniosku:
{{CentrujWzór|<MATH>\int_{t_1}^{t_2}\vec{F}_{rad}\cdot\vec{v}dt={{\mu_0 q^2}\over{6\pi c}}\int_{t_1}^{t_2}\dot{\vec{a}}\cdot\vec{v}dt\Rightarrow\int_{t_1}^{t_2}\left(\vec{F}_{rad}-{{\mu_0 q^2}\over{6\pi c}}\dot{\vec{a}}\right)\cdot\vec{v}dt=0\;</MATH>|25.6}}
Zakładamy tutaj w najprostszym przypadku, że wielkość o wymiarze siły występująca w nawiasie pod całką w końcowej tożsamości {{LinkWzór|25.6}} nie jest prostopadła do prędkości rozważanej cząstki, czyli do {{Formuła|<MATH>\vec{v}\;</MATH>}}, zatem ostatecznie siła działająca na poruszającą cząstkę jest napisana:
{{CentrujWzór|<MATH>\vec{F}_{rad}={{\mu_0 q^2}\over{6\pi c}}\dot{\vec{a}}\;</MATH>|25.7}}
Wzór {{LinkWzór|25.7}} nazywamy '''wzorem Abrahama-Lorentza''' na siłę reakcji promieniowania.
Jeśli na cząstkę nie działają żadne siły zewnętrzne, to mamy zgodnie z drugą zasadą Newtona i z definicją siły {{LinkWzór|25.7}} działającą przez promieniowanie:
{{CentrujWzór|<MATH>{{\mu_0 q^2}\over{6\pi c}}\dot{\vec{a}}=m\vec{a}\;</MATH>|25.8}}
Obierzmy rozwiązanie równania {{LinkWzór|25.8}} w postaci:
{{CentrujWzór|<MATH>\vec{a}(t)=\vec{a}_0 e^{{{t}\over{\tau}}}\;</MATH>|25.9}}
to oczywiste jest, że że pierwsza pochodna zupełna względem czasu rozwiązania {{LinkWzór|25.9}} równania {{LinkWzór|25.9}} jest w postaci {{Formuła|<MATH>\dot{\vec{a}}=\vec{a}_0{{1}\over{\tau}}e^{{{t}\over{\tau}}}\;</MATH>}}, zatem tą pierwszą pochodną wektora przyspieszenie i {{LinkWzór|25.9}} podstawiamy do równania różniczkowego {{LinkWzór|25.8}}, wtedy otrzymujemy tożsamość, z którego będziemy mogli wyznaczać τ, zatem do dzieła:
{{CentrujWzór|<MATH>{{\mu_0 q^2}\over{6\pi c}}\vec{a}_0{{1}\over{\tau}}e^{{{t}\over{\tau}}}=m\vec{a}_0 e^{{{t}\over{\tau}}}\;</MATH>|25.10}}
Co tożsamość {{LinkWzór|25.10}} jest równoważne równaniu:
{{CentrujWzór|<MATH>{{\mu_0 q^2}\over{6\pi c}}{{1}\over{\tau}}=m\Rightarrow\tau={{\mu_0 q^2}\over{6\pi c m}}\;</MATH>|25.11}}
Widzimy, że wartość wektora przyspieszenia rośnie samorzutnie bez udziału siły zewnętrznej, ten absurd można uniknąć, gdy przyjmować będziemy, że: {{Formuła|<MATH>\vec{a}_0=\vec{0}\;</MATH>}}.
Jeśli przyspieszenie cząstki rośnie z czasem wykładniczo, to tak jak by cząstka reagowała na pole wysłane z przyszłości wysłane przez tą samą cząstkę, co jest niezgodne z zasadą przyczynowości, tzn. przyczyna poprzedza skutek, a w naszym przypadku tak nie jest, a więc wyzerowanie stałej {{Formuła|<MATH>\vec{a}_0\;</MATH>}} jest uzasadnione.
== Wpływ reakcji promieniowania a jego fizyczne podstawy ==
{{Rysunek|Reakcja pola promieniowania wyemitowaną na tą samą cząstkę.jpg|lk1|Reakcja pola promieniowania na samą siebie}}
Według zasady zachowania energii cząstka poruszająca się z przyspieszeniem emituje pewną energię przez pole promieniowania do nieskończoności, w ten sposób cząstka traci energię, dotychczas nie rozważaliśmy, czy cząstka na samą siebie działa pewną siłą zwaną siłą odrzutu, rozważając czysto fizyczne mechanizmy tego zjawiska.
Wiemy jednak, że cząstka oddziaływając na drugą cząstkę nie spełnia trzeciej zasady dynamiki Newtona, a w wersji relatywistycznej trzeciej zasady dynamiki Einsteina. Ale w rzeczywistości wydaje spełniona jest trzecia zasada dynamiki, w tym celu oprócz sił z jakimi oddziaływają obie cząstki należy rozważyć siłę odrzutu promieniowania od pierwszej cząstki przez promieniowanie i od drugiej cząstki.
Natężenie pola elektrycznego wyemitowanej przez ładunek {{Formuła|<MATH>{{q}\over{2}}\;</MATH>}} jest równe w postaci:
{{CentrujWzór|<MATH>\vec{E}={{q/2}\over{4\pi\epsilon_0}}{{R}\over{(\vec{R}\cdot\vec{u})^3}}\left[(c^2-v^2)\vec{u}+\vec{R}\times\left(\vec{u}\times\vec{a}\right)\right]=</MATH>{{Br}}
<MATH>={{q/2}\over{4\pi\epsilon_0}}{{R}\over{(\vec{R}\cdot\vec{u})^3}}\left[(c^2-v^2)\vec{u}+\vec{u}(\vec{R}\cdot\vec{a})-\vec{a}(\vec{R}\cdot\vec{a})\right]=</MATH>{{Br}}
<MATH>={{q/2}\over{4\pi\epsilon_0}}{{R}\over{(\vec{R}\cdot\vec{u})^3}}\left[(c^2-v^2+\vec{R}\cdot\vec{a})\vec{u}-(\vec{R}\cdot\vec{u})\vec{a}\right]</MATH>|25.12}}
Ponieważ rozważany cząstkę, która nie porusza się chwilowo, czyli zachodzi wtedy {{Formuła|<MATH>\vec{v}=0</MATH>}}, zatem wzór na natężenie pola magnetycznego {{LinkWzór|25.12}} wyraża się:
{{CentrujWzór|<MATH>\vec{E}={{q}\over{8\pi\epsilon_0}}{{R}\over{(\vec{R}\cdot\vec{u})^3}}\left[(c^2+\vec{R}\cdot\vec{a})\vec{u}-(\vec{R}\cdot\vec{u})\vec{a}\right]</MATH>|25.13}}
Ależ prędkość chwilowa handli jest równa zero, to siła magnetyczna działająca na handlę jest równa zero, więc nie rozpatrujemy pola magnetycznego wytwarzane przez rozpatrywany układ ładunków.
Interesuje nas składowa iksowa, bo igrekowa znika po sumowaniu od dwóch końców o ładunku {{Formuła|<MATH>{{q}\over{2}}</MATH>}}.
Ponieważ rozważamy prędkość początkową cząstki, zatem można powiedzieć:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{u}=c\vec{R}</MATH>|25.14}}
| 2 = {{CentrujWzór|<MATH>\vec{R}=l\hat{x}+d\hat{y}\Rightarrow R=\sqrt{l^2+d^2}</MATH>|25.15}}
}}
Na podstawie rozważań {{LinkWzór|25.14}} i {{LinkWzór|25.15}} możemy napisać tożsamości, które później zastosujemy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{R}\cdot\vec{a}=[l,d][a,0]=la</MATH>|25.16}}
| 2 = {{CentrujWzór|<MATH>\vec{R}\cdot\vec{u}=\vec{R}c\hat{\vec{R}}=cR=c\sqrt{l^2+d^2}</MATH>|25.17}}
| 3 = {{CentrujWzór|<MATH>u_x=c{{l}\over{R}}=c{{l}\over{\sqrt{l^2+d^2}}}</MATH>|25.18}}
}}
Na podstawie obliczeń przeprowadzonych w punktach {{LinkWzór|25.16}}, {{LinkWzór|25.17}} oraz {{LinkWzór|25.18}} współrzędną iksową natężenia pola elektrycznego {{LinkWzór|25.13}} piszemy:
{{CentrujWzór|<MATH>E_x={{q\sqrt{l^2+d^2}}\over{8\pi\epsilon_0(l^2+d^2)^{{{3}\over{2}}}c^3}}\left[
(c^2+la){{cl}\over{\sqrt{l^2+d^2}}}-c\sqrt{l^2+d^2}a
\right]={{q}\over{8\pi\epsilon_0c^2(l^2+d^2)}}{{(c^2+la)l-(l^2+d^2)a}\over{\sqrt{l^2+d^2}}}=</MATH>{{Br}}
<MATH>={{q}\over{8\pi\epsilon_0 c^2(l^2+d^2)^{{{3}\over{2}}}}}\left[c^2l+l^2a-l^2a-d^2a\right]={{q}\over{8\pi\epsilon_0(l^2+d^2)^{{{3}\over{2}}}}}\left[c^2l-d^2a\right]</MATH>|25.19}}
Ponieważ mamy według rysunku powyżej l=x(t)-x(t{{Sub|r}}) i rozłóżmy wyrażenie x(t) względem w otoczeniu punktu t{{Sub|r}} w szereg Taylora oznaczając przy tym za wielkość równą T wedle sposobu T=-t-t{{Sub|r}}, zatem wyrażenie na wielkość x(t), która jest iksowym położeniem cząstki, jest napisana:
{{CentrujWzór|<MATH>x(t)=x(t_r)+\dot{x}(t_r)(t-t_r)+{{1}\over{2}}\ddot{x}(t_r)(t-t_r)^2+()(t-t_r)^3+...</MATH>|25.20}}
Zatem mamy, wiedząc, że zachodzi w naszym przypadku {{Formuła|<MATH>\dot{x}=v=0</MATH>}}, zatem wyrażenie {{LinkWzór|25.20}} w sposób równoważy możemy zapisać:
{{CentrujWzór|<MATH>l=x(t)-x(t_r)={{1}\over{2}}aT^2+{{1}\over{6}}\dot{a}T^2+...</MATH>|25.21}}
Jeśli wiadomo, że zachodzi {{LinkWzór|25.15}} i z definicji czasu opóźnionego {{LinkWzór|21.1|Rozkłady_ciągłe_gęstości_ładunku_i_gęstości_prądu_objętościowego}}, mamy:
{{CentrujWzór|<MATH>t_r=t-{{R}\over{c}}\Rightarrow R=c(t-t_r)\Rightarrow R=cT</MATH>|25.22}}
Z wyrażenia {{LinkWzór|25.15}} możemy wyznaczyć wyrażenie na d a potem podstawić do niego przybliżony wzór na l wyznaczony w punkcie {{LinkWzór|25.21}}, zatem po tej operacji dokonajmy przybliżenia pierwiastka w naszym wyrażeniu pewnym wyrażeniem algebraicznym, który jest zależny od parametru T, którego definicja jest podana poprzez wyrażenie {{LinkWzór|25.22}}.
{{CentrujWzór|<MATH>d=\sqrt{R^2-l^2}=\sqrt{c^2T^2-l^2}=\sqrt{c^2T^2-\left({{1}\over{2}}aT^2+{{1}\over{6}}\dot{a}T^3+...\right)^2}=cT\sqrt{1-\left({{aT}\over{2c}}+{{\dot{a}T^2}\over{6c}}+...\right)^2}=\;</MATH>{{Br}}<MATH>=
cT\left[1-{{1}\over{2}}\left({{aT}\over{2c}}+{{\dot{a}T^2}\over{6c}}+...\right)^2+...\right]=cT\left[1-{{a^2T^2}\over{8c^2}}+...\right]=cT-{{a^2T^3}\over{8c}}+...</MATH>|25.23}}
Zaniedbując wszystkie wyższe niż liniowe w końcowym wniosku {{LinkWzór|25.23}}, czyli wtedy {{Formuła|<MATH>d\simeq cT\Rightarrow T\simeq{{d}\over{c}}</MATH>}}, to wyrażenie {{LinkWzór|25.23}} z dokładnością do drugiego wyrazu w tym wspomnianym równaniu przy wykorzystaniu wcześniejszym przybliżonych wniosków na T, wtedy dochodzimy do wniosku, że zachodzi związek poniżej, z którego możemy wyznaczyć wyrażenie na T, wtedy mamy:
{{CentrujWzór|<MATH>d\simeq cT-{{a^2T^3}\over{8c}}T^3\wedge T\simeq{{d}\over{c}}\Rightarrow
d\simeq cT-{{a^2}\over{8c}}{{d^3}\over{c^3}}\Rightarrow T\simeq{{d}\over{c}}+{{a^2d^3}\over{8c^5}}\Rightarrow T={{1}\over{c}}d+{{a^2}\over{8c^5}}d^3+()d^4+...</MATH>|25.24}}
Mając wyrażenie na T {{LinkWzór|25.24}}, możemy przepisać tożsamość {{LinkWzór|25.21}} podstawiając do niego wyrażenie na T wspomniane wcześniej, otrzymujemy:
{{CentrujWzór|<MATH>l={{1}\over{2}}a\left({{1}\over{c}}d+{{a^2}\over{8c^5}}d^3+()d^4+...\right)^2+{{1}\over{6}}\dot{a}({{1}\over{c}}d+{{a^2}\over{8c^5}}d^3+()d^4+...)^3+...={{a}\over{2c^2}}d^2+{{\dot{a}}\over{6c^2}}d^3+()d^4+...</MATH>|25.25}}
Z równania {{LinkWzór|25.25}} możemy napisać własność zachodzącej dla d→ 0, powstałą przez podzieleniu tego wyrażenia przez wielkość d zdefiniowanej na rysunku powyżej, otrzymujemy warunek:
{{CentrujWzór|<MATH>{{l}\over{d}}={{a}\over{2c^2}}d+{{\dot{a}}\over{6c^3}}d^2+()d^3+...<<1 </MATH>|25.26}}
Współrzędna iksowa natężenia pola elektrycznego {{LinkWzór|25.19}}, wtedy możemy dokonać dalszych obliczeń otrzymując:
{{CentrujWzór|<MATH>E_x={{q}\over{8\pi\epsilon_0 c^2}}{{d({{l}\over{d}}c^2-ad)}\over{d^3({{l^2}\over{d^2}}+1)^{{3}\over{2}}}}={{q}\over{8\pi\epsilon_0 c^2}}{{{{l}\over{d}}c^2-ad}\over{d^2({{l^2}\over{d^2}}+1)^{{{3}\over{2}}}}}\simeq
{{q}\over{8\pi \epsilon_0 c^2d^2}}\left({{l}\over{d}}c^2-ad\right)\left(1-{{3l^2}\over{2d^2}}\right)=
</MATH>{{Br}}
<MATH>={{q}\over{8\pi\epsilon_0 c^2d^2}}\left({{l}\over{d}}c^2-ad-{{3l^3c^2}\over{2d^3}}+{{3l^2a}\over{2d}}\right)=
{{q}\over{4\pi\epsilon_0 }}\left(-{{a}\over{2c^2 d}}+{{l}\over{2d}}{{1}\over{d^2}}-{{3}\over{4}}\left({{l}\over{d}}\right)^3{{c^2}\over{d^2}}+{{3a}\over{4d}}\left({{l}\over{d}}\right)^2\right)</MATH>|25.27}}
Na podstawie tożsamości i warunku jednocześnie {{LinkWzór|25.26}}, zachodzą warunki przybliżone {{Formuła|<MATH>\left({{l}\over{d}}\right)^3\sim d^3\Rightarrow {{3}\over{4}}\left({{l}\over{d}}\right)^3{{1}\over{d^2}}\simeq 0</MATH>}}, a także też: {{Formuła|<MATH>\left({{l}\over{d}}\right)^2\sim d^2\Rightarrow {{3a}\over{4d}}\left({{l}\over{d}}\right)^2\simeq 0</MATH>}}.
Wartość iskowa natężenia pola elektrycznego napisanej ostatnio w punkcie {{LinkWzór|25.27}} i podstawieniu do niego {{LinkWzór|25.26}} dostajemy następną przybliżoną wartość na tą wielkość:
{{CentrujWzór|<MATH>E_x\simeq{{q}\over{4\pi\epsilon_0}}\left(-{{a}\over{2c^2d}}+{{1}\over{2d^2}}{{l}\over{d}}\right)=
{{q}\over{4\pi\epsilon_0}}\left[-{{a}\over{2c^2d}}+{{1}\over{2d^2}}\left({{a}\over{2c^2}}d+{{\dot{a}}\over{6c^3}}d^2+()d^3+...\right)\right]=\;</MATH>{{Br}}<MATH>={{q}\over{4\pi\epsilon_0}}\left(-{{a}\over{4c^2d}}+{{\dot{a}}\over{12c^3}}+()d+...\right)</MATH>|25.28}}
Wielkości przyspieszenia a i pochodnej przyspieszenia {{Formuła|<MATH>\dot{a}</MATH>}} są obliczone w czasie opóźnionym, zatem możemy wyrazić je poprzez czas rzeczywisty t i wyrazić w sposób przybliżony tą wielkość pomijając wyrazy wyższe niż pierwszego rzędu, zatem dostajemy schemat:
{{CentrujWzór|<MATH>a(t_r)=a(t)+\dot{a}(t)(t_r-t)+...=a(t)-\dot{a}T+...=a(t)-\dot{a}{{d}\over{c}}+...\Rightarrow\dot{a}(t_r)\simeq\dot{a}(t)-\ddot{a}(t){{d}\over{c}}</MATH>|25.29}}
Do wzoru na natężenie pola elektrycznego dla jej współrzędnej iksowej {{LinkWzór|25.28}} podstawiamy do niego wzór {{LinkWzór|25.29}}, by wyrazić tą wielkość poprzez wielkości wyrażone w czasie rzeczywistym charakteryzujące naszą badaną cząstkę.
{{CentrujWzór|<MATH>E_x={{q}\over{4\pi\epsilon_0}}\left[
-{{1}\over{4c^2d}}\left(a(t)-\dot{a}(t){{d}\over{c}}\right)+{{1}\over{12c^3}}\left(\dot{a}(t)-\ddot{a}(t){{d}\over{c}}\right)
\right]={{q}\over{4\pi\epsilon_0}}\left[-{{a(t)}\over{4c^2d}}+{{\dot{a}(t)}\over{4c^3}}+{{\dot{a}(t)}\over{12c^3}}+()d+...\right]=</MATH>{{Br}}
<MATH>={{q}\over{4\pi\epsilon_0}}\left[-{{a(t)}\over{4c^2d}}+{{\dot{a}(t)}\over{3c^3}}+()d+...\right]</MATH>|25.30}}
Siła działająca na ładunek pierwszy lub drugi wyrażamy na podstawie wzoru wynikającego z {{LinkWzór|1.2|Elektrostatyka}} i obliczonej współrzędnej iksowej natężenia pola elektrycznego {{LinkWzór|25.30}}, co piszemy:
{{CentrujWzór|<MATH>F_x=E_x{{q}\over{2}}={{q}\over{8\pi\epsilon_0}}\left[-{{a(t)}\over{4c^2d}}+{{\dot{a}(t)}\over{3c^3}}+()d+...\right]</MATH>|25.31}}
Całkowita siła działająca na dwa ładunki jednocześnie jest równa przy d→ 0 jest napisana jako podwojona siła napisanej wedle tożsamości {{LinkWzór|25.31}}:
{{CentrujWzór|<MATH>F_x^c=2F_x={{q}\over{4\pi\epsilon_0}}\left(-{{a(t)}\over{4c^2d}}+{{\dot{a}(t)}\over{3c^3}}\right)</MATH>|25.32}}
Pierwszy człon w nawiasie kwadratowym jest proporcjonalny do przyspieszenia cząstki i można ją przenieść na lewą stronę równania napisanego poniżej i oraz wiedząc, że z drugiego prawa Newtona zachodzi F{{Sub|x}}=2m{{Sub|0}}a, które są słuszne dla dwóch ładunków osobnych wziętych razem:
{{CentrujWzór|<MATH>\left(2m_0+{{1}\over{4\pi\epsilon_0}}{{q^2}\over{4c^2d}}\right)a={{q}\over{12\pi\epsilon_0c^2}}\dot{a}</MATH>|25.33}}
Oznaczmy przez wyrażenie występujące w punkcie {{LinkWzór|25.33}} jako nową efektywną masę jaką posiada naładowana cząstka o ładunku q:
{{CentrujWzór|<MATH>m=2m_0+{{q}\over{4\pi\epsilon_0}}{{q^2}\over{4c^2d}}</MATH>|25.34}}
Zatem energia takiej handli jest równa {{Formuła|<MATH>E=2m_0 c^2+{{q}\over{4\pi\epsilon_0}}{{q^2}\over{4d}}</MATH>}}, gdzie drugi człon jest energią potencjalną dwóch ładunków {{Formuła|<MATH>{{q}\over{2}}</MATH>}} znanej z elektrostatyki.
Jeśli wykorzystamy tożsamość {{LinkWzór|17.11|Fale_elektromagnetyczne_w_elektrodynamice_Maxwella}}, co stąd wyznaczymy przenikalność magnetyczną w próżni {{Formuła|<MATH>\mu_0={{1}\over{c^2\epsilon_0}}</MATH>}} i podstawić do {{LinkWzór|25.33}}, a także wzór na efektywną masę {{LinkWzór|25.34}}, to wtedy wspomniane wcześniej drugie prawo Newtona można zapisać:
{{CentrujWzór|<MATH>ma={{q}\over{12\pi\epsilon_0c^2}}\dot{a}</MATH> |25.35}}
Siła reakcji promieniowania występująca we wzorze {{LinkWzór|25.35}} jest wyrażona przez:
{{CentrujWzór|<MATH>F_{rad}={{\mu_0q^2\dot{a}}\over{12\pi c}}</MATH>|25.36}}
Jest to siła oddziaływania pomiędzy ładunkami 1-2 o ładunku {{Formuła|<MATH>{{q}\over{2}}</MATH>}}.
Teraz podzielmy nasz ładunek na części na odcinku o pewnej długości na bardzo małe ładunki {{Formuła|<MATH>\Delta q={{q}\over{n}}</MATH>}}, który jest podzielony na n części, gdzie n→∞,a więc siła działająca na dwa dowolne ładunki jest równa:
{{CentrujWzór|<MATH>\Delta F_{rad}={{\mu_0(2q/n)^2\dot{a}}\over{12\pi c}}={{4\mu_0q^2\dot{a}}\over{12\pi c n^2}}</MATH>|25.37}}
Całkowita siła odrzutu promieniowania elektromagnetycznego jest wyrażona:
{{CentrujWzór|<MATH>F_{rad}=\lim_{n\rightarrow\infty}{{1}\over{2}}(n-1){{\mu_0(2q/n)^2\dot{a}}\over{12\pi c}}\sum^n_{i=1}1={{\mu_0q^2\dot{a}}\over{6\pi c}}\lim_{n\rightarrow\infty}{{(n-1)\cdot n}\over{n^2}}={{\mu_0q^2\dot{a}}\over{6\pi c}}</MATH>|25.38}}
Powyżej występuje czynnik {{Formuła|<MATH>{{1}\over{2}}</MATh>}}, bo rozpatrujemy podwójnie oddziaływania infinitezymalnych dwóch ładunków, bo raz z "i" na "k", a za drugim razem z "k" na "i", ale, ależ wiadomo, że infinitezymalne ładunki nie oddziaływają na siebie, bo n→∞, więc stąd wynika, że k≠ i, gdzie "k" i "i" to są numery ładunków {{Formuła|<MATH>{{q}\over{n}}</MATH>}} dla rozciągłego rozkładu ładunków na handli, oraz mamy n-1 par z ładunkiem o numerze "i".
Rozpatrując rozciągły rozkład ładunku o gęstości liniowej na handli: {{Formuła|<MATH>{{q}\over{n\Delta d}}</MATH>}}, czyli rozważając siły działające na wszystkie infinitezymalne ładunki, wtedy ta siła jest o wartości:
{{CentrujWzór|<MATH>F_{rad}={{\mu_0q^2\dot{a}}\over{6\pi c}}</MATH>|25.39}}
Wektorowo otrzymujemy wiec ostatecznie wektorowy odpowiednim wzoru {{LinkWzór|25.39}}, mając na uwadze, że wektor pochodnej przyspieszenia i wektor siły reakcji promieniowania na cząstkę są współliniowe.
{{CentrujWzór|<MATH>\vec{F}_{rad}={{\mu_0q^2}\over{6\pi c}}\dot{\vec{a}}</MATh>|25.40|Obramuj}}
Ostatni wzór jest to '''wzór Abrahama-Lorentza''' na reakcję promieniowania ładunku q o bardzo małych rozmiarach.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
o8coa8898u2921l7hlitzpa21e45on2
Elektrodynamika klasyczna/Elektrodynamika relatywistyczna
0
17184
558894
513493
2026-10-08T02:34:14Z
Persino
2851
558894
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tutaj będziemy rozpatrywać elektrodynamikę jako równania magnetyzmu i elektryczności jako zjawisko czysto relatywistyczne.
W elektrodynamice relatywistycznej przyjmujemy tensor metryczny o dwóch możliwych sygnaturach, tzn. gdy w zdiagonalizowanej macierzy Minkowskiego są elementy na diagonalnej (1,-1,-1,-1), to tą sygnaturę nazywamy dodanią, a gdy na diagonalnedj występują liczby (-1,1,1,1), to tą sygnaturę nazywamy ujemną, gdy będziemy pisać we wzorach matematycznych fizyki w elektrodynamice relatywistycznej, to {{Formuła|<MATH>\pm\;</MATH>}} lub {{Formuła|<MATH>\mp\;</MATH>}}, to znak na górze jest to sygnatura dodatnia, a na dole ujemna.
== Gęstość ładunku, wektor gęstości prądu i czterowektor gęstości prądu ==
Objętość pewnego elementu V względem jej wartości spoczynkowej V{{Sub|0}}, tzn. objętość cząstki materii, gdy ona jest w spoczynku, jest wyrażona przez:
{{CentrujWzór|<MATH>V=\sqrt{1-{{v^2}\over{c^2}}}V_0=\gamma^{-1}V_0\;</MATH>|26.1}}
Z tożsamości {{LinkWzór|26.1}} gęstość danej cząstki materii można ją wyrazić poprzez gęstość spoczynkową tej samej cząstki wedle:
{{CentrujWzór|<MATH>\rho={{q}\over{V}}={{q}\over{V_0}}\gamma=\rho_0\gamma=\rho_0u^0\;</MATH>|26.2}}
Gęstość prądu w przypadku relatywistycznym jest podobnie definiowany jak w punkcie {{LinkWzór|16.9|Zasady_zachowania_a_twierdzenia_o_właściwościach_pola_elektromagnetycznego}}, tylko gęstość ładunku elektrycznego w nim występującą wyrażamy poprzez:
{{CentrujWzór|<MATH>\vec{J}=\rho\vec{v}=\gamma\rho_0\vec{v}\;</MATH>|26.3}}
Wprowadzając gęstości prądu przy pomocy przestrzennych elementów czterowektora prędkości prędkości u{{Sup|i}}, to jego definicja jest:
{{CentrujWzór|<MATH>J^i=\rho_0\gamma v^i=c\rho_0u^i\;</MATH>|26.4}}
W elektrodynamice relatywistycznej wprowadza się czerowektor prędkości, którego element czasowy to jest gęstość ładunku elektrycznego pomnożonej przez prędkość światła c, a jej element przestrzenny to jest wielkość wektora gęstości prądu elektrycznego, zatem jego definicja jest:
{{CentrujWzór|<MATH>J^{\mu}=\left(c\rho,J_x,J_y,J_z\right)=\left(c\rho,\vec{J}\right)\;</MATH>|26.5}}
Elementy tensora {{LinkWzór|26.5}} możemy w sposób ogólny zapisać za pomocą czterowektora prądu objętościowego J{{Sup|μ}} łącząc jego dwa przypadki wedle wzorów na część czasową czterowektora prędkości {{LinkWzór|26.2}} i na elementy przestrzenne czerowektora prądu elektrycznego {{LinkWzór|26.4}}, wtedy otrzymujemy schemat liczenia czerowektora prądu elektrycznego:
{{CentrujWzór|<MATH>J^{\mu}=c\rho_0u^{\mu}\;</MATH>|26.6}}
== Tensorowe równanie ciągłości ==
Równanie ciągłości zapisane w punkcie {{LinkWzór|16.11|Zasady_zachowania_a_twierdzenia_o_właściwościach_pola_elektromagnetycznego}} można tak zapisać, że przy tym równaniu jej część czasową tak zapisujemy, że mnożymy jego licznik i mianownik przez prędkość światła c i biorąc definicję czerowekta gęstości prądu {{LinkWzór|26.5}}, to:
{{CentrujWzór|<MATH>{{\partial\rho}\over{\partial t}}+\nabla\cdot\vec{J}=0\Rightarrow
{{\partial c\rho}\over{\partial ct}}+\nabla\cdot\vec{J}=0\Rightarrow{{\partial c\rho}\over{\partial ct}}+{{\partial J_1}\over{\partial x}}+
{{\partial J_2}\over{\partial y_2}}+{{\partial J_3}\over{\partial y}}=0\;</MATH>|26.7}}
Przyjmijmy oznaczenia występujące powyżej w {{LinkWzór|26.7}} wedle schematu: x{{Sup|0}}=ct, x{{Sup|1}}=x, x{{Sup|2}}=y, x{{Sup|3}}=z. Następnie korzystając z końcowej równości {{LinkWzór|26.7}}, to równanie ciągłości zapisujemy:
{{CentrujWzór|<MATH>{{\partial J^{\mu}}\over{\partial x^{\mu}}}= 0\mbox{ lub }\partial_{\mu}J^{\mu}=0\mbox{ lub }{J^{\mu}}_{,\mu}=0\;</MATH>|26.8}}
== Tensory w elektrodynamice pól elektromagnetycznych ==
Będziemy się zajmować tensorami pól elektromagnetycznych i też tensorem dualnym do tensora pola elektromagnetycznego.
=== Tensor pola elektromagnetycznego dla próżni ===
Tensor pola elektromagnetycznego dla próżni jest:
{{CentrujWzór|<MATH>F^{\mu\nu}=\pm\begin{bmatrix}
0&{{E_x}\over{c}}&{{E_y}\over{c}}&{{E_z}\over{c}}\\
-{{E_x}\over{c}}&0&B_z&-B_y\\
-{{E_y}\over{c}}&-B_z&0&B_x\\
-{{E_z}\over{c}}&B_y&-B_x&0
\end{bmatrix}\;</MATH>|26.9}}
Tensor pola elektromagnetycznego dla próżni jest tensorem antysymetrycznym.
=== Tensor pola elektromagnetycznego dla materii ===
Tensor pola elektromagnetycznego dla materii jest:
{{CentrujWzór|<MATH>S^{\mu\nu}=\pm\begin{bmatrix}
0&cD_x&cD_y&cD_z\\
-cD_x&0&H_z&-H_y\\
-cD_y&-H_z&0&H_x\\
-cD_z&H_y&-H_x&0
\end{bmatrix}\;</MATH>|26.10}}
Porównując {{LinkWzór|26.10}} z tensorem pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}, to ten drugi tensor pola elektromagnetycznego dla materii powstaje poprzez zastąpienie wedle schematu, tzn. {{Formuła|<MATH>{{\vec{E}}\over{c}}\rightarrow c\vec{D}</MATH>}} oraz też wedle schematu w tym samym tensorem dla materii {{Formuła|<MATH>\vec{B}\rightarrow\vec{H}</MATH>}}.
Tensor pola elektromagnetycznego dla materii jest tensorem antysymetrycznym.
=== Tensor dualny pola magnetycznego dla próżni i materii ===
Tensor dualny dla elektromagnetyzmu jest w postaci:
{{CentrujWzór|<MATH>G^{\mu\nu}=\pm\begin{bmatrix}
0&B_x&B_y&B_z\\
-B_x&0&-{{E_z}\over{c}}&{{E_y}\over{c}}\\
-B_y&{{E_z}\over{c}}&0&-{{E_x}\over{c}}\\
-B_z&-{{E_y}\over{c}}&{{E_x}\over{c}}&0\\
\end{bmatrix}\;</MATH>|26.11}}
Można zauważyć, że tensor dualny {{LinkWzór|26.11}} powstaje z tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}} przez podstawianie: {{Formuła|<MATH>{{\vec{E}}\over{c}}\rightarrow\vec{B}\;</MATH>}}, a także przez {{Formuła|<MATH>\vec{B}\rightarrow-{{\vec{E}}\over{c}}\;</MATH>}}.
Tensor dualny jest tensorem antysymetrycznym.
== Tensorowe równania Maxwella ==
Przedstawimy tutaj tensorowe równania elektrodynamiki dla próżni i dla materii.
=== Tensorowe równania Maxwella dla próżni ===
Korzystając z definicji tensora pola elektromagnetycznego dla próżni i tensora dualnego, to równania Maxwella możemy zapisać w postaci tensorowej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial F^{\mu\nu}}\over{\partial x^{\nu}}}=\pm\mu_0 J^{\mu}\;</MATH>|26.12}}
| 2 = {{CentrujWzór|<MATH>{{\partial G^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.13}}
}}
Co {{LinkWzór|26.12}} i {{LinkWzór|26.13}} są równoważne dwom równaniom tensorowym:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\partial_{\nu}F^{\mu\nu}=\pm\mu_0 J^{\mu}\mbox{ lub }{F^{\mu\nu}}_{,\nu}=\pm\mu_0 J^{\mu}\;</MATH>|26.14}}
| 2 = {{CentrujWzór|<MATH>\partial_{\nu}G^{\mu\nu}=0\mbox{ lub }{G^{\mu\nu}}_{,\nu}=0\;</MATH>|26.15}}
}}
Najpierw udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=0, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy pierwsze prawo Maxwella {{LinkWzór|15.14|Elektrodynamika_Maxwella}} przy definicji czasowej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{0\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{00}}\over{\partial x^0}}+{{\partial F^{01}}\over{\partial x^1}}+
{{\partial F^{02}}\over{\partial x^2}}+{{\partial F^{03}}\over{\partial x^3}}=\pm{{1}\over{c}}\left({{\partial E_x}\over{\partial x}}+{{\partial E_y}\over{\partial y}}+{{\partial E_z}\over{\partial z}}\right)=\pm{{1}\over{c}}\nabla\cdot\vec{E}=\pm\mu_0 J^0=\pm\mu_0 c\rho\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \nabla\cdot\vec{E}=\mu_0c^2\rho\Rightarrow \nabla\cdot\vec{E}={{\rho}\over{\epsilon_0}}\;</MATH>|26.16}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}}, dla parametru μ=1, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej iksowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{1\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{10}}\over{\partial x^0}}+{{\partial F^{11}}\over{\partial x^1}}+
{{\partial F^{12}}\over{\partial x^2}}+{{\partial F^{13}}\over{\partial x^3}}=
\mp{{1}\over{c^2}}{{\partial E_x}\over{\partial t}}\pm{{\partial B_z}\over{\partial y}}\mp{{\partial B_y}\over{\partial z}}=\left(\mp\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}\pm\nabla\times\vec{B}\right)_x=\pm\mu_0 J^1=\pm\mu_0 J_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \left(-\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}+\nabla\times\vec{B}\right)_x=\mu_0J_x\;</MATH>|26.17}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=2, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej igrekowy przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{2\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{20}}\over{\partial x^0}}+{{\partial F^{21}}\over{\partial x^1}}+
{{\partial F^{22}}\over{\partial x^2}}+{{\partial F^{23}}\over{\partial x^3}}=
\mp{{1}\over{c^2}}{{\partial E_y}\over{\partial t}}\mp{{\partial B_z}\over{\partial x}}\pm{{\partial B_x}\over{\partial z}}=\left(\mp\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}\pm\nabla\times\vec{B}\right)_y=\pm\mu_0 J_y\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\left(-\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}+\nabla\times\vec{B}\right)_y=\mu_0 J_y</MATH>|26.18}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=3, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej zetowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{3\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{30}}\over{\partial x^0}}+{{\partial F^{31}}\over{\partial x^1}}+
{{\partial F^{32}}\over{\partial x^2}}+{{\partial F^{33}}\over{\partial x^3}}=
\mp{{1}\over{c^2}}{{\partial E_z}\over{\partial t}}\pm{{\partial B_y}\over{\partial x}}\mp{{\partial B_x}\over{\partial y}}=\left(\mp\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}\pm\nabla\times\vec{B}\right)_z=\pm\mu_0 J_z\Rightarrow\;</MATH>{{Br}}<MATH>\left(-\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}+\nabla\times\vec{B}\right)_z=\mu_0 J_z</MATH>|26.19}}
Zatem dla μ=1,2,3 otrzymujemy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} przy pomocy dowodów ostatnich trzech równań, tzn. {{LinkWzór|26.17}}, {{LinkWzór|26.18}} i w końcu {{LinkWzór|26.19}}.
Teraz udowodnijmy drugi wzór tensorowy {{LinkWzór|26.13}} dla parametru μ=0, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy drugie prawo Maxwella {{LinkWzór|15.16|Elektrodynamika_Maxwella}} zapisaną przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{0\nu}}\over{\partial x^{\nu}}}={{\partial G^{00}}\over{\partial x^0}}+{{\partial G^{01}}\over{\partial x^1}}+{{\partial G^{02}}\over{\partial x^2}}+{{\partial G^{03}}\over{\partial x^3}}=
\pm\left({{\partial B_x}\over{\partial x}}+{{\partial B_y}\over{\partial y}}+{{\partial B_z}\over{\partial z}}\right)=\nabla\cdot\vec{B}\;</MATH>|26.20}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}}, dla parametru μ=1, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy trzecie prawo Maxwella {{LinkWzór|15.1|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej iksowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{1\nu}}\over{\partial x^{\nu}}}={{\partial G^{10}}\over{\partial x^0}}+{{\partial G^{11}}\over{\partial x^1}}+{{\partial G^{12}}\over{\partial x^2}}+{{\partial G^{13}}\over{\partial x^3}}=
\mp{{1}\over{c}}{{\partial B_x}\over{\partial t}}\mp{{1}\over{c}}{{\partial E_z}\over{\partial y}}\pm{{1}\over{c}}{{\partial E_y}\over{\partial z}}=\mp{{1}\over{c}}\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow 0=\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_x\;</MATH>|26.21}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=2, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy trzecie prawo Maxwella {{LinkWzór|15.16|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej igrekowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{2\nu}}\over{\partial x^{\nu}}}={{\partial G^{20}}\over{\partial x^0}}+{{\partial G^{21}}\over{\partial x^1}}+{{\partial G^{22}}\over{\partial x^2}}+{{\partial G^{23}}\over{\partial x^3}}=
\mp{{1}\over{c}}{{\partial B_y}\over{\partial t}}\pm{{1}\over{c}}{{\partial E_z}\over{\partial x}}\mp{{1}\over{c}}{{\partial E_x}\over{\partial z}}=\mp{{1}\over{c}}\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_y\Rightarrow\;</MATH>{{Br}}<MATH>0=\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_y\;</MATH>|26.22}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=3, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.1|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej zetowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{3\nu}}\over{\partial x^{\nu}}}={{\partial G^{30}}\over{\partial x^0}}+{{\partial G^{31}}\over{\partial x^1}}+{{\partial G^{32}}\over{\partial x^2}}+{{\partial G^{33}}\over{\partial x^3}}=
\mp{{1}\over{c}}{{\partial B_z}\over{\partial t}}\mp{{1}\over{c}}{{\partial E_y}\over{\partial x}}\pm{{1}\over{c}}{{\partial E_x}\over{\partial y}}=\mp{{1}\over{c}}\left({{\partial \vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_z\Rightarrow\;</MATH>{{Br}}<MATH>0=\left({{\partial \vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_z\;</MATH>|26.23}}
Na podstawie obliczeń {{LinkWzór|26.21}}, {{LinkWzór|26.22}}, a na samym końcu {{LinkWzór|26.23}} przy definicji tensora dualnego dla pola elektromagnetycznego {{LinkWzór|26.11}}, że równanie tensorowe Maxwella {{LinkWzór|26.13}} przechodzi w drugie i w trzecie rówanie Maxwella.
Zatem dwa tensorowe równania Maxwella są poprawne {{LinkWzór|26.12}} i {{LinkWzór|26.13}} i one przechodzą w cztery równania elektrodynamika sformułowane przez Maxwella.
=== Tensorowe równania Maxwella dla materii ===
Korzystając z definicji tensora pola elektromagnetycznego dla próżni i tensora dualnego, to równania Maxwella możemy zapisać w postaci tensorowej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial S^{\mu\nu}}\over{\partial x^{\nu}}}=J^{\mu}_{sw}\;</MATH>|26.24}}
| 2 = {{CentrujWzór|<MATH>{{\partial G^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.25}}
}}
Co {{LinkWzór|26.24}} i {{LinkWzór|26.25}} są równoważne dwom równaniom tensorowym:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\partial_{\nu}S^{\mu\nu}=\pm J^{\mu}_{sw}\mbox{ lub }{S^{\mu\nu}}_{,\nu}=\pm J^{\mu}_{sw}\;</MATH>|26.26}}
| 2 = {{CentrujWzór|<MATH>\partial_{\nu}G^{\mu\nu}=0\mbox{ lub }{G^{\mu\nu}}_{,\nu}=0\;</MATH>|26.27}}
}}
Najpierw udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}}, dla parametru μ=0, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy pierwsze prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy definicji czasowej czterowektora prędkości {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial S^{0\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{00}}\over{\partial x^0}}+{{\partial S^{01}}\over{\partial x^1}}+{{\partial S^{02}}\over{\partial x^2}}+{{\partial S^{03}}\over{\partial x^3}}=\pm{{\partial cD_x}\over{\partial x}}\pm{{\partial cD_y}\over{\partial y}}\pm{{\partial cD_z}\over{\partial z}}=\pm c\nabla\cdot\vec{D}=\pm J^0=\pm c\rho_{sw}\Rightarrow \nabla\cdot\vec{D}=\rho_{sw}</MATH>|26.28}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}} dla parametru μ=1, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy iksowej jego składowej. Także skorzystamy z definicji czterowektora prądu objętościowego ładunków elektrycznych {{LinkWzór|26.5}}, zatem dochodzimy wtedy do wniosku:
{{CentrujWzór|<MATH>{{\partial S^{1\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{10}}\over{\partial x^0}}+{{\partial S^{11}}\over{\partial x^1}}+{{\partial S^{12}}\over{\partial x^2}}+{{\partial S^{13}}\over{\partial x^3}}=\mp{{\partial cD_x}\over{\partial ct}}\pm{{\partial H_z}\over{\partial y}}\mp{{\partial H_y}\over{\partial z}}=\pm\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_x=\pm(\vec{J}_{sw})_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_x=(\vec{J}_{sw})_x</MATH>|26.29}}.
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}} dla parametru μ=2, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy igrekowej jego składowej. Także będziemy korzystać z definicji czterowektora prądu objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial S^{2\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{20}}\over{\partial x^0}}+{{\partial S^{21}}\over{\partial x^1}}+{{\partial S^{22}}\over{\partial x^2}}+{{\partial S^{23}}\over{\partial x^3}}=\mp{{\partial cD_y}\over{\partial ct}}\mp{{\partial H_z}\over{\partial x}}\pm{{\partial H_x}\over{\partial z}}=\pm\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_y=\pm(\vec{J}_{sw})_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_y=(\vec{J}_{sw})_x</MATH>|26.30}}
Na sam koniec udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}} dla parametru μ=3, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy definicji zetowej jego składowej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial S^{3\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{30}}\over{\partial x^0}}+{{\partial S^{31}}\over{\partial x^1}}+{{\partial S^{32}}\over{\partial x^2}}+{{\partial S^{33}}\over{\partial x^3}}=\mp{{\partial cD_z}\over{\partial ct}}\pm{{\partial B_y}\over{\partial x}}\mp{{\partial B_x}\over{\partial y}}=\pm\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_z=\pm(\vec{J}_{sw})_z\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_z=(\vec{J}_{sw})_z</MATH>|26.31}}
Zbierając razem trzy ostatnie wynikowe równania otrzymujemy czwarte prawo Maxwella dla materii {{LinkWzór|15.41|Elektrodynamika_Maxwella}}.
=== Tensor pola elektromagnetycznego poprzez czteropotencjał ===
We wzorach na natężenie pola elektrycznego w zależności od potencjału skalarnego i wektorowego {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, i we wzorze {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} występuje potencjał skalarny i wektorowy. Te potencjały można napisać ogólnie w postaci czterowektora potencjału tensorowego kontrkowariantnego:
{{CentrujWzór|<MATH>A^{\mu}=\left({{\varphi}\over{c}},A_x,A_y,A_z\right)=\left({{\varphi}\over{c}},\vec{A}\right)\;</MATH>|26.32|Obramuj}}
lub w postaci kowariantnej jako odpowiednim wzoru {{LinkWzór|26.32}}, który otrzymamy wymnóżając ostatnio wspomnianą definicję podwójnie kontrwariatnego tensora potencjały tensorowego przez odpowiedni tensor metryczny, tzn. przez tensor metryczny przestrzeni Minkowskiego η{{Sub|μν}}:
{{CentrujWzór|<MATH>A_{\mu}=A^{\nu}\eta_{\nu\mu}=\left(\pm{{\varphi}\over{c}},\mp\vec{A}\right)\;</MATH>|26.33}}
Weźmy tensor {{LinkWzór|26.9}} i zdefiniujmy go w oparciu o definicję czterowektora potencjału elektromagnetycznego, zatem tą tożsamość piszemy:
{{CentrujWzór|<MATH>F^{\mu\nu}={{\partial A^{\mu}}\over{\partial x_{\nu}}}-{{\partial A^{\nu}}\over{\partial x_{\mu}}}\Rightarrow F^{\mu\nu}=\partial^{\nu}A^{\mu}-\partial^{\mu}A^{\nu}\mbox{ lub }F^{\mu\nu}={A^{\mu}}^{,\nu}-{A^{\nu}}^{,\mu}\;</MATH>|26.34|Obramuj}}
Udowodnijmy w tym celu, że przepis {{LinkWzór|26.34}} przechodzi w tożsamość wcześniej wprowadzoną {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, przy tym będziemy korzystać z przedstawienia tensora pola elektromagnetycznego T{{Sup|μν}}, zatem przejdźmy do sedna sprawy:
{{CentrujWzór|<MATH>F^{01}={{\partial A^0}\over{\partial x_1}}-{{\partial A^1}\over{\partial x_0}}=\mp{{1}\over{c}}{{\partial\varphi}\over{\partial x}}\mp{{1}\over{c}}{{\partial A_x}\over{\partial t}}=
\mp{{1}\over{c}}\left(\nabla\varphi+{{\partial A_x}\over{\partial t}}\right)_x=\pm{{E_x}\over{c}}\;</MATH>|26.35}}
{{CentrujWzór|<MATH>F^{02}={{\partial A^0}\over{\partial x_2}}-{{\partial A^2}\over{\partial x_0}}=\mp{{1}\over{c}}{{\partial\varphi}\over{\partial y}}\mp{{1}\over{c}}{{\partial A_y}\over{\partial t}}=\mp{{1}\over{c}}\left(\nabla\varphi+{{\partial\vec{A}}\over{\partial t}}\right)_y=\pm{{E_y}\over{c}}\;</MATH>|26.36}}
{{CentrujWzór|<MATH>F^{03}={{\partial A^0}\over{\partial x_3}}-{{\partial A^3}\over{\partial x_0}}=\mp{{1}\over{c}}{{\partial\varphi}\over{\partial z}}\mp{{1}\over{c}}{{\partial A_z}\over{\partial t}}=\mp{{1}\over{c}}\left(\nabla\varphi+{{\partial\vec{A}}\over{\partial t}}\right)_z=\pm{{E_z}\over{c}}\;</MATH>|26.37}}
Z obliczeń {{LinkWzór|26.34}}, {{LinkWzór|26.35}} oraz {{LinkWzór|26.36}} udowodniliśmy, że tożsamość {{LinkWzór|26.33}} przechodzi w napisany wcześniej wzór {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}.
Następnym krokiem jest udowodnienie, że {{LinkWzór|26.34}} przechodzi we wzór {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, przy tym będziemy korzystać ze przedstawienia tensora pola elektromagnetycznego T{{Sup|μν}}, zatem przejdźmy do sedna sprawy.
{{CentrujWzór|<MATH>F^{12}={{\partial A^1}\over{\partial x_2}}-{{\partial A^2}\over{\partial x_1}}=\mp{{\partial A_x}\over{\partial y}}\pm{{\partial A_y}\over{\partial x}}=\pm(\nabla\times\vec{A})_z=\pm B_z\;</MATH>|26.38}}
{{CentrujWzór|<MATH>F^{13}={{\partial A^1}\over{\partial x_3}}-{{\partial A^3}\over{\partial x_1}}=\mp{{\partial A_x}\over{\partial z}}\pm{{\partial A_z}\over{\partial x}}=\mp(\nabla\times\vec{A})_y=\mp B_y\;</MATH>|26.39}}
{{CentrujWzór|<MATH>F^{23}={{\partial A^2}\over{\partial x_3}}-{{\partial A^3}\over{\partial x_2}}=\mp{{\partial A_y}\over{\partial z}}\pm{{\partial A_z}\over{\partial y}}=\pm(\nabla\times\vec{A})_x=\pm B_x\;</MATH>|26.40}}
Zatem udało nam się udowodnić co zamierzaliśmy.
Otrzymaliśmy zatem dwa równania opisujące natężenie pola elektrycznego {{LinkWzór|20.4|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}} i tożsamość {{LinkWzór|20.1|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}} na indukcję pola magnetycznego.
== Tensorowe równania Maxwella a zgodność z teorią względności ==
Udowodnimy zgodność tensorowych równań Maxwella dla próżni i materii.
=== Tensorowe równania Maxwella, a zgodność z teorią względności dla próżni ===
Zakładamy, że w starym układzie współrzędnych w próżni są spełnione równania tensorowe Maxwella na podstawie ich ogólnego przedstawienia {{LinkWzór|26.12}} i {{LinkWzór|26.13}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial{F}^{\mu\nu}}\over{\partial x^{\nu}}}=\pm\mu_0{J}^{\mu}\;</MATH>|26.41}}
| 2 = {{CentrujWzór|<MATH>{{\partial{G}^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.42}}
}}
Według szczególnej teorii względności powyższe równania w starym układzie współrzędnych są równoważne równaniom w nowym układzie współrzędnych w formie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial\overline{F}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=\pm\mu_0\overline{J}^{\mu}\;</MATH> |26.43}}
| 2 = {{CentrujWzór|<MATH>{{\partial\overline{G}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=0\;</MATH>|26.44}}
}}
Tensor pola elektromagnetycznego {{LinkWzór|26.9}} też jest również tensorem, bo on również transformuje się z jednego układu współrzędnych do innego w sposób:
{{CentrujWzór|<MATH>\overline{F}^{\mu\nu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}} F^{\alpha\beta}\;</MATH>|26.45}}
Podstawmy transformację tensora pola elektromagnetycznego F{{Sup|μν}}, który opisuje transformację ze starego do nowego układu współrzędnych, do pierwszego równania tensorowego Maxwella {{LinkWzór|26.43}} do jego lewej strony:
{{CentrujWzór|<MATH>L={{\partial\overline{F}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=
{{\partial}\over{\partial\overline{x}^{\nu}}}{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}} F^{\alpha\beta}=
{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial F^{\alpha\beta}}\over{\partial\overline{x}^{\nu}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial x^{\gamma}}\over{\partial\overline{x}^{\nu}}}{{\partial F^{\alpha\beta}}\over{\partial x^{\gamma}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}\delta^{\gamma}_{\beta}{{\partial F^{\alpha\beta}}\over{\partial x^{\gamma}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial F^{\alpha\beta}}\over{\partial x^{\beta}}}\;</MATH>|26.46}}
Napiszmy lewą stronę tensorowego równania Maxwella {{LinkWzór|26.41}}, korzystając z wiadomości z metod matematycznych fizyki o tensorach, że ten tensor gęstości objętościowej prądu elektrycznego transformuje się z jednego układu współrzędnych (ze starego) do drugiego układów współrzędnych (do nowego) wedle:
{{CentrujWzór|<MATH>P=\mu_0\overline{J}^{\mu}=\mu_0{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}J^{\alpha}\;</MATH>|26.47}}
Przyrównajmy obie strony równania {{LinkWzór|26.41}} do siebie, czyli {{LinkWzór|26.45}} z {{LinkWzór|26.46}}, wtedy przenieśmy wszystkie wyrazy z jego lewej strony na prawą jakie są i wydzielmy pewne wyrazy pod nawias, w celu udowodnienia niezmienniczości tensorowych równań Maxwella, wtedy dostajemy tożsamość:
{{CentrujWzór|<MATH>{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial F^{\alpha\beta}}\over{\partial x^{\beta}}}=\mu_0{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}J^{\alpha}\Rightarrow
{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}\left({{\partial F^{\alpha\beta}}\over{\partial x^{\beta}}}\mp\mu_0 J^{\alpha}\right)=0\;</MATH>|26.48}}
Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|26.48}} udowodniliśmy, że jeśli zachodzi {{LinkWzór|26.41}}
co ono jest równanie spełnione w starym układzie współrzędnych, to w ten sposób udowodniliśmy, że ono także spełnione w nowym układzie odniesienia, co w tym układzie spełniony jest wzór {{LinkWzór|26.43}}.
Podobnie dowodzimy niezmienniczość drugiego tensorowego równanie Maxwella, że równanie tensorowe co jest spełnione w nowym układzie odniesienia, czyli {{LinkWzór|26.42}}, na podstawie tego widzimy, że ten pierwszy wzór przechodzi w ten drugi, czyli we wzór {{LinkWzór|26.44}}, i odwrotnie.
Czyli dowodzimy, że nasze równania tensorowe równania Maxwella dla próżni {{LinkWzór|26.12}} i {{LinkWzór|26.13}} są niezależne od wyboru układu odniesienia inercjalnego.
=== Tensorowe równania Maxwella, a zgodność z teorią względności dla materii ===
Zakładamy, że w starym układzie współrzędnych w próżni są spełnione równania tensorowe Maxwella na podstawie ich ogólnego przedstawienia {{LinkWzór|26.24}} i {{LinkWzór|26.25}}
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial{S}^{\mu\nu}}\over{\partial x^{\nu}}}=\pm {J}^{\mu}_{sw}\;</MATH>|26.49}}
| 2 = {{CentrujWzór|<MATH>{{\partial{G}^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.50}}
}}
Według szczególnej teorii względności powyższe równania w starym układzie współrzędnych są równoważne równaniom w nowym układzie współrzędnych w formie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial\overline{S}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=\pm\overline{J}^{\mu}_{sw}\;</MATH>|26.51}}
| 2 = {{CentrujWzór|<MATH>{{\partial\overline{G}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=0\;</MATH>|26.52}}
}}
Niezmienniczość od inercjalnego układu odniesienia drugiego tensorowego równania Maxwella {{LinkWzór|26.25}} tak samo się udowodnia jak dla próżni {{LinkWzór|26.13}}. W przypadku pierwszego równania {{LinkWzór|26.24}} musimy wykorzystać, że S{{Sup|μν}} jest tensorem i transformuje się ze starego układu do nowego w sposób:
{{CentrujWzór|<MATH>\overline{S}^{\mu\nu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}S^{\alpha\beta}</MATH>|26.53}}
Dowód, że równanie tensorowe {{LinkWzór|26.49}} w starym układzie odniesienia przechodzi w wyniku transformacji w równanie w nowym układzie odniesienia wedle postaci {{LinkWzór|26.51}}, który jest bardzo podobny jak dla próżni, tylko musimy tym razem zastosować transformację tensora S{{Sup|μν}} {{LinkWzór|26.10}} w postaci {{LinkWzór|26.53}}.
=== Tensorowy charakter czteropotencjału, a tensor pola elektromagnetycznego ===
Następnie udowodnijmy, czy równanie na tensor pola elektromagnetycznego {{LinkWzór|26.33}} napisany w zależności od czteropotencjału prądu elekrycznego {{LinkWzór|26.32}} jest niezależny od układu współrzędnego inercjalnego.
Oczywiste jest, że czteropotencjał w elektromagnetyzmie jest tensorem, a więc transformuje się ze starego układu współrzędnych do nowego wedle sposobu:
{{CentrujWzór|<MATH>\overline{A}^{\mu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}A^{\alpha}\;</MATH>|26.54}}
W starym układzie odniesienia powino mieć miejsce wzór ponizej, względem jego postaci ogólnej zapisaną w punkcie {{LinkWzór|26.34}} po zastosowaniu transformacji czeropoencjału {{LinkWzór|26.32}} wedle sposobu:
{{CentrujWzór|<MATH>\overline{F}^{\mu\nu}={{\partial \overline{A}^{\mu}}\over{\partial \overline{x}_{\nu}}}-{{\partial \overline{A}^{\nu}}\over{\partial \overline{x}_{\mu}}}={{\partial}\over{\partial\overline{x}_{\nu}}}\left({{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}A^{\alpha}\right)-{{\partial}\over{\partial \overline{x}_{\mu}}}\left({{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}A^{\beta}\right)={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial x_{\beta}}\over{\partial\overline{x}_{\nu}}}{{\partial A^{\alpha}}\over{\partial x_{\beta}}}-{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial x_{\alpha}}\over{\partial\overline{x}_{\mu}}}{{\partial A^{\beta}}\over{\partial x_{\alpha}}}\;</MATH>|26.55}}
Ze względu, że równania w szczególnej teorii względności transformujące są tak zbudowane by ich postać była niezmiennicza niezależna od układu odniesienia i współrzędne położenia lub czasu transformują ze starego układu odniesienia do nowego czy odwrotnie, a także wiedząc, że zachodzi tożsamość {{Formuła|<MATH>{{\partial x_{\beta}}\over{\partial\overline{x}_{\nu}}}={{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}\;</MATH>}}, wtedy dochodzimy do wniosku:
{{CentrujWzór|<MATH>\overline{F}^{\mu\nu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial A^{\alpha}}\over{\partial x_{\beta}}}-{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial A^{\beta}}\over{\partial x_{\alpha}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}\left({{\partial A^{\alpha}}\over{\partial x_{\beta}}}-{{\partial A^{\beta}}\over{\partial x_{\alpha}}}\right)={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}F^{\alpha\beta}\;</MATH>|26.56}}
W ten sposób udowodniliśmy, że jeśli czteropotencjał jest tensorem {{LinkWzór|26.32}}, to tensor pola elektromagnetycznego również jest nim.
== Tensorowe cechowanie Lorentza ==
Cechowania Lorentza {{LinkWzór|20.7|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} możemy zapisać wedle sposobu poniżej. Cechowanie Lorentza przekształćmy, by można było zastosować definicję czteropotencjału, tak by przy gęstości objętościowej ładunku znajdowała się literka c, co określa wartość prędkości światła.
{{CentrujWzór|<MATH>{{\partial\left({{\varphi}\over{c}}\right)}\over{\partial (ct)}}+{{\partial A_x}\over{\partial x}}+{{\partial A_y}\over{\partial y}}+{{\partial A_z}\over{\partial z}}=0\;</MATH>|26.57}}
Korzystając z definicji czteropotencjału {{LinkWzór|26.32}}, wtedy wzór {{LinkWzór|26.57}} możemy zapisać w bardziej elegancki tensorowy sposób wedle:
{{CentrujWzór|<MATH>{{\partial A^{\mu}}\over{\partial x^{\mu}}}=0\;</MATH>|26.58}}
== Tensorowe równania Maxwella a czteropotencjał i czteroprąd ==
Korzystając z pierwszego tensorowego równania Maxwella dla próżni {{LinkWzór|26.12}}, wtedy do tego wzoru możemy podstawić tożsamość {{LinkWzór|26.34}}, wtedy dostajemy:
{{CentrujWzór|<MATH>{{\partial}\over{\partial x^{\nu}}}\left({{\partial A^{\mu}}\over{\partial x_{\nu}}}-{{\partial A^{\nu}}\over{\partial x_{\mu}}}\right)=\pm\mu_0 J^{\mu}\Rightarrow{{\partial^2A^{\mu}}\over{\partial x_{\nu}\partial x^{\nu}}}-{{\partial^2A^{\nu}}\over{\partial x_{\mu}\partial x^{\nu}}}=\pm\mu_0 J^{\mu}\Rightarrow{{\partial^2A^{\mu}}\over{\partial x_{\nu}\partial x^{\nu}}}-{{\partial }\over{\partial x_{\mu}}}\left({{\partial A^{\nu}}\over{\partial x^{\nu}}}\right)=\pm\mu_0 J^{\mu}\;</MATH>|26.59}}
Teraz z korzystajmy z tensorowej postaci cechowania Lorenzta {{LinkWzór|26.58}}, wtedy równanie {{LinkWzór|26.59}} przechodzi w równanie poniżej, które to tutaj skorzystamy z definicji operatora dalambercjanu {{LinkWzór|20.13|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, wtedy możemy napisać:
{{CentrujWzór|<MATH>{{\partial^2A^{\mu}}\over{\partial x_{\nu}\partial x^{\nu}}}=\pm\mu_0 J^{\mu}\Rightarrow\left({{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}-\Delta\right)A^{\mu}=\mu_0 J^{\mu}\Rightarrow\left(\Delta-{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}\right)A^{\mu}=-\mu_0 J^{\mu}\Rightarrow\square A^{\mu}=-\mu_0J^{\mu}\;</MATH>|26.60}}
Widzimy, że równanie końcowe tensorowe {{LinkWzór|26.60}} jest odpowiednikiem równania {{LinkWzór|20.7|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}} i {{LinkWzór|20.8|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}}, wynika to na podstawie definicji czerowektora potencjału elektromagnetycznego {{LinkWzór|26.32}} i czterowektora prądu objętościowego ładunków elektrycznych {{LinkWzór|26.5}}.
== Czterowektor siły w elektrodynamice ==
Czterowektor siły definiujemy w oparciu o definicję tensora pola elektrycznego {{LinkWzór|26.9}} oraz o definicję czterowektora prędkości wedle:
{{CentrujWzór|<MATH>K^{\mu}=-qu_{\nu}F^{\mu\nu}=qu_{\nu}F^{\nu\mu}\;</MATH>|26.61}}
I wyznaczmy najpierw trzy kolejne składowe czterowektora siły {{LinkWzór|26.61}} dla parametru μ>0, zatem przejdźmy do dzieła, czyli wyznaczmy współrzędną iksową czterowektora siły, korzystając przy tym z definicji tensora pola elektromagnetycznego {{LinkWzór|26.9}}.
{{CentrujWzór|<MATH>K_x=K^1=-q\left(u^{0}F^{10}-u^1F^{11}-u^2F^{12}-u^3F^{13}\right)=q{{1}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left[
-c\left(-{{E_x}\over{c}}\right)+v^yB_z-v^zB_y\right]=\;</MATH>{{Br}}<MATH>={{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(\vec{E}+\vec{v}\times\vec{B}\right)_x={{\gamma}\over{c}}F_x\;</MATH>|26.62}}
Następnie określmy współrzędną igrekową czterowektora siły wedle {{LinkWzór|26.61}}, korzystając przy tym z definicji tensora pola elektromagnetycznego {{LinkWzór|26.9}}.
{{CentrujWzór|<MATH>K_y=K^2=-q\left(u^0F^{20}-u^1F^{21}-u^2F^{22}-u^3F^{33}\right)={{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(-c\left(-{{E_y}\over{c}}\right)-v_xB_z+v_zB_x\right)=\;</MATH>{{Br}}<MATH>=
{{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(\vec{E}+\vec{v}\times\vec{B}\right)_y={{\gamma}\over{c}} F_y\;</MATH>|26.63}}
Następnie określmy współrzędną zetową czterowektora siły wedle {{LinkWzór|26.61}}, korzystając przy tym z definicji tensora pola elektromagnetycznego {{LinkWzór|26.9}}.
{{CentrujWzór|<MATH>K_z=K^3=-q\left(u^0F^{30}-u^1F^{31}-u^2F^{32}-u^3F^{33}\right)={{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left[-c\left(-{{E_z}\over{c}}\right)+v_xB_y-v_yB_x\right]=\;</MATH>{{Br}}<MATH>=
{{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(\vec{E}+\vec{v}\times\vec{B}\right)_z={{\gamma}\over{c}} F_z\;</MATH>|26.64}}
Czyli ogólnie otrzymaliśmy na podstawie liczenia współrzędnych czasoprzestrzenych czterowektora siły {{LinkWzór|26.61}} wzór
w postaci:
{{CentrujWzór|<MATH>\vec{K}={{\gamma}\over{c}}\vec{F}\;</MATH>|26.65}}
* gdzie:<MATH>\vec{F}\;</MATH> jest to siła Lorentza wprowadzone w punkcie określonym jako {{LinkWzór|8.3|Magnetostatyka}}, czyli taki sam wzór mamy w elektromagnetyzmie na tą wielkość.
Transformacja czterowektora siły, a właściwie jej współrzędna przestrzenne wygląda tak samo w szczególnej teorii względności jak w punkcie {{LinkWzór|26.65}}.
A teraz wyznaczmy element czterosiły {{LinkWzór|26.61}} dla wskaźnika μ=0, zatem zróbmy to:
{{CentrujWzór|<MATH>K_t=K^0=-q\left(u^0F^{00}-u^1F^{01}-u^2F^{02}-u^3F^{03}\right)=
{{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(v_x{{E_x}\over{c}}+v_y{{E_y}\over{c}}+v_z{{E_z}\over{c}}\right)=\;</MATH>{{Br}}<MATH>={{q}\over{c^2\sqrt{1-{{v^2}\over{c^2}}}}}(\vec{v}\cdot\vec{E})=
\left[\vec{v}\cdot\left(\vec{E}+\vec{v}\times\vec{B}\right)\right]{{q\gamma}\over{c^2}}=
{{\vec{v}\cdot\vec{F}}\over{c^2}}\gamma={{(m\vec{v})\cdot\vec{F}}\over{mc^2}}\gamma={{\vec{p}\cdot\vec{F}}\over{E}}\gamma\;</MATH>|26.66}}
Zbierając wszystkie elementy czterowektora siły, tzn. najpierw jej część czasową {{LinkWzór|26.66}} i później jej część przestrzenną {{LinkWzór|26.65}}, zatem mówiąc ogólnie czterowektor siły wyraża się wzorem w naszym przypadku:
{{CentrujWzór|<MATH>K^{\mu}=\left({{\vec{p}\cdot\vec{F}}\over{E}}\gamma,{{\gamma}\over{c}}\vec{F}\right)\;</MATH>|26.67}}
Powyższy wzór na czterowektor siły jest ten sam, co wyprowadziliśmy w szczególnej teorii względności, też czterowektora siły, a więc definicja czterowektora siły w elektrodynamice relatywistycznej jest poprawna i zgodna ze szczególną teorią względności ogłoszoną w 1905 przez Einsteina.
== Transformacje pól magnetycznych i elektrycznych ==
Będziemy się zajmować transformacjami względem szczególnej teorii względności pol natężenia i indukcji pola elektrycznego a także natężenia i indukcji pola magnetycznego.
=== Transformacje natężenia pola elektrycznego i indukcji pola magnetycznego ===
Macierz transformacji ze starego układu odniesienia do nowego układu odniesienia inercjalnego w szczególnej teorii względności jest opisana wzorem:
{{CentrujWzór|<MATH>{{\partial\overline{x}^{\mu}}\over{\partial x^{\nu}}}=\MATHbf{M}=\begin{bmatrix}
\gamma&-\beta\gamma&0&0\\
-\beta\gamma&\gamma&0&0\\
0&0&1&0\\
0&0&0&1
\end{bmatrix}\;</MATH>|26.68}}
Skorzystamy też, że tensor pola elektromagnetycznego {{LinkWzór|26.9}} jest tensorem, więc transformuje się według wzoru {{LinkWzór|26.45}} przy macierzy transformacji napisanej wzorem {{LinkWzór|26.68}}. wyznaczmy wzory jak transformują się współrzędne natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm{{\overline{E}_x}\over{c}}=\overline{F}^{01}={{\partial\overline{x}^{0}}\over{\partial x^{0}}}{{\partial\overline{x}^{0}}\over{\partial x^{1}}}F^{00}+
{{\partial\overline{x}^{0}}\over{\partial x^{0}}}{{\partial\overline{x}^{1}}\over{\partial x^{1}}}F^{01}+
{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{1}}\over{\partial x^{0}}}F^{10}+
{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{1}}\over{\partial x^{1}}}F^{11}+
{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{2}}\over{\partial x^{2}}}F^{22}+{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{3}}\over{\partial x^{3}}}F^{33}=\;</MATH>{{Br}}<MATH>=
\pm\gamma^2{{E_x}\over{c}}\mp\beta^2\gamma^2{{E_x}\over{c}}=\pm{{E_x}\over{c}}\gamma^2\left(1-\beta^2\right)=\pm{{E_x}\over{c}}\gamma^2\gamma^{-2}=\pm{{E_x}\over{c}}\;</MATH>|26.69}}
Stąd otrzymujemy pierwszą zależność współrzędnej iksowej pola elektrycznego wedle obliczeń {{LinkWzór|26.69}}.
Zbadajmy jaka jaka jest współrzędna igrekowa natężenia pola elektrycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm{{\overline{E}_y}\over{c}}=\overline{F}^{02}={{\partial\overline{x}^0}\over{\partial x^{\alpha}}}{{\partial\overline{x}^2}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^0}\over{\partial x^{0}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{02}+{{\partial\overline{x}^0}\over{\partial x^{1}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{12}=\pm\gamma{{E_y}\over{c}}\mp\gamma\beta B_z=\pm{{1}\over{c}}{{E_y-uB_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.70}}
Stąd otrzymujemy pierwszą zależność współrzędnej igrekowej pola elektrycznego wedle obliczeń {{LinkWzór|26.70}}.
Zbadajmy jaka jaka jest współrzędna zetowa natężenia pola elektrycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm{{\overline{E}_z}\over{c}}=\overline{F}^{03}=
{{\partial\overline{x}^0}\over{\partial x^{\alpha}}}{{\partial\overline{x}^3}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^0}\over{\partial x^{0}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{03}+
{{\partial\overline{x}^0}\over{\partial x^{1}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{13}=
\pm\gamma{{E_z}\over{c}}\pm\gamma\beta B_y={{1}\over{c}}{{E_z+uB_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.71}}
Stąd otrzymujemy pierwszą zależność współrzędnej zetowa pola elektrycznego wedle obliczeń {{LinkWzór|26.71}}.
Zbadajmy jaka jaka jest współrzędna iksowa indukcji pola magnetycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm\overline{B}_x=\overline{F}^{23}={{\partial\overline{x}^2}\over{\partial x^{\alpha}}}{{\partial\overline{x}^3}\over{\partial x^{\beta}}}F^{23}=
{{\partial\overline{x}^2}\over{\partial x^{2}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{23}=\pm B_x\;</MATH>|26.72}}
Stąd otrzymujemy pierwszą zależność współrzędnej iksowa indukcji pola magnetycznego wedle obliczeń {{LinkWzór|26.72}}.
Zbadajmy jaka jaka jest współrzędna igrekowa indukcji pola magnetycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\mp\overline{B}_y=\overline{F}^{13}={{\partial\overline{x}^1}\over{\partial x^{\alpha}}}{{\partial\overline{x}^3}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^1}\over{\partial x^{0}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{03}+{{\partial\overline{x}^1}\over{\partial x^{1}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{13}=\mp\gamma\beta{{E_z}\over{c}}\mp\gamma B_y=\mp{{B_y+{{u}\over{c^2}}E_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.73}}
Stąd otrzymujemy pierwszą zależność współrzędnej igrekowa pola elektrycznego wedle obliczeń {{LinkWzór|26.71}}.
Zbadajmy jaka jaka jest współrzędna zetowa indukcji pola elektrycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm\overline{B}_z=\overline{F}^{12}={{\partial\overline{x}^1}\over{\partial x^{\alpha}}}{{\partial\overline{x}^2}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^1}\over{\partial x^{0}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{02}+{{\partial\overline{x}^1}\over{\partial x^{1}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{12}=\mp\gamma\beta{{E_y}\over{c}}\pm\gamma B_z=\pm{{B_z-{{u}\over{c^2}}E_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.74}}
Jeśli dwa układy inercjalne odniesienia poruszają się zawsze równolegle do siebie, to transformacje natężenia pola elektrycznego i indukcji pola magnetycznego przedstawiają się wedle sposobu:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje natężenie pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{E}_x=E_x\;</MATH>|26.75}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{E}_y={{E_y-uB_z}\over{\sqrt{1-{{u^2}\over{c^2}} }}}\;</MATH>|26.76}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{E}_z={{E_z+uB_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.77}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje indukcji pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{B}_x=B_x\;</MATH>|26.78}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{B}_y={{B_y+{{u}\over{c^2}}E_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.79}}}}<!--
-->{{komórka|{{CentrujWzór|<MATH>\overline{B}_z={{B_z-{{u}\over{c^2}}E_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.80}}}}<!--
-->}}<!--
-->}}
* gdzie u jest to prędkość układu odniesienia nowego względem starego.
Podobne rozwiązania otrzymujemy, gdy rozważamy tensor dualny G{{Sup|μν}}, transformując go ze starego inercjalnego układu odniesienia do nowego.
Gdy mamy stary i nowy układ współrzędnych ogólnie nieprostokątne trójwymiarowe, w którym prędkość nowego układu współrzędnych ma jakiś kierunek ogólnie nierównoległy do osi OX starego układu współrzędnych oraz gdy nowy układ odniesienia jest ogólnie nierównoległy do starego, wiedząc, że układ prostokątny trójwymiarowy stary i nowy, na samym początku przed przejściem na układy ogólnie nieprostokątne, są do siebie równoległe i prędkość nowego układu współrzędnych jest równoległa do osi OX względem starego układu odniesienia, dokonując transformacji obrotu osi starego i nowego układu współrzędnych oraz transformując współrzędne i wersory z tych układów prostokątnych, tzn. przechodząc z tych układów trójwymiarowych prostokątnych starego i nowego równoległych względem siebie, mamy:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje natężenie pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec E}}_{||}=C_p\vec{E}_{||}\;</MATH>|26.81}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec E}}_{\perp}=C_p{{{\vec E}_{\perp}+\vec u\times \vec B}\over{\sqrt{1-{{u^2}\over{c^2}} }}}\;</MATH>|26.82}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje indukcji pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec B}}_{||}=C_p{\vec B}_{||}\;</MATH>|26.83}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec B}}_{\perp}=C_p{{{\vec B}_{\perp}-{{\vec u\times \vec E}\over{c^2}}}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.84}}}}<!--
-->}}<!--
-->}}
* gdzie {{Formuła|<MATH>\vec u\;</MATH>}} jest to prędkość układu odniesienia nowego względem starego.
=== Transformacje indukcji pola elektrycznego i natężenia pola magnetycznego ===
Transformacje pola indukcji elektrycznej otrzymujemy z transformacji natężenia pola elektrycznego poprzez zastąpienie: {{Formuła|<MATH>{{\vec{E}}\over{c}}\rightarrow c\vec{D}\Rightarrow\vec{E}\rightarrow c^2\vec{D}</MATH>}}, a natężenia pola elektrycznego z transformacji indukcji pola magnetycznego poprzez zastąpienie {{Formuła|<MATH>\vec{B}\rightarrow\vec{H}</MATH>}}, to wszystko robimy dla transformacji natężenia pola elektrycznego i indukcji pola magnetycznego, wtedy dochodzimy do wniosku:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje indukcji pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{D}_x=D_x\;</MATH>|26.85}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{D}_y={{D_y-{{u}\over{c^2}}H_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.86}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{D}_z={{D_z+{{u}\over{c^2}}H_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.87}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje natężenia pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{H}_x=H_x\;</MATH>|26.84a}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{H}_y={{H_y+uD_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.88a}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{H}_z={{H_z-uD_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.89a}}}}<!--
-->}}<!--
-->}}
* gdzie u jest to prędkość układu odniesienia nowego względem starego.
Gdy mamy stary i nowy układ współrzędnych ogólnie nieprostokątne trójwymiarowe, w którym prędkość nowego układu współrzędnych ma jakiś kierunek ogólnie nierównoległy do osi OX starego układu współrzędnych oraz gdy nowy układ odniesienia jest ogólnie nierównoległy do starego, wiedząc, że układ prostokątny trójwymiarowy stary i nowy, na samym początku przed przejściem na układy ogólnie nieprostokątne, są do siebie równoległe i prędkość nowego układu współrzędnych jest równoległa do osi OX względem starego układu odniesienia, dokonując transformacji obrotu osi starego i nowego układu współrzędnych oraz transformując współrzędne i wersory z tych układów prostokątnych, tzn. przechodząc z tych układów trójwymiarowych prostokątnych starego i nowego równoległych względem siebie, mamy:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Transformacje indukcji pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec D}_{||}=C_p{\vec D}_{||}\;</MATH>|26.90}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec D}_{\perp}=C_p{{{\vec D}_{\perp}+{{\vec u\times\vec H}\over{c^2}}}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.91}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Transformacje natężenia pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec H}_{||}=C_p{\vec H}_{||}\;</MATH>|26.92}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec H}_{\perp}=C_p{{{\vec H}_{\perp}-\vec u\times\vec D}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.93}}}}<!--
-->}}<!--
-->}}
== Ważniejsza tożsamość elektrodynamiki klasycznej ==
Bardzo ważną tożsamością występującą w elektrodynamice klasycznej w przestrzeni Minkowskiego jest to tożsamość zdefiniowana przy pomocy tensora pola elektromagnetycznego {{LinkWzór|26.9}} w postaci:
{{CentrujWzór|<MATH>F_{\mu\nu,\gamma}+F_{\gamma\mu,\nu}+F_{\nu\gamma,\mu}=0\;</MATH>|26.94}}
Tożsamość fizyczną {{LinkWzór|26.94}} możemy udowodnić podstawiając do niego {{LinkWzór|26.34}}, zatem do dzieła.
{{CentrujWzór|<MATH>\left(A_{\mu,\nu}-A_{\nu,\mu}\right)_{,\gamma}+\left(A_{\gamma,\mu}-A_{\mu,\gamma}\right)_{,\nu}+\left(A_{\nu,\gamma}-A_{\gamma,\nu}\right)_{,\mu}=0\;</MATH>|26.95}}
Aby dokończyć dalszą część dowodu należy wykorzystać twierdzenie o pochodnej różnicy i grupując wyrazy, zatem na podstawie tego mamy:
{{CentrujWzór|<MATH>{A_{\mu,\nu,\gamma}}-{A_{\mu,\gamma,\nu}}+{A_{\gamma,\mu,\nu}}-{A_{\gamma,\nu,\mu}}+{A_{\nu,\gamma,\mu}}-{A_{\nu,\mu,\gamma}}=0\;</MATH>|26.96}}
W równaniu {{LinkWzór|26.96}} wszystkie wyrazy parami są równe zero. Zatem powyższe wyrażenie jest zawsze równe zero, ze względu, że różniczkowanie cząstkowe w tym przypadku kowariantne jest zawsze działaniem względem siebie przemiennym według praw matematyki analizy matematycznej. Na tej podstawie tożsamość fizyczna {{LinkWzór|26.94}} jest twierdzeniem prawdziwym.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
0vj41s7zov13xvr009s2chbsvjuym96
558895
558894
2026-10-08T02:37:24Z
Persino
2851
/* Transformacje natężenia pola elektrycznego i indukcji pola magnetycznego */
558895
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tutaj będziemy rozpatrywać elektrodynamikę jako równania magnetyzmu i elektryczności jako zjawisko czysto relatywistyczne.
W elektrodynamice relatywistycznej przyjmujemy tensor metryczny o dwóch możliwych sygnaturach, tzn. gdy w zdiagonalizowanej macierzy Minkowskiego są elementy na diagonalnej (1,-1,-1,-1), to tą sygnaturę nazywamy dodanią, a gdy na diagonalnedj występują liczby (-1,1,1,1), to tą sygnaturę nazywamy ujemną, gdy będziemy pisać we wzorach matematycznych fizyki w elektrodynamice relatywistycznej, to {{Formuła|<MATH>\pm\;</MATH>}} lub {{Formuła|<MATH>\mp\;</MATH>}}, to znak na górze jest to sygnatura dodatnia, a na dole ujemna.
== Gęstość ładunku, wektor gęstości prądu i czterowektor gęstości prądu ==
Objętość pewnego elementu V względem jej wartości spoczynkowej V{{Sub|0}}, tzn. objętość cząstki materii, gdy ona jest w spoczynku, jest wyrażona przez:
{{CentrujWzór|<MATH>V=\sqrt{1-{{v^2}\over{c^2}}}V_0=\gamma^{-1}V_0\;</MATH>|26.1}}
Z tożsamości {{LinkWzór|26.1}} gęstość danej cząstki materii można ją wyrazić poprzez gęstość spoczynkową tej samej cząstki wedle:
{{CentrujWzór|<MATH>\rho={{q}\over{V}}={{q}\over{V_0}}\gamma=\rho_0\gamma=\rho_0u^0\;</MATH>|26.2}}
Gęstość prądu w przypadku relatywistycznym jest podobnie definiowany jak w punkcie {{LinkWzór|16.9|Zasady_zachowania_a_twierdzenia_o_właściwościach_pola_elektromagnetycznego}}, tylko gęstość ładunku elektrycznego w nim występującą wyrażamy poprzez:
{{CentrujWzór|<MATH>\vec{J}=\rho\vec{v}=\gamma\rho_0\vec{v}\;</MATH>|26.3}}
Wprowadzając gęstości prądu przy pomocy przestrzennych elementów czterowektora prędkości prędkości u{{Sup|i}}, to jego definicja jest:
{{CentrujWzór|<MATH>J^i=\rho_0\gamma v^i=c\rho_0u^i\;</MATH>|26.4}}
W elektrodynamice relatywistycznej wprowadza się czerowektor prędkości, którego element czasowy to jest gęstość ładunku elektrycznego pomnożonej przez prędkość światła c, a jej element przestrzenny to jest wielkość wektora gęstości prądu elektrycznego, zatem jego definicja jest:
{{CentrujWzór|<MATH>J^{\mu}=\left(c\rho,J_x,J_y,J_z\right)=\left(c\rho,\vec{J}\right)\;</MATH>|26.5}}
Elementy tensora {{LinkWzór|26.5}} możemy w sposób ogólny zapisać za pomocą czterowektora prądu objętościowego J{{Sup|μ}} łącząc jego dwa przypadki wedle wzorów na część czasową czterowektora prędkości {{LinkWzór|26.2}} i na elementy przestrzenne czerowektora prądu elektrycznego {{LinkWzór|26.4}}, wtedy otrzymujemy schemat liczenia czerowektora prądu elektrycznego:
{{CentrujWzór|<MATH>J^{\mu}=c\rho_0u^{\mu}\;</MATH>|26.6}}
== Tensorowe równanie ciągłości ==
Równanie ciągłości zapisane w punkcie {{LinkWzór|16.11|Zasady_zachowania_a_twierdzenia_o_właściwościach_pola_elektromagnetycznego}} można tak zapisać, że przy tym równaniu jej część czasową tak zapisujemy, że mnożymy jego licznik i mianownik przez prędkość światła c i biorąc definicję czerowekta gęstości prądu {{LinkWzór|26.5}}, to:
{{CentrujWzór|<MATH>{{\partial\rho}\over{\partial t}}+\nabla\cdot\vec{J}=0\Rightarrow
{{\partial c\rho}\over{\partial ct}}+\nabla\cdot\vec{J}=0\Rightarrow{{\partial c\rho}\over{\partial ct}}+{{\partial J_1}\over{\partial x}}+
{{\partial J_2}\over{\partial y_2}}+{{\partial J_3}\over{\partial y}}=0\;</MATH>|26.7}}
Przyjmijmy oznaczenia występujące powyżej w {{LinkWzór|26.7}} wedle schematu: x{{Sup|0}}=ct, x{{Sup|1}}=x, x{{Sup|2}}=y, x{{Sup|3}}=z. Następnie korzystając z końcowej równości {{LinkWzór|26.7}}, to równanie ciągłości zapisujemy:
{{CentrujWzór|<MATH>{{\partial J^{\mu}}\over{\partial x^{\mu}}}= 0\mbox{ lub }\partial_{\mu}J^{\mu}=0\mbox{ lub }{J^{\mu}}_{,\mu}=0\;</MATH>|26.8}}
== Tensory w elektrodynamice pól elektromagnetycznych ==
Będziemy się zajmować tensorami pól elektromagnetycznych i też tensorem dualnym do tensora pola elektromagnetycznego.
=== Tensor pola elektromagnetycznego dla próżni ===
Tensor pola elektromagnetycznego dla próżni jest:
{{CentrujWzór|<MATH>F^{\mu\nu}=\pm\begin{bmatrix}
0&{{E_x}\over{c}}&{{E_y}\over{c}}&{{E_z}\over{c}}\\
-{{E_x}\over{c}}&0&B_z&-B_y\\
-{{E_y}\over{c}}&-B_z&0&B_x\\
-{{E_z}\over{c}}&B_y&-B_x&0
\end{bmatrix}\;</MATH>|26.9}}
Tensor pola elektromagnetycznego dla próżni jest tensorem antysymetrycznym.
=== Tensor pola elektromagnetycznego dla materii ===
Tensor pola elektromagnetycznego dla materii jest:
{{CentrujWzór|<MATH>S^{\mu\nu}=\pm\begin{bmatrix}
0&cD_x&cD_y&cD_z\\
-cD_x&0&H_z&-H_y\\
-cD_y&-H_z&0&H_x\\
-cD_z&H_y&-H_x&0
\end{bmatrix}\;</MATH>|26.10}}
Porównując {{LinkWzór|26.10}} z tensorem pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}, to ten drugi tensor pola elektromagnetycznego dla materii powstaje poprzez zastąpienie wedle schematu, tzn. {{Formuła|<MATH>{{\vec{E}}\over{c}}\rightarrow c\vec{D}</MATH>}} oraz też wedle schematu w tym samym tensorem dla materii {{Formuła|<MATH>\vec{B}\rightarrow\vec{H}</MATH>}}.
Tensor pola elektromagnetycznego dla materii jest tensorem antysymetrycznym.
=== Tensor dualny pola magnetycznego dla próżni i materii ===
Tensor dualny dla elektromagnetyzmu jest w postaci:
{{CentrujWzór|<MATH>G^{\mu\nu}=\pm\begin{bmatrix}
0&B_x&B_y&B_z\\
-B_x&0&-{{E_z}\over{c}}&{{E_y}\over{c}}\\
-B_y&{{E_z}\over{c}}&0&-{{E_x}\over{c}}\\
-B_z&-{{E_y}\over{c}}&{{E_x}\over{c}}&0\\
\end{bmatrix}\;</MATH>|26.11}}
Można zauważyć, że tensor dualny {{LinkWzór|26.11}} powstaje z tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}} przez podstawianie: {{Formuła|<MATH>{{\vec{E}}\over{c}}\rightarrow\vec{B}\;</MATH>}}, a także przez {{Formuła|<MATH>\vec{B}\rightarrow-{{\vec{E}}\over{c}}\;</MATH>}}.
Tensor dualny jest tensorem antysymetrycznym.
== Tensorowe równania Maxwella ==
Przedstawimy tutaj tensorowe równania elektrodynamiki dla próżni i dla materii.
=== Tensorowe równania Maxwella dla próżni ===
Korzystając z definicji tensora pola elektromagnetycznego dla próżni i tensora dualnego, to równania Maxwella możemy zapisać w postaci tensorowej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial F^{\mu\nu}}\over{\partial x^{\nu}}}=\pm\mu_0 J^{\mu}\;</MATH>|26.12}}
| 2 = {{CentrujWzór|<MATH>{{\partial G^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.13}}
}}
Co {{LinkWzór|26.12}} i {{LinkWzór|26.13}} są równoważne dwom równaniom tensorowym:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\partial_{\nu}F^{\mu\nu}=\pm\mu_0 J^{\mu}\mbox{ lub }{F^{\mu\nu}}_{,\nu}=\pm\mu_0 J^{\mu}\;</MATH>|26.14}}
| 2 = {{CentrujWzór|<MATH>\partial_{\nu}G^{\mu\nu}=0\mbox{ lub }{G^{\mu\nu}}_{,\nu}=0\;</MATH>|26.15}}
}}
Najpierw udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=0, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy pierwsze prawo Maxwella {{LinkWzór|15.14|Elektrodynamika_Maxwella}} przy definicji czasowej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{0\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{00}}\over{\partial x^0}}+{{\partial F^{01}}\over{\partial x^1}}+
{{\partial F^{02}}\over{\partial x^2}}+{{\partial F^{03}}\over{\partial x^3}}=\pm{{1}\over{c}}\left({{\partial E_x}\over{\partial x}}+{{\partial E_y}\over{\partial y}}+{{\partial E_z}\over{\partial z}}\right)=\pm{{1}\over{c}}\nabla\cdot\vec{E}=\pm\mu_0 J^0=\pm\mu_0 c\rho\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \nabla\cdot\vec{E}=\mu_0c^2\rho\Rightarrow \nabla\cdot\vec{E}={{\rho}\over{\epsilon_0}}\;</MATH>|26.16}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}}, dla parametru μ=1, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej iksowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{1\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{10}}\over{\partial x^0}}+{{\partial F^{11}}\over{\partial x^1}}+
{{\partial F^{12}}\over{\partial x^2}}+{{\partial F^{13}}\over{\partial x^3}}=
\mp{{1}\over{c^2}}{{\partial E_x}\over{\partial t}}\pm{{\partial B_z}\over{\partial y}}\mp{{\partial B_y}\over{\partial z}}=\left(\mp\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}\pm\nabla\times\vec{B}\right)_x=\pm\mu_0 J^1=\pm\mu_0 J_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \left(-\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}+\nabla\times\vec{B}\right)_x=\mu_0J_x\;</MATH>|26.17}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=2, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej igrekowy przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{2\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{20}}\over{\partial x^0}}+{{\partial F^{21}}\over{\partial x^1}}+
{{\partial F^{22}}\over{\partial x^2}}+{{\partial F^{23}}\over{\partial x^3}}=
\mp{{1}\over{c^2}}{{\partial E_y}\over{\partial t}}\mp{{\partial B_z}\over{\partial x}}\pm{{\partial B_x}\over{\partial z}}=\left(\mp\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}\pm\nabla\times\vec{B}\right)_y=\pm\mu_0 J_y\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\left(-\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}+\nabla\times\vec{B}\right)_y=\mu_0 J_y</MATH>|26.18}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=3, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej zetowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{3\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{30}}\over{\partial x^0}}+{{\partial F^{31}}\over{\partial x^1}}+
{{\partial F^{32}}\over{\partial x^2}}+{{\partial F^{33}}\over{\partial x^3}}=
\mp{{1}\over{c^2}}{{\partial E_z}\over{\partial t}}\pm{{\partial B_y}\over{\partial x}}\mp{{\partial B_x}\over{\partial y}}=\left(\mp\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}\pm\nabla\times\vec{B}\right)_z=\pm\mu_0 J_z\Rightarrow\;</MATH>{{Br}}<MATH>\left(-\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}+\nabla\times\vec{B}\right)_z=\mu_0 J_z</MATH>|26.19}}
Zatem dla μ=1,2,3 otrzymujemy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} przy pomocy dowodów ostatnich trzech równań, tzn. {{LinkWzór|26.17}}, {{LinkWzór|26.18}} i w końcu {{LinkWzór|26.19}}.
Teraz udowodnijmy drugi wzór tensorowy {{LinkWzór|26.13}} dla parametru μ=0, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy drugie prawo Maxwella {{LinkWzór|15.16|Elektrodynamika_Maxwella}} zapisaną przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{0\nu}}\over{\partial x^{\nu}}}={{\partial G^{00}}\over{\partial x^0}}+{{\partial G^{01}}\over{\partial x^1}}+{{\partial G^{02}}\over{\partial x^2}}+{{\partial G^{03}}\over{\partial x^3}}=
\pm\left({{\partial B_x}\over{\partial x}}+{{\partial B_y}\over{\partial y}}+{{\partial B_z}\over{\partial z}}\right)=\nabla\cdot\vec{B}\;</MATH>|26.20}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}}, dla parametru μ=1, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy trzecie prawo Maxwella {{LinkWzór|15.1|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej iksowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{1\nu}}\over{\partial x^{\nu}}}={{\partial G^{10}}\over{\partial x^0}}+{{\partial G^{11}}\over{\partial x^1}}+{{\partial G^{12}}\over{\partial x^2}}+{{\partial G^{13}}\over{\partial x^3}}=
\mp{{1}\over{c}}{{\partial B_x}\over{\partial t}}\mp{{1}\over{c}}{{\partial E_z}\over{\partial y}}\pm{{1}\over{c}}{{\partial E_y}\over{\partial z}}=\mp{{1}\over{c}}\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow 0=\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_x\;</MATH>|26.21}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=2, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy trzecie prawo Maxwella {{LinkWzór|15.16|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej igrekowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{2\nu}}\over{\partial x^{\nu}}}={{\partial G^{20}}\over{\partial x^0}}+{{\partial G^{21}}\over{\partial x^1}}+{{\partial G^{22}}\over{\partial x^2}}+{{\partial G^{23}}\over{\partial x^3}}=
\mp{{1}\over{c}}{{\partial B_y}\over{\partial t}}\pm{{1}\over{c}}{{\partial E_z}\over{\partial x}}\mp{{1}\over{c}}{{\partial E_x}\over{\partial z}}=\mp{{1}\over{c}}\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_y\Rightarrow\;</MATH>{{Br}}<MATH>0=\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_y\;</MATH>|26.22}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=3, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.1|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej zetowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{3\nu}}\over{\partial x^{\nu}}}={{\partial G^{30}}\over{\partial x^0}}+{{\partial G^{31}}\over{\partial x^1}}+{{\partial G^{32}}\over{\partial x^2}}+{{\partial G^{33}}\over{\partial x^3}}=
\mp{{1}\over{c}}{{\partial B_z}\over{\partial t}}\mp{{1}\over{c}}{{\partial E_y}\over{\partial x}}\pm{{1}\over{c}}{{\partial E_x}\over{\partial y}}=\mp{{1}\over{c}}\left({{\partial \vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_z\Rightarrow\;</MATH>{{Br}}<MATH>0=\left({{\partial \vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_z\;</MATH>|26.23}}
Na podstawie obliczeń {{LinkWzór|26.21}}, {{LinkWzór|26.22}}, a na samym końcu {{LinkWzór|26.23}} przy definicji tensora dualnego dla pola elektromagnetycznego {{LinkWzór|26.11}}, że równanie tensorowe Maxwella {{LinkWzór|26.13}} przechodzi w drugie i w trzecie rówanie Maxwella.
Zatem dwa tensorowe równania Maxwella są poprawne {{LinkWzór|26.12}} i {{LinkWzór|26.13}} i one przechodzą w cztery równania elektrodynamika sformułowane przez Maxwella.
=== Tensorowe równania Maxwella dla materii ===
Korzystając z definicji tensora pola elektromagnetycznego dla próżni i tensora dualnego, to równania Maxwella możemy zapisać w postaci tensorowej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial S^{\mu\nu}}\over{\partial x^{\nu}}}=J^{\mu}_{sw}\;</MATH>|26.24}}
| 2 = {{CentrujWzór|<MATH>{{\partial G^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.25}}
}}
Co {{LinkWzór|26.24}} i {{LinkWzór|26.25}} są równoważne dwom równaniom tensorowym:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\partial_{\nu}S^{\mu\nu}=\pm J^{\mu}_{sw}\mbox{ lub }{S^{\mu\nu}}_{,\nu}=\pm J^{\mu}_{sw}\;</MATH>|26.26}}
| 2 = {{CentrujWzór|<MATH>\partial_{\nu}G^{\mu\nu}=0\mbox{ lub }{G^{\mu\nu}}_{,\nu}=0\;</MATH>|26.27}}
}}
Najpierw udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}}, dla parametru μ=0, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy pierwsze prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy definicji czasowej czterowektora prędkości {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial S^{0\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{00}}\over{\partial x^0}}+{{\partial S^{01}}\over{\partial x^1}}+{{\partial S^{02}}\over{\partial x^2}}+{{\partial S^{03}}\over{\partial x^3}}=\pm{{\partial cD_x}\over{\partial x}}\pm{{\partial cD_y}\over{\partial y}}\pm{{\partial cD_z}\over{\partial z}}=\pm c\nabla\cdot\vec{D}=\pm J^0=\pm c\rho_{sw}\Rightarrow \nabla\cdot\vec{D}=\rho_{sw}</MATH>|26.28}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}} dla parametru μ=1, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy iksowej jego składowej. Także skorzystamy z definicji czterowektora prądu objętościowego ładunków elektrycznych {{LinkWzór|26.5}}, zatem dochodzimy wtedy do wniosku:
{{CentrujWzór|<MATH>{{\partial S^{1\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{10}}\over{\partial x^0}}+{{\partial S^{11}}\over{\partial x^1}}+{{\partial S^{12}}\over{\partial x^2}}+{{\partial S^{13}}\over{\partial x^3}}=\mp{{\partial cD_x}\over{\partial ct}}\pm{{\partial H_z}\over{\partial y}}\mp{{\partial H_y}\over{\partial z}}=\pm\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_x=\pm(\vec{J}_{sw})_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_x=(\vec{J}_{sw})_x</MATH>|26.29}}.
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}} dla parametru μ=2, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy igrekowej jego składowej. Także będziemy korzystać z definicji czterowektora prądu objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial S^{2\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{20}}\over{\partial x^0}}+{{\partial S^{21}}\over{\partial x^1}}+{{\partial S^{22}}\over{\partial x^2}}+{{\partial S^{23}}\over{\partial x^3}}=\mp{{\partial cD_y}\over{\partial ct}}\mp{{\partial H_z}\over{\partial x}}\pm{{\partial H_x}\over{\partial z}}=\pm\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_y=\pm(\vec{J}_{sw})_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_y=(\vec{J}_{sw})_x</MATH>|26.30}}
Na sam koniec udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}} dla parametru μ=3, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy definicji zetowej jego składowej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial S^{3\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{30}}\over{\partial x^0}}+{{\partial S^{31}}\over{\partial x^1}}+{{\partial S^{32}}\over{\partial x^2}}+{{\partial S^{33}}\over{\partial x^3}}=\mp{{\partial cD_z}\over{\partial ct}}\pm{{\partial B_y}\over{\partial x}}\mp{{\partial B_x}\over{\partial y}}=\pm\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_z=\pm(\vec{J}_{sw})_z\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_z=(\vec{J}_{sw})_z</MATH>|26.31}}
Zbierając razem trzy ostatnie wynikowe równania otrzymujemy czwarte prawo Maxwella dla materii {{LinkWzór|15.41|Elektrodynamika_Maxwella}}.
=== Tensor pola elektromagnetycznego poprzez czteropotencjał ===
We wzorach na natężenie pola elektrycznego w zależności od potencjału skalarnego i wektorowego {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, i we wzorze {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} występuje potencjał skalarny i wektorowy. Te potencjały można napisać ogólnie w postaci czterowektora potencjału tensorowego kontrkowariantnego:
{{CentrujWzór|<MATH>A^{\mu}=\left({{\varphi}\over{c}},A_x,A_y,A_z\right)=\left({{\varphi}\over{c}},\vec{A}\right)\;</MATH>|26.32|Obramuj}}
lub w postaci kowariantnej jako odpowiednim wzoru {{LinkWzór|26.32}}, który otrzymamy wymnóżając ostatnio wspomnianą definicję podwójnie kontrwariatnego tensora potencjały tensorowego przez odpowiedni tensor metryczny, tzn. przez tensor metryczny przestrzeni Minkowskiego η{{Sub|μν}}:
{{CentrujWzór|<MATH>A_{\mu}=A^{\nu}\eta_{\nu\mu}=\left(\pm{{\varphi}\over{c}},\mp\vec{A}\right)\;</MATH>|26.33}}
Weźmy tensor {{LinkWzór|26.9}} i zdefiniujmy go w oparciu o definicję czterowektora potencjału elektromagnetycznego, zatem tą tożsamość piszemy:
{{CentrujWzór|<MATH>F^{\mu\nu}={{\partial A^{\mu}}\over{\partial x_{\nu}}}-{{\partial A^{\nu}}\over{\partial x_{\mu}}}\Rightarrow F^{\mu\nu}=\partial^{\nu}A^{\mu}-\partial^{\mu}A^{\nu}\mbox{ lub }F^{\mu\nu}={A^{\mu}}^{,\nu}-{A^{\nu}}^{,\mu}\;</MATH>|26.34|Obramuj}}
Udowodnijmy w tym celu, że przepis {{LinkWzór|26.34}} przechodzi w tożsamość wcześniej wprowadzoną {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, przy tym będziemy korzystać z przedstawienia tensora pola elektromagnetycznego T{{Sup|μν}}, zatem przejdźmy do sedna sprawy:
{{CentrujWzór|<MATH>F^{01}={{\partial A^0}\over{\partial x_1}}-{{\partial A^1}\over{\partial x_0}}=\mp{{1}\over{c}}{{\partial\varphi}\over{\partial x}}\mp{{1}\over{c}}{{\partial A_x}\over{\partial t}}=
\mp{{1}\over{c}}\left(\nabla\varphi+{{\partial A_x}\over{\partial t}}\right)_x=\pm{{E_x}\over{c}}\;</MATH>|26.35}}
{{CentrujWzór|<MATH>F^{02}={{\partial A^0}\over{\partial x_2}}-{{\partial A^2}\over{\partial x_0}}=\mp{{1}\over{c}}{{\partial\varphi}\over{\partial y}}\mp{{1}\over{c}}{{\partial A_y}\over{\partial t}}=\mp{{1}\over{c}}\left(\nabla\varphi+{{\partial\vec{A}}\over{\partial t}}\right)_y=\pm{{E_y}\over{c}}\;</MATH>|26.36}}
{{CentrujWzór|<MATH>F^{03}={{\partial A^0}\over{\partial x_3}}-{{\partial A^3}\over{\partial x_0}}=\mp{{1}\over{c}}{{\partial\varphi}\over{\partial z}}\mp{{1}\over{c}}{{\partial A_z}\over{\partial t}}=\mp{{1}\over{c}}\left(\nabla\varphi+{{\partial\vec{A}}\over{\partial t}}\right)_z=\pm{{E_z}\over{c}}\;</MATH>|26.37}}
Z obliczeń {{LinkWzór|26.34}}, {{LinkWzór|26.35}} oraz {{LinkWzór|26.36}} udowodniliśmy, że tożsamość {{LinkWzór|26.33}} przechodzi w napisany wcześniej wzór {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}.
Następnym krokiem jest udowodnienie, że {{LinkWzór|26.34}} przechodzi we wzór {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, przy tym będziemy korzystać ze przedstawienia tensora pola elektromagnetycznego T{{Sup|μν}}, zatem przejdźmy do sedna sprawy.
{{CentrujWzór|<MATH>F^{12}={{\partial A^1}\over{\partial x_2}}-{{\partial A^2}\over{\partial x_1}}=\mp{{\partial A_x}\over{\partial y}}\pm{{\partial A_y}\over{\partial x}}=\pm(\nabla\times\vec{A})_z=\pm B_z\;</MATH>|26.38}}
{{CentrujWzór|<MATH>F^{13}={{\partial A^1}\over{\partial x_3}}-{{\partial A^3}\over{\partial x_1}}=\mp{{\partial A_x}\over{\partial z}}\pm{{\partial A_z}\over{\partial x}}=\mp(\nabla\times\vec{A})_y=\mp B_y\;</MATH>|26.39}}
{{CentrujWzór|<MATH>F^{23}={{\partial A^2}\over{\partial x_3}}-{{\partial A^3}\over{\partial x_2}}=\mp{{\partial A_y}\over{\partial z}}\pm{{\partial A_z}\over{\partial y}}=\pm(\nabla\times\vec{A})_x=\pm B_x\;</MATH>|26.40}}
Zatem udało nam się udowodnić co zamierzaliśmy.
Otrzymaliśmy zatem dwa równania opisujące natężenie pola elektrycznego {{LinkWzór|20.4|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}} i tożsamość {{LinkWzór|20.1|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}} na indukcję pola magnetycznego.
== Tensorowe równania Maxwella a zgodność z teorią względności ==
Udowodnimy zgodność tensorowych równań Maxwella dla próżni i materii.
=== Tensorowe równania Maxwella, a zgodność z teorią względności dla próżni ===
Zakładamy, że w starym układzie współrzędnych w próżni są spełnione równania tensorowe Maxwella na podstawie ich ogólnego przedstawienia {{LinkWzór|26.12}} i {{LinkWzór|26.13}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial{F}^{\mu\nu}}\over{\partial x^{\nu}}}=\pm\mu_0{J}^{\mu}\;</MATH>|26.41}}
| 2 = {{CentrujWzór|<MATH>{{\partial{G}^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.42}}
}}
Według szczególnej teorii względności powyższe równania w starym układzie współrzędnych są równoważne równaniom w nowym układzie współrzędnych w formie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial\overline{F}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=\pm\mu_0\overline{J}^{\mu}\;</MATH> |26.43}}
| 2 = {{CentrujWzór|<MATH>{{\partial\overline{G}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=0\;</MATH>|26.44}}
}}
Tensor pola elektromagnetycznego {{LinkWzór|26.9}} też jest również tensorem, bo on również transformuje się z jednego układu współrzędnych do innego w sposób:
{{CentrujWzór|<MATH>\overline{F}^{\mu\nu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}} F^{\alpha\beta}\;</MATH>|26.45}}
Podstawmy transformację tensora pola elektromagnetycznego F{{Sup|μν}}, który opisuje transformację ze starego do nowego układu współrzędnych, do pierwszego równania tensorowego Maxwella {{LinkWzór|26.43}} do jego lewej strony:
{{CentrujWzór|<MATH>L={{\partial\overline{F}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=
{{\partial}\over{\partial\overline{x}^{\nu}}}{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}} F^{\alpha\beta}=
{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial F^{\alpha\beta}}\over{\partial\overline{x}^{\nu}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial x^{\gamma}}\over{\partial\overline{x}^{\nu}}}{{\partial F^{\alpha\beta}}\over{\partial x^{\gamma}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}\delta^{\gamma}_{\beta}{{\partial F^{\alpha\beta}}\over{\partial x^{\gamma}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial F^{\alpha\beta}}\over{\partial x^{\beta}}}\;</MATH>|26.46}}
Napiszmy lewą stronę tensorowego równania Maxwella {{LinkWzór|26.41}}, korzystając z wiadomości z metod matematycznych fizyki o tensorach, że ten tensor gęstości objętościowej prądu elektrycznego transformuje się z jednego układu współrzędnych (ze starego) do drugiego układów współrzędnych (do nowego) wedle:
{{CentrujWzór|<MATH>P=\mu_0\overline{J}^{\mu}=\mu_0{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}J^{\alpha}\;</MATH>|26.47}}
Przyrównajmy obie strony równania {{LinkWzór|26.41}} do siebie, czyli {{LinkWzór|26.45}} z {{LinkWzór|26.46}}, wtedy przenieśmy wszystkie wyrazy z jego lewej strony na prawą jakie są i wydzielmy pewne wyrazy pod nawias, w celu udowodnienia niezmienniczości tensorowych równań Maxwella, wtedy dostajemy tożsamość:
{{CentrujWzór|<MATH>{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial F^{\alpha\beta}}\over{\partial x^{\beta}}}=\mu_0{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}J^{\alpha}\Rightarrow
{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}\left({{\partial F^{\alpha\beta}}\over{\partial x^{\beta}}}\mp\mu_0 J^{\alpha}\right)=0\;</MATH>|26.48}}
Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|26.48}} udowodniliśmy, że jeśli zachodzi {{LinkWzór|26.41}}
co ono jest równanie spełnione w starym układzie współrzędnych, to w ten sposób udowodniliśmy, że ono także spełnione w nowym układzie odniesienia, co w tym układzie spełniony jest wzór {{LinkWzór|26.43}}.
Podobnie dowodzimy niezmienniczość drugiego tensorowego równanie Maxwella, że równanie tensorowe co jest spełnione w nowym układzie odniesienia, czyli {{LinkWzór|26.42}}, na podstawie tego widzimy, że ten pierwszy wzór przechodzi w ten drugi, czyli we wzór {{LinkWzór|26.44}}, i odwrotnie.
Czyli dowodzimy, że nasze równania tensorowe równania Maxwella dla próżni {{LinkWzór|26.12}} i {{LinkWzór|26.13}} są niezależne od wyboru układu odniesienia inercjalnego.
=== Tensorowe równania Maxwella, a zgodność z teorią względności dla materii ===
Zakładamy, że w starym układzie współrzędnych w próżni są spełnione równania tensorowe Maxwella na podstawie ich ogólnego przedstawienia {{LinkWzór|26.24}} i {{LinkWzór|26.25}}
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial{S}^{\mu\nu}}\over{\partial x^{\nu}}}=\pm {J}^{\mu}_{sw}\;</MATH>|26.49}}
| 2 = {{CentrujWzór|<MATH>{{\partial{G}^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.50}}
}}
Według szczególnej teorii względności powyższe równania w starym układzie współrzędnych są równoważne równaniom w nowym układzie współrzędnych w formie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial\overline{S}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=\pm\overline{J}^{\mu}_{sw}\;</MATH>|26.51}}
| 2 = {{CentrujWzór|<MATH>{{\partial\overline{G}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=0\;</MATH>|26.52}}
}}
Niezmienniczość od inercjalnego układu odniesienia drugiego tensorowego równania Maxwella {{LinkWzór|26.25}} tak samo się udowodnia jak dla próżni {{LinkWzór|26.13}}. W przypadku pierwszego równania {{LinkWzór|26.24}} musimy wykorzystać, że S{{Sup|μν}} jest tensorem i transformuje się ze starego układu do nowego w sposób:
{{CentrujWzór|<MATH>\overline{S}^{\mu\nu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}S^{\alpha\beta}</MATH>|26.53}}
Dowód, że równanie tensorowe {{LinkWzór|26.49}} w starym układzie odniesienia przechodzi w wyniku transformacji w równanie w nowym układzie odniesienia wedle postaci {{LinkWzór|26.51}}, który jest bardzo podobny jak dla próżni, tylko musimy tym razem zastosować transformację tensora S{{Sup|μν}} {{LinkWzór|26.10}} w postaci {{LinkWzór|26.53}}.
=== Tensorowy charakter czteropotencjału, a tensor pola elektromagnetycznego ===
Następnie udowodnijmy, czy równanie na tensor pola elektromagnetycznego {{LinkWzór|26.33}} napisany w zależności od czteropotencjału prądu elekrycznego {{LinkWzór|26.32}} jest niezależny od układu współrzędnego inercjalnego.
Oczywiste jest, że czteropotencjał w elektromagnetyzmie jest tensorem, a więc transformuje się ze starego układu współrzędnych do nowego wedle sposobu:
{{CentrujWzór|<MATH>\overline{A}^{\mu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}A^{\alpha}\;</MATH>|26.54}}
W starym układzie odniesienia powino mieć miejsce wzór ponizej, względem jego postaci ogólnej zapisaną w punkcie {{LinkWzór|26.34}} po zastosowaniu transformacji czeropoencjału {{LinkWzór|26.32}} wedle sposobu:
{{CentrujWzór|<MATH>\overline{F}^{\mu\nu}={{\partial \overline{A}^{\mu}}\over{\partial \overline{x}_{\nu}}}-{{\partial \overline{A}^{\nu}}\over{\partial \overline{x}_{\mu}}}={{\partial}\over{\partial\overline{x}_{\nu}}}\left({{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}A^{\alpha}\right)-{{\partial}\over{\partial \overline{x}_{\mu}}}\left({{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}A^{\beta}\right)={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial x_{\beta}}\over{\partial\overline{x}_{\nu}}}{{\partial A^{\alpha}}\over{\partial x_{\beta}}}-{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial x_{\alpha}}\over{\partial\overline{x}_{\mu}}}{{\partial A^{\beta}}\over{\partial x_{\alpha}}}\;</MATH>|26.55}}
Ze względu, że równania w szczególnej teorii względności transformujące są tak zbudowane by ich postać była niezmiennicza niezależna od układu odniesienia i współrzędne położenia lub czasu transformują ze starego układu odniesienia do nowego czy odwrotnie, a także wiedząc, że zachodzi tożsamość {{Formuła|<MATH>{{\partial x_{\beta}}\over{\partial\overline{x}_{\nu}}}={{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}\;</MATH>}}, wtedy dochodzimy do wniosku:
{{CentrujWzór|<MATH>\overline{F}^{\mu\nu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial A^{\alpha}}\over{\partial x_{\beta}}}-{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial A^{\beta}}\over{\partial x_{\alpha}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}\left({{\partial A^{\alpha}}\over{\partial x_{\beta}}}-{{\partial A^{\beta}}\over{\partial x_{\alpha}}}\right)={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}F^{\alpha\beta}\;</MATH>|26.56}}
W ten sposób udowodniliśmy, że jeśli czteropotencjał jest tensorem {{LinkWzór|26.32}}, to tensor pola elektromagnetycznego również jest nim.
== Tensorowe cechowanie Lorentza ==
Cechowania Lorentza {{LinkWzór|20.7|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} możemy zapisać wedle sposobu poniżej. Cechowanie Lorentza przekształćmy, by można było zastosować definicję czteropotencjału, tak by przy gęstości objętościowej ładunku znajdowała się literka c, co określa wartość prędkości światła.
{{CentrujWzór|<MATH>{{\partial\left({{\varphi}\over{c}}\right)}\over{\partial (ct)}}+{{\partial A_x}\over{\partial x}}+{{\partial A_y}\over{\partial y}}+{{\partial A_z}\over{\partial z}}=0\;</MATH>|26.57}}
Korzystając z definicji czteropotencjału {{LinkWzór|26.32}}, wtedy wzór {{LinkWzór|26.57}} możemy zapisać w bardziej elegancki tensorowy sposób wedle:
{{CentrujWzór|<MATH>{{\partial A^{\mu}}\over{\partial x^{\mu}}}=0\;</MATH>|26.58}}
== Tensorowe równania Maxwella a czteropotencjał i czteroprąd ==
Korzystając z pierwszego tensorowego równania Maxwella dla próżni {{LinkWzór|26.12}}, wtedy do tego wzoru możemy podstawić tożsamość {{LinkWzór|26.34}}, wtedy dostajemy:
{{CentrujWzór|<MATH>{{\partial}\over{\partial x^{\nu}}}\left({{\partial A^{\mu}}\over{\partial x_{\nu}}}-{{\partial A^{\nu}}\over{\partial x_{\mu}}}\right)=\pm\mu_0 J^{\mu}\Rightarrow{{\partial^2A^{\mu}}\over{\partial x_{\nu}\partial x^{\nu}}}-{{\partial^2A^{\nu}}\over{\partial x_{\mu}\partial x^{\nu}}}=\pm\mu_0 J^{\mu}\Rightarrow{{\partial^2A^{\mu}}\over{\partial x_{\nu}\partial x^{\nu}}}-{{\partial }\over{\partial x_{\mu}}}\left({{\partial A^{\nu}}\over{\partial x^{\nu}}}\right)=\pm\mu_0 J^{\mu}\;</MATH>|26.59}}
Teraz z korzystajmy z tensorowej postaci cechowania Lorenzta {{LinkWzór|26.58}}, wtedy równanie {{LinkWzór|26.59}} przechodzi w równanie poniżej, które to tutaj skorzystamy z definicji operatora dalambercjanu {{LinkWzór|20.13|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, wtedy możemy napisać:
{{CentrujWzór|<MATH>{{\partial^2A^{\mu}}\over{\partial x_{\nu}\partial x^{\nu}}}=\pm\mu_0 J^{\mu}\Rightarrow\left({{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}-\Delta\right)A^{\mu}=\mu_0 J^{\mu}\Rightarrow\left(\Delta-{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}\right)A^{\mu}=-\mu_0 J^{\mu}\Rightarrow\square A^{\mu}=-\mu_0J^{\mu}\;</MATH>|26.60}}
Widzimy, że równanie końcowe tensorowe {{LinkWzór|26.60}} jest odpowiednikiem równania {{LinkWzór|20.7|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}} i {{LinkWzór|20.8|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}}, wynika to na podstawie definicji czerowektora potencjału elektromagnetycznego {{LinkWzór|26.32}} i czterowektora prądu objętościowego ładunków elektrycznych {{LinkWzór|26.5}}.
== Czterowektor siły w elektrodynamice ==
Czterowektor siły definiujemy w oparciu o definicję tensora pola elektrycznego {{LinkWzór|26.9}} oraz o definicję czterowektora prędkości wedle:
{{CentrujWzór|<MATH>K^{\mu}=-qu_{\nu}F^{\mu\nu}=qu_{\nu}F^{\nu\mu}\;</MATH>|26.61}}
I wyznaczmy najpierw trzy kolejne składowe czterowektora siły {{LinkWzór|26.61}} dla parametru μ>0, zatem przejdźmy do dzieła, czyli wyznaczmy współrzędną iksową czterowektora siły, korzystając przy tym z definicji tensora pola elektromagnetycznego {{LinkWzór|26.9}}.
{{CentrujWzór|<MATH>K_x=K^1=-q\left(u^{0}F^{10}-u^1F^{11}-u^2F^{12}-u^3F^{13}\right)=q{{1}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left[
-c\left(-{{E_x}\over{c}}\right)+v^yB_z-v^zB_y\right]=\;</MATH>{{Br}}<MATH>={{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(\vec{E}+\vec{v}\times\vec{B}\right)_x={{\gamma}\over{c}}F_x\;</MATH>|26.62}}
Następnie określmy współrzędną igrekową czterowektora siły wedle {{LinkWzór|26.61}}, korzystając przy tym z definicji tensora pola elektromagnetycznego {{LinkWzór|26.9}}.
{{CentrujWzór|<MATH>K_y=K^2=-q\left(u^0F^{20}-u^1F^{21}-u^2F^{22}-u^3F^{33}\right)={{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(-c\left(-{{E_y}\over{c}}\right)-v_xB_z+v_zB_x\right)=\;</MATH>{{Br}}<MATH>=
{{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(\vec{E}+\vec{v}\times\vec{B}\right)_y={{\gamma}\over{c}} F_y\;</MATH>|26.63}}
Następnie określmy współrzędną zetową czterowektora siły wedle {{LinkWzór|26.61}}, korzystając przy tym z definicji tensora pola elektromagnetycznego {{LinkWzór|26.9}}.
{{CentrujWzór|<MATH>K_z=K^3=-q\left(u^0F^{30}-u^1F^{31}-u^2F^{32}-u^3F^{33}\right)={{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left[-c\left(-{{E_z}\over{c}}\right)+v_xB_y-v_yB_x\right]=\;</MATH>{{Br}}<MATH>=
{{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(\vec{E}+\vec{v}\times\vec{B}\right)_z={{\gamma}\over{c}} F_z\;</MATH>|26.64}}
Czyli ogólnie otrzymaliśmy na podstawie liczenia współrzędnych czasoprzestrzenych czterowektora siły {{LinkWzór|26.61}} wzór
w postaci:
{{CentrujWzór|<MATH>\vec{K}={{\gamma}\over{c}}\vec{F}\;</MATH>|26.65}}
* gdzie:<MATH>\vec{F}\;</MATH> jest to siła Lorentza wprowadzone w punkcie określonym jako {{LinkWzór|8.3|Magnetostatyka}}, czyli taki sam wzór mamy w elektromagnetyzmie na tą wielkość.
Transformacja czterowektora siły, a właściwie jej współrzędna przestrzenne wygląda tak samo w szczególnej teorii względności jak w punkcie {{LinkWzór|26.65}}.
A teraz wyznaczmy element czterosiły {{LinkWzór|26.61}} dla wskaźnika μ=0, zatem zróbmy to:
{{CentrujWzór|<MATH>K_t=K^0=-q\left(u^0F^{00}-u^1F^{01}-u^2F^{02}-u^3F^{03}\right)=
{{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(v_x{{E_x}\over{c}}+v_y{{E_y}\over{c}}+v_z{{E_z}\over{c}}\right)=\;</MATH>{{Br}}<MATH>={{q}\over{c^2\sqrt{1-{{v^2}\over{c^2}}}}}(\vec{v}\cdot\vec{E})=
\left[\vec{v}\cdot\left(\vec{E}+\vec{v}\times\vec{B}\right)\right]{{q\gamma}\over{c^2}}=
{{\vec{v}\cdot\vec{F}}\over{c^2}}\gamma={{(m\vec{v})\cdot\vec{F}}\over{mc^2}}\gamma={{\vec{p}\cdot\vec{F}}\over{E}}\gamma\;</MATH>|26.66}}
Zbierając wszystkie elementy czterowektora siły, tzn. najpierw jej część czasową {{LinkWzór|26.66}} i później jej część przestrzenną {{LinkWzór|26.65}}, zatem mówiąc ogólnie czterowektor siły wyraża się wzorem w naszym przypadku:
{{CentrujWzór|<MATH>K^{\mu}=\left({{\vec{p}\cdot\vec{F}}\over{E}}\gamma,{{\gamma}\over{c}}\vec{F}\right)\;</MATH>|26.67}}
Powyższy wzór na czterowektor siły jest ten sam, co wyprowadziliśmy w szczególnej teorii względności, też czterowektora siły, a więc definicja czterowektora siły w elektrodynamice relatywistycznej jest poprawna i zgodna ze szczególną teorią względności ogłoszoną w 1905 przez Einsteina.
== Transformacje pól magnetycznych i elektrycznych ==
Będziemy się zajmować transformacjami względem szczególnej teorii względności pol natężenia i indukcji pola elektrycznego a także natężenia i indukcji pola magnetycznego.
=== Transformacje natężenia pola elektrycznego i indukcji pola magnetycznego ===
Macierz transformacji ze starego układu odniesienia do nowego układu odniesienia inercjalnego w szczególnej teorii względności jest opisana wzorem:
{{CentrujWzór|<MATH>{{\partial\overline{x}^{\mu}}\over{\partial x^{\nu}}}=\mathbf{M}=\begin{bmatrix}
\gamma&-\beta\gamma&0&0\\
-\beta\gamma&\gamma&0&0\\
0&0&1&0\\
0&0&0&1
\end{bmatrix}\;</MATH>|26.68}}
Skorzystamy też, że tensor pola elektromagnetycznego {{LinkWzór|26.9}} jest tensorem, więc transformuje się według wzoru {{LinkWzór|26.45}} przy macierzy transformacji napisanej wzorem {{LinkWzór|26.68}}. wyznaczmy wzory jak transformują się współrzędne natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm{{\overline{E}_x}\over{c}}=\overline{F}^{01}={{\partial\overline{x}^{0}}\over{\partial x^{0}}}{{\partial\overline{x}^{0}}\over{\partial x^{1}}}F^{00}+
{{\partial\overline{x}^{0}}\over{\partial x^{0}}}{{\partial\overline{x}^{1}}\over{\partial x^{1}}}F^{01}+
{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{1}}\over{\partial x^{0}}}F^{10}+
{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{1}}\over{\partial x^{1}}}F^{11}+
{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{2}}\over{\partial x^{2}}}F^{22}+{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{3}}\over{\partial x^{3}}}F^{33}=\;</MATH>{{Br}}<MATH>=
\pm\gamma^2{{E_x}\over{c}}\mp\beta^2\gamma^2{{E_x}\over{c}}=\pm{{E_x}\over{c}}\gamma^2\left(1-\beta^2\right)=\pm{{E_x}\over{c}}\gamma^2\gamma^{-2}=\pm{{E_x}\over{c}}\;</MATH>|26.69}}
Stąd otrzymujemy pierwszą zależność współrzędnej iksowej pola elektrycznego wedle obliczeń {{LinkWzór|26.69}}.
Zbadajmy jaka jaka jest współrzędna igrekowa natężenia pola elektrycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm{{\overline{E}_y}\over{c}}=\overline{F}^{02}={{\partial\overline{x}^0}\over{\partial x^{\alpha}}}{{\partial\overline{x}^2}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^0}\over{\partial x^{0}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{02}+{{\partial\overline{x}^0}\over{\partial x^{1}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{12}=\pm\gamma{{E_y}\over{c}}\mp\gamma\beta B_z=\pm{{1}\over{c}}{{E_y-uB_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.70}}
Stąd otrzymujemy pierwszą zależność współrzędnej igrekowej pola elektrycznego wedle obliczeń {{LinkWzór|26.70}}.
Zbadajmy jaka jaka jest współrzędna zetowa natężenia pola elektrycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm{{\overline{E}_z}\over{c}}=\overline{F}^{03}=
{{\partial\overline{x}^0}\over{\partial x^{\alpha}}}{{\partial\overline{x}^3}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^0}\over{\partial x^{0}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{03}+
{{\partial\overline{x}^0}\over{\partial x^{1}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{13}=
\pm\gamma{{E_z}\over{c}}\pm\gamma\beta B_y={{1}\over{c}}{{E_z+uB_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.71}}
Stąd otrzymujemy pierwszą zależność współrzędnej zetowa pola elektrycznego wedle obliczeń {{LinkWzór|26.71}}.
Zbadajmy jaka jaka jest współrzędna iksowa indukcji pola magnetycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm\overline{B}_x=\overline{F}^{23}={{\partial\overline{x}^2}\over{\partial x^{\alpha}}}{{\partial\overline{x}^3}\over{\partial x^{\beta}}}F^{23}=
{{\partial\overline{x}^2}\over{\partial x^{2}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{23}=\pm B_x\;</MATH>|26.72}}
Stąd otrzymujemy pierwszą zależność współrzędnej iksowa indukcji pola magnetycznego wedle obliczeń {{LinkWzór|26.72}}.
Zbadajmy jaka jaka jest współrzędna igrekowa indukcji pola magnetycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\mp\overline{B}_y=\overline{F}^{13}={{\partial\overline{x}^1}\over{\partial x^{\alpha}}}{{\partial\overline{x}^3}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^1}\over{\partial x^{0}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{03}+{{\partial\overline{x}^1}\over{\partial x^{1}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{13}=\mp\gamma\beta{{E_z}\over{c}}\mp\gamma B_y=\mp{{B_y+{{u}\over{c^2}}E_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.73}}
Stąd otrzymujemy pierwszą zależność współrzędnej igrekowa pola elektrycznego wedle obliczeń {{LinkWzór|26.71}}.
Zbadajmy jaka jaka jest współrzędna zetowa indukcji pola elektrycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm\overline{B}_z=\overline{F}^{12}={{\partial\overline{x}^1}\over{\partial x^{\alpha}}}{{\partial\overline{x}^2}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^1}\over{\partial x^{0}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{02}+{{\partial\overline{x}^1}\over{\partial x^{1}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{12}=\mp\gamma\beta{{E_y}\over{c}}\pm\gamma B_z=\pm{{B_z-{{u}\over{c^2}}E_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.74}}
Jeśli dwa układy inercjalne odniesienia poruszają się zawsze równolegle do siebie, to transformacje natężenia pola elektrycznego i indukcji pola magnetycznego przedstawiają się wedle sposobu:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje natężenie pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{E}_x=E_x\;</MATH>|26.75}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{E}_y={{E_y-uB_z}\over{\sqrt{1-{{u^2}\over{c^2}} }}}\;</MATH>|26.76}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{E}_z={{E_z+uB_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.77}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje indukcji pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{B}_x=B_x\;</MATH>|26.78}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{B}_y={{B_y+{{u}\over{c^2}}E_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.79}}}}<!--
-->{{komórka|{{CentrujWzór|<MATH>\overline{B}_z={{B_z-{{u}\over{c^2}}E_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.80}}}}<!--
-->}}<!--
-->}}
* gdzie u jest to prędkość układu odniesienia nowego względem starego.
Podobne rozwiązania otrzymujemy, gdy rozważamy tensor dualny G{{Sup|μν}}, transformując go ze starego inercjalnego układu odniesienia do nowego.
Gdy mamy stary i nowy układ współrzędnych ogólnie nieprostokątne trójwymiarowe, w którym prędkość nowego układu współrzędnych ma jakiś kierunek ogólnie nierównoległy do osi OX starego układu współrzędnych oraz gdy nowy układ odniesienia jest ogólnie nierównoległy do starego, wiedząc, że układ prostokątny trójwymiarowy stary i nowy, na samym początku przed przejściem na układy ogólnie nieprostokątne, są do siebie równoległe i prędkość nowego układu współrzędnych jest równoległa do osi OX względem starego układu odniesienia, dokonując transformacji obrotu osi starego i nowego układu współrzędnych oraz transformując współrzędne i wersory z tych układów prostokątnych, tzn. przechodząc z tych układów trójwymiarowych prostokątnych starego i nowego równoległych względem siebie, mamy:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje natężenie pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec E}}_{||}=C_p\vec{E}_{||}\;</MATH>|26.81}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec E}}_{\perp}=C_p{{{\vec E}_{\perp}+\vec u\times \vec B}\over{\sqrt{1-{{u^2}\over{c^2}} }}}\;</MATH>|26.82}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje indukcji pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec B}}_{||}=C_p{\vec B}_{||}\;</MATH>|26.83}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec B}}_{\perp}=C_p{{{\vec B}_{\perp}-{{\vec u\times \vec E}\over{c^2}}}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.84}}}}<!--
-->}}<!--
-->}}
* gdzie {{Formuła|<MATH>\vec u\;</MATH>}} jest to prędkość układu odniesienia nowego względem starego.
=== Transformacje indukcji pola elektrycznego i natężenia pola magnetycznego ===
Transformacje pola indukcji elektrycznej otrzymujemy z transformacji natężenia pola elektrycznego poprzez zastąpienie: {{Formuła|<MATH>{{\vec{E}}\over{c}}\rightarrow c\vec{D}\Rightarrow\vec{E}\rightarrow c^2\vec{D}</MATH>}}, a natężenia pola elektrycznego z transformacji indukcji pola magnetycznego poprzez zastąpienie {{Formuła|<MATH>\vec{B}\rightarrow\vec{H}</MATH>}}, to wszystko robimy dla transformacji natężenia pola elektrycznego i indukcji pola magnetycznego, wtedy dochodzimy do wniosku:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje indukcji pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{D}_x=D_x\;</MATH>|26.85}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{D}_y={{D_y-{{u}\over{c^2}}H_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.86}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{D}_z={{D_z+{{u}\over{c^2}}H_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.87}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje natężenia pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{H}_x=H_x\;</MATH>|26.84a}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{H}_y={{H_y+uD_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.88a}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{H}_z={{H_z-uD_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.89a}}}}<!--
-->}}<!--
-->}}
* gdzie u jest to prędkość układu odniesienia nowego względem starego.
Gdy mamy stary i nowy układ współrzędnych ogólnie nieprostokątne trójwymiarowe, w którym prędkość nowego układu współrzędnych ma jakiś kierunek ogólnie nierównoległy do osi OX starego układu współrzędnych oraz gdy nowy układ odniesienia jest ogólnie nierównoległy do starego, wiedząc, że układ prostokątny trójwymiarowy stary i nowy, na samym początku przed przejściem na układy ogólnie nieprostokątne, są do siebie równoległe i prędkość nowego układu współrzędnych jest równoległa do osi OX względem starego układu odniesienia, dokonując transformacji obrotu osi starego i nowego układu współrzędnych oraz transformując współrzędne i wersory z tych układów prostokątnych, tzn. przechodząc z tych układów trójwymiarowych prostokątnych starego i nowego równoległych względem siebie, mamy:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Transformacje indukcji pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec D}_{||}=C_p{\vec D}_{||}\;</MATH>|26.90}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec D}_{\perp}=C_p{{{\vec D}_{\perp}+{{\vec u\times\vec H}\over{c^2}}}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.91}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Transformacje natężenia pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec H}_{||}=C_p{\vec H}_{||}\;</MATH>|26.92}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec H}_{\perp}=C_p{{{\vec H}_{\perp}-\vec u\times\vec D}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.93}}}}<!--
-->}}<!--
-->}}
== Ważniejsza tożsamość elektrodynamiki klasycznej ==
Bardzo ważną tożsamością występującą w elektrodynamice klasycznej w przestrzeni Minkowskiego jest to tożsamość zdefiniowana przy pomocy tensora pola elektromagnetycznego {{LinkWzór|26.9}} w postaci:
{{CentrujWzór|<MATH>F_{\mu\nu,\gamma}+F_{\gamma\mu,\nu}+F_{\nu\gamma,\mu}=0\;</MATH>|26.94}}
Tożsamość fizyczną {{LinkWzór|26.94}} możemy udowodnić podstawiając do niego {{LinkWzór|26.34}}, zatem do dzieła.
{{CentrujWzór|<MATH>\left(A_{\mu,\nu}-A_{\nu,\mu}\right)_{,\gamma}+\left(A_{\gamma,\mu}-A_{\mu,\gamma}\right)_{,\nu}+\left(A_{\nu,\gamma}-A_{\gamma,\nu}\right)_{,\mu}=0\;</MATH>|26.95}}
Aby dokończyć dalszą część dowodu należy wykorzystać twierdzenie o pochodnej różnicy i grupując wyrazy, zatem na podstawie tego mamy:
{{CentrujWzór|<MATH>{A_{\mu,\nu,\gamma}}-{A_{\mu,\gamma,\nu}}+{A_{\gamma,\mu,\nu}}-{A_{\gamma,\nu,\mu}}+{A_{\nu,\gamma,\mu}}-{A_{\nu,\mu,\gamma}}=0\;</MATH>|26.96}}
W równaniu {{LinkWzór|26.96}} wszystkie wyrazy parami są równe zero. Zatem powyższe wyrażenie jest zawsze równe zero, ze względu, że różniczkowanie cząstkowe w tym przypadku kowariantne jest zawsze działaniem względem siebie przemiennym według praw matematyki analizy matematycznej. Na tej podstawie tożsamość fizyczna {{LinkWzór|26.94}} jest twierdzeniem prawdziwym.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
pqa9zk6ln6axitjxl7vyr36ip85boc8
558896
558895
2026-10-08T02:40:11Z
Persino
2851
558896
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tutaj będziemy rozpatrywać elektrodynamikę jako równania magnetyzmu i elektryczności jako zjawisko czysto relatywistyczne.
W elektrodynamice relatywistycznej przyjmujemy tensor metryczny o dwóch możliwych sygnaturach, tzn. gdy w zdiagonalizowanej macierzy Minkowskiego są elementy na diagonalnej (1,-1,-1,-1), to tą sygnaturę nazywamy dodanią, a gdy na diagonalnedj występują liczby (-1,1,1,1), to tą sygnaturę nazywamy ujemną, gdy będziemy pisać we wzorach matematycznych fizyki w elektrodynamice relatywistycznej, to {{Formuła|<MATH>\pm\;</MATH>}} lub {{Formuła|<MATH>\mp\;</MATH>}}, to znak na górze jest to sygnatura dodatnia, a na dole ujemna.
== Gęstość ładunku, wektor gęstości prądu i czterowektor gęstości prądu ==
Objętość pewnego elementu V względem jej wartości spoczynkowej V{{Sub|0}}, tzn. objętość cząstki materii, gdy ona jest w spoczynku, jest wyrażona przez:
{{CentrujWzór|<MATH>V=\sqrt{1-{{v^2}\over{c^2}}}V_0=\gamma^{-1}V_0\;</MATH>|26.1}}
Z tożsamości {{LinkWzór|26.1}} gęstość danej cząstki materii można ją wyrazić poprzez gęstość spoczynkową tej samej cząstki wedle:
{{CentrujWzór|<MATH>\rho={{q}\over{V}}={{q}\over{V_0}}\gamma=\rho_0\gamma=\rho_0u^0\;</MATH>|26.2}}
Gęstość prądu w przypadku relatywistycznym jest podobnie definiowany jak w punkcie {{LinkWzór|16.9|Zasady_zachowania_a_twierdzenia_o_właściwościach_pola_elektromagnetycznego}}, tylko gęstość ładunku elektrycznego w nim występującą wyrażamy poprzez:
{{CentrujWzór|<MATH>\vec{J}=\rho\vec{v}=\gamma\rho_0\vec{v}\;</MATH>|26.3}}
Wprowadzając gęstości prądu przy pomocy przestrzennych elementów czterowektora prędkości prędkości u{{Sup|i}}, to jego definicja jest:
{{CentrujWzór|<MATH>J^i=\rho_0\gamma v^i=c\rho_0u^i\;</MATH>|26.4}}
W elektrodynamice relatywistycznej wprowadza się czerowektor prędkości, którego element czasowy to jest gęstość ładunku elektrycznego pomnożonej przez prędkość światła c, a jej element przestrzenny to jest wielkość wektora gęstości prądu elektrycznego, zatem jego definicja jest:
{{CentrujWzór|<MATH>J^{\mu}=\left(c\rho,J_x,J_y,J_z\right)=\left(c\rho,\vec{J}\right)\;</MATH>|26.5}}
Elementy tensora {{LinkWzór|26.5}} możemy w sposób ogólny zapisać za pomocą czterowektora prądu objętościowego J{{Sup|μ}} łącząc jego dwa przypadki wedle wzorów na część czasową czterowektora prędkości {{LinkWzór|26.2}} i na elementy przestrzenne czerowektora prądu elektrycznego {{LinkWzór|26.4}}, wtedy otrzymujemy schemat liczenia czerowektora prądu elektrycznego:
{{CentrujWzór|<MATH>J^{\mu}=c\rho_0u^{\mu}\;</MATH>|26.6}}
== Tensorowe równanie ciągłości ==
Równanie ciągłości zapisane w punkcie {{LinkWzór|16.11|Zasady_zachowania_a_twierdzenia_o_właściwościach_pola_elektromagnetycznego}} można tak zapisać, że przy tym równaniu jej część czasową tak zapisujemy, że mnożymy jego licznik i mianownik przez prędkość światła c i biorąc definicję czerowekta gęstości prądu {{LinkWzór|26.5}}, to:
{{CentrujWzór|<MATH>{{\partial\rho}\over{\partial t}}+\nabla\cdot\vec{J}=0\Rightarrow
{{\partial c\rho}\over{\partial ct}}+\nabla\cdot\vec{J}=0\Rightarrow{{\partial c\rho}\over{\partial ct}}+{{\partial J_1}\over{\partial x}}+
{{\partial J_2}\over{\partial y_2}}+{{\partial J_3}\over{\partial y}}=0\;</MATH>|26.7}}
Przyjmijmy oznaczenia występujące powyżej w {{LinkWzór|26.7}} wedle schematu: x{{Sup|0}}=ct, x{{Sup|1}}=x, x{{Sup|2}}=y, x{{Sup|3}}=z. Następnie korzystając z końcowej równości {{LinkWzór|26.7}}, to równanie ciągłości zapisujemy:
{{CentrujWzór|<MATH>{{\partial J^{\mu}}\over{\partial x^{\mu}}}= 0\mbox{ lub }\partial_{\mu}J^{\mu}=0\mbox{ lub }{J^{\mu}}_{,\mu}=0\;</MATH>|26.8}}
== Tensory w elektrodynamice pól elektromagnetycznych ==
Będziemy się zajmować tensorami pól elektromagnetycznych i też tensorem dualnym do tensora pola elektromagnetycznego.
=== Tensor pola elektromagnetycznego dla próżni ===
Tensor pola elektromagnetycznego dla próżni jest:
{{CentrujWzór|<MATH>F^{\mu\nu}=\pm\begin{bmatrix}
0&{{E_x}\over{c}}&{{E_y}\over{c}}&{{E_z}\over{c}}\\
-{{E_x}\over{c}}&0&B_z&-B_y\\
-{{E_y}\over{c}}&-B_z&0&B_x\\
-{{E_z}\over{c}}&B_y&-B_x&0
\end{bmatrix}\;</MATH>|26.9}}
Tensor pola elektromagnetycznego dla próżni jest tensorem antysymetrycznym.
=== Tensor pola elektromagnetycznego dla materii ===
Tensor pola elektromagnetycznego dla materii jest:
{{CentrujWzór|<MATH>S^{\mu\nu}=\pm\begin{bmatrix}
0&cD_x&cD_y&cD_z\\
-cD_x&0&H_z&-H_y\\
-cD_y&-H_z&0&H_x\\
-cD_z&H_y&-H_x&0
\end{bmatrix}\;</MATH>|26.10}}
Porównując {{LinkWzór|26.10}} z tensorem pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}, to ten drugi tensor pola elektromagnetycznego dla materii powstaje poprzez zastąpienie wedle schematu, tzn. {{Formuła|<MATH>{{\vec{E}}\over{c}}\rightarrow c\vec{D}</MATH>}} oraz też wedle schematu w tym samym tensorem dla materii {{Formuła|<MATH>\vec{B}\rightarrow\vec{H}</MATH>}}.
Tensor pola elektromagnetycznego dla materii jest tensorem antysymetrycznym.
=== Tensor dualny pola magnetycznego dla próżni i materii ===
Tensor dualny dla elektromagnetyzmu jest w postaci:
{{CentrujWzór|<MATH>G^{\mu\nu}=\pm\begin{bmatrix}
0&B_x&B_y&B_z\\
-B_x&0&-{{E_z}\over{c}}&{{E_y}\over{c}}\\
-B_y&{{E_z}\over{c}}&0&-{{E_x}\over{c}}\\
-B_z&-{{E_y}\over{c}}&{{E_x}\over{c}}&0\\
\end{bmatrix}\;</MATH>|26.11}}
Można zauważyć, że tensor dualny {{LinkWzór|26.11}} powstaje z tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}} przez podstawianie: {{Formuła|<MATH>{{\vec{E}}\over{c}}\rightarrow\vec{B}\;</MATH>}}, a także przez {{Formuła|<MATH>\vec{B}\rightarrow-{{\vec{E}}\over{c}}\;</MATH>}}.
Tensor dualny jest tensorem antysymetrycznym.
== Tensorowe równania Maxwella ==
Przedstawimy tutaj tensorowe równania elektrodynamiki dla próżni i dla materii.
=== Tensorowe równania Maxwella dla próżni ===
Korzystając z definicji tensora pola elektromagnetycznego dla próżni i tensora dualnego, to równania Maxwella możemy zapisać w postaci tensorowej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial F^{\mu\nu}}\over{\partial x^{\nu}}}=\pm\mu_0 J^{\mu}\;</MATH>|26.12}}
| 2 = {{CentrujWzór|<MATH>{{\partial G^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.13}}
}}
Co {{LinkWzór|26.12}} i {{LinkWzór|26.13}} są równoważne dwom równaniom tensorowym:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\partial_{\nu}F^{\mu\nu}=\pm\mu_0 J^{\mu}\mbox{ lub }{F^{\mu\nu}}_{,\nu}=\pm\mu_0 J^{\mu}\;</MATH>|26.14}}
| 2 = {{CentrujWzór|<MATH>\partial_{\nu}G^{\mu\nu}=0\mbox{ lub }{G^{\mu\nu}}_{,\nu}=0\;</MATH>|26.15}}
}}
Najpierw udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=0, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy pierwsze prawo Maxwella {{LinkWzór|15.14|Elektrodynamika_Maxwella}} przy definicji czasowej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{0\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{00}}\over{\partial x^0}}+{{\partial F^{01}}\over{\partial x^1}}+
{{\partial F^{02}}\over{\partial x^2}}+{{\partial F^{03}}\over{\partial x^3}}=\pm{{1}\over{c}}\left({{\partial E_x}\over{\partial x}}+{{\partial E_y}\over{\partial y}}+{{\partial E_z}\over{\partial z}}\right)=\pm{{1}\over{c}}\nabla\cdot\vec{E}=\pm\mu_0 J^0=\pm\mu_0 c\rho\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \nabla\cdot\vec{E}=\mu_0c^2\rho\Rightarrow \nabla\cdot\vec{E}={{\rho}\over{\epsilon_0}}\;</MATH>|26.16}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}}, dla parametru μ=1, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej iksowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{1\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{10}}\over{\partial x^0}}+{{\partial F^{11}}\over{\partial x^1}}+
{{\partial F^{12}}\over{\partial x^2}}+{{\partial F^{13}}\over{\partial x^3}}=
\mp{{1}\over{c^2}}{{\partial E_x}\over{\partial t}}\pm{{\partial B_z}\over{\partial y}}\mp{{\partial B_y}\over{\partial z}}=\left(\mp\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}\pm\nabla\times\vec{B}\right)_x=\pm\mu_0 J^1=\pm\mu_0 J_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \left(-\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}+\nabla\times\vec{B}\right)_x=\mu_0J_x\;</MATH>|26.17}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=2, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej igrekowy przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{2\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{20}}\over{\partial x^0}}+{{\partial F^{21}}\over{\partial x^1}}+
{{\partial F^{22}}\over{\partial x^2}}+{{\partial F^{23}}\over{\partial x^3}}=
\mp{{1}\over{c^2}}{{\partial E_y}\over{\partial t}}\mp{{\partial B_z}\over{\partial x}}\pm{{\partial B_x}\over{\partial z}}=\left(\mp\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}\pm\nabla\times\vec{B}\right)_y=\pm\mu_0 J_y\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\left(-\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}+\nabla\times\vec{B}\right)_y=\mu_0 J_y</MATH>|26.18}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=3, korzystając przy tym z definicji tensora pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej zetowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial F^{3\nu}}\over{\partial x^{\nu}}}=
{{\partial F^{30}}\over{\partial x^0}}+{{\partial F^{31}}\over{\partial x^1}}+
{{\partial F^{32}}\over{\partial x^2}}+{{\partial F^{33}}\over{\partial x^3}}=
\mp{{1}\over{c^2}}{{\partial E_z}\over{\partial t}}\pm{{\partial B_y}\over{\partial x}}\mp{{\partial B_x}\over{\partial y}}=\left(\mp\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}\pm\nabla\times\vec{B}\right)_z=\pm\mu_0 J_z\Rightarrow\;</MATH>{{Br}}<MATH>\left(-\mu_0\epsilon_0{{\partial\vec{E}}\over{\partial t}}+\nabla\times\vec{B}\right)_z=\mu_0 J_z</MATH>|26.19}}
Zatem dla μ=1,2,3 otrzymujemy czwarte prawo Maxwella {{LinkWzór|15.17|Elektrodynamika_Maxwella}} przy pomocy dowodów ostatnich trzech równań, tzn. {{LinkWzór|26.17}}, {{LinkWzór|26.18}} i w końcu {{LinkWzór|26.19}}.
Teraz udowodnijmy drugi wzór tensorowy {{LinkWzór|26.13}} dla parametru μ=0, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.9}}. I jak się przekonamy otrzymamy drugie prawo Maxwella {{LinkWzór|15.16|Elektrodynamika_Maxwella}} zapisaną przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{0\nu}}\over{\partial x^{\nu}}}={{\partial G^{00}}\over{\partial x^0}}+{{\partial G^{01}}\over{\partial x^1}}+{{\partial G^{02}}\over{\partial x^2}}+{{\partial G^{03}}\over{\partial x^3}}=
\pm\left({{\partial B_x}\over{\partial x}}+{{\partial B_y}\over{\partial y}}+{{\partial B_z}\over{\partial z}}\right)=\nabla\cdot\vec{B}\;</MATH>|26.20}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}}, dla parametru μ=1, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy trzecie prawo Maxwella {{LinkWzór|15.1|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej iksowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{1\nu}}\over{\partial x^{\nu}}}={{\partial G^{10}}\over{\partial x^0}}+{{\partial G^{11}}\over{\partial x^1}}+{{\partial G^{12}}\over{\partial x^2}}+{{\partial G^{13}}\over{\partial x^3}}=
\mp{{1}\over{c}}{{\partial B_x}\over{\partial t}}\mp{{1}\over{c}}{{\partial E_z}\over{\partial y}}\pm{{1}\over{c}}{{\partial E_y}\over{\partial z}}=\mp{{1}\over{c}}\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow 0=\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_x\;</MATH>|26.21}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=2, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy trzecie prawo Maxwella {{LinkWzór|15.16|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej igrekowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{2\nu}}\over{\partial x^{\nu}}}={{\partial G^{20}}\over{\partial x^0}}+{{\partial G^{21}}\over{\partial x^1}}+{{\partial G^{22}}\over{\partial x^2}}+{{\partial G^{23}}\over{\partial x^3}}=
\mp{{1}\over{c}}{{\partial B_y}\over{\partial t}}\pm{{1}\over{c}}{{\partial E_z}\over{\partial x}}\mp{{1}\over{c}}{{\partial E_x}\over{\partial z}}=\mp{{1}\over{c}}\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_y\Rightarrow\;</MATH>{{Br}}<MATH>0=\left({{\partial\vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_y\;</MATH>|26.22}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.12}} dla parametru μ=3, korzystając przy tym z definicji tensora dualnego pola elektromagnetycznego dla próżni {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.1|Elektrodynamika_Maxwella}} zapisaną dla jej współrzędnej zetowej przy definicji przestrzennej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>0={{\partial G^{3\nu}}\over{\partial x^{\nu}}}={{\partial G^{30}}\over{\partial x^0}}+{{\partial G^{31}}\over{\partial x^1}}+{{\partial G^{32}}\over{\partial x^2}}+{{\partial G^{33}}\over{\partial x^3}}=
\mp{{1}\over{c}}{{\partial B_z}\over{\partial t}}\mp{{1}\over{c}}{{\partial E_y}\over{\partial x}}\pm{{1}\over{c}}{{\partial E_x}\over{\partial y}}=\mp{{1}\over{c}}\left({{\partial \vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_z\Rightarrow\;</MATH>{{Br}}<MATH>0=\left({{\partial \vec{B}}\over{\partial t}}+\nabla\times\vec{E}\right)_z\;</MATH>|26.23}}
Na podstawie obliczeń {{LinkWzór|26.21}}, {{LinkWzór|26.22}}, a na samym końcu {{LinkWzór|26.23}} przy definicji tensora dualnego dla pola elektromagnetycznego {{LinkWzór|26.11}}, że równanie tensorowe Maxwella {{LinkWzór|26.13}} przechodzi w drugie i w trzecie rówanie Maxwella.
Zatem dwa tensorowe równania Maxwella są poprawne {{LinkWzór|26.12}} i {{LinkWzór|26.13}} i one przechodzą w cztery równania elektrodynamika sformułowane przez Maxwella.
=== Tensorowe równania Maxwella dla materii ===
Korzystając z definicji tensora pola elektromagnetycznego dla próżni i tensora dualnego, to równania Maxwella możemy zapisać w postaci tensorowej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial S^{\mu\nu}}\over{\partial x^{\nu}}}=J^{\mu}_{sw}\;</MATH>|26.24}}
| 2 = {{CentrujWzór|<MATH>{{\partial G^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.25}}
}}
Co {{LinkWzór|26.24}} i {{LinkWzór|26.25}} są równoważne dwom równaniom tensorowym:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\partial_{\nu}S^{\mu\nu}=\pm J^{\mu}_{sw}\mbox{ lub }{S^{\mu\nu}}_{,\nu}=\pm J^{\mu}_{sw}\;</MATH>|26.26}}
| 2 = {{CentrujWzór|<MATH>\partial_{\nu}G^{\mu\nu}=0\mbox{ lub }{G^{\mu\nu}}_{,\nu}=0\;</MATH>|26.27}}
}}
Najpierw udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}}, dla parametru μ=0, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy pierwsze prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy definicji czasowej czterowektora prędkości {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial S^{0\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{00}}\over{\partial x^0}}+{{\partial S^{01}}\over{\partial x^1}}+{{\partial S^{02}}\over{\partial x^2}}+{{\partial S^{03}}\over{\partial x^3}}=\pm{{\partial cD_x}\over{\partial x}}\pm{{\partial cD_y}\over{\partial y}}\pm{{\partial cD_z}\over{\partial z}}=\pm c\nabla\cdot\vec{D}=\pm J^0=\pm c\rho_{sw}\Rightarrow \nabla\cdot\vec{D}=\rho_{sw}</MATH>|26.28}}
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}} dla parametru μ=1, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy iksowej jego składowej. Także skorzystamy z definicji czterowektora prądu objętościowego ładunków elektrycznych {{LinkWzór|26.5}}, zatem dochodzimy wtedy do wniosku:
{{CentrujWzór|<MATH>{{\partial S^{1\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{10}}\over{\partial x^0}}+{{\partial S^{11}}\over{\partial x^1}}+{{\partial S^{12}}\over{\partial x^2}}+{{\partial S^{13}}\over{\partial x^3}}=\mp{{\partial cD_x}\over{\partial ct}}\pm{{\partial H_z}\over{\partial y}}\mp{{\partial H_y}\over{\partial z}}=\pm\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_x=\pm(\vec{J}_{sw})_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_x=(\vec{J}_{sw})_x</MATH>|26.29}}.
Następnie udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}} dla parametru μ=2, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy igrekowej jego składowej. Także będziemy korzystać z definicji czterowektora prądu objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial S^{2\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{20}}\over{\partial x^0}}+{{\partial S^{21}}\over{\partial x^1}}+{{\partial S^{22}}\over{\partial x^2}}+{{\partial S^{23}}\over{\partial x^3}}=\mp{{\partial cD_y}\over{\partial ct}}\mp{{\partial H_z}\over{\partial x}}\pm{{\partial H_x}\over{\partial z}}=\pm\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_y=\pm(\vec{J}_{sw})_x\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_y=(\vec{J}_{sw})_x</MATH>|26.30}}
Na sam koniec udowodnijmy pierwszy wzór tensorowy {{LinkWzór|26.24}} dla parametru μ=3, korzystając przy tym z definicji tensora pola elektromagnetycznego dla materii {{LinkWzór|26.10}}. I jak się przekonamy otrzymamy czwarte prawo Maxwella {{LinkWzór|15.46|Elektrodynamika_Maxwella}} dla materii przy definicji zetowej jego składowej czterowektora prądu elektrycznego objętościowego {{LinkWzór|26.5}}:
{{CentrujWzór|<MATH>{{\partial S^{3\nu}}\over{\partial x^{\nu}}}=
{{\partial S^{30}}\over{\partial x^0}}+{{\partial S^{31}}\over{\partial x^1}}+{{\partial S^{32}}\over{\partial x^2}}+{{\partial S^{33}}\over{\partial x^3}}=\mp{{\partial cD_z}\over{\partial ct}}\pm{{\partial B_y}\over{\partial x}}\mp{{\partial B_x}\over{\partial y}}=\pm\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_z=\pm(\vec{J}_{sw})_z\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\left(-{{\partial \vec{D}}\over{\partial t}}+\nabla\times\vec{H}\right)_z=(\vec{J}_{sw})_z</MATH>|26.31}}
Zbierając razem trzy ostatnie wynikowe równania otrzymujemy czwarte prawo Maxwella dla materii {{LinkWzór|15.41|Elektrodynamika_Maxwella}}.
=== Tensor pola elektromagnetycznego poprzez czteropotencjał ===
We wzorach na natężenie pola elektrycznego w zależności od potencjału skalarnego i wektorowego {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, i we wzorze {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} występuje potencjał skalarny i wektorowy. Te potencjały można napisać ogólnie w postaci czterowektora potencjału tensorowego kontrkowariantnego:
{{CentrujWzór|<MATH>A^{\mu}=\left({{\varphi}\over{c}},A_x,A_y,A_z\right)=\left({{\varphi}\over{c}},\vec{A}\right)\;</MATH>|26.32|Obramuj}}
lub w postaci kowariantnej jako odpowiednim wzoru {{LinkWzór|26.32}}, który otrzymamy wymnóżając ostatnio wspomnianą definicję podwójnie kontrwariatnego tensora potencjały tensorowego przez odpowiedni tensor metryczny, tzn. przez tensor metryczny przestrzeni Minkowskiego η{{Sub|μν}}:
{{CentrujWzór|<MATH>A_{\mu}=A^{\nu}\eta_{\nu\mu}=\left(\pm{{\varphi}\over{c}},\mp\vec{A}\right)\;</MATH>|26.33}}
Weźmy tensor {{LinkWzór|26.9}} i zdefiniujmy go w oparciu o definicję czterowektora potencjału elektromagnetycznego, zatem tą tożsamość piszemy:
{{CentrujWzór|<MATH>F^{\mu\nu}={{\partial A^{\mu}}\over{\partial x_{\nu}}}-{{\partial A^{\nu}}\over{\partial x_{\mu}}}\Rightarrow F^{\mu\nu}=\partial^{\nu}A^{\mu}-\partial^{\mu}A^{\nu}\mbox{ lub }F^{\mu\nu}={A^{\mu}}^{,\nu}-{A^{\nu}}^{,\mu}\;</MATH>|26.34|Obramuj}}
Udowodnijmy w tym celu, że przepis {{LinkWzór|26.34}} przechodzi w tożsamość wcześniej wprowadzoną {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, przy tym będziemy korzystać z przedstawienia tensora pola elektromagnetycznego T{{Sup|μν}}, zatem przejdźmy do sedna sprawy:
{{CentrujWzór|<MATH>F^{01}={{\partial A^0}\over{\partial x_1}}-{{\partial A^1}\over{\partial x_0}}=\mp{{1}\over{c}}{{\partial\varphi}\over{\partial x}}\mp{{1}\over{c}}{{\partial A_x}\over{\partial t}}=
\mp{{1}\over{c}}\left(\nabla\varphi+{{\partial A_x}\over{\partial t}}\right)_x=\pm{{E_x}\over{c}}\;</MATH>|26.35}}
{{CentrujWzór|<MATH>F^{02}={{\partial A^0}\over{\partial x_2}}-{{\partial A^2}\over{\partial x_0}}=\mp{{1}\over{c}}{{\partial\varphi}\over{\partial y}}\mp{{1}\over{c}}{{\partial A_y}\over{\partial t}}=\mp{{1}\over{c}}\left(\nabla\varphi+{{\partial\vec{A}}\over{\partial t}}\right)_y=\pm{{E_y}\over{c}}\;</MATH>|26.36}}
{{CentrujWzór|<MATH>F^{03}={{\partial A^0}\over{\partial x_3}}-{{\partial A^3}\over{\partial x_0}}=\mp{{1}\over{c}}{{\partial\varphi}\over{\partial z}}\mp{{1}\over{c}}{{\partial A_z}\over{\partial t}}=\mp{{1}\over{c}}\left(\nabla\varphi+{{\partial\vec{A}}\over{\partial t}}\right)_z=\pm{{E_z}\over{c}}\;</MATH>|26.37}}
Z obliczeń {{LinkWzór|26.34}}, {{LinkWzór|26.35}} oraz {{LinkWzór|26.36}} udowodniliśmy, że tożsamość {{LinkWzór|26.33}} przechodzi w napisany wcześniej wzór {{LinkWzór|20.4|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}.
Następnym krokiem jest udowodnienie, że {{LinkWzór|26.34}} przechodzi we wzór {{LinkWzór|20.1|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, przy tym będziemy korzystać ze przedstawienia tensora pola elektromagnetycznego T{{Sup|μν}}, zatem przejdźmy do sedna sprawy.
{{CentrujWzór|<MATH>F^{12}={{\partial A^1}\over{\partial x_2}}-{{\partial A^2}\over{\partial x_1}}=\mp{{\partial A_x}\over{\partial y}}\pm{{\partial A_y}\over{\partial x}}=\pm(\nabla\times\vec{A})_z=\pm B_z\;</MATH>|26.38}}
{{CentrujWzór|<MATH>F^{13}={{\partial A^1}\over{\partial x_3}}-{{\partial A^3}\over{\partial x_1}}=\mp{{\partial A_x}\over{\partial z}}\pm{{\partial A_z}\over{\partial x}}=\mp(\nabla\times\vec{A})_y=\mp B_y\;</MATH>|26.39}}
{{CentrujWzór|<MATH>F^{23}={{\partial A^2}\over{\partial x_3}}-{{\partial A^3}\over{\partial x_2}}=\mp{{\partial A_y}\over{\partial z}}\pm{{\partial A_z}\over{\partial y}}=\pm(\nabla\times\vec{A})_x=\pm B_x\;</MATH>|26.40}}
Zatem udało nam się udowodnić co zamierzaliśmy.
Otrzymaliśmy zatem dwa równania opisujące natężenie pola elektrycznego {{LinkWzór|20.4|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}} i tożsamość {{LinkWzór|20.1|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}} na indukcję pola magnetycznego.
== Tensorowe równania Maxwella a zgodność z teorią względności ==
Udowodnimy zgodność tensorowych równań Maxwella dla próżni i materii.
=== Tensorowe równania Maxwella, a zgodność z teorią względności dla próżni ===
Zakładamy, że w starym układzie współrzędnych w próżni są spełnione równania tensorowe Maxwella na podstawie ich ogólnego przedstawienia {{LinkWzór|26.12}} i {{LinkWzór|26.13}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial{F}^{\mu\nu}}\over{\partial x^{\nu}}}=\pm\mu_0{J}^{\mu}\;</MATH>|26.41}}
| 2 = {{CentrujWzór|<MATH>{{\partial{G}^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.42}}
}}
Według szczególnej teorii względności powyższe równania w starym układzie współrzędnych są równoważne równaniom w nowym układzie współrzędnych w formie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial\overline{F}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=\pm\mu_0\overline{J}^{\mu}\;</MATH> |26.43}}
| 2 = {{CentrujWzór|<MATH>{{\partial\overline{G}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=0\;</MATH>|26.44}}
}}
Tensor pola elektromagnetycznego {{LinkWzór|26.9}} też jest również tensorem, bo on również transformuje się z jednego układu współrzędnych do innego w sposób:
{{CentrujWzór|<MATH>\overline{F}^{\mu\nu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}} F^{\alpha\beta}\;</MATH>|26.45}}
Podstawmy transformację tensora pola elektromagnetycznego F{{Sup|μν}}, który opisuje transformację ze starego do nowego układu współrzędnych, do pierwszego równania tensorowego Maxwella {{LinkWzór|26.43}} do jego lewej strony:
{{CentrujWzór|<MATH>L={{\partial\overline{F}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=
{{\partial}\over{\partial\overline{x}^{\nu}}}{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}} F^{\alpha\beta}=
{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial F^{\alpha\beta}}\over{\partial\overline{x}^{\nu}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial x^{\gamma}}\over{\partial\overline{x}^{\nu}}}{{\partial F^{\alpha\beta}}\over{\partial x^{\gamma}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}\delta^{\gamma}_{\beta}{{\partial F^{\alpha\beta}}\over{\partial x^{\gamma}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial F^{\alpha\beta}}\over{\partial x^{\beta}}}\;</MATH>|26.46}}
Napiszmy lewą stronę tensorowego równania Maxwella {{LinkWzór|26.41}}, korzystając z wiadomości z metod matematycznych fizyki o tensorach, że ten tensor gęstości objętościowej prądu elektrycznego transformuje się z jednego układu współrzędnych (ze starego) do drugiego układów współrzędnych (do nowego) wedle:
{{CentrujWzór|<MATH>P=\mu_0\overline{J}^{\mu}=\mu_0{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}J^{\alpha}\;</MATH>|26.47}}
Przyrównajmy obie strony równania {{LinkWzór|26.41}} do siebie, czyli {{LinkWzór|26.45}} z {{LinkWzór|26.46}}, wtedy przenieśmy wszystkie wyrazy z jego lewej strony na prawą jakie są i wydzielmy pewne wyrazy pod nawias, w celu udowodnienia niezmienniczości tensorowych równań Maxwella, wtedy dostajemy tożsamość:
{{CentrujWzór|<MATH>{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial F^{\alpha\beta}}\over{\partial x^{\beta}}}=\mu_0{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}J^{\alpha}\Rightarrow
{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}\left({{\partial F^{\alpha\beta}}\over{\partial x^{\beta}}}\mp\mu_0 J^{\alpha}\right)=0\;</MATH>|26.48}}
Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|26.48}} udowodniliśmy, że jeśli zachodzi {{LinkWzór|26.41}}
co ono jest równanie spełnione w starym układzie współrzędnych, to w ten sposób udowodniliśmy, że ono także spełnione w nowym układzie odniesienia, co w tym układzie spełniony jest wzór {{LinkWzór|26.43}}.
Podobnie dowodzimy niezmienniczość drugiego tensorowego równanie Maxwella, że równanie tensorowe co jest spełnione w nowym układzie odniesienia, czyli {{LinkWzór|26.42}}, na podstawie tego widzimy, że ten pierwszy wzór przechodzi w ten drugi, czyli we wzór {{LinkWzór|26.44}}, i odwrotnie.
Czyli dowodzimy, że nasze równania tensorowe równania Maxwella dla próżni {{LinkWzór|26.12}} i {{LinkWzór|26.13}} są niezależne od wyboru układu odniesienia inercjalnego.
=== Tensorowe równania Maxwella, a zgodność z teorią względności dla materii ===
Zakładamy, że w starym układzie współrzędnych w próżni są spełnione równania tensorowe Maxwella na podstawie ich ogólnego przedstawienia {{LinkWzór|26.24}} i {{LinkWzór|26.25}}
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial{S}^{\mu\nu}}\over{\partial x^{\nu}}}=\pm {J}^{\mu}_{sw}\;</MATH>|26.49}}
| 2 = {{CentrujWzór|<MATH>{{\partial{G}^{\mu\nu}}\over{\partial x^{\nu}}}=0\;</MATH>|26.50}}
}}
Według szczególnej teorii względności powyższe równania w starym układzie współrzędnych są równoważne równaniom w nowym układzie współrzędnych w formie:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial\overline{S}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=\pm\overline{J}^{\mu}_{sw}\;</MATH>|26.51}}
| 2 = {{CentrujWzór|<MATH>{{\partial\overline{G}^{\mu\nu}}\over{\partial \overline{x}^{\nu}}}=0\;</MATH>|26.52}}
}}
Niezmienniczość od inercjalnego układu odniesienia drugiego tensorowego równania Maxwella {{LinkWzór|26.25}} tak samo się udowodnia jak dla próżni {{LinkWzór|26.13}}. W przypadku pierwszego równania {{LinkWzór|26.24}} musimy wykorzystać, że S{{Sup|μν}} jest tensorem i transformuje się ze starego układu do nowego w sposób:
{{CentrujWzór|<MATH>\overline{S}^{\mu\nu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}S^{\alpha\beta}</MATH>|26.53}}
Dowód, że równanie tensorowe {{LinkWzór|26.49}} w starym układzie odniesienia przechodzi w wyniku transformacji w równanie w nowym układzie odniesienia wedle postaci {{LinkWzór|26.51}}, który jest bardzo podobny jak dla próżni, tylko musimy tym razem zastosować transformację tensora S{{Sup|μν}} {{LinkWzór|26.10}} w postaci {{LinkWzór|26.53}}.
=== Tensorowy charakter czteropotencjału, a tensor pola elektromagnetycznego ===
Następnie udowodnijmy, czy równanie na tensor pola elektromagnetycznego {{LinkWzór|26.33}} napisany w zależności od czteropotencjału prądu elekrycznego {{LinkWzór|26.32}} jest niezależny od układu współrzędnego inercjalnego.
Oczywiste jest, że czteropotencjał w elektromagnetyzmie jest tensorem, a więc transformuje się ze starego układu współrzędnych do nowego wedle sposobu:
{{CentrujWzór|<MATH>\overline{A}^{\mu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}A^{\alpha}\;</MATH>|26.54}}
W starym układzie odniesienia powino mieć miejsce wzór ponizej, względem jego postaci ogólnej zapisaną w punkcie {{LinkWzór|26.34}} po zastosowaniu transformacji czeropoencjału {{LinkWzór|26.32}} wedle sposobu:
{{CentrujWzór|<MATH>\overline{F}^{\mu\nu}={{\partial \overline{A}^{\mu}}\over{\partial \overline{x}_{\nu}}}-{{\partial \overline{A}^{\nu}}\over{\partial \overline{x}_{\mu}}}={{\partial}\over{\partial\overline{x}_{\nu}}}\left({{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}A^{\alpha}\right)-{{\partial}\over{\partial \overline{x}_{\mu}}}\left({{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}A^{\beta}\right)={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial x_{\beta}}\over{\partial\overline{x}_{\nu}}}{{\partial A^{\alpha}}\over{\partial x_{\beta}}}-{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial x_{\alpha}}\over{\partial\overline{x}_{\mu}}}{{\partial A^{\beta}}\over{\partial x_{\alpha}}}\;</MATH>|26.55}}
Ze względu, że równania w szczególnej teorii względności transformujące są tak zbudowane by ich postać była niezmiennicza niezależna od układu odniesienia i współrzędne położenia lub czasu transformują ze starego układu odniesienia do nowego czy odwrotnie, a także wiedząc, że zachodzi tożsamość {{Formuła|<MATH>{{\partial x_{\beta}}\over{\partial\overline{x}_{\nu}}}={{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}\;</MATH>}}, wtedy dochodzimy do wniosku:
{{CentrujWzór|<MATH>\overline{F}^{\mu\nu}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial A^{\alpha}}\over{\partial x_{\beta}}}-{{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}{{\partial A^{\beta}}\over{\partial x_{\alpha}}}={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}\left({{\partial A^{\alpha}}\over{\partial x_{\beta}}}-{{\partial A^{\beta}}\over{\partial x_{\alpha}}}\right)={{\partial\overline{x}^{\mu}}\over{\partial x^{\alpha}}}{{\partial\overline{x}^{\nu}}\over{\partial x^{\beta}}}F^{\alpha\beta}\;</MATH>|26.56}}
W ten sposób udowodniliśmy, że jeśli czteropotencjał jest tensorem {{LinkWzór|26.32}}, to tensor pola elektromagnetycznego również jest nim.
== Tensorowe cechowanie Lorentza ==
Cechowania Lorentza {{LinkWzór|20.7|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}} możemy zapisać wedle sposobu poniżej. Cechowanie Lorentza przekształćmy, by można było zastosować definicję czteropotencjału, tak by przy gęstości objętościowej ładunku znajdowała się literka c, co określa wartość prędkości światła.
{{CentrujWzór|<MATH>{{\partial\left({{\varphi}\over{c}}\right)}\over{\partial (ct)}}+{{\partial A_x}\over{\partial x}}+{{\partial A_y}\over{\partial y}}+{{\partial A_z}\over{\partial z}}=0\;</MATH>|26.57}}
Korzystając z definicji czteropotencjału {{LinkWzór|26.32}}, wtedy wzór {{LinkWzór|26.57}} możemy zapisać w bardziej elegancki tensorowy sposób wedle:
{{CentrujWzór|<MATH>{{\partial A^{\mu}}\over{\partial x^{\mu}}}=0\;</MATH>|26.58}}
== Tensorowe równania Maxwella a czteropotencjał i czteroprąd ==
Korzystając z pierwszego tensorowego równania Maxwella dla próżni {{LinkWzór|26.12}}, wtedy do tego wzoru możemy podstawić tożsamość {{LinkWzór|26.34}}, wtedy dostajemy:
{{CentrujWzór|<MATH>{{\partial}\over{\partial x^{\nu}}}\left({{\partial A^{\mu}}\over{\partial x_{\nu}}}-{{\partial A^{\nu}}\over{\partial x_{\mu}}}\right)=\pm\mu_0 J^{\mu}\Rightarrow{{\partial^2A^{\mu}}\over{\partial x_{\nu}\partial x^{\nu}}}-{{\partial^2A^{\nu}}\over{\partial x_{\mu}\partial x^{\nu}}}=\pm\mu_0 J^{\mu}\Rightarrow{{\partial^2A^{\mu}}\over{\partial x_{\nu}\partial x^{\nu}}}-{{\partial }\over{\partial x_{\mu}}}\left({{\partial A^{\nu}}\over{\partial x^{\nu}}}\right)=\pm\mu_0 J^{\mu}\;</MATH>|26.59}}
Teraz z korzystajmy z tensorowej postaci cechowania Lorenzta {{LinkWzór|26.58}}, wtedy równanie {{LinkWzór|26.59}} przechodzi w równanie poniżej, które to tutaj skorzystamy z definicji operatora dalambercjanu {{LinkWzór|20.13|Pola_skalarne_i_wektorowe_a_równania_elektrodynamiki_Maxwella}}, wtedy możemy napisać:
{{CentrujWzór|<MATH>{{\partial^2A^{\mu}}\over{\partial x_{\nu}\partial x^{\nu}}}=\pm\mu_0 J^{\mu}\Rightarrow\left({{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}-\Delta\right)A^{\mu}=\mu_0 J^{\mu}\Rightarrow\left(\Delta-{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}\right)A^{\mu}=-\mu_0 J^{\mu}\Rightarrow\square A^{\mu}=-\mu_0J^{\mu}\;</MATH>|26.60}}
Widzimy, że równanie końcowe tensorowe {{LinkWzór|26.60}} jest odpowiednikiem równania {{LinkWzór|20.7|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}} i {{LinkWzór|20.8|Pola skalarne i wektorowe a równania elektrodynamiki Maxwella}}, wynika to na podstawie definicji czerowektora potencjału elektromagnetycznego {{LinkWzór|26.32}} i czterowektora prądu objętościowego ładunków elektrycznych {{LinkWzór|26.5}}.
== Czterowektor siły w elektrodynamice ==
Czterowektor siły definiujemy w oparciu o definicję tensora pola elektrycznego {{LinkWzór|26.9}} oraz o definicję czterowektora prędkości wedle:
{{CentrujWzór|<MATH>K^{\mu}=-qu_{\nu}F^{\mu\nu}=qu_{\nu}F^{\nu\mu}\;</MATH>|26.61}}
I wyznaczmy najpierw trzy kolejne składowe czterowektora siły {{LinkWzór|26.61}} dla parametru μ>0, zatem przejdźmy do dzieła, czyli wyznaczmy współrzędną iksową czterowektora siły, korzystając przy tym z definicji tensora pola elektromagnetycznego {{LinkWzór|26.9}}.
{{CentrujWzór|<MATH>K_x=K^1=-q\left(u^{0}F^{10}-u^1F^{11}-u^2F^{12}-u^3F^{13}\right)=q{{1}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left[
-c\left(-{{E_x}\over{c}}\right)+v^yB_z-v^zB_y\right]=\;</MATH>{{Br}}<MATH>={{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(\vec{E}+\vec{v}\times\vec{B}\right)_x={{\gamma}\over{c}}F_x\;</MATH>|26.62}}
Następnie określmy współrzędną igrekową czterowektora siły wedle {{LinkWzór|26.61}}, korzystając przy tym z definicji tensora pola elektromagnetycznego {{LinkWzór|26.9}}.
{{CentrujWzór|<MATH>K_y=K^2=-q\left(u^0F^{20}-u^1F^{21}-u^2F^{22}-u^3F^{33}\right)={{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(-c\left(-{{E_y}\over{c}}\right)-v_xB_z+v_zB_x\right)=\;</MATH>{{Br}}<MATH>=
{{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(\vec{E}+\vec{v}\times\vec{B}\right)_y={{\gamma}\over{c}} F_y\;</MATH>|26.63}}
Następnie określmy współrzędną zetową czterowektora siły wedle {{LinkWzór|26.61}}, korzystając przy tym z definicji tensora pola elektromagnetycznego {{LinkWzór|26.9}}.
{{CentrujWzór|<MATH>K_z=K^3=-q\left(u^0F^{30}-u^1F^{31}-u^2F^{32}-u^3F^{33}\right)={{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left[-c\left(-{{E_z}\over{c}}\right)+v_xB_y-v_yB_x\right]=\;</MATH>{{Br}}<MATH>=
{{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(\vec{E}+\vec{v}\times\vec{B}\right)_z={{\gamma}\over{c}} F_z\;</MATH>|26.64}}
Czyli ogólnie otrzymaliśmy na podstawie liczenia współrzędnych czasoprzestrzenych czterowektora siły {{LinkWzór|26.61}} wzór
w postaci:
{{CentrujWzór|<MATH>\vec{K}={{\gamma}\over{c}}\vec{F}\;</MATH>|26.65}}
* gdzie:<MATH>\vec{F}\;</MATH> jest to siła Lorentza wprowadzone w punkcie określonym jako {{LinkWzór|8.3|Magnetostatyka}}, czyli taki sam wzór mamy w elektromagnetyzmie na tą wielkość.
Transformacja czterowektora siły, a właściwie jej współrzędna przestrzenne wygląda tak samo w szczególnej teorii względności jak w punkcie {{LinkWzór|26.65}}.
A teraz wyznaczmy element czterosiły {{LinkWzór|26.61}} dla wskaźnika μ=0, zatem zróbmy to:
{{CentrujWzór|<MATH>K_t=K^0=-q\left(u^0F^{00}-u^1F^{01}-u^2F^{02}-u^3F^{03}\right)=
{{q}\over{c\sqrt{1-{{v^2}\over{c^2}}}}}\left(v_x{{E_x}\over{c}}+v_y{{E_y}\over{c}}+v_z{{E_z}\over{c}}\right)=\;</MATH>{{Br}}<MATH>={{q}\over{c^2\sqrt{1-{{v^2}\over{c^2}}}}}(\vec{v}\cdot\vec{E})=
\left[\vec{v}\cdot\left(\vec{E}+\vec{v}\times\vec{B}\right)\right]{{q\gamma}\over{c^2}}=
{{\vec{v}\cdot\vec{F}}\over{c^2}}\gamma={{(m\vec{v})\cdot\vec{F}}\over{mc^2}}\gamma={{\vec{p}\cdot\vec{F}}\over{E}}\gamma\;</MATH>|26.66}}
Zbierając wszystkie elementy czterowektora siły, tzn. najpierw jej część czasową {{LinkWzór|26.66}} i później jej część przestrzenną {{LinkWzór|26.65}}, zatem mówiąc ogólnie czterowektor siły wyraża się wzorem w naszym przypadku:
{{CentrujWzór|<MATH>K^{\mu}=\left({{\vec{p}\cdot\vec{F}}\over{E}}\gamma,{{\gamma}\over{c}}\vec{F}\right)\;</MATH>|26.67}}
Powyższy wzór na czterowektor siły jest ten sam, co wyprowadziliśmy w szczególnej teorii względności, też czterowektora siły, a więc definicja czterowektora siły w elektrodynamice relatywistycznej jest poprawna i zgodna ze szczególną teorią względności ogłoszoną w 1905 przez Einsteina.
== Transformacje pól magnetycznych i elektrycznych ==
Będziemy się zajmować transformacjami względem szczególnej teorii względności pol natężenia i indukcji pola elektrycznego a także natężenia i indukcji pola magnetycznego.
=== Transformacje natężenia pola elektrycznego i indukcji pola magnetycznego ===
Macierz transformacji ze starego układu odniesienia do nowego układu odniesienia inercjalnego w szczególnej teorii względności jest opisana wzorem:
{{CentrujWzór|<MATH>{{\partial\overline{x}^{\mu}}\over{\partial x^{\nu}}}=\mathbf{M}=\begin{bmatrix}
\gamma&-\beta\gamma&0&0\\
-\beta\gamma&\gamma&0&0\\
0&0&1&0\\
0&0&0&1
\end{bmatrix}\;</MATH>|26.68}}
Skorzystamy też, że tensor pola elektromagnetycznego {{LinkWzór|26.9}} jest tensorem, więc transformuje się według wzoru {{LinkWzór|26.45}} przy macierzy transformacji napisanej wzorem {{LinkWzór|26.68}}. wyznaczmy wzory jak transformują się współrzędne natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm{{\overline{E}_x}\over{c}}=\overline{F}^{01}={{\partial\overline{x}^{0}}\over{\partial x^{0}}}{{\partial\overline{x}^{0}}\over{\partial x^{1}}}F^{00}+
{{\partial\overline{x}^{0}}\over{\partial x^{0}}}{{\partial\overline{x}^{1}}\over{\partial x^{1}}}F^{01}+
{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{1}}\over{\partial x^{0}}}F^{10}+
{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{1}}\over{\partial x^{1}}}F^{11}+
{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{2}}\over{\partial x^{2}}}F^{22}+{{\partial\overline{x}^{0}}\over{\partial x^{1}}}{{\partial\overline{x}^{3}}\over{\partial x^{3}}}F^{33}=\;</MATH>{{Br}}<MATH>=
\pm\gamma^2{{E_x}\over{c}}\mp\beta^2\gamma^2{{E_x}\over{c}}=\pm{{E_x}\over{c}}\gamma^2\left(1-\beta^2\right)=\pm{{E_x}\over{c}}\gamma^2\gamma^{-2}=\pm{{E_x}\over{c}}\;</MATH>|26.69}}
Stąd otrzymujemy pierwszą zależność współrzędnej iksowej pola elektrycznego wedle obliczeń {{LinkWzór|26.69}}.
Zbadajmy jaka jaka jest współrzędna igrekowa natężenia pola elektrycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm{{\overline{E}_y}\over{c}}=\overline{F}^{02}={{\partial\overline{x}^0}\over{\partial x^{\alpha}}}{{\partial\overline{x}^2}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^0}\over{\partial x^{0}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{02}+{{\partial\overline{x}^0}\over{\partial x^{1}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{12}=\pm\gamma{{E_y}\over{c}}\mp\gamma\beta B_z=\pm{{1}\over{c}}{{E_y-uB_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.70}}
Stąd otrzymujemy pierwszą zależność współrzędnej igrekowej pola elektrycznego wedle obliczeń {{LinkWzór|26.70}}.
Zbadajmy jaka jaka jest współrzędna zetowa natężenia pola elektrycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm{{\overline{E}_z}\over{c}}=\overline{F}^{03}=
{{\partial\overline{x}^0}\over{\partial x^{\alpha}}}{{\partial\overline{x}^3}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^0}\over{\partial x^{0}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{03}+
{{\partial\overline{x}^0}\over{\partial x^{1}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{13}=
\pm\gamma{{E_z}\over{c}}\pm\gamma\beta B_y={{1}\over{c}}{{E_z+uB_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.71}}
Stąd otrzymujemy pierwszą zależność współrzędnej zetowa pola elektrycznego wedle obliczeń {{LinkWzór|26.71}}.
Zbadajmy jaka jaka jest współrzędna iksowa indukcji pola magnetycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm\overline{B}_x=\overline{F}^{23}={{\partial\overline{x}^2}\over{\partial x^{\alpha}}}{{\partial\overline{x}^3}\over{\partial x^{\beta}}}F^{23}=
{{\partial\overline{x}^2}\over{\partial x^{2}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{23}=\pm B_x\;</MATH>|26.72}}
Stąd otrzymujemy pierwszą zależność współrzędnej iksowa indukcji pola magnetycznego wedle obliczeń {{LinkWzór|26.72}}.
Zbadajmy jaka jaka jest współrzędna igrekowa indukcji pola magnetycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\mp\overline{B}_y=\overline{F}^{13}={{\partial\overline{x}^1}\over{\partial x^{\alpha}}}{{\partial\overline{x}^3}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^1}\over{\partial x^{0}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{03}+{{\partial\overline{x}^1}\over{\partial x^{1}}}{{\partial\overline{x}^3}\over{\partial x^{3}}}F^{13}=\mp\gamma\beta{{E_z}\over{c}}\mp\gamma B_y=\mp{{B_y+{{u}\over{c^2}}E_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.73}}
Stąd otrzymujemy pierwszą zależność współrzędnej igrekowa pola elektrycznego wedle obliczeń {{LinkWzór|26.71}}.
Zbadajmy jaka jaka jest współrzędna zetowa indukcji pola elektrycznego w nowym układzie współrzędnych w zależności od natężenia pola elektrycznego i indukcji pola magnetycznego.
{{CentrujWzór|<MATH>\pm\overline{B}_z=\overline{F}^{12}={{\partial\overline{x}^1}\over{\partial x^{\alpha}}}{{\partial\overline{x}^2}\over{\partial x^{\beta}}}F^{\alpha\beta}=
{{\partial\overline{x}^1}\over{\partial x^{0}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{02}+{{\partial\overline{x}^1}\over{\partial x^{1}}}{{\partial\overline{x}^2}\over{\partial x^{2}}}F^{12}=\mp\gamma\beta{{E_y}\over{c}}\pm\gamma B_z=\pm{{B_z-{{u}\over{c^2}}E_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.74}}
Jeśli dwa układy inercjalne odniesienia poruszają się zawsze równolegle do siebie, to transformacje natężenia pola elektrycznego i indukcji pola magnetycznego przedstawiają się wedle sposobu:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje natężenie pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{E}_x=E_x\;</MATH>|26.75}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{E}_y={{E_y-uB_z}\over{\sqrt{1-{{u^2}\over{c^2}} }}}\;</MATH>|26.76}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{E}_z={{E_z+uB_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.77}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje indukcji pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{B}_x=B_x\;</MATH>|26.78}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{B}_y={{B_y+{{u}\over{c^2}}E_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.79}}}}<!--
-->{{komórka|{{CentrujWzór|<MATH>\overline{B}_z={{B_z-{{u}\over{c^2}}E_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.80}}}}<!--
-->}}<!--
-->}}
* gdzie u jest to prędkość układu odniesienia nowego względem starego.
Podobne rozwiązania otrzymujemy, gdy rozważamy tensor dualny G{{Sup|μν}}, transformując go ze starego inercjalnego układu odniesienia do nowego.
Gdy mamy stary i nowy układ współrzędnych ogólnie nieprostokątne trójwymiarowe, w którym prędkość nowego układu współrzędnych ma jakiś kierunek ogólnie nierównoległy do osi OX starego układu współrzędnych oraz gdy nowy układ odniesienia jest ogólnie nierównoległy do starego, wiedząc, że układ prostokątny trójwymiarowy stary i nowy, na samym początku przed przejściem na układy ogólnie nieprostokątne, są do siebie równoległe i prędkość nowego układu współrzędnych jest równoległa do osi OX względem starego układu odniesienia, dokonując transformacji obrotu osi starego i nowego układu współrzędnych oraz transformując współrzędne i wersory z tych układów prostokątnych, tzn. przechodząc z tych układów trójwymiarowych prostokątnych starego i nowego równoległych względem siebie, mamy:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje natężenie pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec E}}_{||}=C_p\vec{E}_{||}\;</MATH>|26.81}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec E}}_{\perp}=C_p{{{\vec E}_{\perp}+\vec u\times \vec B}\over{\sqrt{1-{{u^2}\over{c^2}} }}}\;</MATH>|26.82}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje indukcji pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec B}}_{||}=C_p{\vec B}_{||}\;</MATH>|26.83}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>{\overline{\vec B}}_{\perp}=C_p{{{\vec B}_{\perp}-{{\vec u\times \vec E}\over{c^2}}}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.84}}}}<!--
-->}}<!--
-->}}
* gdzie {{Formuła|<MATH>\vec u\;</MATH>}} jest to prędkość układu odniesienia nowego względem starego.
=== Transformacje indukcji pola elektrycznego i natężenia pola magnetycznego ===
Transformacje pola indukcji elektrycznej otrzymujemy z transformacji natężenia pola elektrycznego poprzez zastąpienie: {{Formuła|<MATH>{{\vec{E}}\over{c}}\rightarrow c\vec{D}\Rightarrow\vec{E}\rightarrow c^2\vec{D}</MATH>}}, a natężenia pola elektrycznego z transformacji indukcji pola magnetycznego poprzez zastąpienie {{Formuła|<MATH>\vec{B}\rightarrow\vec{H}</MATH>}}, to wszystko robimy dla transformacji natężenia pola elektrycznego i indukcji pola magnetycznego, wtedy dochodzimy do wniosku:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje indukcji pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{D}_x=D_x\;</MATH>|26.85}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{D}_y={{D_y-{{u}\over{c^2}}H_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.86}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{D}_z={{D_z+{{u}\over{c^2}}H_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.87}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=3|{{Center|'''Transformacje natężenia pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{H}_x=H_x\;</MATH>|26.84a}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{H}_y={{H_y+uD_z}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.88a}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{H}_z={{H_z-uD_y}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.89a}}}}<!--
-->}}<!--
-->}}
* gdzie u jest to prędkość układu odniesienia nowego względem starego.
Gdy mamy stary i nowy układ współrzędnych ogólnie nieprostokątne trójwymiarowe, w którym prędkość nowego układu współrzędnych ma jakiś kierunek ogólnie nierównoległy do osi OX starego układu współrzędnych oraz gdy nowy układ odniesienia jest ogólnie nierównoległy do starego, wiedząc, że układ prostokątny trójwymiarowy stary i nowy, na samym początku przed przejściem na układy ogólnie nieprostokątne, są do siebie równoległe i prędkość nowego układu współrzędnych jest równoległa do osi OX względem starego układu odniesienia, dokonując transformacji obrotu osi starego i nowego układu współrzędnych oraz transformując współrzędne i wersory z tych układów prostokątnych, tzn. przechodząc z tych układów trójwymiarowych prostokątnych starego i nowego równoległych względem siebie, mamy:
{{Tabelka|opcje=width=100%|klasa=wikitable|<!--
-->{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Transformacje indukcji pola elektrycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec D}_{||}=C_p{\vec D}_{||}\;</MATH>|26.90}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec D}_{\perp}=C_p{{{\vec D}_{\perp}+{{\vec u\times\vec H}\over{c^2}}}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.91}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|nagłówek=tak|opcje=colspan=2|{{Center|'''Transformacje natężenia pola magnetycznego ze starego układu odniesienia do nowego'''}}}}<!--
-->}}{{Wiersz|<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec H}_{||}=C_p{\vec H}_{||}\;</MATH>|26.92}}}}<!--
-->{{Komórka|{{CentrujWzór|<MATH>\overline{\vec H}_{\perp}=C_p{{{\vec H}_{\perp}-\vec u\times\vec D}\over{\sqrt{1-{{u^2}\over{c^2}}}}}\;</MATH>|26.93}}}}<!--
-->}}<!--
-->}}
== Ważniejsza tożsamość elektrodynamiki klasycznej ==
Bardzo ważną tożsamością występującą w elektrodynamice klasycznej w przestrzeni Minkowskiego jest to tożsamość zdefiniowana przy pomocy tensora pola elektromagnetycznego {{LinkWzór|26.9}} w postaci:
{{CentrujWzór|<MATH>F_{\mu\nu,\gamma}+F_{\gamma\mu,\nu}+F_{\nu\gamma,\mu}=0\;</MATH>|26.94}}
Tożsamość fizyczną {{LinkWzór|26.94}} możemy udowodnić podstawiając do niego {{LinkWzór|26.34}}, zatem do dzieła.
{{CentrujWzór|<MATH>\left(A_{\mu,\nu}-A_{\nu,\mu}\right)_{,\gamma}+\left(A_{\gamma,\mu}-A_{\mu,\gamma}\right)_{,\nu}+\left(A_{\nu,\gamma}-A_{\gamma,\nu}\right)_{,\mu}=0\;</MATH>|26.95}}
Aby dokończyć dalszą część dowodu należy wykorzystać twierdzenie o pochodnej różnicy i grupując wyrazy, zatem na podstawie tego mamy:
{{CentrujWzór|<MATH>{A_{\mu,\nu,\gamma}}-{A_{\mu,\gamma,\nu}}+{A_{\gamma,\mu,\nu}}-{A_{\gamma,\nu,\mu}}+{A_{\nu,\gamma,\mu}}-{A_{\nu,\mu,\gamma}}=0\;</MATH>|26.96}}
W równaniu {{LinkWzór|26.96}} wszystkie wyrazy parami są równe zero. Zatem powyższe wyrażenie jest zawsze równe zero, ze względu, że różniczkowanie cząstkowe w tym przypadku kowariantne jest zawsze działaniem względem siebie przemiennym według praw matematyki analizy matematycznej. Na tej podstawie tożsamość fizyczna {{LinkWzór|26.94}} jest twierdzeniem prawdziwym.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
ityux7wbwjelitee5upsff7e5lxoklt
Mechanika kwantowa/Relatywistyczna teoria kwantów Kleina-Gordona
0
17778
558844
548292
2026-10-07T12:17:09Z
Persino
2851
558844
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
== Równania mechaniki kwantowej relatywistycznej Kleina-Gordona ==
Wyprowadzimy teorie kwantową relatywistyczną Kliena-Gordona, która nie uwzględnia spinu opisywanej cząstki w porównaniu z teorią Diraca, który uwzględnia spin tejże cząstki.
Z szczególnej teorii względności mamy wyrażenie wiążące energię relatywistyczną cząstki z jej wartością pędu oraz masą spoczynkową, która może przyjmować każdą nieujemną wartość tejże wielkości:
{{CentrujWzór|<MATH>E^2=p^2c^2+m_0^2c^4\;</MATH>|24.1}}
Wykorzystując równanie {{LinkWzór|24.1}} i zastępując kwadrat wektora relatywistycznego pędu kwadratem operatora pędu {{LinkWzór|5.8|Postulat_pierwszy_mechaniki_kwantowej}}, dostajemy:
{{CentrujWzór|<MATH>E\psi=(-c^2\hbar^2\nabla^2+m_0^2c^4)\psi\;</MATH>|24.2}}
A równanie zależne od czasu zapisujemy podobnie jak {{LinkWzór|24.2}}, wychodząc z równania {{LinkWzór|24.1}}, piszemy:
{{CentrujWzór|<MATH>\left(i\hbar{{\partial}\over{\partial t}}\right)^2\psi=\left(-\hbar^2c^2\nabla^2+m_0^2c^4\right)\psi\;</MATH>|24.3}}
W lewej stronie równania {{LinkWzór|24.3}} wykonujemy podnoszenie do kwadratu operatora pochodnej względem czasu wraz z pewnym urojonym czynnikiem:
{{CentrujWzór|<MATH>-\hbar^2{{\partial^2}\over{\partial t^2}}\psi=\left(-\hbar^2c^2\nabla^2+m_0^2c^4\right)\psi\;</MATH>|24.4}}
Dzielimy obie strony równania {{LinkWzór|24.4}} przez wyrażenie, która jest w pewnym rodzaju stałą zależną od stałej kreślonej Plancka i prędkości światła: {{Formuła|<MATH>-\hbar^2c^2\;</MATH>}}:
{{CentrujWzór|<MATH>{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}\psi=\left(\nabla^2-{{m_0^2c^2}\over{\hbar^2}}\right)\psi\;</MATH>|24.5}}
Przenosimy wyrazy z drugimi pochodnymi cząstkowymi względem czasu i położenia na lewą stronę równania {{LinkWzór|24.5}}, a pozostałe na jej prawą stronę, otrzymujemy:
{{CentrujWzór|<MATH>\left(\nabla^2-{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}\right)\psi={{m_0^2c^2}\over{\hbar^2}}\psi\;</MATH>|24.6}}
Prowadźmy nowe oznaczenie i oznaczmy je operatorem d'Alemberta wiążące drugie pochodne względem wszystkich współrzędnych czasoprzestrzennych jakie występują w szczególnej teorii względności:
{{CentrujWzór|<MATH>\square=\nabla^2-{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}\;</MATH>|24.7}}
Wtedy równanie różniczkowe drugiego rzędu {{LinkWzór|24.6}}, korzystając przy tym z definicję operatora d'Alemberta {{LinkWzór|24.7}}, przechodzi w bardzo prostą postać, w której z prawej strony występują tylko stałe, tzn. masa spoczynkowa cząstki masowej i w sposób liniowy funkcja falowa, a jeśli masa cząstki jest równa zero (np. cząstki, które są fotonami), ta prawa strona jest zawsze równa zero niezależnie jaką mamy do dyspozycji funkcję falową jaką otrzymamy w wyniku rozwiązania funkcji falowej równania zależnego od czasu Klieina-Gordona.
{{CentrujWzór|<MATH>\square\psi={{m_0^2c^2}\over{\hbar^2}}\psi\;</MATH>|24.8|Obramuj}}
Jeżeli cząstka znajduje się w polu elektromagnetycznym, to dodatkowa energia w tym polu jest związana z energią potencjalną cząstki mającej ładunek o wartości "q", jest to całkowita energia w tymże polu potencjalnym, z którego wyprowadzimy energią cząstki, którą miałby bez pola skalarnego elektrycznego {{Formuła|<MATH>E\;</MATH>}}, ma wartość:
{{CentrujWzór|<MATH>E'=E+q\varphi\Rightarrow E=E'-q\varphi\;</MATH>|24.9}}
Podobnie uogólniony pęd cząstki może być zmieniony przez wektorowy potencjał pola elektromagnetycznego związany o dodatkowy człon związany z ładunkiem cząstki i potencjałem wektorowym:
{{CentrujWzór|<MATH>p'=p+q\vec{A}\Rightarrow p=p'-q\vec{A}\;</MATH>|24.10}}
Po tych udogodnieniach, tzn.: {{LinkWzór|24.9}} (energia całkowita primowana cząstki w polu skalarnym elektrycznym) i {{LinkWzór|24.10}} (pęd primowany cząstki w polu potencjału wektorowego magnetycznego), mamy:
{{CentrujWzór|<MATH>\left\{i\hbar{{\partial}\over{\partial t}}-q\varphi\right\}^2\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi+m_0^2c^4\psi\;</MATH>|24.11|Obramuj}}
Jest to '''równanie Kleina-Gordona zależne od czasu''' analogiczne do {{LinkWzór|24.3}}, bo w nim nie występuje parametr skalarny energii cząstki, ale w nim zamiast niego są pochodne czasowe funkcji falowej.
A równanie Kleina-Gordona niezależne od czasu, w którym nie występują pochodne zależne od czasu, natomiast parametr energii cząstki występuje, przyjmuje kształt:
{{CentrujWzór|<MATH>\left\{E-q\varphi\right\}^2\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi+m_0^2c^4\psi\;</MATH>|24.12|Obramuj}}
== Wyprowadzenie równań mechaniki kwantowej relatywistycznej Kleina-Gordona zależnego i niezależnego od czasu ==
Prawa mechaniki relatywistycznej kwantowej Kleina-Gordona rozważane są słuszne jedynie dla pól elektromagnetostatycznych, czyli dla pól elektrycznych i magnetycznych, stałych w czasie.
=== Dowód niepełny ===
Z szczególnej teorii względności wiadomo, że zachodzi {{LinkWzór|3.8|Definicja masy i energii, spoczynkowej i relatywistycznej, i pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, a także należy skorzystać z równania na pęd uogólniony {{LinkWzór|24.10}} z uwzględnieniem poprawki istnienia pola elektrycznego {{LinkWzór|24.9}} i magnetycznego {{LinkWzór|24.10}} wtedy wzór na całkowitą energię piszemy w zależności od pędu ogólnionego i potencjału skalarnego:
{{CentrujWzór|<MATH>E=\sqrt{c^2\left(\vec p-q\vec A\right)^2+m_0^2c^4}+q\varphi\Rightarrow (E-q\varphi)^2=c^2(\vec p-q\vec A)^2+m_0^2c^4\;</MATH>|W1}}
W równaniach mechaniki kwantowej Kleina-Gordona podobnie jak w mechanice kwantowej nierelatywistycznej funkcja falowa jest napisana w sposób {{LinkWzór|10.4a|Postulat czwarty mechaniki kwantowej}} lub {{LinkWzór|10.4b|Postulat czwarty mechaniki kwantowej}}, czy nawet w postaci {{LinkWzór|10.4c|Postulat czwarty mechaniki kwantowej}}.
Jeżeli skorzystamy z równania {{LinkWzór|10.10a|Postulat czwarty mechaniki kwantowej}}, wtedy równanie niezależne od czasu piszemy, wychodząc z postaci {{LinkWzór|W1}} wymnażając obie jego strony przez {{Formuła|<MATH>\psi(\vec r,t,\vec p,\vec E)\;</MATH>}}, w postaci:
{{CentrujWzór|<MATH>(E-q\varphi)^2\psi(\vec r,t,\vec p,\vec E)=c^2(\vec p-q\vec A)^2\psi(\vec r,t,\vec p,\vec E)+m_0^2c^4\psi(\vec r,t,\vec p,\vec E)\Rightarrow(E-q\varphi)^2\psi(\vec r,t,\vec p,\vec E)=\;</MATH><BR><MATH>=c^2(\hat p-q\vec A)^2\psi(\vec r,t,\vec p,\vec E)+m_0^2c^4\psi(\vec r,t,\vec p,\vec E)\;</MATH>|W2}}
* Powyższe równanie zachodzi w polu magnetostatycznym (w polu magnetycznym stałym), w którym zachodzi cechowanie {{Formuła|<MATH>\nabla\vec A=0\;</MATH>}} dla działu magnetostatyka.
Równanie {{LinkWzór|W2}} przechodzi w równanie {{LinkWzór|24.12}} po zsumowaniu wraz ze współczynnikami względem stanów dla tych samych {{Formuła|<MATH>E\;</MATH>}} i różnych pędów uogólnionych {{Formuła|<MATH>\vec p\;</MATH>}}, bo dostajemy wtedy równość:
{{CentrujWzór|<MATH>(E-q\varphi)^2\psi(\vec r,t,\vec E)=c^2(\hat p-q\vec A)^2\psi(\vec r,t,\vec E)+m_0^2c^4\psi(\vec r,t,\vec E)\;</MATH>|W3}}
Wiadomo, że na podstawie {{LinkWzór|10.15b|Postulat czwarty mechaniki kwantowej}}, bo tam samo się wyprowadza jak w mechanice kwantowej klasycznej i odejmując stronami wyrażenie {{Formuła|<MATH>q\varphi\psi(\vec r,t,\vec p,E)\;</MATH>}} i mnożąc jeszcze raz operatorem występującym po prawej stronie równania poniższego dostajemy:
{{CentrujWzór|<MATH>(E-q\varphi)\psi(\vec r,t,\vec p,E)=\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)\psi(\vec r,t,\vec p,E)\Rightarrow \left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)(E-q\varphi)\psi(\vec r,t,\vec p,E)=\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,\vec p,E)\Rightarrow\;</MATH><BR><MATH>\Rightarrow(E-q\varphi)\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)\psi(\vec r,t,\vec p,E)=\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,\vec p,E)\Rightarrow\;</MATH><BR><MATH>\Rightarrow(E-q\varphi)^2\psi(\vec r,t,\vec p,E)=\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,\vec p,E)\;</MATH>|W4}}
* Wartość {{Formuła|<MATH>(E-q\varphi)\;</MATH>}} zachowuje się ja wartość własna według operatora {{Formuła|<MATH>\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)</MATH>}}, bo mamy do czynienia z polem elektrostatycznym, w której zachodzi {{Formuła|<MATH>i\hbar{{\partial}\over{\partial t}}\varphi(\vec r,t)=0\;</MATH>}} dla działu elektrostatyka.
Równanie {{LinkWzór|W2}} przechodzi w równanie {{LinkWzór|24.12}} po zsumowaniu wraz ze współczynnikami względem stanów dla tych samych {{Formuła|<MATH>E\;</MATH>}} i ogólnie różnych {{Formuła|<MATH>\vec p\;</MATH>}}, bo dostajemy wtedy równość:
{{CentrujWzór|<MATH>(E-q\varphi)^2\psi(\vec r,t,E(t))=\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,E(t))\;</MATH>|W5}}
Łączymy prawą stronę wzoru {{LinkWzór|W2}} z prawą stronę wzoru {{LinkWzór|W4}} dostając:
{{CentrujWzór|<MATH>\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,\vec p,E)=c^2(\hat p-q\vec A)^2\psi(\vec r,t,\vec p,\vec E)+m_0^2c^4\psi(\vec r,t,\vec p,\vec E)\;</MATH>|W6}}
Równanie {{LinkWzór|W6}} przechodzi w równanie {{LinkWzór|24.11}} po zsumowaniu wraz ze współczynnikami względem stanów dla ogólnie różnych {{Formuła|<MATH>E\;</MATH>}} i różnych pędów uogólnionych {{Formuła|<MATH>\vec p\;</MATH>}}, bo dostajemy wtedy równość:
{{CentrujWzór|<MATH>\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t)=c^2(\hat p-q\vec A)^2\psi(\vec r,t)+m_0^2c^4\psi(\vec r,t)\;</MATH>|W7}}
Równość {{LinkWzór|W7}} jest to równanie zależne od czasu jest takie same jak {{LinkWzór|24.11}}. Co kończy dowód równania zależnego i niezależnego od czasu równania mechaniki kwantowej Kleina-Gordona. A dalsze zależności w mechanice kwantowej relatywistyczne Kleina-Gordona są podobne jak w rozdziale: {{sr|p=Postulat czwarty mechaniki kwantowej|#Wyprowadzenie równania falowego zależnego i niezależnego od czasu}}.
=== Dowód pełny ===
Zastąpmy zmienne pędu i energii cząstki w równaniu {{LinkWzór|W1}} (mechaniki relatywistycznej w równaniu na energię całkowitą układu odpowiednio przekształconą) przez wartości średnie:
{{CentrujWzór|<MATH>\overline{(E-q\varphi)^2}=c^2\overline{(\vec p-q\vec A)^2}+m_0^2c^4</MATH>|q1a}}
Napiszmy definicję wartości średnich występujących w równaniu {{LinkWzór|q1a}} po lewej stronie i po prawej pod czynnikiem {{Formuła|<MATH>c^2\;</MATH>}}, jako:
----
Pierwsza wartość średnia jak zobaczymy jest równa wyrażeniu z definicji średniej ważonej:
{{CentrujWzór|<MATH>\overline{(E-q\varphi)^2}={{\left(\psi\left|\left(E-q\varphi\right)^2\right|\psi\right)}\over{\left(\psi|\psi\right)}}=\sum_i|c_i(E)|^2\left(E-q\varphi\right)^2_i+\int |c(\vec k,E)|^2\left(E-q\varphi\right)^2(\vec k)d^{3}d\vec k</MATH>|q1b}}
Druga wartość średnia jak zobaczymy jest równa wyrażeniu z definicji średniej ważonej:
{{CentrujWzór|<MATH>\overline{\left(\vec p-q\vec A\right)^2}={{\left(\psi\left|\left(\hat p-q\vec A\right)^2\right|\psi\right)}\over{\left(\psi|\psi\right)}}=\sum_i|c_i(\vec k)|^2\left(\vec p-q\vec A\right)^2_i+\int |c(\vec k)|^2\left(\vec p-q\vec A\right)^2(\vec k)d^{3}d\vec k</MATH>|q1c}}
* Powyższe równanie zachodzi w polu magnetostatycznym (w polu magnetycznym stałym), w którym zachodzi cechowanie {{Formuła|<MATH>\nabla\vec A=0\;</MATH>}} dla działu magnetostatyka.
----
Wzory {{LinkWzór|q1b}} i {{LinkWzór|q1c}} podstawmy do równości {{LinkWzór|q1a}}, w takim razie otrzymamy wzór jako związek według iloczynów skalarnych:
{{CentrujWzór|<MATH>{{\left(\psi\left|\left(E-q\varphi\right)^2\right|\psi\right)}\over{\left(\psi|\psi\right)}}=c^2{{\left(\psi\left|\left(\hat p-q\vec A\right)^2\right|\psi\right)}\over{\left(\psi|\psi\right)}}+m_0^2c^4{{\left(\psi|\psi\right)}\over{\left(\psi|\psi\right)}}\;</MATH>|q1d}}
Wzór {{LinkWzór|q1d}} pomnóżmy obustronnie przez {{Formuła|<MATH>\left(\psi|\psi\right)\;</MATH>}}, który jest pewnego rodzaju unormowaniem średniej z operatora, i napiszmy go w formie iloczynu skalarnego:
{{CentrujWzór|<MATH>\left(\psi\left|\left(E-q\varphi\right)^2-c^2\left(\hat p-q\vec A\right)^2-m_0^2c^4\right|\psi\right)=0</MATH>|q1e}}
Równość {{LinkWzór|q1e}} napiszmy w formie z dwóch funkcji falowych ogólnie różnych, pierwsza jest dowolna, a druga już nie, tzn. według przejścia z formy {{LinkWzór|q1e}} do {{LinkWzór|q1f}}, według praw algebry na iloczynach skalarnych w matematyce o funkcjach falowych ogólnie zespolonych, czyli według twierdzenia {{LinkTwierdzenie|HH1|Postulat czwarty mechaniki kwantowej}}:
{{CentrujWzór|<MATH>\left(\phi\left|\left(E-q\varphi\right)^2-c^2\left(\hat p-q\vec A\right)^2-m_0^2c^4\right|\psi(\vec r,t,E)\right)=0</MATH>|q1f}}
Też nożna powiedzieć naz podstawie {{LinkTwierdzenie|HH1|Postulat_czwarty_mechaniki_kwantowej}} elementy macierzowe względem dwóch dowolnych funkcji:
{{CentrujWzór|<MATH>\left(\phi|\left(E-q\varphi\right)^2-c^2\left(\hat p-q\vec A\right)^2-m_0^2c^4|\psi\right)=0\;</MATH>|Lr31}}
Ale mamy funkcję {{Formuła|<MATH>\phi\;</MATH>}} dowolną i ściśle określoną bazę funkcji {{Formuła|<MATH>\psi(\vec r,t,E)</MATH>}}, zatem równanie niezależne od czasu piszemy w formie:
{{CentrujWzór|<MATH>\left(E-q\varphi\right)^2\psi(\vec r,t,E)=c^2\left(\hat p-q\vec A\right)^2\psi(\vec r,t,E)+m_0^2c^4\psi(\vec r,t,E)</MATH>|q1g}}
Przedstawmy równanie {{LinkWzór|q1g}}, gdy wartość własna {{Formuła|<MATH>E\;</MATH>}} jest zależna od czasu, czyli jako {{Formuła|<MATH>E(t)\;</MATH>}}:
{{CentrujWzór|<MATH>\left(E(t)-q\varphi(\vec r)\right)^2\psi(\vec r,t,E(t))=c^2\left(\hat p-q\vec A(\vec r)\right)^2\psi(\vec r,t,E(t))+m_0^2c^4\psi(\vec r,t,E(t))\Rightarrow</MATH><BR><MATH>\Rightarrow T^+\left(E(t)-q\varphi(\vec r)\right)^2\psi(\vec r,t,E(t))=c^2T^+\left(\hat p-q\vec A(\vec r)\right)^2TT^+\psi(\vec r,t,E(t))+m_0^2c^4T^+\psi(\vec r,t,E(t))\Rightarrow</MATH><BR><MATH>\Rightarrow \left(E(t)-q\varphi(\vec r)\right)^2\psi(\vec r,0,E(0))=c^2\left(\hat p-q\vec A(\vec r)\right)^2\psi(\vec r,0,E(0))+m_0^2c^4\psi(\vec r,0,E(0))\Rightarrow E(t)=E(0)=E</MATH>|q1g1}}
Czyli na podstawie {{LinkWzór|q1g1}} wartość własna {{Formuła|<MATH>E\;</MATH>}} jest niezależna od czasu, na podstawie tego, że pole elektromagnetyczne jest niezależne od czasu, w tym równaniu, mamy tutaj do czynienia z polem elektromagnetostatycznym, ono jest, zależne tylko od wektora wodzącego {{Formuła|<MATH>\vec r\;</MATH>}}, w swojej definicji.
Średnie jakiś wielkości (operatora) w równaniu na średnich są spełnione dla dowolnych funkcji na podstawie twierdzenia {{LinkTwierdzenie|NN0|Postulat czwarty mechaniki kwantowej}}, jeżeli wiadomo, że jego jedna średnia tych wielkości, dla jednej funkcji własnej tego operatora, jest spełniona w nim w mechanice kwantowej relatywistycznej Kleina-Gordona.
Weźmy równanie falowe takie samo jak w mechanice nierelatywistycznej kwantowej w dowodzie pełnym {{LinkWzór|Lr5|Postulat czwarty mechaniki kwantowej}}, a tam weźmy równanie na funkcję {{Formuła|<MATH>\psi(t,E(t=0))\;</MATH>}} takie samo jak jako w wspomnianej teorii, wtedy jego równanie różniczkowe jest w postaci {{LinkWzór|Lr6|Postulat czwarty mechaniki kwantowej}}, i przepiszmy go w innej formie wynikającej z niej:
{{CentrujWzór|<MATH>\left(E-q\varphi\right)^2\psi(t,E(t=0))=\left(i\hbar{{\partial}\over{\partial t}}-q\varphi\right)^2\psi(t,E(t=0))\;</MATH>|q1h}}
* Równość {{LinkWzór|q1h}} podobnie wyprowadzamy jak równanie {{LinkWzór|W4}} pamiętając, że w {{Formuła|<MATH>(E-q\varphi)\;</MATH>}} zachowuje się jak wartość własna przy operatorze {{Formuła|<MATH>\left(i\hbar {{\partial}\over{\partial t}}-q\varphi\right)\;</MATH>}}, bo funkcja {{Formuła|<MATH>\varphi\;</MATH>}} nie zależy od czasu, bo {{Formuła|<MATH>i\hbar{{\partial}\over{\partial t}}\varphi=0\;</MATH>}}, ponieważ mamy do czynienia z polem elektrostatycznym, czyli z polem elektrycznym stałym (dział elektrostatyka).
Równanie {{LinkWzór|q1g}} dla {{Formuła|<MATH>t=0\;</MATH>}} pomóżmy przez funkcję zależną od energii i czasu, tzn.: {{Formuła|<MATH>\psi(t,E(t=0))\;</MATH>}}, a {{LinkWzór|q1h}} przez funkcję falową równania niezależnego od czasu, tzn.: {{Formuła|<MATH>\psi(\vec r,t=0,E(t=0))\;</MATH>}}, wtedy możemy napisać:
{{CentrujWzór|<MATH>\left(i\hbar{{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t,E(t=0))=c^2\left(\hat p-q\vec A\right)^2\psi(\vec r,t,E(t=0))+m_0^2c^4\psi(\vec r,t,E(t=0))</MATH>|q1i}}
Formułę {{LinkWzór|q1i}} zsumujmy ze współczynnikami stałymi funkcji falowej do funkcji niezależnej od energii, otrzymujemy równanie różniczkowe zależne tylko od położenia i czasu:
{{CentrujWzór|<MATH>\left(i\hbar{{\partial}\over{\partial t}}-q\varphi\right)^2\psi(\vec r,t)=c^2\left(\hat p-q\vec A\right)^2\psi(\vec r,t)+m_0^2c^4\psi(\vec r,t)</MATH>|q1j}}
Zatem równość {{LinkWzór|q1g}} jest równaniem niezależnym od czasu zależącym od energii układu, a {{LinkWzór|q1j}} zależnym od czasu, niezależną od niej.
== Równanie Schrödingera jako szczególny przypadek teorii kwantów Kliena-Gordona ==
Równanie niezależne od czasu jest w postaci {{LinkWzór|24.12}}. Energia całkowita cząstki możemy wyrazić w zależności od sumy jej energii mechanicznej znanej z mechaniki klasycznej będących sumę energii kinetycznej i potencjalnej, też składa się z energii spoczynkowej (ta energia posiadana jest przez cząstkę, gdy ona spoczywa) znanej ze szczególnej teorii względności, która jest przestawiona jako:
{{CentrujWzór|<MATH>E=m_0c^2+E^'\;</MATH>|24.13}}
Równanie {{LinkWzór|24.13}}, która jest równaniem dokładnym podstawmy do równania Kliena-Gordona nie zależnego od czasu {{LinkWzór|24.12}}, dostajemy równość:
{{CentrujWzór|<MATH>(m_0c^2+E^'-q\varphi)^2\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi+m_0^2c^4\psi\;</MATH>|24.14}}
Dokonujemy działań z lewej stronie równości różniczkowej {{LinkWzór|24.14}}, która występuje przed funkcją falową, dostajemy:
{{CentrujWzór|<MATH>(m^2_0c^4+{E^'}^2+q^2\varphi^2+2m_0c^2E^'-2m_0c^2q\varphi-2E^'q\varphi)\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi+m_0^2c^4\psi\;</MATH>|24.15}}
Dokonując redukcji pewnych wyrazów, które są takie same jak po lewej i prawej stronie naszego równania:
{{CentrujWzór|<MATH>({E^'}^2+q\varphi+2m_0c^2E^'-2m_0c^2q\varphi)\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi\;</MATH>|24.16}}
Ponieważ energia mechaniczna cząstki i jego energia potencjalna są o wiele mniejsza od jego energii spoczynkowej tej samej korpuskuły, więc możemy to nasze równanie zapisać w przybliżeniu:
{{CentrujWzór|<MATH>2m_0c^2(E^'-q\varphi)\psi=(-i\hbar c\nabla-qc\vec{A})^2\psi\;</MATH>|24.17}}
Dzielimy obie strony równania {{LinkWzór|24.17}} przez podwojoną energię spoczynkową naszej badanej cząstki {{Formuła|<MATH>2m_0c^ 2\;</MATH>}}, dostajemy:
{{CentrujWzór|<MATH>(E^'-q\varphi)\psi={{(-i\hbar \nabla-q\vec{A})^2\psi}\over{2m_0}}\;</MATH>|24.18}}
Przenosimy wyraz związany z energią potencjalną cząstki, która jest iloczynem potencjału skalarnego cząstki i wartości ładunku cząstki na jej prawą stronę równania {{LinkWzór|24.18}}:
{{CentrujWzór|<MATH>E^'\psi=\left({{(-i\hbar \nabla-q\vec{A})^2}\over{2m_0}}+q\varphi\right)\psi\;</MATH>|24.19}}
Równanie {{LinkWzór|24.19}} jest równaniem niezależnym od czasu Schrödingera {{LinkWzór|7.123|Postulat_drugi_mechaniki_kwantowej}}. Zatem udowodniliśmy, że równanie Schrödingera jest szczególnym przypadkiem równania z mechaniki kwantowej relatywistycznej Kliena-Gordona dla energii cząstki mechanicznej o wiele mniejszej od jej energii spoczynkowej, którą można obliczyć z równań z szczególnej teorii względności.
== Ruch swobodny elektronu według teorii Kliena-Gordona ==
Mamy sobie równanie Kliena-Gordona zależne od czasu w postaci {{LinkWzór|24.8}}, a jego funkcje własne opisujących cząstkę swobodną nieoddziaływającej z żadnym polem skalarnym i wektorowym pola elektromagnetycznego zapisujemy w postaci:
{{CentrujWzór|<MATH>\psi=Ae^{{{i}\over{\hbar}}\left(\vec{p}\vec{r}-Et\right)}\;</MATH>|24.20}}
Widzimy, że jest to funkcja falowa związana z wektorem pędu cząstki i jej energii relatywistycznej, który jest opisana dla wszystkich punktów czasowych i położeniowych cząstki o wszystkich wektorach wodzących jaką dana cząstka może posiąść.
Podstawmy rozwiązanie w postaci funkcji falowej {{LinkWzór|24.20}} do równania Kliena-Gordona zależnego od czasu {{LinkWzór|24.8}}, dostajemy wtedy równanie algebraiczne:
{{CentrujWzór|<MATH>A\left(-{{\vec{p}^2}\over{\hbar^2}}+{{E^2}\over{c^2\hbar^2}}\right)e^{{{i}\over{\hbar}}\left(\vec{p}\vec{r}-Et\right)}={{m_0^2c^2}\over{\hbar^2}}Ae^{{{i}\over{\hbar}}\left(\vec{p}\vec{r}-Et\right)}\;</MATH>|24.21}}
Podzielmy równość {{LinkWzór|24.21}} przez zawsze niezerową wielkość {{Formuła|<MATH>{{A}\over{\hbar^2}}e^{{{i}\over{\hbar}}\left(\vec{p}\vec{r}-Et\right)}\;</MATH>}}, bo funkcja eksponecjalna jest zawsze niezerowa przy niezerowym parametrze A, dostajemy tożsamość:
{{CentrujWzór|<MATH>-\vec{p}^2+{{E^2}\over{c^2}}=m_0^2c^2\;</MATH>|24.22}}
Pomnóżmy obie strony równania {{LinkWzór|24.22}} przez kwadrat prędkości światła w próżni: {{Formuła|<MATH>c^2\;</MATH>}}, i przemieszczając odpowiednie wyrazy w nim, tak by po prawej stronie był tylko kwadrat całkowitej relatywistycznej energii cząstki, wtedy mamy:
{{CentrujWzór|<MATH>\vec{p}^2c^2+m_0^2c^4=E^2\;</MATH>|24.23}}
W ruchu swobodnym elektronu według teorii Kleina-Gordona energia cząstki E jest powiązana z jej wartością pędu według {{LinkWzór|24.23}} i z masą spoczynkową taką samą zależnością jak w szczególnej teorii względności.
== Atom wodoru według teorii Kleina-Gordona ==
W teorii Kleina-Gordona przy opisie atomu wodoru przyjmujemy potencjał w polu jądra atomowego wodoru, którego ładunek wynosi e, który charakteryzuje prawo Coulomba, który jest potencjałem skalarnym elektrycznym zależnych od promienia kulistego r w odległości od położenia jądra atomu, który zapisujemy w postaci:
{{CentrujWzór|<MATH>\varphi={{e}\over{4\pi\epsilon_0 r}}\;</MATH>|24.24}}
A ponieważ elektron "krążący" wokół jadra ma ładunek ujemny, równy ładunkowi elementarnemu ze znakiem minus, czyli:{{Formuła|<MATH>q=-e\;</MATH>}}, zatem samo równanie zależne od czasu {{LinkWzór|24.11}} przyjmuje postać przy zerowym potencjale wektorowym i potencjale skalarnym różnych od zera wyraźnie według wzoru {{LinkWzór|24.24}}:
{{CentrujWzór|<MATH>\left(i\hbar{{\partial}\over{\partial t}}+{{e^2}\over{4\pi\epsilon_0 r}}\right)^2\psi\left(r,t\right)=\left(-i\hbar c\nabla\right)^2\psi\left(r,t\right)+m_0^2c^4\psi\left(r,t\right)\;</MATH>|24.25}}
W pierwszym wyrazie z prawej strony wykonujemy w nim napisane potęgowanie iloczynu operatora pierwszej pochodnej względem współrzędnych przestrzennych i wartości urojonej, stąd w ostatecznych perypetiach dochodzimy:
{{CentrujWzór|<MATH>\left(i\hbar{{\partial}\over{\partial t}}+{{e^2}\over{4\pi\epsilon_0 r}}\right)^2\psi\left(r,t\right)=-\hbar^2c^2\nabla^2\psi\left(r,t\right)+m_0^2c^4\psi\left(r,t\right)\;</MATH>|24.26}}
Obierzmy rozwiązanie równania różniczkowego {{LinkWzór|24.26}} jako funkcję falową o amplitudzie zależnym od wektora położenia jakie ten nasz elektron może przyjmować:
{{CentrujWzór|<MATH>\psi\left(r,t\right)=\varphi\left(r\theta\phi\right) e^{-{{iE}\over{\hbar}}t}\;</MATH>|24.27}}
Widzimy, że te nasze rozwiązanie jest zależne od całkowitej relatywistycznej energii cząstki, którego wartość liczymy w czasie "t", po podstawieniu prawdopodobnego rozwiązania {{LinkWzór|24.27}} do równania {{LinkWzór|24.26}}, otrzymujemy równość różniczkową:
{{CentrujWzór|<MATH>\left(E+{{e^2}\over{4\pi\epsilon_0 r}}\right)^2\varphi\left(r\right)e^{-{{iE}\over{\hbar}}t}=-\hbar^2c^2\nabla^2\varphi\left(r\right)e^{-{{iE}\over{\hbar}}t}+m_0^2c^4\varphi\left(r\right) e^{-{{iE}\over{\hbar}}t}\;</MATH>|24.28}}
Dzieląc obie strony przez niezerową zawsze funkcję eksponencjalną, która wynika z jej własności, czyli przez {{Formuła|<MATH>e^{-{{iE}\over{\hbar}}t}\;</MATH>}} dla równania różniczkowego {{LinkWzór|24.28}}:
{{CentrujWzór|<MATH>\left(E^2+{{e^4}\over{16\pi^2r^2}}+2E{{e^2}\over{4\pi\epsilon_0r}}\right)\varphi=-\hbar^2c^2\Delta\varphi+m_0^2c^4\varphi\left(r\right)\;</MATH>|24.29}}
Przenosimy wszystkie wyrazy z jej prawej strony na jej lewą w równaniu {{LinkWzór|24.29}} i dzielimy obustronnie owe równanie przez stałą zależną od stałej kreślonej Plancka i prędkości światła {{Formuła|<MATH>\hbar^2c^2\;</MATH>}}, dostajemy równanie różniczkowe drugiego stopnia względem współrzędnej przestrzennej:
{{CentrujWzór|<MATH>\Delta\varphi\left(r\right)+ \left\{{{E^2-m_0^2c^4}\over{\hbar^2c^2}}+{{2Ee^2}\over{\hbar^2c^2 4\pi\epsilon_0}}{{1}\over{r}}+{{e^4}\over{\hbar^2c^216\pi^2\epsilon_0^2}}{{1}\over{r^2}}\right\}\varphi=0\;</MATH>|24.30}}
Napiszmy jako rozwiązanie równania {{LinkWzór|24.30}}, który posiada amplitudę rozwiązania zależnego tylko od położenia radialnego i współrzędnych przestrzennych elektronu podanej w punkcie we wzorze {{LinkWzór|24.27}}, który jest w iloczynem funkcji kulistej {{Formuła|<Math>Y\left(\theta\phi\right)\;</Math>}} przez iloraz pewnej funkcji zależnej od położenia radialnego przez to właśnie położenie radialne, innymi słowy jest to funkcja zależne od zmiennych kątowych i położenia radialnego w układzie kulistym jakie może przyjmować elektron:
{{CentrujWzór|<MATH>\varphi\left(r\right)={{u_l\left(r\right)}\over{r}}Y\left(\theta\phi\right)\;</MATH>|24.31|Obramuj}}
Wykorzystujemy definicję kwadratu operatora nabla {{Formuła|<MATH>\nabla^2\;</MATH>}}, czyli operatora delty {{Formuła|<math>\Delta\;</Math>}}, we współrzędnych kulistych jako funkcję położeń radialnych i kątowych w postaci {{LinkWzór|5.41|Postulat_pierwszy_mechaniki_kwantowej}}, równanie {{LinkWzór|24.30}} po podstawieniu naszego rozwiązania {{LinkWzór|24.31}}, w którym chcemy znaleźć funkcje {{Formuła|<math>u_l(r)\;</MATH>}} zależne od liczby falowej l i położenia radialnego:
{{CentrujWzór|<MATH>{{1}\over{r}}{{\partial^2}\over{\partial r^2}}u_l\left(r\right)Y\left(\theta\psi\right)+{{u_l\left(r\right)}\over{r^3}}\Lambda\left(\theta\psi\right)Y\left(\theta\psi\right)+
\left\{{{E^2-m_0^2c^4}\over{\hbar^2c^2}}+{{2Ee^2}\over{\hbar^2c^2 4\pi\epsilon_0}}{{1}\over{r}}+{{e^4}\over{\hbar^2c^216\pi^2\epsilon_0^2}}{{1}\over{r^2}}\right\}\cdot\;</MATH><BR><MATH>\cdot{{u_l\left(r\right)}\over{r}}Y\left(\theta\psi\right)=0\;</MATH>|24.32}}
Mnożymy obie strony strony równania różniczkowego {{LinkWzór|24.32}} przez współrzędną radialną {{Formuła|<MATH>r\;</MATH>}}, dostajemy równość:
{{CentrujWzór|<MATH>{{\partial^2}\over{\partial r^2}}u_l\left(r\right)Y\left(\theta\psi\right)+{{u_l\left(r\right)}\over{r^2}}\Lambda\left(\theta\psi\right)Y\left(\theta\psi\right)+
\left\{{{E^2-m_0^2c^4}\over{\hbar^2c^2}}+{{2Ee^2}\over{\hbar^2c^2 4\pi\epsilon_0}}{{1}\over{r}}+{{e^4}\over{\hbar^2c^2 16\pi^2\epsilon_0^2}}{{1}\over{r^2}}\right\}\cdot\;\;</MATH><BR><MATH>\cdot u_l\left(r\right)Y\left(\theta\psi\right)=0\;</MATH>|24.33}}
Dzielimy obie strony równania {{LinkWzór|24.33}} przez funkcję kulistą, którą jak wiemy jest zależna tylko od współrzędnych kątowych azymutalnej i zenitalnej, czyli {{Formuła|<MATH>Y\left(\theta\psi\right)\;</MATH>}}, zatem otrzymujemy wyrażenie:
{{CentrujWzór|<MATH>{{\partial^2}\over{\partial r^2}}u_l\left(r\right)+{{u_l\left(r\right)}\over{r^2}}{{\Lambda\left(\theta\psi\right)Y\left(\theta\psi\right)}\over{Y\left(\theta\psi\right)}}+
\left\{{{E^2-m_0^2c^4}\over{\hbar^2c^2}}+{{2Ee^2}\over{\hbar^2c^2 4\pi\epsilon_0}}{{1}\over{r}}+{{e^4}\over{\hbar^2c^2 16\pi^2\epsilon_0^2}}{{1}\over{r^2}}\right\}u_l\left(r\right)=0\;</MATH>|24.34}}
Napiszmy równość własną kwadratu momentu pędu przez jego wartości własne zależne od kwantowej liczby orbitalnej l, czyli jako równania własnego: {{Formuła|<MATH>\hat{l}^2\psi=\hbar^2 l(l+1)\psi\;</MATH>}}, i wykorzystując definicję kwadratu operatora momentu pędu w postaci {{LinkWzór|5.43|Postulat_pierwszy_mechaniki_kwantowej}} i wykorzystujemy, że funkcje własne rozważanego operatora są to funkcje kuliste {{Formuła|<MATH>Y_{lm}\;</MATH>}}, a wartości własne kwadratu operatora momentu pędu to są wartości {{LinkWzór|7.86|Postulat_drugi_mechaniki_kwantowej}}, wtedy równanie {{LinkWzór|24.34}} przechodzi w wyrażenie zależne tylko od położenia radialnego r we współrzędnych kulistych w równanie:
{{CentrujWzór|<MATH>{{\partial^2u}\over{\partial r^2}}+\left\{{{E^2-m_0^2c^4}\over{\hbar^2c^2}}+
{{2Ee^2}\over{\hbar^2c^24\pi\epsilon_0}}{{1}\over{r}}-{{l\left(l+1\right)-\left({{e^2}\over{\hbar c 4\pi\epsilon_0}}\right)^2}\over{r^2}}\right\}u=0\;</MATH>|24.35}}
Obierzmy jako stałe występujące w dyspucie {{LinkWzór|24.35}}, które są zależne od energii całkowiej cząstki relatywistycznej, ale nie wszystkie, są one zdefiniowane:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\gamma={{\sqrt{m_0^2c^4-E^2}}\over{\hbar c }}\;</MATH>|24.36}}
| 2 = {{CentrujWzór|<MATH>\beta={{2Ee^2}\over{\hbar^2c^24\pi\epsilon_0}}\;</MATH>|24.37}}
| 3 = {{CentrujWzór|<MATH>\alpha={{e^2}\over{\hbar c 4\pi\epsilon_0}}\;</MATH>|24.38}}
}}
Po dokonanych podstawieniach zdefiniowanych stałych {{LinkWzór|24.36}} (stała {{Formuła|<MATH>\gamma\;</math>}} zależna od masy spoczynkowej cząstki i jej energii relatywistycznej E), {{LinkWzór|24.37}} (stała {{Formuła|<MATH>\beta\;</Math>}} zależna tylko od energii relatywistycznej cząstki) i {{LinkWzór|24.38}} (stała {{Formuła|<math>\alpha\;</Math>}} zwana inaczej stałą struktury subtelnej), ponadto wszystkie te stałe zależą od stałych fizycznych, omawiane stałe w powyższych trzech ostanich równaniach podstawiamy do równania różniczkowego {{LinkWzór|24.35}}, mamy ostatecznie inny równoważny wzór:
{{CentrujWzór|<MATH>{{d^2u}\over{dr^2}}+\left[-\gamma^2+{{\beta}\over{r}}-{{l\left(l+1\right)-\alpha^2}\over{r^2}}\right]u=0\;</MATH>|24.39}}
Równaniem asyptotycznym do wyrażenia {{LinkWzór|24.39}}, które jest słuszne dla r nieskończonego, jest równaniem w postaci równania różniczkowego:
{{CentrujWzór|<MATH>{{d^2u\left(r\right)}\over{dr^2}}=\gamma^2 u\left(r\right)=0\;</MATH>|24.40}}
* gdzie jego rozwiązaniem jest wyrażenie funkcja eksponencjalna z argumentem iloczynu stałej {{Formuła|<math>\gamma\;</MATH>}} przez położenie radialne r i ten obiekt jest ze znakiem minus:
{{CentrujWzór|<MATH>u\left(r\right)=e^{\pm\gamma r}\;</MATH>|24.41}}
Wybieramy znak minus, bo w nieskończoności nasze wyrażenie znika, ze względu by funkcja {{LinkWzór|24.41}} była całkowalna z kwadratem dla całej jego zmienności względem r, bo dla rozwiązania z plusem w nieskończonościach dąży do plus nieskończoności, czyli to rozwiązanie odrzucamy i pozostaje nam rozwiązanie eksponencjalne z minusem.
{{CentrujWzór|<MATH>u\left(r\right)=e^{-\gamma r}\;\;</MATH>|24.42}}
Obierzmy rozwiązanie równania {{LinkWzór|24.39}} według rozwiązania asymptotycznego {{LinkWzór|24.42}} przy amplitudzie zależnym tylko od współrzędnej r:
{{CentrujWzór|<MATH>u\left(r\right)=v\left(r\right)e^{-\gamma r}\;</MATH>|24.43}}
I policzmy pochodne wyrażenia {{LinkWzór|24.43}}, tzn. jego pierwszą i drugą podchodną względem współrzędnej radialnej:
* pierwsza pochodna {{LinkWzór|24.43}} względem współrzędnej radialnej r.
{{CentrujWzór|<MATH>{{du}\over{dr}}={{dv\left(r\right)}\over{dr}}e^{-\gamma r}-v\left(r\right)\gamma e^{-\gamma r}=e^{-\gamma r}\left({{dv\left(r\right)}\over{dr}}-v\left(r\right)\gamma\right)\;</MATH>|24.44}}
* druga pochodna {{LinkWzór|24.43}}, a więc jego pierwsza pochodna wyrażenia pierwszej pochodnej {{LinkWzór|24.44}} względem współrzędnej radialnej r.
{{CentrujWzór|<MATH>{{d^2u}\over{dr^2}}=e^{-\gamma r}\left({{d^2v\left(r\right)}\over{dr^2}}-2{{dv\left(r\right)}\over{dr}}\gamma+\gamma^2\right)\;</MATH>|24.45}}
Podstawiamy {{LinkWzór|24.44}} (pierwszą pochodną {{LinkWzór|24.23}}) i {{LinkWzór|24.45}} (druga pochodna {{LinkWzór|24.23}}) do równania różniczkowego {{LinkWzór|24.39}}, otrzymujemy równanie różniczkowe opisującą funkcję v(r) względem współrzędnej r:
{{CentrujWzór|<MATH>e^{-\gamma r}\left({{d^2v\left(r\right)}\over{dr^2}}-2{{dv\left(r\right)}\over{dr}}\gamma+v\left(r\right)\gamma^2\right)+\left\{-\gamma^2+{{\beta}\over{r}}-{{l\left(l+1\right)-\alpha^2}\over{r^2}} \right\}v\left(r\right)e^{-\gamma r}=0\;</MATH>|24.46}}
Równanie {{LinkWzór|24.46}} dzielimy obustronnie przez zawsze niezerową i dodatnią funkcję eksponencjalną {{Formuła|<MATH>e^{-\gamma r}\;</MATH>}} i redukujemy po pewnych wyrazach:
{{CentrujWzór|<MATH>{{d^2v\left(r\right)}\over{dr^2}}-2{{dv\left(r\right)}\over{dr}}\gamma+\left\{{{\beta}\over{r}}-{{l\left(l+1\right)-\alpha^2}\over{r^2}}\right\}v\left(r\right)=0\;</MATH>|24.47}}
Obierzmy szereg, który jest funkcją tylko względem współrzędnej radialnej, w której występuje nieskończenie wiele współczynników {{Formuła|<MATH>a_i\;</Math>}}, którego jest rozwiązaniem równości {{LinkWzór|24.47}} w postaci nieskończonego szeregu potęgowego:
{{CentrujWzór|<MATH>v\left(r\right)=\sum^{\infty}_{i=1}a_i r^{\omega+i}\;</MATH>|24.48}}
Policzmy pierwszą pochodną względem współrzędnej radialnej r szeregu potęgowego {{LinkWzór|24.48}}:
{{CentrujWzór|<MATH>{{dv\left(r\right)}\over{dr}}=\sum^{\infty}_{i=1}a_i\left(\omega+i\right)r^{\omega+i-1}\;</MATH>|24.49}}
Policzmy teraz drugą pochodną v(r) względem r szeregu potęgowego {{LinkWzór|24.48}}, a więc pierwszą pochodną szeregu {{LinkWzór|24.49}}, która jest jakoby piszemy ją względem r w wspomnianym szeregu:
{{CentrujWzór|<MATH>{{d^2u\left(r\right)}\over{dr^2}}=\sum^{\infty}_{i=1}a_i\left(\omega+i\right)\left(\omega+i-1\right)r^{\omega+i-2}\;</MATH>|24.50}}
Podstawiamy funkcję potęgową {{LinkWzór|24.48}} oraz pierwszą {{LinkWzór|24.49}} i drugą pochodną {{LinkWzór|24.50}}, zależne od r, do tożsamości różniczkowej {{LinkWzór|24.47}}:
{{CentrujWzór|<MATH>\sum^{\infty}_{i=1}a_i\left(\omega+i\right)\left(\omega+i-1\right)r^{\omega+i-2}-2\gamma\sum^{\infty}_{i=1}a_i\left(\omega+i\right)r^{\omega+i-1}+
\left\{{{\beta}\over{r}}-{{l\left(l+1\right)-\alpha^2}\over{r^2}}\right\}\sum^{\infty}_{i=1}a_i r^{\omega+i}=0\;</MATH>|24.51}}
Po lewej stronie równości {{LinkWzór|24.51}} a właściwie jego ostatni wyraz, a w nim dokonajmy tam odpowiednich wymnożeń, dostajemy:
{{CentrujWzór|<MATH>\sum^{\infty}_{i=1}a_i\left(\omega+i\right)\left(\omega+i-1\right)r^{\omega+i-2}-2\gamma\sum^{\infty}_{i=1}a_i\left(\omega+i\right)r^{\omega+i-1}+\beta\sum^{\infty}_{i=1}a_ir^{\omega+i-1}-\left(l\left(l+1\right)-\alpha^2\right)\sum^{\infty}_{i=1}a_ir^{\omega+i-2}=0\;</MATH>|24.52}}
Dla drugiego i trzeciego wyrazu równania {{LinkWzór|24.52}} podstawmy tam wedle schematu {{Formuła|<MATH>i\rightarrow i-1\;\;</MATH>}}, w taki sposób, by otrzymać w tychże wspomnianych wyrazach potęgi położenia radialnego r o wykładnikach {{Formuła|<Math>\omega+i-2\;</MATH>}}, zatem:
{{CentrujWzór|<MATH>\sum^{\infty}_{i=1}a_i\left(\omega+i\right)\left(\omega+i-1\right)r^{\omega+i-2}-2\gamma\sum^{\infty}_{i=2}a_{i-1}\left(\omega+i-1\right)r^{\omega+i-2}+\beta\sum^{\infty}_{i=2}a_{i-1}r^{\omega+i-2}-\left(l\left(l+1\right)-\alpha^2\right)\sum^{\infty}_{i=1}a_ir^{\omega+i-2}=0\;</MATH>|24.53}}
W {{LinkWzór|24.53}} dokonajmy tam odpowiednich grupowań wyrazów względem tych samych współczynników o tych samych indeksach dla tych samych potęg przy r-ach:
{{CentrujWzór|<MATH>-\sum^{\infty}_{i=2}a_{i-1}\left[2\gamma\left(\omega+i-1\right)-\beta \right] r^{\omega+i-2}+\sum_{i=2}^{\infty}a_ir^{\omega+i-2}\left[\left(\omega+i\right)\left(\omega+i-1\right)-\left(l\left(l+1\right)-\alpha^2\right)\right]+\;</MATH><br>
<MATH>+a_1\left[\left(\omega+1\right)\left(\omega\right)-\left(l\left(l+1\right)-\alpha^2\right)\right]r^{\omega+i-2}=0\;</MATH>|24.54}}
Ponieważ {{Formuła|<MATH>a_1\;</MATH>}} w {{LinkWzór|24.54}} powinno być dowolne, zatem współczynnik stojący przy tym współczynniku powinien być równy zero, a więc:
{{CentrujWzór|<MATH>\left(\omega+1\right)\left(\omega\right)-\left(l\left(l+1\right)-\alpha^2\right)=0\Rightarrow\omega^2+\omega-l\left(l+1\right)+\alpha^2=0\;</MATH>|24.55}}
Z którego wyróżnik trójmianu równania kwadratowego ostatniego wynikowego {{LinkWzór|24.55}} jest równy:
{{CentrujWzór|<MATH>\Delta=1^2+4\left(l\left(l+1\right)-\alpha^2\right)=1+4l^2+4l-4\alpha^2=(1+2l)^2-4\alpha^2\;</MATH>|24.56}}
Widzimy, że jest ona zależna od kwadratu stałej struktury subtelnej {{Formuła|<MATH>\alpha\;</MATH>}} ({{LinkWzór|24.38}}) i od orbitalnej liczby kwantowej l, która jest częścią wartości własnej operatora kwadratu momentu pędu.
Stąd stała {{Formuła|<MATH>\omega\;</Math>}} jest rozwiązaniem {{LinkWzór|24.55}}:
{{CentrujWzór|<MATH>\omega={{-1\pm\sqrt{\left(1+2l\right)^2-4\alpha^2}}\over{2}}\;</MATH>|24.57}}
wybieramy wyrażenie {{Formuła|<MATH>\omega\;</MATH>}} ze znakiem plus a nie z minusem, ponieważ by szereg {{LinkWzór|24.54}} nie miał minusowych potęg, bo gdy by miał, to osobliwość występowała by dla r=0, czyli musi zachodzić {{Formuła|<MATH>\omega\geq -1\;</MATH>}}. Zatem sprawdźmy nasze przypuszczenia:
{{CentrujWzór|<MATH>{{-1\pm\sqrt{\left(1+2l\right)^2-4\alpha^2}}\over{2}}\geq-1\Rightarrow
\pm\sqrt{\left(1+2l\right)^2-4\alpha^2}\geq -1\Rightarrow \mp \sqrt{\left(1+2l\right)^2-4\alpha^2}\leq 1\;</MATH>}}
Widzimy, że wyrażenie w {{LinkWzór|24.57}} wyrażenie z plusem spełnia nasz warunek dla dowolnych l, a z minusem:
{{CentrujWzór|<MATH>\left(1+2l\right)^2-4\alpha^2\leq 1\Rightarrow 1+2l\leq \sqrt{1+4\alpha^2}\;</MATH>}}
tylko dla l=0, zatem nasz wybór stał się trafny. Zatem wybieramy w {{LinkWzór|24.57}} rozwiązanie równania kwadratowego {{LinkWzór|24.55}} z plusem, czyli rozwiązanie w postaci:
{{CentrujWzór|<MATH>\omega={{-1+\sqrt{\left(1+2l\right)^2-4\alpha^2}}\over{2}}\;</MATH>|24.58}}
Podobnie jak mamy w mechanice nierelatywistycznej kwantowej przy opisie atomu wodoru, trzeba urwać tutaj na pewnym wyrazie, ponieważ rozwiązanie bez urwania dąży asyptotycznie do nieskończoności, a bez urwaniu dla dużych równanie {{LinkWzór|24.54}} ma się jako:
{{CentrujWzór|<MATH>a_{i}=a_{i-1}{{2\gamma\left(\omega+i-1\right)-\beta}\over{\left(\omega+i\right)\left(\omega+i-1\right)-\left(l\left(l+1\right)-\alpha^2\right)}}\rightarrow a_i=a_{i-1}{{2\gamma}\over{i}}\Rightarrow a_n\sim {{\left(2\gamma\right)^n}\over{n!}}\;</MATH>|24.59}}
Zatem współczynniki {{Formuła|<MATH>a_n\;</MATH>}} są to współczynniki rozwinięcia funkcji {{Formuła|<MATH>e^{2\gamma r}\;</MATH>}} co jest oczywiste, że dla r nieskończonych, ta funkcja dąży do nieskończoności, zatem należy urwać na pewnym {{Formuła|<MATH>i=\sigma+1\;</MaTh>}}, by nie było nieskończonych funkcji własnych czyli niecałkowalnych z kwadratem, zatem na podstawie {{LinkWzór|24.59}}, jeśli {{Formuła|<MATH>a_{\sigma}\neq 0\;</MATH>}} i {{Formuła|<MATH>a_{\sigma+1}=0\;</MATH>}} oraz następne współczynniki by były równe zero, licznik czynnika stojącego przy {{Formuła|<MATH>a_{\sigma}\;</MATH>}} musi być równy zero, to na podstawie tego zachodzi:
{{CentrujWzór|<MATH>\beta-2\gamma\left(\omega+i-1\right)=0\Rightarrow\beta=2\gamma\left(\omega+i-1\right)\;</MATH>|24.60}}
Teraz podstawiamy, za {{Formuła|<MATH>\omega\;</MATH>}} obliczonego wedle wzoru {{LinkWzór|24.58}} do tożsamości przedstawionej w {{LinkWzór|24.60}}:
{{CentrujWzór|<MATH>\beta=2\gamma\left(-{{1}\over{2}}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}+i-1\right)\;</MATH>|24.61}}
Ponieważ przyjeliśmy, że szereg {{LinkWzór|24.48}} urywa się na wyrazie {{Formuła|<MATH>\sigma>0\;</MATH>}}, bo jest spełniony warunek {{LinkWzór|24.60}}, czyli powinno zachodzić:
{{CentrujWzór|<MATH>v\left(r\right)=\sum^{\sigma}_{i=1}a_i e^{\omega+i}\;</MATH>|24.62}}
Zatem szereg się zeruje dla nie mniejszych niż {{Formuła|<MATH>i=\sigma+1\;</MATH>}}, dla którego wyrazy szeregu potegowego {{LinkWzór|24.48}} i na tej podstawie spełniony jest wzór {{LinkWzór|24.62}}, wedle tych dysput dostajemy wzór {{LinkWzór|24.61}} w bardziej zwartej postaci zapisanej wedle:
{{CentrujWzór|<MATH>\beta=2\gamma\left(\sigma-{{1}\over{2}}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)\;</MATH>|24.63}}
Wzory opisujące pewne stałe, czyli:{{LinkWzór|24.36}} (stała {{Formuła|<MAth>\gamma\;</MATH>}}), {{LinkWzór|24.37}} (stała {{Formuła|<mATH>\beta\;</MATH>}}) i {{LinkWzór|24.38}} (stała {{Formuła|<MAtH>\alpha\;</MATH>}}) podstawiamy do wyrażenia {{LinkWzór|24.63}} pod te omawiane stałe, wtedy dostajemy równoważne do poprzedniewgo równanie:
{{CentrujWzór|<MATH>{{2Ee^2}\over{\hbar^2c^24\pi\epsilon_0}}=2{{\sqrt{m_0^2c^4-E^2}}\over{\hbar c }}\left(\sigma-{{1}\over{2}}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)\;</MATH>|24.64}}
Podnieśmy obie strony tożsamości {{LinkWzór|24.64}} do kwadratu, by w nim zlikwidować wszystkie występujące pierwiastki i dlatego dokonujemy tejże operacji:
{{CentrujWzór|<math>{{E^2e^4}\over{\hbar^4c^4\pi^2\epsilon_0^2}}=
\left[{\left(m_0^2c^4-E^2\right)\over{h^2c^2}}\right]
\left({\sigma-{{1}\over{2}}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}}\right)^2\;</MATH>|24.65}}
Pomnóżmy obustronnie wyrażenie {{LinkWzór|24.65}} przez pewną stałą zależną od stałej kreślonej Plancka i prędkości światła {{Formuła|<MATH>\hbar^2 c^2\;</MATH>}}, ono przyjmuje kształt:
{{CentrujWzór|<math>{{E^2e^4}\over{\hbar^2c^216\pi^2\epsilon_0^2}}=\left[{\left(m_0^2c^4-E^2\right)}\right]\left(\sigma-{{1}\over{2}}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)^2\;</MATH>|24.66}}
Korzystajmy teraz z definicji {{Formuła|<MATH>\alpha\;</MATH>}} {{LinkWzór|24.38}} dla wyrażenia {{LinkWzór|24.66}}, owe równanie da się przedstawić wedle uproszczonego sposobu:
{{CentrujWzór|<MATH>E^2\alpha^2=\left[m_0^2c^4-E^2\right]\left(\sigma-{{1}\over{2}}+
\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)^2\;</MATH>|24.67}}
Idąc dalej, obierzmy parametr {{Formuła|<maTH>\zeta\;</MATH>}}, który podstawimy do wzoru {{LinkWzór|24.67}} ułatwiający nam pewne określone późniejsze przekształcenia, który ten parametr jest zdefiniowany:
{{CentrujWzór|<MATH>\zeta=\left(\sigma-{{1}\over{2}}+
\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)^2\;</MATH>|24.68}}
A zatem z {{LinkWzór|24.67}} według parametru zdefiniowanego w {{LinkWzór|24.68}}, otrzymujemy pewne wyrażenie z którego będziemy wyznaczać energię cząstki (elektronu):
{{CentrujWzór|<MATH>E^2\alpha^2=\left(m_0^2c^4-E^2\right)\zeta\Rightarrow E^2\left(\alpha^2+\zeta\right)=m_0^2c^4\zeta\;</MATH>|24.69}}
W ostatnim wynikowym równaniu {{LinkWzór|24.69}} wyznaczamy czemu jest równa energia cząstki relatywistycznej w zależności od masy spoczynkowej elektronu, kwadratu struktury subtelnej i parametru {{Formuła|<math>\zeta\;</Math>}}
{{CentrujWzór|<MATH>E={{m_0c^2\sqrt{\zeta}}\over{\sqrt{\alpha^2+\zeta}}}\Rightarrow E={{m_0c^2}\over{{\sqrt{{{\alpha^2}\over{\zeta}}+1}}}}\;</MATH>|24.70}}
Następnie wykorzystując definicję {{Formuła|<MATH>\zeta\;</MATH>}} napisaną wedle wzoru {{LinkWzór|24.68}} jako funkcję orbitalnej liczby kwantowej i parametru {{Formuła|<MATH>\sigma\;</MaTH>}}, biorąc to wszystko do równania {{LinkWzór|24.70}}, mamy:
{{CentrujWzór|<MATH>E={{m_0c^2}\over{\sqrt{1+{{\alpha^2}\over{\left(\sigma-{{1}\over{2}}+
\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\right)^2}}}}}\;</MATH>|24.71|Obramuj}}
Dokonajmy przybliżeń w tym celu obierzmy stałą {{Formuła|<math>n^'\;</Math>}}, która jest zależna od kwantowej liczby orbitalnej, stałej struktury subtelnej i elementu {{Formuła|<MaTh>\sigma\;</Math>}}, który piszemy:
{{CentrujWzór|<MATH>n'=\sigma-{{1}\over 2}+\sqrt{\left(l+{{1}\over{2}}\right)^2-\alpha^2}\;</MATH>|24.72}}
Wzór {{LinkWzór|24.71}} po podstawieniu do niego wyrażenia na zmienną {{Formuła|<math>n^'\;</MATH>}} napisaną wedle wzoru {{LinkWzór|24.72}} ma się:
{{CentrujWzór|<MATH>E={{m_0c^2}\over{\sqrt{1+{{\alpha^2}\over{n'^2}}}}}\;</MATH>|24.73}}
Rozłóżmy wyrażenie {{LinkWzór|24.73}} w szereg Taylora względem parametru {{Formuła|<MatH>\alpha^2\;</MATH>}}, czyli kwadratu stałej strukury subtelnej. Wyrażenie {{LinkWzór|24.73}} przyjmuje wartość dla {{Formuła|<MATH>\alpha=0\;</MATH>}}:
{{CentrujWzór|<MATH>E\left(\alpha=0\right)=m_0c^2\;</MATH>|24.74}}
Pierwsza pochodna wyrażenie {{LinkWzór|24.73}} zapisujemy wedle sposobu licząc ją względem kwadratu struktury subtelnej:
{{CentrujWzór|<MATH>{{dE}\over{d\alpha}}=-{{1}\over{2}}{{m_0c^2}\over{\left(1+{{\alpha^2}\over{n'^2}}\right)^{{3}\over{2}}}}{{\alpha^2}\over{n'^2}}=-{{1}\over{2}}m_0c^2\left(1+{{\alpha^2}\over{n'^2}}\right)^{-{{3}\over{2}}}{{1}\over{n'^2}}\;</MATH>|24.75}}
Wartość pierwszej pochodnej {{LinkWzór|24.75}} wyrażenia {{LinkWzór|24.73}}, względem kwadratu struktury subtelnej dla parametru α równej zero, piszemy:
{{CentrujWzór|<MATH>{{dE}\over{d \alpha}}\left(\alpha=0\right)=-{{1}\over{2}}m_0c^2{{1}\over{n'^2}}\;</MATH>|24.76}}
Druga pochodna wyrażenia {{LinkWzór|24.73}} względem kwadratu struktury subtelnej, a więc pierwsza pochodna {{LinkWzór|24.75}} ma kształt:
{{CentrujWzór|<MATH>{{d^2E}\over{d\alpha^2}}=\left(-{{1}\over{2}}\right)\left(-{{3}\over{2}}\right)m_0c^2{\left(1+{{\alpha^2}\over{n'^2}}\right)}^{-{5\over 2}}{{1}\over{n'^4}}\;</MATH>|24.77}}
Wyrażenie {{LinkWzór|24.77}} jako druga pochodna względem wspomnianego parametru dla {{Formuła|<MATH>\alpha=0\;</MATH>}} przyjmuje postać:
{{CentrujWzór|<MATH>{{d^2E}\over{d\left(\alpha^2\right)^2}}\left(\alpha=0\right)={{1 3}\over{2 2}}m_0c^2{{1}\over{n'^4}}\;</MATH>|24.78}}
A zatem rozwinięcie {{LinkWzór|24.73}}, według {{LinkWzór|24.74}} (wartość funkcji dla stałej struktury subtelnej równej zero), {{LinkWzór|24.76}} (pierwsza pochodna względem kwadratu struktury subtelnej dla niej równej zero), {{LinkWzór|24.78}} (druga pochodna względem kwadratu struktury subtelnej dla niej równej zero), te nasze rozwinięcie z dokładnością do wyrazów drugiego rzędu:
{{CentrujWzór|<MATH>E={m_0c^2}\left(1-{{1}\over{2}}{{\alpha^2}\over{n'^2}}+{{3}\over{8}}{{\alpha^4}\over{n'^4}}+...\right)\;</MATH>|24.79}}
Wiemy, jednak że na podstawie definicji zmiennej {{Formuła|<MATH>n^'\;</MaTH>}} zdefiniowanej wedle równości {{LinkWzór|24.72}} i przybliżając ją względem małego parametru kwadratu struktury subtelnej, wtedy ten parametr piszemy:
{{CentrujWzór|<MATH>n'=\sigma-{{1}\over{2}}+\left(l+{{1}\over{2}}\right)
\sqrt{1-{{\alpha^2}\over{{\left(l+{{1}\over{2}}\right)^2}}}}\sigma-{{1}\over{2}}+\left(l+{{1}\over{2}}\right)\left\{
1-{{1}\over{2}}{{\alpha^2}\over{\left(l+{{1}\over{2}}\right)^2}}-{{\alpha^4}\over{2\cdot4}}{{1}\over{\left(l+{{1}\over{2}}\right)^4}}+...\right\}\simeq\;</MATH><BR><MATH>\simeq\sigma-{{1}\over{2}}+l+{{1}\over{2}}-{{1}\over{2}}{{\alpha^2}\over{l+{{1}\over{2}}}}+
{{\alpha^4}\over{2\cdot4\left(l+{{1}\over{2}}\right)}}=\sigma+l-{{1}\over{2}}{{\alpha^2}\over{l+{{1}\over{2}}}}-
{{\alpha^4}\over{8\left(l+{{1}\over{2}}\right)^3}}\;</MATH>|24.80}}
Określmy {{Formuła|<MATH>n=\sigma+l\;</MATH>}}, zatem z definicji {{Formuła|<MATH>\sigma\;</MATH>}}, która jest większa niż jeden, zatem orbitalna liczba kwantowa przyjmuje takowe wartości skwantowane:
{{CentrujWzór|<MATH>l=0,1,2,...,n-1\;</MATH>|24.81}}
Ostatecznie wzór na zmienną {{Formuła|<MATH>n^'\;</math>}} napisany w sposób przybliżony względem małego parametru kwadratu struktury subtelnej, dla którego ta nasza zmienna jest zdefiniowana wedle wzoru {{LinkWzór|24.80}}, jest napisana:
{{CentrujWzór|<MATH>n'\simeq n\left(1-{{1}\over{2}}{{\alpha^2}\over{n\left(l+{{1}\over{2}}\right)}}-
{{\alpha^4}\over{8n\left(l+{{1}\over{2}}\right)^3}}\right)\;</MATH>|24.82}}
Określmy odwrotność parametru {{Formuła|<Math>n^'\;</Math>}} napisaną w sposób przybliżony {{LinkWzór|24.82}}, dokonując dalszych przybliżeń dla małości wyrazów występujących w nawiasie wspomnianego wyrażenia występująca po jedynce:
{{CentrujWzór|<MATH>{{1}\over{n'}}\simeq {{1}\over{n}}{{1}\over{1-{{\alpha^2}\over{2n\left(l+{{1}\over{2}}\right)}}-
{{\alpha^4}\over{8n\left(l+{{1}\over{2}}\right)^3}}}}\simeq{{1}\over{n}}\left[1+{{\alpha^2}\over{2n\left(l+{{1}\over{2}}\right)}}\right]=\;</MATH>|24.83}}
Dalej kwadrat odwrotności zmiennej {{Formuła|<math>n^'\;</Math>}} wyrażenia {{LinkWzór|24.82}}, pisać go z dokładnością do wyrazów kwadratowych wielkości α, bo w {{LinkWzór|24.79}} w drugim wyrazie w nawiasie występuje kwadrat tej wspomnianej wielkości:
{{CentrujWzór|<MATH>{{1}\over{n'^2}}\simeq {{1}\over{n^2}}\left(1+{{1}\over{2}}{{\alpha^2}\over{\left(l+{{1}\over{2}}\right)}}\right)^2\simeq{{1}\over{n^2}}\left(1+{{\alpha^2}\over{l+{{1}\over{2}}}}\right)\;</MATH>|24.84}}
Podstawiamy wzór {{LinkWzór|24.84}} (kwadrat odwrotności zmiennej {{Formuła|<math>n^'\;</MATH>}}) do {{LinkWzór|24.79}} będących rozwinięciem w szereg Taylora względem omawianego tam parametru do drugiego wyrazu w nawiasie, dostajemy:
{{CentrujWzór|<MATH>E\simeq{m_0c^2}\left(1-{{\alpha^2}\over{2n^2}}\left(1+{{\alpha^2}\over{n\left(l+{{1}\over{2}}\right)}}\right)+{{3}\over{8}}{{\alpha^2}\over{n^4}}\right)={m_0c^2}\left[1-{{\alpha^2}\over{2n^2}}-{{\alpha^4}\over{2n^3\left(l+{{1}\over{2}}\right)}}+{{3}\over{8}}{{\alpha^4}\over{n^4}}\right]=\;</MATH><BR><MATH>=m_0c^2\left[1-{{\alpha^2}\over{2n^2}}-{{\alpha^4}\over{2n^3}}\left({{{1}\over{l+{{1}\over{2}}}}}-{{3}\over{4n}}\right)\right]\;</MATH>|24.85}}
Wyrażenie na całkowitą energię elektronu w polu jadra atomowego wodoru, uwzględniając efekty relatywistyczne jest równy energii spoczynkowej elektronu, energii obliczonej wedle mechaniki kwantowej nierelatywistycznej i z poprawką zależną od orbitalnej liczby kwantowej, ale głównej w trzecim jego składniku, jest ona również zależna od czynnika struktury subtelnej {{Formuła|<MATH>\alpha\;</math>}}, która jest względnie mała i dlatego w teorii nierelatywistycznej ten trzeci składnik jest często pomijany, zatem ta nasza energia elektronu w polu jądra atomowego atomu wodoru jest równa:
{{CentrujWzór|<MATH>E=m_0c^2+E_0+E_0{{\alpha^2}\over{n}}\left({{1}\over{l+{{1}\over{2}}}}-{{3}\over{4n}}\right)\;</MATH>|24.86|Obramuj}}
* gdzie energia {{Formuła|<Math>E_0\;</Math>}}, którą jak udowodnimy jest energią obliczoną z nierelatywistycznej teorii kwantowej:
{{CentrujWzór|<MATH>E_0=-m_0c^2{{\alpha^2}\over{2n^2}}=-m_0c^2{{e^4}\over{\hbar^2 c^2 16\pi^2\epsilon_0^2}}{{1}\over{2n^2}}=-{{m_0c^2 e^4}\over{\hbar^2c^2 32\pi^2\epsilon_0^2}}=-{{m_0e^4}\over{8h^2\epsilon_0 n^2}}\;</MATH>|24.87}}
Policzmy skrajną różnicę poziomów dla ściśle określonego n między orbitalną liczbą kwantową l=0, a l=n-1, bo ta liczba przyjmuje wartości skwantowane wedle {{LinkWzór|24.81}}:
{{CentrujWzór|<MATH>E_n\left(l=n-1\right)-E_n\left(l=0\right)=E_0{{\alpha^2}\over{n}}\left({{1}\over{n-{{1}\over{2}}}}-
{{1}\over{{{1}\over{2}}}}\right)=E_0{{\alpha^2}\over{n\left(2n-1\right)}}\left(2-2\left(2n-1\right)\right)=E_0\alpha^2{{-4n+4}\over{n\left(2n-1\right)}}\simeq-2E_0{{\alpha^2}\over{n}}\;</MATH>|24.88}}
Jak widać rozszczepienie jest rzędu {{Formuła|<MATH>10^{-4}\;</MATH>}}, jednak rozszczepienie przewidywane przez teorię Kleina-Gordona jest dwukrotnie większe niż uzyskano doświadczalnie.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
bu7bq3y23hjy345798r6g2bgtin6bux
Mechanika kwantowa/Teoria pola we wzorach Eulera-Lagrange'a
0
17859
558848
487128
2026-10-07T12:50:56Z
Persino
2851
558848
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
W rozdziale tym będziemy zajmować się podaniem w postaci jawnej gęstości Lagrangianu i na jej podstawie będziemy wyznaczać równanie Klieina-Gordona i Diraca, czyli równania kwantów fizyki relatywistycznej, korzystając przy tym ze sygnatury (1,-1,-1,-1) znanej z szczególnej teorii względności jako jedna z dwóch sygnatur (obie sygnatury różnią się w tensorze metrycznym znakami).
== Przejście między równaniem Eulera-Lagrange'a a równaniem Newtona ==
{{Rysunek|Leastaction.JPG|PF1|Dowolny rozwój w czasie pomiędzy dwoma punktami}}
Rozważmy ruch N cząstek, którymi rządzą równania Newtona. Dla każdej cząstki możemy napisać 3 równania, dla każdej współrzędnej z osobna. Razem tych równań jest 3N; równania te numeruje indeks i=1,2,3,...,3N, każdemu "i" odpowiada jedno równanie skalarne.
{{CentrujWzór|<MATH>m\ddot{q}_i(t)=F_i(t)\;</MATH>|26.1}}
* gdzie: q{{Sub|i}} oznaczają współrzędne kartezjańskie x,y,z wektorów położeń poszczególnych cząstek w przestrzeni, przy czym dla pierwszej cząstki współrzędne te mają odpowiednio indeksy i=1,2,3, dla drugiej i=4,5,6, itd.
Rozważmy pole potencjalne, czyli pole, dla którego praca sił pola zleży jedynie od punktu początkowego i końcowego, a nie zależy od drogi łączącej te punkty. Siła potencjalna, która występuje w równania {{LinkWzór|26.1}}, jest wyrażona:
{{CentrujWzór|<MATH>F_i=-{{dV}\over{dq_i}}\;</MATH>|26.2}}
Aby otrzymać równania Newtona, tzn. {{LinkWzór|26.1}} (drugie prawo Newtona) z {{LinkWzór|26.2}} (wzór na siłę pola potencjalnego), podejdźmy do tych równań ze strony Lagrangianu, z której według zasady wariacyjnej możemy zapisać:
{{CentrujWzór|<MATH>\delta S=0\;</MATH>|26.3}}
Określmy funkcjonał, który zależy od współrzędnych uogólnionych oraz od ich pochodnych względem czasu, które opisują cząstkę, który ten Lagrangian otrzymujemy po scałkowaniu jej względem czasów, po których odbywa się ruch, zatem ten funkcjonał ma się:
{{CentrujWzór|<MATH>S[q(t)]=\int^{t_2}_{t_1} L[q_i(t),\dot{q}_i(t)]dt\;</MATH>|26.4}}
Równanie różniczkowe dla lagrangianu występujący pod całką w funkcjonale {{LinkWzór|26.4}} piszemy:
{{CentrujWzór|<MATH>{{d}\over{dt}}\left({{\partial L}\over{\partial \dot{q}_i}}\right)-{{\partial L}\over{\partial q_i}}=0\;</MATH>|26.5|Obramuj}}
Jeśli oznaczymy Lagrangian jako różnica energii kinetycznej i potencjalnej cząstki, to według mechaniki klasycznej mamy:
{{CentrujWzór|<MATH>L=E_k-E_p=m{{\dot{q}^2}\over{2}}-V(q)\;</MATH>|26.6}}
To z równania różniczkowego Eulera-Lagrange'a {{LinkWzór|26.5}} po podstawieniu do niego Lagrangianu określonego według wzoru {{LinkWzór|26.6}} można przejść do równań Newtona {{LinkWzór|26.1}} z {{LinkWzór|26.2}}. Zatem równania Newtona {{LinkWzór|26.1}} z {{LinkWzór|26.2}} są równoważne z równaniem Eulera-Lagrange'a.
== Przejście od układu sprężynek o długości a do układu ciągłego i jego Lagrangian ==
Zauważmy, że mamy układ sprężyn rozłożonych w sposób liniowy, w których występuje n kulek, które są połączone n+1 sprężynkami:
{{Rysunek|Układ sprężyn.jpg|pf2|Liniowy układ ciał o jednakowych masach i współczynniku sprężystości k}}
Całkowita długość wszystkich sprężyn występująca w układzie, przy czym zakładając, że długość początkowa każdej sprężyny z osobna jest równa długości "a", jest równa:
{{CentrujWzór|<MATH>l=(n+1)a\;</MATH>|26.7}}
Energia kinetyczna wszystkich kulek razem umieszczonym między sprężynami jest równa sumie energii kinetycznej każdej kulek z osobna:
{{CentrujWzór|<MATH>T={{1}\over{2}}\sum^n_{i=1}m\dot{\phi}^2_i\;</MATH>|26.8}}
Energia potencjalna każdej z sprężynek osobna możemy przedstawić jako sumą energii potencjalnych sprężynek każdej z osobna:
{{CentrujWzór|<MATH>E_p={{1}\over{2}}k\sum_i\left(\phi_{i+1}-\phi_i\right)^2\;</MATH>|26.9}}
A siła działająca na kulkę o numerze "i" jest wyrażona jako pochodna energii potencjalnej układu sprężynek względem położenia jaki dana kulka o numerze "i" może posiadać:
{{CentrujWzór|<MATH>F_i=-{{dE_p}\over{\partial \phi_i}}=k(\phi_{i+1}+\phi_{i-1}-2\phi_i)\;</MATH>|26.10}}
Wyprowadźmy wzór {{LinkWzór|26.10}} ze wzoru na energię potencjalną układu {{LinkWzór|26.9}}, oraz pamiętając, że kulki są połączone ze sobą siłami sprężystości, z definicji siły potencjalnej poprzez energię potencjalną sprężynek, korzystając przy tym z pochodnej cząstkowej tej energii względem położenia danej kulki i to wyrażenie wzięte z minusem, otrzymujemy wzór na siłę potencjalną działająca na daną kulkę w zależności od położeń danych kulek towarzyszących tej kulce jako najbliżsi przyjaciele:
{{CentrujWzór|<MATH>F_i=-k{{\Delta_i E_p}\over{\partial \phi}}={{1}\over{2}}{{\Delta_i}\over{\partial \phi}}\sum^{n}_{i=1}k(\phi_{i+1}-\phi_{i})^2=-{{1}\over{2}}k
{{\partial}\over{\partial \phi_i}}[(\phi_2-\phi_1)^2+...+(\phi_{i}-\phi_{i-1})^2+...+(\phi_{i+1}-\phi_{i})^2+\;</MATH>{{Br}}<MATH>+..+(\phi_{n+1}-\phi_{n})]=-{{1}\over{2}}k{{\partial}\over{\partial \phi_i}}(\phi_{i}^2+\phi^2_{i-1}-2\phi_{i-1}\phi_{i}
+\phi_{i+1}^2+\phi_{i}^2-2\phi_{i+1}\phi_{i}]=-{{1}\over{2}}k\left(2\phi_i-2\phi_{i-1}+2\phi_i-2\phi_{i+1}\right)=\;</MATH>{{Br}}<MATH>=
k(\phi_{i+1}+\phi_{i-1}-2\phi_i)=ka^2{{{{\phi_{i+1}-\phi_i}\over{a}}-{{\phi_i-\phi_{i-1}}\over{a}}}\over{a}}\;</MATH>|26.11}}
Co kończy powyższy dowód {{LinkWzór|26.10}}.
Łącząc niezrównoważoną siły działającą na daną kulkę według {{LinkWzór|26.11}} z drugą zasadą dynamiki Newtona opisującą ten obiekt, zapisujemy:
{{CentrujWzór|<MATH>{{m}\over{a}}\ddot{\phi}_i-ka{{{{\phi_{i+1}-\phi_i}\over{a}}-{{\phi_i-\phi_{i-1}}\over{a}}}\over{a}}=0\;</MATH>|26.12}}
Obierzmy stałe: {{Formuła|<MATH> \mu={{m}\over{a}}\;</MATH>}} oraz Y=ka, wtedy równanie ruchu {{LinkWzór|26.12}} ma się:
{{CentrujWzór|<MATH>\mu\ddot{\phi}_i-Y{{\partial^2\phi_i}\over{\partial x^2}}=0\;</MATH>|26.13}}
A nasz Lagrangian, który jest różnicą sumy energii kinetycznej kulek i sumy energii potencjalnej sprężynek, przy powyższych oznaczeniach μ i Y, jest pisany:
{{CentrujWzór|<MATh>L={{1}\over{2}}\sum^{n}_{i=1}a\mu\dot{\phi}^2_{i}-
{{1}\over{2}}\sum_{i=1}^{n}aY\left({{\phi_{i+1}-\phi_{i}}\over{a}}\right)^2\;</MATH>|26.14}}
Jeśli dodatkowo oznaczymy przechodząc do granicy dla parametru a→0, oznaczając ten parametr przez różniczkę odległości pomiędzy kulkami a=dx, który dla nasz ten parametr w tym przypadku jest wielkością infinitezymalną, wtedy wyrażenie na Lagrangian {{LinkWzór|26.14}} przyjmuje postać:
{{CentrujWzór|<MATH>L={{1}\over{2}}\int^{l}_{0}\left\{\mu\dot{\phi}_{i}^2-Y\left({{\partial\phi}\over{dx}}\right)^2\right\}dx=\int_0^l\mathfrak{L}dx\;</MATH>|26.15}}
Gęstość Lagrangianu, według wzoru {{LinkWzór|26.15}} wyrażamy wzorem poniżej, jest funkcją pochodnej względem czasu danej kulki i pochodnej cząstkowej względem wielkości x:
{{CentrujWzór|<MATH>\mathfrak{L}={{1}\over{2}}\left\{\mu\dot{\phi}_{i}^2-Y\left({{\partial\phi}\over{dx}}\right)^2\right\}\;</MATH>|26.16}}
Działanie Lagrangianu określmy poprzez gęstość Lagrangianu, która jest wyrażona wzorem {{LinkWzór|26.16}} względem współrzędnej liniowej x:
{{CentrujWzór|<MATH>S[\phi(x,t)]=\int_{t_1}^{t_2}dt\int_{0}^{l}dx\mathfrak{L}\left[\phi(x,t),\dot{\phi}(x,t),{{\partial \phi}\over{dx}}\right]\;</MATH>|26.17}}
A zatem nasze równanie różniczkowe opisujące ruch wszystkich kulek używająca gęstości Lagrangianu napisaną wzorem {{LinkWzór|26.16}} jest napisana przez wyrażenie:
{{CentrujWzór|<MATH>{{\partial}\over{\partial t}}\left({{\partial \mathfrak{L}}\over{\partial\left({{\partial\phi}\over{\partial t}}\right)}}\right)
+{{\partial}\over{\partial x}}\left({{\partial\mathfrak{L}}\over{\partial\left({{\partial \phi}\over{\partial x}}\right)}}\right)-{{\partial\mathfrak{L}}\over{\partial \phi}}=0\;</MATH>|26.18|Obramuj}}
Widzimy, że powyższe równanie Eulera-Lagrange'a zależy od pochodnych cząstkowych wielkości położenia danej kulki względem czasu i pochodnych cząstkowych położenia x, a także zależy od wielkości położenia danej kulki.
== Sprzężenie hermitowskie pochodnej tensorowej ==
Prowadźmy oznaczenia jako konwencja Eulera-Lagrange dla operatorów różniczkowania w przestrzeni czterowymiarowej (czasoprzestrzeni) kowariantnych i kontrkowariantnych przedstawiając ich pełne znaczenie rozpisując je w sposób pełny, co oznaczając przy czym je literami greckimi numerowanych od zero do trzech, a numerowanie literami łacińskimi jest to numerowanie od jeden do trzech, czyli bez współrzędnej czasowej (zerowej), w postaci:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\partial_{\mu}={{\partial}\over{\partial x^{\mu}}}=\left(\partial_0,\partial_k\right)=\left({{\partial}\over{\partial ct}},{{\partial}\over{\partial x_k}}\right)\;</MATH>|26.19}}
| 2 = {{CentrujWzór|<MATH>\partial^{\mu}=\eta^{\mu\nu}\partial_{\nu}={{\partial}\over{\partial x_{\mu}}}=\left(\partial_0,-\partial_k\right)=\left({{\partial}\over{\partial ct}},-{{\partial}\over{\partial x_k}}\right)\;</MATH>|26.20}}
}}
Udowodnijmy, że na podstawie definicji operatora sprzężonego po hermitowsku, dla operatorów zdefiniowanych według {{LinkWzór|26.19}} lub {{LinkWzór|26.20}}, tylko że kierunek różniczkowania określa strzałka u góry tychże operatorów, zachodzi tożsamość:
{{CentrujWzór|<MATH>\overset{\rightarrow}{{\partial}}^+=-\overset{\leftarrow}{{\partial}}\;</MATH>|26.21}}
Zatem przejdźmy do dowodu tożsamości {{LinkWzór|26.21}} dla operatorów różniczkowania kowariantnych. Dla operatorów różniczkowania kontrawariantnych dowód przebiega identycznie tylko ze wskaźnikami u góry zamiast u dołu.
{{CentrujWzór|<MATH>(\overset{\rightarrow}{{\partial}}_{\mu}\psi|\phi)=\int_a^b\overset{\rightarrow}{{\partial}}_{\mu}\psi^*\phi d\tau=\left[\psi^*\phi\right]_a^b-\int_a^b\psi\overset{\rightarrow}{{\partial}}_{\mu}\phi d\tau=(\psi|-\overset{\rightarrow}{{\partial}}_{\mu}\phi)=(-\overset{\leftarrow}{{\partial}}_{\mu}^+\psi|\phi)\;</MATH>|26.22}}
Zakładamy w {{LinkWzór|26.22}}, że funkcje ψ i φ zerują się w punktach "a" i "b".
Z definicji sprzężenia hermitowskiego i dowodu {{LinkWzór|26.22}} wynika własność {{LinkWzór|26.21}}, a zwrot strzałki nad {{Formuła|<MATH>\partial\;</MATH>}}, wynika, czy ten operator pochodnej działa na prawą czy lewą stronę względem pozycji jaki on się znajduje, czyli względem której strony różniczkowanie jest napisane.
== Relatywistyczne równanie Kliena-Gordona, pole, jego Lagrangian ==
Stosując konwencję Eulera-Lagrange, a także dodatkowo konwencję Einsteina, to równanie {{LinkWzór|26.18}} zapiszmy dla przestrzeni czterowymiarowej (czasoprzestrzeni), zamiast przestrzeni dwuwymiarowej (czasoprzestrzeni), w postaci:
{{CentrujWzór|<MATH>\partial_{\mu}\left({{\partial\mathfrak{L}}\over
{\partial\left(\partial_{\mu}\psi\right)}}\right)-
{{\partial\mathfrak{L}}\over{\partial\psi}}=0\;</MATH>|26.23}}
W prowadźmy Lagrangian, z którego wyprowadzimy równanie mechaniki kwantowej Kliena-Gordona, które jest zależne od pochodnych cząstkowych drugiego rzędu, jest też zależna od kwadratu funkcji falowej, która jest rozwiązaniem równania Klieina-Gordona:
{{CentrujWzór|<MATH>\mathfrak{L}={{1}\over{2}}{{\hbar^2}\over{m_0}}\partial_{\mu}\psi\partial^{\mu}\psi-{{1}\over{2}}m_0c^2\psi^2\;</MATH>|26.24|Obramuj}}
Pierwszy człon jest związany z energią kinetyczną kwantowej cząstki, a drugi masowy człon jest związany z energią potencjalną.
Na podstawie definicji tensorowych pochodnych napiszmy wyrażenie, które można rozpisać względem współrzędnych czasowych i przestrzennych:
{{CentrujWzór|<MATH>\partial_{\mu}\psi\partial^{\mu}\psi=\partial_0\psi\partial_0\psi-\partial_k\psi\partial_k\psi\;</MATH>|26.25}}
* gdzie: {{Formuła|<MATH>k=0,1,2\;</MATH>}}.
Można udowodnić na podstawie definicji Lagrangianu {{LinkWzór|26.25}}, że zachodzi dla pierwszego wyrazu we wzorze Eulera-Lagrange'a {{LinkWzór|26.23}}, pisząc pochodną gęstości lagrangianu względem czasu, a później względem współrzędnych przestrzennych:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{\partial \mathfrak{L}}\over{\partial(\partial_0\psi)}}={{\partial \mathfrak{L}}\over{\partial\left({{\partial\psi}\over{\partial ct}}\right)}}={{\hbar^2}\over{m_0}}\partial_0\psi\;</MATH>|26.26}}
| 2 = {{CentrujWzór|<MATH>{{\partial\mathfrak{L}}\over{\partial(\partial_k\psi)}}={{\partial\mathfrak{L}}\over{\partial\left({{\partial\psi}\over{\partial x_k}}\right)}}=-{{\hbar^2}\over{m_0}}\partial_k\psi\;</MATH>|26.27}}
}}
Obliczamy ostatni wyraz występujący w równaniu Eulera-Lagrange'a {{LinkWzór|26.23}}, który jest pochodną gęstości Lagrangianu względem funkcji falowej.
{{CentrujWzór|<MATH>{{\partial\mathfrak{L}}\over{\partial\psi}}=-m_0c^2\psi\;</MATH>|26.28}}
Równość {{LinkWzór|26.23}}, który jest zapisany przy pomocy pochodnej czasowej i przestrzennej, wyznaczamy biorąc pochodną czasową wyrażenia {{LinkWzór|26.26}} i pochodną przestrzenną wyrażenia {{LinkWzór|26.27}}:
{{CentrujWzór|<MATH>\partial_{\mu}\left({{\partial \mathfrak{L}}\over{\partial(\partial_{\mu}\psi)}}\right)=
\partial_0\left({{\partial\mathfrak{L}}\over{\partial(\partial \psi_0)}}\right)+\partial_k\left({{\partial\mathfrak{L}}\over{\partial(\partial \psi_k)}}\right)=\partial^2_0\psi-\partial_k^2\psi={{\hbar^2}\over{m_0}}\left({{1}\over{c^2}}{{\partial^2\psi}\over{\partial^2 t}}-\nabla^2\psi\right)\;</MATH>|26.29}}
W sposób ostateczny podstawiając {{LinkWzór|26.28}} (pochodna względem funkcji falowej gęstości Lagrangianu) i {{LinkWzór|26.29}} (drugich pochodnych względem współrzędnej czasowej i współrzędnych przestrzennych) do wzoru wariacyjnego {{LinkWzór|26.21}}, otrzymujemy:
{{CentrujWzór|<MATH>{{\hbar^2}\over{2m_0}}\left({{1}\over{c^2}}{{\partial^2\psi}\over{\partial t^2}}-\nabla^2\psi\right)+{{1}\over{2}}m_0c^2\psi=0\Rightarrow {{\hbar^2}\over{2m_0}}\left[{{1}\over{c^2}}{{\partial^2\psi}\over{\partial t^2}}-\nabla^2\psi\right]=-{{1}\over{2}}m_0c^2\psi\Rightarrow
{{1}\over{c^2}}{{\partial^2\psi}\over{\partial t^2}}-\nabla^2\psi=-{{m_0^2c^2}\over{\hbar^2}}\psi\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\left(\nabla^2-{{1}\over{c^2}}{{\partial^2\psi}\over{\partial t^2}}\right)\psi={{m_0^2c^2}\over{\hbar^2}}\psi</MATH>|26.30}}
lub łatwiej korzystając z definicji operatora d'Alemberta {{LinkWzór|24.7|Relatywistyczna_teoria_kwantów_Kleina-Gordona}}:
{{CentrujWzór|<MATH>\square\psi={{m_0^2c^2}\over{\hbar^2}}\psi\;</MATH>|26.31|Obramuj}}
Równanie {{LinkWzór|26.31}} jest to równaniem mechaniki Klieina-Gordona teorii kwantów nieuwzględniający spinów cząstek.
== Relatywistyczne równanie Diraca, pole i jego Lagrangian ==
Wiemy, że Hamiltonian równania Diraca przyjmuje postać zlinearyzowaną określoną według wzoru {{LinkWzór|26.7}}, a jego równanie zależne od czasu jest w postaci {{LinkWzór|26.4}}.
Podstawiając Hamiltonian Diraca do równania Diraca równania zależnego od czasu, dostajemy:
{{CentrujWzór|<MATH>\left\{c\hat{\alpha}\hat{p}+m_0c^2\hat{\beta}\right\}\psi=i\hbar{{\partial\psi}\over{\partial t}}\;</MATH>|26.32}}
Podstawiamy definicję operator pędu {{LinkWzór|5.4|Postulat_pierwszy_mechaniki_kwantowej}} do równania Diraca {{LinkWzór|26.32}}, dochodzimy do wniosku:
{{CentrujWzór|<MATH>\left\{-ic\hat{\alpha}\hbar\nabla+m_0c^2\hat{\beta}\right\}\psi=
i\hbar{{\partial\psi}\over{\partial t}}\;</MATH>|26.33}}
Dokonując prostych przenosin wyrazów z związanych z pochodną czasową z prawej strony wzoru na jej lewą, dalej włączając je pod nawias przed czynnikiem, który jest iloczynem jednostki urojonej i stałej kreślonej Plancka:
{{CentrujWzór|<MATH>\left\{i\hbar\left({{\partial\psi}\over{\partial t}}+c\hat{\alpha}\nabla\right)-m_0c^2\hat{\beta}\right\}\psi=0\;</MATH>|26.34}}
Mnożymy obustronnie równość {{LinkWzór|26.34}} przez operator {{Formuła|<MAth>\hat{\beta}\;</MATH>}}, oraz wykorzystujemy, że zachodzi tożsamość operatorowa {{LinkWzór|25.10|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, wiemy:
{{CentrujWzór|<MATH>\left\{i\hbar c\left(\hat{\beta}{{\partial}\over{\partial ct}}+\hat{\beta}\hat{\alpha}\nabla\right)-m_0c^2\right\}\psi=0\;</MATH>|26.35}}
W prowadźmy zdefiniowany tensor poniżej, który nazwiemy kontrkowariantnym tensorem γ{{Sup|μ}}:
{{CentrujWzór|<MATH>\gamma^{\mu}=\left(\hat{\beta},\hat{\beta}\hat{\alpha}_k\right)\;</MATH>|26.36}}
Przy pomocy {{LinkWzór|26.36}} i definicji czterooperatora kowariantnego różniczkowania {{LinkWzór|26.19}} wyrażenie {{LinkWzór|26.35}} przyjmuje bardziej zwartą tensorową postać:
{{CentrujWzór|<Math>\left(i\hbar c\gamma^{\mu}\partial_{\mu}-m_0c^2\right)\psi=0\;</MATH>|26.37}}
W kwantowej mechanice relatywistycznej Diraca przyjmujemy definicje oparte na tensorach czterowektorów pochodnych kowariantnych {{LinkWzór|26.19}} i kontrkowariantnych {{LinkWzór|26.20}} oraz zdefiniujemy nową funkcję {{Formuła|<MATH>\overline{\psi}\;</math>}}, których definicję poznamy poniżej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{\overset{\rightarrow}{{\not{\partial}}}}=\gamma^{\mu}\overset{\rightarrow}{\partial}_{\mu}\;</MATH>|26.38}}
| 2 = {{CentrujWzór|<MATH>{\overset{\leftarrow}{{\not{\partial}}}}=\gamma^{\mu}\overset{\leftarrow}{\partial}_{\mu}\;</MATH>|26.39}}
| 3 = {{CentrujWzór|<MATH>\overset{\leftrightarrow}{\not{\partial}}=\gamma^{\mu}\overset{\leftrightarrow}{\partial}_{\mu}\;</MATH>|26.40}}
| 4 = {{CentrujWzór|<MATH>\overline{\psi}=\psi^{+}\gamma^0=\psi^{+}\hat{\beta}\;</MATH>|26.41}}
}}
Równanie {{LinkWzór|26.37}} dzielimy obustronnie przez wyrażenie urojone {{Formuła|<maTh>i\hbar\;</MATH>}}, dostajemy tożsamość:
{{CentrujWzór|<MATH>\left(\gamma^{\mu}\partial_{\mu}+i{{m_0c}\over{\hbar}}\right)\psi=0\Rightarrow\left(\overset{\rightarrow}{\not{\partial}}+i{{m_0c}\over{\hbar}}\right)\psi=0\;</MATH>|26.42|Obramuj}}
Jest to równanie '''ruchu Diraca dla cząstki kwantowej'''.
Z skonstruujemy gęstość lagrangianu dla pola opisujących kwantowe cząstki o spinie równym {{Formuła|<MATH>s={{1}\over{2}}\;</MATH>}} w równaniu Diraca , co prowadzi do definicji tejże wielkości:
{{CentrujWzór|<MATH>\mathfrak{L}=\overline\psi(i\hbar c\overset{\leftrightarrow}{\not{\partial}}-m_0 c^2)\psi\;</MATH>|26.43|Obramuj}}
* gdzie zachodzi tożsamość:
{{CentrujWzór|<MATH>\overset{\leftrightarrow}{{\partial}}={{1}\over{2}}{\overset{\rightarrow}{{{\partial}}}}+{{1}\over{2}}{{\overset{\rightarrow}{{{\partial}}}}}^{+}={{1}\over{2}}{\overset{\rightarrow}{{{\partial}}}}-{{1}\over{2}}{{\overset{\leftarrow}{{{\partial}}}}}\;</MATH>|26.44}}
Równanie {{LinkWzór|26.43}} możemy zapisać w postaci rozwiniętej, jeśli przy czym skorzystamy z definicji operatora zdefiniowanego w punkcie {{LinkWzór|26.44}}, ten nasz wspomniany Lagrangian Diraca możemy rozpisać wedle sposobu:
{{CentrujWzór|<MATH>\mathfrak{L}={{i\hbar c}\over{2}}\overline{\psi}\gamma^{\mu}(\overset{\rightarrow}{\partial_{\mu}}\psi)-{{i\hbar c}\over{2}}(\overline{\psi}\overset{\leftarrow}{\partial_{\mu}})\gamma^{\mu}\psi-m_0c^2\overline{\psi}\psi\;</MATH>|26.45}}
Można policzyć pochodne cząstkowe pierwszego rzędu względem współrzędnych czasoprzestrzeni czterowymiarowej dla gęstości Lagrangianu napisanego wedle {{LinkWzór|26.45}}, zatem mamy:
{{ElastycznyWiersz|1={{CentrujWzór|<MATH>{{\partial\mathfrak{L}}\over{\partial(\partial_{\mu}\overline{\psi})}}=-{{i\hbar c}\over{2}}\gamma^{\mu}\psi\;</MATH>|26.46}}|2={{CentrujWzór|<MATH>{{\partial\mathfrak{L}}\over{\partial\overline{\psi}}}={{i\hbar c}\over{2}}\gamma^{\mu}\partial_{\mu}\psi-m_0c^2\psi\;</MATH>|26.47}}}}
Co ostatecznie z równania {{LinkWzór|26.21}} (równanie Eulera-Lagrange) przy pomocy obliczonych już wyrażeń {{LinkWzór|26.46}} i {{LinkWzór|26.47}}, oraz łącząc te dwie pochodne w wspomniane powyżej równania wariacyjnego, dostajemy:
{{CentrujWzór|<MATH>\partial_{\mu}\left(-{{i\hbar c}\over{2}}\gamma^{\mu}\psi\right)-{{i\hbar c}\over{2}}\gamma^{\mu}\partial_{\mu}\psi+m_0c^2\psi=0\;</MATH>|26.48}}
Z wyrażeniu {{LinkWzór|26.48}} redukujemy wyrazy podobne, mamy:
{{CentrujWzór|<MATH>-i\hbar c\partial_{\mu}\gamma^{\mu}\psi+m_0c^2\psi=0\;</MATH>|26.49}}
Równanie {{LinkWzór|26.49}} dzielimy obustronnie przez stałą urojoną {{Formuła|<MATH>-i\hbar c\;</MATH>}}, dochodzimy do wniosku, że:
{{CentrujWzór|<MATH>\left(\gamma^{\mu}\partial_{\mu}+i{{m_0c}\over{\hbar}}\right)\psi=0 \;</MATH>|26.50}}
Otrzymaliśmy równanie {{LinkWzór|26.50}}, które jest takie same jak w punkcie {{LinkWzór|26.42}}, które jest równaniem mechaniki kwantowej Diraca.
Jeśli będziemy różniczkować po ψ, a nie po {{Formuła|<MATH>\overline{\psi}\;</MATH>}}, to otrzymamy inne równanie:
{{CentrujWzór|<MATH>\overline{\psi}\left(\overset{\leftarrow}{\not{\partial}}-i{{m_0c}\over{\hbar}}\right)=0\;</MATH>|26.51}}
Udowodnimy, że równanie {{LinkWzór|26.51}} jest równoważne równaniu {{LinkWzór|26.42}}.
Wykorzystując definicję funkcji {{Formuła|<MATH>\overline{\psi}\;</MATH>}} zapisaną w schemacie {{LinkWzór|26.41}} w równaniu {{LinkWzór|26.51}} dostajemy:
{{CentrujWzór|<MATH>\psi^{+}\hat{\beta}\left(\overset{\leftarrow}{\not{\partial}}-{{m_0c}\over{\hbar}}\right)=0\;</MATH>|26.52}}
Mnożymy prawostronnie równanie {{LinkWzór|26.52}} przez operator {{Formuła|<MATH>\hat{\beta}\;</MATH>}}, to wiemy wtedy na pewno:
{{CentrujWzór|<MATH>\psi^{+}\left(\hat{\beta}\gamma^{\mu}\hat{\beta}\overset{\leftarrow}{\partial_{\mu}}-i\hat{\beta}^2{{m_0c}\over{\hbar}}\right)=0\;</MATH>|26.53}}
Wyznaczmy sprzężenie hermitowskie operatora występującego w równaniu {{LinkWzór|26.53}} - po tej operacji dostaniemy operator {{LinkWzór|26.36}}.
{{CentrujWzór|<MATH>(\hat{\beta}\gamma^{\mu}\hat{\beta})^+=
\hat{\beta}{\left(\gamma^{\mu}\right)}^+\hat{\beta}=\hat{\beta}(\hat{\beta},\hat{\alpha}_k\hat{\beta})\hat{\beta}=(\hat{\beta}\hat{\beta}\hat{\beta},\hat{\beta}\hat{\alpha}_k\hat{\beta}\hat{\beta})=
(\hat{\beta},\hat{\beta}\hat{\alpha}_k)=\gamma^{\mu}\;</MATH>|26.54}}
Jeśli przedtem wykorzystamy wzór operatorowy {{LinkWzór|25.10|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, a potem będziemy sprzęgać po hermitowsku wyrażenie różniczkowe {{LinkWzór|26.53}}, korzystając przy tym z tożsamości operatorowej {{LinkWzór|26.54}}, to otrzymamy równanie {{LinkWzór|26.50}}, które jest równoważne równaniu {{LinkWzór|26.37}}.
== Równanie Kleina-Gordona, a równania Diraca w teorii kwantów ==
Podziałajmy prawostronnie na równanie Diraca mechaniki relatywistycznej opisujących cząstki spinie połówkowym {{LinkWzór|26.42}} operatorem: {{Formuła|<MATH>\overset{\rightarrow}{\not{\partial}}-i{{m_0c}\over{\hbar}}\;</MATH>}}, otrzymujemy:
{{CentrujWzór|<MATH>\left(\overset{\rightarrow}{\not{\partial}}-i{{m_0c}\over{\hbar}}\right)\left(\overset{\rightarrow}{\not{\partial}}+i{{m_0c}\over{\hbar}}\right)\psi=0\;</MATH>|26.53a}}
Podczas działania operatorem w tym przypadku różniczkowania cząstkowego na prawą i lewą stronę równań Diraca, to ono prawostronnie jest równe zero. Sprawdźmy, czy dostaniemy równanie Klieina-Gordona. Jeśli otrzymamy to równanie, to zbiór rozwiązań równania Diraca jest podzbiorem zbioru rozwiązań równania Kliena-Gordona dla ruchu swobodnego.
Dokonując wymnożeń w {{LinkWzór|26.53a}}, mamy:
{{CentrujWzór|<MATH>\left(\overset{\rightarrow}{\not{\partial}}^2+i{{m_0c}\over{\hbar}}\overset{\rightarrow}{\not{\partial}}-i{{m_0c}\over{\hbar}}\overset{\rightarrow}{\not{\partial}}+{{m_0^2c^2}\over{\hbar^2}}\right)\psi=0\Rightarrow
\left(\overset{\rightarrow}{\not{\partial}}^2+{{m_0^2c^2}\over{\hbar^2}}\right)\psi=0\;</MATH>|26.54a}}
Ale jeśli na równość różniczkową {{LinkWzór|26.54a}} podziałamy operatorem odwrotnym do {{Formuła|<MATH>\overset{\rightarrow}{\not{\partial}}-i{{m_0c}\over{\hbar}}\;</MATH>}} to otrzymamy równanie Diraca {{LinkWzór|26.42}}, wtedy równania Diraca zawierają sobie zbiór rozwiązań równania Klieina-Gordona. Zatem na podstawie poprzednich rozważań dostajemy, że rozwiązania w obu teoriach są takie same.
Wyznaczmy kwadrat operatora {{LinkWzór|26.38}} występujących w równaniu {{LinkWzór|26.54}}, korzystając przy tym z definicji operatora {{LinkWzór|26.38}} poprzez {{LinkWzór|26.19}}, zatem:
{{CentrujWzór|<MATH>\overset{\rightarrow}{\not{\partial}}^2=\left(\gamma^{\mu}\partial_{\mu}\right)^2=\left(\hat\beta {{\partial }\over{c\partial t}}+\hat\beta\hat\alpha_k\nabla_k\right)^2=\left(\hat\beta {{\partial }\over{c\partial t}}+\hat\beta\hat\alpha_l\nabla_l\right)\left(\hat\beta {{\partial }\over{c\partial t}}+\hat\beta\hat\alpha_k\nabla_k\right)=\hat \beta^2\left({{\partial}\over{\partial ct}}\right)^2+\hat \beta{{\partial }\over{c\partial t}}\hat \beta\hat\alpha_k\nabla_k+\;</MATH>{{Br}}<MATH>+\hat\beta\hat\alpha_l\nabla_l\hat \beta{{\partial }\over{c\partial t}}+\hat\beta\hat\alpha_l\nabla_l\hat\beta\hat\alpha_k\nabla_k={{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}-{{1}\over{2}}\{\hat\alpha_k,\hat\alpha_l\}\nabla_k\nabla_l={{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}-\nabla_l\nabla_l=
{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}-\nabla^2={{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}-\nabla^2=\overset{\rightarrow}{\partial}^2=-\square\;</MAth>|26.55}}
Równanie {{LinkWzór|26.54}}, na podstawie {{LinkWzór|26.55}} otrzymanej tożsamości na operatorach różniczkowania według konwencji Eulera-Lagrange, przyjmuje postać:
{{CentrujWzór|<MATH>\left(\overset{\rightarrow}{\partial}^2+{{m_0^2c^2}\over{\hbar^2}}\right)\psi=0\Rightarrow \square\psi={{m_0^2c^2}\over{\hbar^2}}\psi\;</MATH>}}
Ostatnie równanie jest zgodne z równaniem {{LinkWzór|26.29}}, a więc z równaniem Kliena-Gordona, czyli nasze rozważania co do mechaniki Klieina-Gordona opisujących cząstki o spinie zerowym i co do mechaniki Diraca są poprawne.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
gjkdzatls43hbwl52ul30r56xw73l9b
Mechanika kwantowa/Symetria cechowania transformacji ładunkowej
0
17862
558849
487130
2026-10-07T12:55:19Z
Persino
2851
558849
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
== Globalna symetria cechowania czyli obrót o kąt niezależny od położenia ==
Operator obrotu w mechanice kwantowej przyjmuje według {{LinkWzór|23.27|Symetrie,_a_prawa_zachowania_wartości_średniej}} postać:
{{CentrujWzór|<MATH>R(\theta)=e^{-i\theta {{l_z}\over{\hbar}}}\;</MATH>|27.1}}
Określmy pole ψ{{Sub|m}}(x), co należy powiedzieć, że są one funkcjami własnymi operatora momentu pędu dla współrzędnej zetowej, a zatem wiedząc jakie są wartości własne operatora momentu pędu współrzędnej zetowej wedle {{LinkWzór|7.43|Postulat_drugi_mechaniki_kwantowej}} dla równania własnego tegoż operatora, tzn. {{LinkWzór|7.35|Postulat_drugi_mechaniki_kwantowej}}:
{{CentrujWzór|<MATH>\psi^T_m(x)=e^{-i\theta {{l_z}\over{\hbar}}}\psi_m(x)=e^{-i\theta m}\psi_m(x)\;</MATH>|27.2}}
Wykorzystując wzory na transformację pola skalarnego poprzez cechowanie, które wykorzystamy poniżej, ale tym razem dla cechowania ładunku poprzez transformację funkcji falowej, napiszmy transformacie przy pomocy wartości własnej pewnego operatora, który naszą wartość własną tego operatora wyrazimy w jednostkach ładunku elementarnego e, tzn. wartość własną {{Formuła|<MATH>{{q}\over{e}}\;</MATH>}}, a więc:
{{CentrujWzór|<MATH>\psi^T(x)=e^{-i\theta {{q}\over{e}}}\psi(x)\;</MATH>|27.3}}
Wiemy, że ta transformacja nie zmienia gęstości prawdopodobieństwa znalezienia cząstki, która jest kwadratem modułu funkcji falowej co można udowodnić, że ta gęstość przed i po przetransformowaniu jest taka sama:
{{CentrujWzór|<MATH>|\psi^T|^2=(\psi^T)^+\psi=\psi^{+} e^{i\theta {{q}\over{e}}}e^{-i\theta {{q}\over {c}}}=\psi^+\psi=|\psi|^2\;</MATH>|27.4}}
Nie zmienia się również kwadrat pochodnej pola ψ, tzn. jeśli mamy tą wielkość zdefiniowaną wedle:
{{CentrujWzór|<MATH>\partial_{\mu}(\psi^T)=\partial_{\mu}(e^{i\theta {{q}\over{e}}}\psi)=e^{i\theta {{q}\over{e}}}\partial_{\mu}\psi\;</MATH>|27.5}}
zatem kwadrat modułu pochodnej pola, jak można udowodnić, jest wielkością niezmienniczą:
{{CentrujWzór|<MATH>\left(\partial_{\mu}\psi^T\right)^+\left(\partial_{\mu}\psi^T\right)=\left(e^{-i\theta {{q}\over{e}}}\right)^{+}\partial_{\mu}\psi^+e^{-i\theta {{q}\over{e}}}\partial_{\mu}\psi={e^{i\theta {{q}\over{e}}}}e^{-i\theta {{q}\over{e}}}(\partial_{\mu}\psi)^{+}(\partial_{\mu}\psi)=(\partial_{\mu}\psi)^{+}(\partial_{\mu}\psi)\;</MATH>|27.6}}
Jeśli Lagrangian zależy kwadratowo od funkcji i ich pochodnych, to on jest niezmienniczy ze względu na transformację ładunkową, tzn. jeśli gęstość lagrangianu jest zdefiniowana:
{{CentrujWzór|<MATH>\mathfrak{L}=\mathfrak{L}\left\{\psi^T\psi,(\partial_{\mu}\psi)^+(\partial_{\mu}\psi)\right\}\;</MATH>|27.7}}
Oznaczenie globalnej symetrii ładunkowej, której to w transformacji występuje wielkość θ, która nie zależy od położenia cząstki, dla której dokonujemy transformacji unitarnej.
Lokalna transformacja cechowania nazywamy transformację, której wielkość θ zależy od położenia, w której znajduje się dana kwantowa cząstka.
{{CentrujWzór|<MATH>\psi^T_q(x)=e^{-i\theta(x) {{q}\over{e}}}\psi_q(x)\;</MATH>|27.8}}
== Lokalna symetria cechowania czyli obrót o kąt zależny od położenia ==
Z definicji transformacji cechowania, kąt obrotu zależy od x, czyli od położenia danej cząstki, dla której dokonujemy transformacji, gdzie x oznacza tensor kontrawariantny położenia w czasoprzestrzeni x{{Sup|μ}}=(t,x{{Sub|k}}).
Wiemy, że ψ{{Sup|T}}(x)ψ(x) zachowuje się przy transformacji cechowania, czyli gęstość prawdopodobieństwa jest wielkością niezmienniczą, natomiast iloczyn pochodnych już nie, bo zachodzi według dowodu, że kwadrat modułu pochodnych cząstkowych funkcji przetransformowanych i nie zachowuje się podczas tej transformacji:
{{CentrujWzór|<MATH>[\partial_{\mu}\psi(x)]^T=\partial_{\mu}[e^{-i{{q}\over{e}}\theta(x)}\psi(x)]=e^{-i{{q}\over{e}}\theta(x)}\partial_{\mu}\psi(x)-i{{q}\over{e}}e^{-i{{q}\over{e}}\theta(x)}[\partial_{\mu}\theta(x)]\psi(x)\;</MATH>|27.9}}
Co wynika tak jak powyżej powiedziano, że tych iloczyn pochodnych przetransformowanych i nie nie jest niezmienniczy. W tym celu wprowadza się pochodną kowariantną D{{Sub|μ}}, zdefiniowany poprzez pochodną cząstkową zdefiniowaną w zwykły sposób, kowariantny tensor potencjału elektromagnetycznego i ładunku cząstki, zatem tą pochodną definiujemy:
{{CentrujWzór|<MATH>D_{\mu}=\partial_{\mu}+i{{q}\over{\hbar}}A_{\mu}\;</MATH>|27.10}}
* q to ładunek cząstki.
* {{Formuła|<MATH>A_{\mu}\;</MATH>}} to tensor potencjału elektromagnetycznego.
Gdy podziałamy operatorem D{{Sub|μ}} na funkcję ψ(x), to otrzymamy tak jak w transformacji globalnej przy dodatkowych manipulacjach funkcjami i operatorami.
{{CentrujWzór|<MATH>[D_{\mu}\psi(x)]^T=D^T_{\mu}\psi^T(x)=
(\partial_{\mu}+i{{q}\over{e}}A^{T}_{\mu})e^{-i{{q}\over{\hbar}}\theta(x)}\psi(x)=e^{-i{{q}\over{e}}\theta(x)}(\partial_{\mu}-i{{q}\over{e}}\partial_{\mu}\theta(x)+i{{q}\over{\hbar}}A^T_{\mu})\psi(x)\;</MATH>|27.11}}
Możemy nałożyć dodatkowy warunek w {{LinkWzór|27.11}} wiążący przetransformowany tensor potencjału elektromagnetycznego z tensorem potencjału elektromagnetycznego i pochodną o wskaźniku μ kąta obrotu θ(x) zależącego od położenia danej cząstki:
{{CentrujWzór|<MATH>A^T_{\mu}(x)=A_{\mu}+{{\hbar}\over{e}}\partial_{\mu}\theta(x)\;</MATH>|27.12}}
W równości {{LinkWzór|27.11}} przy podstawieniu do niego tożsamości {{LinkWzór|27.12}} i na ostatku wykorzystując {{LinkWzór|27.10}} (definicję pochodnej kowariantnej), transformacja pochodnej kowariantnej pewnej funkcji falowej jest równa transformacji pochodnej kowariantnej tej samej funkcji:
{{CentrujWzór|<MATH>[D_{\mu}\psi(x)]^T=e^{-i{{q}\over{\hbar}}\theta(x)}\left[
\partial_{\mu}-i{{q}\over{e}}\partial_{\mu}\theta(x)+i{{q}\over{\hbar}}\left(A_{\mu}+{{\hbar}\over{e}}\partial_{\mu}\theta(x)\right)
\right]\psi(x)=e^{-i{{q}\over{\hbar}}\theta(x)}\left[\partial_{\mu}-i{{q}\over{e}}\partial_{\mu}\theta(x)+i{{q}\over{\hbar}}A_{\mu}+i{{q}\over{e}}\partial_{\mu}\theta(x)\right]\cdot\;</MATH>{{Br}}<MATH>\cdot\psi(x)=e^{-i{{q}\over{e}}\theta(x)}\left(\partial_{\mu}+i{{q}\over{\hbar}}A_{\mu}\right)\psi(x)=e^{-i{{q}\over{e}}\theta(x)}D_{\mu}\psi(x)\;</MATH>|27.13}}
== Maxwellowskie pole elektromagnetyczne, a lokalna symetria cechowania ==
W tym rozdziale zajmować się będziemy tensorem pola magnetycznego, udowodnimy, że on jest niezmienniczy ze względu na lokalną symetrię cechowania, w elektrodynamice klasycznej ten tensor jest zdefiniowany wedle wzoru:
{{CentrujWzór|<MATH>F_{\mu\nu}=\partial_{\nu}A_{\mu}-\partial_{\mu}A_{\nu}\;</MATH>|27.14}}
We wzorze na tensor pola elektromagnetycznego {{LinkWzór|27.14}} będziemy zastępować wszystkie pochodne cząstkowe pochodnymi kowariantnymi, ten ostatni wzór przechodzi w równanie:
{{CentrujWzór|<MATH>F_{\mu\nu}=D_{\nu}A_{\mu}-D_{\mu}A_{\nu}\;</MATH>|27.15}}
Udowodnijmy, że oba sformułowania tensora elektromagnetycznego w elektrodynamice klasycznej, tzn.{{LinkWzór|27.14}} (przez pochodne cząstkowe) i {{LinkWzór|27.15}} (przez pochodne kowariantne) są ze sobą równoważne, wychodząc najpierw od równania {{LinkWzór|27.15}} na ten tensor:
{{CentrujWzór|<MATH>F_{\mu\nu}=D_{\nu}A_{\mu}-D_{\mu}A_{\nu}=
\left(\partial_{\nu}+i{{q}\over{\hbar}}A_{\nu}\right)A_{\mu}-\left(\partial_{\mu}+i{{q}\over{\hbar}}A_{\mu}\right)A_{\nu}=\partial_{\nu}A_{\mu}-\partial_{\mu}A_{\nu}+i{{q}\over{\hbar}}A_{\nu}A_{\mu}-i{{q}\over{\hbar}}A_{\mu}A_{\nu}=\partial_{\nu}A_{\mu}-\partial_{\mu}A_{\nu}\;</MATH>|27.16}}
Dostaliśmy, że oba sformułowania na tensor elektromagnetyczny są równoważne, tzn. {{LinkWzór|27.14}} oznacza to samo co {{LinkWzór|27.15}}.
Napiszmy lokalną ładunkową transformację cechowania ładunku elektrycznego tensora elektromagnetycznego zdefiniowaną według {{LinkWzór|27.15}}, wiedząc, że zachodzi własność {{LinkWzór|27.13}}:
{{CentrujWzór|<MATH>(F_{\mu\nu})^T=D^T_{\nu}A^T_{\mu}-D^T_{\mu}A^T_{\nu}=
e^{-i{{q}\over{\hbar}}\varphi(x)}\left[D_{\nu}A_{\mu}-D_{\mu}A_{\nu}\right]=e^{-i{{q}\over{\hbar}}\varphi(x)}F_{\mu\nu}\;</MATH>|27.17}}
Cechowanie Loretza tuż po cechowaniu ładunkowej transformacji, gdy występujące w nim pola są przetransformowane wedle transformacji cechowania ładunkowego, jest wyrysowana:
{{CentrujWzór|<MATH>\nabla \vec{A}^T+{{1}\over{c^2}}{{\partial\varphi^T}\over{\partial t}}=0\;</MATH>|27.18}}
Także wiemy, że tensor potencjału wektorowego w elektrodynamice klasycznej spełnia warunek, który tuż po rozłożeniu jego na potencjał skalarny elektryczny i wektorowy pola elektromagnetycznego, jest on o wyglądzie:
{{CentrujWzór|<MATH>A^{\mu}=\left({{\varphi}\over{c}},\vec{A}\right)\Rightarrow A_{\mu}=A^{\nu}\eta_{\nu\mu}=\left({{\varphi}\over{c}},-\vec{A}\right)</MATH>|27.19}}
Wychodząc z {{LinkWzór|27.12}} przy tensorze potencjału elektromagnetycznego {{LinkWzór|27.19}} dla górnych i dolnych wskaźników, mamy:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\varphi^T=\varphi+{{\hbar}\over{e}}{{\partial\theta(x)}\over{\partial t}}\;</MATH>|27.20}}
| 2 = {{CentrujWzór|<MATH>\vec{A}^T=\vec{A}-{{\hbar}\over{e}}\nabla\theta\;</MATH>|27.21}}
}}
Podstawiamy równania {{LinkWzór|27.20}} (transformacja potencjału elektrycznego) i {{LinkWzór|27.21}} (transformacja potencjału wektorowego magnetycznego) do wzoru na transformację Lorentza {{LinkWzór|27.18}}, w której występują pola po dokonaniu na nich transformacji cechowania ładunkowego, otrzymujemy:
{{CentrujWzór|<MATH>\nabla \left(\vec{A}-{{\hbar}\over{e}}\nabla\theta\right)+{{1}\over{c^2}}
{{\partial\left(\varphi+{{\hbar}\over{e}}{{\partial\theta(x)}\over{\partial t}}\right)}\over{\partial t}}=0\Rightarrow
\nabla\vec{A}+{{1}\over{c^2}}{{\partial\varphi}\over{\partial t}}-{{\hbar}\over{e}}\left(\nabla^2\theta-{{1}\over{c^2}}{{\partial^2\theta}\over{\partial t^2}}\right)=0</mATH>|27.22}}
Cechowanie Lorentza przed dokonaniem na niej operacji cechowania przyjmuje postać:
{{CentrujWzór|<MATH>\nabla\vec{A}+{{1}\over{c^2}}{{\partial}\over{\partial t}}\varphi=0</MATH>|27.23}}
Wtedy otrzymujemy, że lokalne cechowanie na podstawie obliczeń {{LinkWzór|27.22}} i cecowania Lorentza {{LinkWzór|27.23}} spełnia warunek:
{{CentrujWzór|<MATH>\nabla^2\theta-{{1}\over{c^2}}{{\partial^2\theta}\over{\partial t^2}}=0\;</MATH>|27.24}}
Otrzymaliśmy odpowiedź na podstawione pytanie, jeśli potencjały {{Formuła|<MATH>\varphi\;</MATH>}} i {{Formuła|<MATH>\vec{A}\;</MATH>}} spełniają warunek Lorentza, a cechowanie θ(x) spełnia warunek {{LinkWzór|27.24}}, to istnieje klasa potencjałów {{LinkWzór|27.12}} spełniający cechowanie Lorentza.
== Lagrangian Diraca, a lokalna symetria cechowania z polem elektromagnetycznym ==
Gęstość Lagrangianu dla pola Diraca zapisujemy według wzoru {{LinkWzór|26.43|Teoria_pola_we_wzorach_Eulera-Lagrange'a}}.
Jeśli {{Formuła|<MATH>\mathfrak{L}\;</MATH>}} jest niezmienniczy ze względu na lokalną symetrię cechowania, to korzystając z cechowania transformacji ładunkowej {{LinkWzór|27.10}} musimy zastąpić według schematu pochodne cząstkowe pochodnymi kowariantnymi zdefiniowaną poprzez tensor pochodnej i tensor potencjału pola elektromagnetycznego:
{{CentrujWzór|<MATH>\partial_{\mu}\rightarrow D_{\mu}=\partial_{\mu}+i{{q}\over{\hbar}} A_{\mu}\;</MATH>|27.25}}
gdzie:
* {{Formuła|<MATH>q\;</MATH>}} to ładunek cząstki.
* {{Formuła|<MATH>A_{\mu}\;</MATH>}} to tensor potencjału elektromagnetycznego.
A zatem nasz Lagrangian wcześniej wspomniany, po dokonaniu operacji napisaną wzorem według schematu {{LinkWzór|27.25}}, przyjmuje postać:
{{CentrujWzór|<MATH>\mathfrak{L}=\overline{\psi}\left[i\hbar c\left(\overset{\leftrightarrow}{\not{\partial}}+i{{q}\over{\hbar }}\not{A}_{\mu}\right)-m_0c^2\right]\psi\;</MATH>|27.26}}
Po rozwinięciu {{LinkWzór|27.26}}, dostajemy ostatecznie bardziej skomplikowane wyrażenie, ale równoważne poprzedniemu, korzystając przy tym z definicji pochodnej obustronnej {{LinkWzór|26.44|Teoria_pola_we_wzorach_Eulera-Lagrange'a}}:
{{CentrujWzór|<MATH>\mathfrak{L}={{i\hbar c}\over{2}}\gamma^{\mu}(\partial_{\mu}\psi)\overline{\psi}-{{i\hbar c}\over{2}}\gamma^{\mu}(\partial_{\mu}\overline{\psi})\psi-cq\gamma^{\mu}A_{\mu}\overline{\psi}\psi-m_0c^2\overline{\psi}\psi\;</MATH>|27.27}}
Następnie obliczmy określone pochodne wyrażenia rozwiniętego Lagrangianu {{LinkWzór|27.27}} potrzebne do wzoru {{LinkWzór|26.23|Teoria pola we wzorach Eulera-Lagrange'a}}, który jest jakoby twierdzeniem Eulera-Lagrange'a, tzn. wyznaczymy pierwszy i drugi wyraz występujący w ostatnio wspomnianym twierdzeniu.
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\partial_{\mu}\left({{\partial\mathfrak{L}}\over{\partial(\partial_{\mu}\overline{\psi})}}\right)=-{{i\hbar c}\over{2}}\gamma^{\mu}\partial_{\mu}\psi\;</MATH>|27.28}}
| 2 = {{CentrujWzór|<MATH>{{\partial\mathfrak{L}}\over{\partial\overline{\psi}}}={{i\hbar c}\over{2}}
\gamma^{\mu}(\partial_{\mu}\psi)-cq\gamma^{\mu}A_{\mu}\psi-m_0c^2\psi\;</MATH>|27.29}}
}}
Po wstawianiu naszych pochodnych do równania Eulegra-Lagrange'a {{LinkWzór|26.23|Teoria_pola_we_wzorach_Eulera-Lagrange'a}}:
{{CentrujWzór|<MATH>(i\hbar c\gamma^{\mu}\partial_{\mu}-m_0c^2)\psi-cq\gamma^{\mu}A_{\mu}\psi=0\;</MATH>|27.30}}
Wykorzystując definicję kontrawariantnego tensora gamma (γ{{Sup|μ}}) {{LinkWzór|26.36|Teoria_pola_we_wzorach_Eulera-Lagrange'a}} i definicję tensora potencjału elektromagnetycznego {{LinkWzór|27.19}}, który jest wektorem (n+1)-wymiarowym potencjału elektromagnetycznego składającej się z potencjału skalarnego (zerowa współrzędna) i wektorowego w elekromagnetyzmie (dalsze {{Formuła|<MATH>n\;</MATH>}} współrzędnych po zerowej), dostajemy pewne równanie różniczkowe, z której będziemy dalej je przekształcać:
{{CentrujWzór|<MATH>i\hbar c\beta{{\partial}\over{\partial ct}}\psi+i\hbar c\beta\alpha\nabla\psi-m_0c^2\psi-q\beta\varphi\psi+cq\beta\alpha \vec{A}\psi=0\;</MATH>|27.31}}
Ostatnie równanie mnożymy lewostronnie przez operator {{Formuła|<MATH>\hat{\beta}\;</MATH>}}, którego kwadrat jest równy jeden (bo {{LinkWzór|25.10|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}), zatem dostajemy:
{{CentrujWzór|<MATH>i\hbar{{\partial\psi}\over{\partial t}}+i\hbar c\alpha\nabla\psi-m_0c^2\beta\psi-q\varphi\psi+ cq\alpha \vec{A}\psi=0\Rightarrow i\hbar{{\partial\psi}\over{\partial t}}=-i\hbar c\alpha\nabla\psi+m_0c^2\beta\psi+\varphi\psi-cq\alpha \vec{A}\psi\;</MATH>|27.32}}
Grupując wyrazy w odpowiedni w sposób w {{LinkWzór|27.32}}, w ten sposób by otrzymać równanie zależne od czasu Diraca.
{{CentrujWzór|<MATH>i\hbar{{\partial\psi}\over{\partial t}}=[c\alpha(\hat{p}-q\vec{A})+m_0c^2\beta]\psi+q\varphi\psi\Rightarrow i\hbar{{\partial\psi}\over{\partial t}}=\left[\alpha(\hat{p}-q\vec{A})+m_0c^2\beta+q\varphi\right]\psi\;</MATH>|27.33}}
A zatem otrzymaliśmy w ostatnim równaniu własnym równanie Diraca {{LinkWzór|25.24|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} z hamiltonianem zdefiniowaną w sposób:
{{CentrujWzór|<MATH>\hat{H}=\alpha(\hat{p}-q\vec{A})+m_0c^2\beta+q\varphi\;</MATH>|27.34}}
Wnioskujemy, że z równania Diraca dla cząstki swobodnej można otrzymać równanie dla cząstki w polu elektromagnetycznej, zastępując według zasady {{LinkWzór|24.9|Relatywistyczna_teoria_kwantów_Kleina-Gordona}} i {{LinkWzór|24.10|Relatywistyczna_teoria_kwantów_Kleina-Gordona}}, zatem gęstość Lagrangianu {{LinkWzór|27.26}} jest poprawnym Lagragianem, które mieliśmy na wejściu od hamiltonianu opisującego stan swobodny, a na wyjściu mamy hamiltonian opisujący stany ogólnie nieswobodne.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
bexecebvgpm469hhvepeldc8rm22p2c
Mechanika kwantowa/Zasada wariacyjna Schwingera
0
17893
558853
470227
2026-10-07T13:18:56Z
Persino
2851
558853
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Kwantowo mechaniczne równanie Diraca zostało otrzymane z pominięciem zasady konstrukcji równania własnego. Nade wszystko, to równanie otrzymaliśmy konstruując gęstość Lagrangianu, aby otrzymać później równanie Klieina-Gordona lub Diraca.
Pierwszym krokiem do mechaniki kwantowej było zastąpienie funkcji pędu i położenia przez ich operatory co to nazywamy '''pierwszą kwantyzacją'''. Metodą podaną przez Schwingera jest zastąpienie funkcji pola Φ i ich pochodne czasowe {{Formuła|<math>\dot{\Phi}\;</MATH>}}(w teorii Kliena-Gordona) lub ich sprzężenia (w teorii Diraca) przez ich odpowiednie operatory, tzn. {{Formuła|<MATH>\hat{\Phi}\;</MATH>}}, {{Formuła|<MATH>\hat{\Pi}\;</MAth>}}, których nazwijmy operatorami "położenia" i "pędu" (lub prędkości), tą procedurę nazywamy '''drugą kwantyzacją'''.
== Przejście między klasycznym i kwantowym Hamiltonianem, a zasada wariacyjna Schwingera ==
Ideom mechaniki kwantowej jest prowadzenie pewnych operatorów w zamian za wielkości skalarne lub wektorowe w mechanice kwantowej, co wykorzystamy w metodzie kwantyzacji Schwingera.
W mechanice teoretycznej wprowadzono tożsamość na nawiasach Poissona {{LinkWzór|8.22|Kanoniczne_metody_mechaniki_klasycznej|Mechanika_teoretyczna|MT}}, dzięki której możemy udowodnić tożsamość, którą przestawimy wzorem {{LinkWzór|8.28|Kanoniczne_metody_mechaniki_klasycznej|Mechanika_teoretyczna|MT}}, które jeszcze raz tutaj powtórzymy:
{{CentrujWzór|<MATH>{{dF}\over{dt}}=\{F,\mathcal{H}\}_P+{{\partial F}\over{\partial t}}\;</MATH>|31.1}}
W mechanice kwantowej jest podobny wzór {{LinkWzór|12.5|Równanie_Ehrenfesta}}, które jest to równania Ehrenfesta, które dla funkcji operatora {{Formuła|<MATH>\hat{F}\;</MATH>}} piszemy jako pochodna zupełna tejże funkcji względem czasu:
{{CentrujWzór|<MATH>{{d\hat{F}}\over{dt}}=-{{i}\over{\hbar}}[\hat{F},\hat{H}]+{{\partial \hat{F}}\over{\partial t}}\;</MATH>|31.2}}
* gdzie: {{Formuła|<MATH>\hat{H}\;</MaTh>}} jest to hamiltonian (operator energii całkowitej układu lub cząstki) według mechaniki kwantowej.
Równania kwantowe propagacji operatora {{Formuła|<MATH>\hat{F}\;</MAth>}} {{LinkWzór|31.2}} można otrzymać z równań klasycznych propagacji funkcji F {{LinkWzór|31.1}} poprzez podstawienie według zasady:
{{CentrujWzór|<MAth>\{F,G\}_P\rightarrow-{{i}\over{\hbar}}[\hat{F},\hat{G}]\;</MATH>|31.3}}
Jeśli mamy lagrangian, to utwórzmy o nie oznaczoną całkę działania według schematu:
{{CentrujWzór|<MATH>S=\int^{t_2}_{t_1}L(q_i,\dot{q}_i)dt\;</MATH>|31.4}}
Napiszmy wariancję S podanej według definicji {{LinkWzór|31.4}} rozpisując ją według przepisu:
{{CentrujWzór|<MATH>\delta S=\int^{t_2}_{t_1}dt\sum^f_{m=1}\left({{\partial {L}}\over{\partial q_m}}\delta q_m+{{{L}}\over{\partial\dot{q}_m}}\delta \dot{q}_m\right)=\int^{t_2}_{t_1}dt\sum^f_{m=1}\left[{{\partial{L}}\over{\partial q_m}}\delta q_m+{{\partial{L}}\over{\partial\dot{q}_m}}{{d}\over{dt}}(\delta q_m)\right]=\;</MATH>{{Br}}<MATH>=\int^{t_2}_{t_1}dt\sum^f_{m=1}\left[{{\partial{L}}\over{\partial q_m}}\delta q_m-\left({{d}\over{dt}}{{\partial{L}}\over{\partial \dot{q}_m}}\right)\delta q_m+{{d}\over{dt}}\left({{\partial{L}}\over{\partial \dot{q}_m}}\delta q_m\right)\right]=\sum^f_{m=1}\left[{{\partial{L}}\over{\partial\dot{q}_m}}\delta q_m\right]^{t_2}_{t_1}+\int^{t_2}_{t_1}dt\sum^f_{m=1}\left[{{\partial{L}}\over{\partial q_m}}-{{d}\over{dt}}{{\partial{L}}\over{\partial\dot{q}_m}}\right]\delta q_m\;</MATH>|31.5}}
Drugi wyraz ostatniej całki znika, bo zakładamy, że prawa fizyki są takie, że jest spełniona zasada najmniejszego działania Eulera-Lagrange'a, ten wyraz przedstawiamy:
{{CentrujWzór|<MATH>{{\partial{L}}\over{\partial q_m}}-{{d}\over{dt}}{{\partial{L}}\over{\partial\dot{q}_m}}=0\;</MATH>|31.6}}
We wzorze {{LinkWzór|31.5}} drugi wyraz znika, bo zachodzi {{LinkWzór|31.6}}, a jego pierwszy wyraz nie znika, bo w mechanice kwantowej są to punkty ruchome, ponieważ w punktach końcowych i początkowych wariacja {{Formuła|<MATH>\delta q_m\;</MATH>}} nie zeruje się nigdy, natomiast w mechanice klasycznej (po pominięciu efektów kwantowych) rozważana wariacja znika, tą naszą zasadę wariacji nazywamy '''kwantową zasadą wariacyjną Schwingera''', to wyrażenie na wariację funkcjonału S przyjmuje dla naszego przypadku postać:
{{CentrujWzór|<MATH>\delta S=G_{q}(t_2)-G_{q}(t_1)\;</MATH>|31.7}}
Ale funkcje {{Formuła|<MATH>G_{q_m}(t)\;</MATH>}} patrząc na równania {{LinkWzór|31.5}}, a także na {{LinkWzór|31.7}}, są w postaci:
{{CentrujWzór|<MATH>G_{q_m}(t)=\sum_m{{\partial L}\over{\partial \dot{q}_m}}\delta q_m=\sum_m p_m\delta q_m\;</MATH>|31.8}}
Policzmy dla dowolnej funkcji F(q) nawias Poissona:
{{CentrujWzór|<MATH>\{F,G_{q_i}\}_P=\sum^f_{i=1}{{\partial F}\over{\partial q_m}}{{\partial G_{q_i}}\over{\partial p_m}}-{{\partial F}\over{\partial p_m}}{{\partial G_{q_i}}\over{\partial q_m}}=\sum^f_{m=1}\delta_{im}{{\partial F}\over{\partial q_m}}\delta q_i={{\partial F}\over{\partial q_i}}\delta q_i=\delta F(q_i)\;</MATH>|31.9}}
Odpowiednikiem nawiasu Poissona według {{Formuła|<MATH>\{F,G_q\}_P\;</MATH>}} w mechanice kwantowej jest operator napisany jako {{Formuła|<MATh>-{{i}\over{\hbar}}[F,\hat{G}_q]\;</MATH>}}, bo {{LinkWzór|31.3}}, zatem możemy napisać na postawie {{LinkWzór|31.9}}, ale kwantowo.
{{CentrujWzór|<MATH>\delta \hat{F}(q_i)=-{{i}\over{\hbar}}[\hat{F},\hat{G}_{q_i}]\;</MATH>|31.10}}
Jeśli {{Formuła|<MATH>F(q_i)=\hat{q}_i\;</MATH>}}, to według {{LinkWzór|31.10}}, korzystając przy okazji jednocześnie z komutacji operatorów współrzędnych położenia i pędu {{LinkWzór|6.6|Komutacja_operatorów_fizycznych}}, możemy przejść do obliczeń na liczbach ogólnych:
{{CentrujWzór|<MATH>\delta \hat{q}_i=-{{i}\over{\hbar}}[\hat{q}_i,\hat{p}_i\delta \hat{q}_i]=-{{i}\over{\hbar}}[\hat{q}_i,\hat{p}_i]\delta \hat{q}_i=-{{i}\over{\hbar}}i\hbar\delta \hat{q}_i=\delta \hat{q}_i\;</MAth>|31.11}}
A więc otrzymaliśmy tożsamość, tzn. doszliśmy do tego, że skrajnie lewa i skrajnie prawa strona wyprowadzenia {{LinkWzór|31.11}} są sobie równe, a więc zasada {{LinkWzór|31.10}} jest poprawnie skonstruowane.
Dla układu cząstek zachodzi operator w mechanice kwantowej (operatorowo):
{{CentrujWzór|<MATH>\hat{G}_q=\sum^f_{i=1}\hat{p}_{j}\delta \hat{q}_{j}\;</MATH>|31.12}}
A więc, jeśli {{Formuła|<MATH>F(p_iq_i)=\hat{q_i}\;</MATH>}}, to wariacja funkcji F napisaną wzorem {{LinkWzór|31.10}} jest napisana według praw mechaniki kwantowej dotyczące komutacji pewnych operatorów według obliczeń:
{{CentrujWzór|<MATH>\delta \hat{q}_i=-{{i}\over{\hbar}}[\hat{q}_i,\sum_j \hat{p}_j\delta \hat{q}_j]=-{{i}\over{\hbar}}\sum_j[\hat{q}_i,\hat{p}_j]\delta \hat{q}_j=-{{i}\over{\hbar}}\sum_j i\hbar\delta_{ij}\delta \hat{q}_j=\delta \hat{q}_i\;</MATH>|31.13}}
Napiszemy sobie funkcję G{{Sub|p}}, która jest zdefiniowana w reprezentacji pędowej w analogii do G{{Sub|q}}, którego to definiujemy w reprezentacji położeniowej podanych w punkcie {{LinkWzór|31.12}}:
{{CentrujWzór|<MATH>\hat{G}_p=-\sum_j \hat{q}_j\delta \hat{p}_j\;</MATH>|31.14}}
A także podamy wzór na wariację operatora {{Formuła|<MATH>\hat{F}(p)\;</MATH>}}, którego definicja jest podana przy pomocy komutatora:
{{CentrujWzór|<MATH>\delta \hat{F}(p)=-{{i}\over{\hbar}}[\hat{F}(p),\hat{G}_p]\;</MATH>|31.15}}
Udowodniając wzór {{LinkWzór|31.15}} przy pomocy nawiasów Poissona według mechaniki klasycznej można wykazać:
{{CentrujWzór|<MATH>\{F,G_{p_i}\}_P=\sum_{m=1}^f\left[{{\partial F}\over{\partial q_m}}{{\partial G_{p_i}}\over{\partial p_m}}-{{\partial F}\over{\partial p_m}}{{\partial G_{p_i}}\over{\partial q_m}}\right]=-\sum^f_{m=1}{{\partial F}\over{\partial p_m}}{{\partial G_{p_i}}\over{\partial q_m}}={{\partial F}\over{\partial p_i}}\delta p_i=\delta F(p_i)\;</MATH>|31.16}}
Zamienimy nawias Poissona na komutator w {{LinkWzór|31.16}}, według zasady {{LinkWzór|31.3}}.
W ten sposób udowodniliśmy na podstawie {{LinkWzór|31.16}}, że wyrażenie {{LinkWzór|31.15}} jest zupełną prawdą.
A teraz zdefiniujmy nowy operator {{Formuła|<MATH>\hat{G}\;</MATH>}}, który można otrzymać z poprzednich operatorów {{Formuła|<MATH>G_q\;</MATH>}}, {{Formuła|<MATH>G_{p}\;</MATH>}} definiując go wedle:
{{CentrujWzór|<MATH>\hat{G}={{1}\over{2}}(\hat{G}_{q}+\hat{G}_{p})={{1}\over{2}}\sum_j(\hat{p}_j\delta q_j-\hat{q}_j\delta p_j)\;</MATH>|31.17}}
Jeśli mamy funkcję F(pq), to jej wariację możemy zdefiniować wedle zasady:
{{CentrujWzór|<MATH>\delta \hat{F}(pq)=-2{{i}\over{\hbar}}[\hat{F}(q,p),\hat{G}]\;</MATH>|31.18}}
Według mechaniki klasycznej na nawiasach Poissona, jeśli zdefiniujemy G {{LinkWzór|31.17}}, czyli jako sumę wyrażeń {{LinkWzór|31.12}} i {{LinkWzór|31.14}}, to można przejść do właściwego sedna dowodu na nawiasach Poissona:
{{CentrujWzór|<MATH>2\{F,G\}_P=2{{1}\over{2}}\left(\{F,G_p\}_P+\{F,G_q\}_P\right)=
\left({{\partial F}\over{\partial q}}\delta q+{{\partial F}\over{\partial p}}\delta p\right)=\delta F(p,q)\;</MATH>|31.19}}
Ze wzoru {{LinkWzór|31.18}} można przejść od wzoru {{LinkWzór|31.19}} poprzez zastąpienie wyrażenia, który jest nawiasem Poissona jej odpowiednikiem kwantowym wedle zasady {{LinkWzór|31.3}}.
Jeśli w mechanice kwantowej zachodzi relacja {{Formuła|<MATH>\hat{F}(p_iq_i)=\hat{q}_i\;</MATH>}}, to możemy napisać:
{{CentrujWzór|<MATH>\delta \hat{q}_i=-2{{i}\over{\hbar}}[\hat{q}_i,{{1}\over{2}}\sum_j\left(\hat{p}_j\delta \hat{q}_j-\hat{q}_j\delta \hat{p}_j\right)]=-{{i}\over{\hbar}}[\hat{q}_i,\sum_j \hat{p}_jdq_j]+{{i}\over{\hbar}}[\hat{q}_i,\sum_j\hat{q}_j\delta \hat{p}_j]=-{{i}\over{\hbar}}\sum_j[\hat{q}_i,\hat{p_j}]\delta \hat{q}_j+{{i}\over{\hbar}}\sum_j[\hat{q}_i,\hat{q}_j]\delta \hat{p}_j=\;</MATH>{{Br}}<MATH>=
-{{i}\over{\hbar}}\sum_j i\hbar\delta_{ij}\delta \hat{q}_j=\delta \hat{q}_i\;</MATH>|31.20}}
Na podstawie dowodu {{LinkWzór|31.20}} udowodniliśmy, że zachodzi tożsamość, według zasady {{LinkWzór|31.18}} otrzymaliśmy czego się spodziewaliśmy.
== Zasada wariacyjna, a pole Kleina-Gordona ==
Znając gęstość Lagrangianu policzymy czemu jest równy operator Schwingera w "pędowej" i "położeniowej" reprezentacji i policzymy komutatory będących kombinacją tychże wielkości według naszej zasady wariacyjnej.
Gęstość Lagrangianu {{Formuła|<MATH>\mathfrak{L}\;</MATH>}} z definicji gęstości lagrangianu dla teorii Kleina-Gordona, która jest napisana w punkcie {{LinkWzór|26.24|Teoria_pola_we_wzorach_Eulera-Lagrange'a}}, co jego definicję tutaj przepiszemy:
{{CentrujWzór|<MATH>\mathfrak{L}={{1}\over{2}}{{\hbar^2}\over{m_0}}\left[{{1}\over{c^2}}\left({{\partial\Phi}\over{\partial t}}\right)^2-\left(\nabla\Phi\right)^2\right]-{{1}\over{2}}m_0c^2\Phi^2\;</MATH>|31.21}}
Napiszmy funkcjonał S, który jest całką z gęstości Lagrangianu {{LinkWzór|31.21}} względem współrzędnych czasoprzestrzennych:
{{CentrujWzór|<MATH>S=\int^{t_2}_{t_1}dtL={{1}\over{c}}\int^{t_2}_{t_1}cdt\int d^3x\mathfrak{L}={{1}\over{2c}}\int^{\tau_2}_{\tau_1}\left\{{{\hbar^2}\over{m_0}}\left[{{1}\over{c^2}}\left({{\partial\Phi}\over{\partial t}}\right)^2-\left(\nabla\Phi\right)^2\right]-m_0c^2\Phi^2\right\}d^4x\;</MATH>|31.22}}
Policzmy wariacje funkcjonału δS według wzoru podanego w punkcie {{LinkWzór|31.22}} wykorzystując przy tym definicję o pochodnej iloczynu:
{{CentrujWzór|<MATH>\delta S={{1}\over{2c}}\int^{t_2}_{t_1}d^4x\left\{{{\hbar^2}\over{m_0}}\left[{{1}\over{c^2}}{{\partial\Phi}\over{\partial t}}{{\partial}\over{\partial t}}(\delta\hat{\Phi})-\nabla\Phi\nabla(\delta\hat{\Phi})\right]-m_0c^2\Phi\delta\hat{\Phi}\right\}\;</MATH>|31.23}}
Wykonajmy częściowe całkowanie drugiego wyrażenia, który jest przestawiony we wzorze wyrażenia w {{LinkWzór|31.23}} poprzez części względem współrzędnych przestrzennych:
{{CentrujWzór|<MATH>\int^{x_2}_{x_1}dx\left[\nabla\Phi\nabla(\delta\hat{\Phi})\right]_x=\int^{x_2}_{x_1}dx{{\partial\Phi}\over{\partial x}}{{\partial}\over{\partial x}}\delta\Phi=\left[{{\partial\Phi}\over{\partial x}}\delta\hat{\Phi}\right]^{x_2}_{x_1}-\int^{x_2}_{x_1}dx{{\partial^2\Phi}\over{\partial x^2}}\delta\hat{\Phi}=-\int^{x_2}_{x_1}dx{{\partial^2\Phi}\over{\partial x^2}}\delta\hat{\Phi}\;</MATH>}}
W powyższych obliczeniach wykorzystano, że wariacja δΦ w punktach końcowych znika względem współrzędnych przestrzennych.
Wykonajmy całkowanie przez części pierwszego wyrażenia w {{LinkWzór|31.23}} względem czasu:
{{CentrujWzór|<MATH>\int^{t_2}_{t_1}cdt\left[{{\partial\Phi}\over{\partial ct}}{{\partial}\over{\partial ct}}(\delta\hat{\Phi})\right]={{1}\over{c}}\left[{{\partial\Phi}\over{\partial t}}\delta\hat{\Phi}\right]^{t_2}_{t_1}-{{1}\over{c}}\int^{t_2}_{t_1}dt{{\partial^2\Phi}\over{\partial t^2}}\delta\hat{\Phi}\;</MATH>}}
Mając dwa ostatnie obliczenia podstawmy je do wzoru {{LinkWzór|31.23}}, to otrzymujemy całkę działania z pewnej funkcji:
{{CentrujWzór|<MATH>\delta S= {{1}\over{2c}}\int d^4x\left[{{\hbar^2}\over{m_0}}\left(\nabla^2\Phi-{{1}\over{c^2}}{{\partial^2\Phi}\over{\partial t^2}}\right)-m_0c^2\Phi\right]\delta\hat{\Phi}+{{\hbar^2}\over{2m_0c^2}}\int d^3x\left[\left({{\partial\Phi}\over{\partial t}}\delta\hat{\Phi}\right)\right]^{t_2}_{t_1}=G_{\Phi}(\tau_2)-G_{\Phi}(\tau_1)\;</MATH>|31.24}}
Pierwszy składnik sumy w {{LinkWzór|31.24}} jest to równanie relatywistyczne mechaniki kwantowej {{LinkWzór|26.30|Teoria_pola_we_wzorach_Eulera-Lagrange'a}} i dlatego według powyższej tożsamości po skorzystaniu z tychże omówień możemy powiedzieć:
{{CentrujWzór|<math>G_{\Phi}={{\hbar^2}\over{2m_0c^2}}\int d^3 x\left({{\partial\Phi}\over{\partial t}}\delta {\Phi}\right)={{\hbar^2}\over{2m_0c^2}}\int d^3x\Pi\delta\Phi\;</MATH>|31.25}}
* gdzie funkcja pola "pędu" określamy jako pochodna cząstkowa funkcji "położenia" względem czasu:
{{CentrujWzór|<MATH>\Pi={{\partial\Phi}\over{\partial t}}\;</MATH>|31.26}}
W reprezentacji pędowej, podobnie jak w {{LinkWzór|31.25}}, definiujemy jako całkę z iloczynu funkcji położenia i wariacji funkcji "pędu" z dokładnością do stałej, którą jest odwrotność prędkości światła:
{{CentrujWzór|<MATH>G_{\Pi}=-{{\hbar^2}\over{2m_0c^2}}\int d^3x\Phi\delta\Pi\;</MATH>|31.27}}
Zastępując funkcję Φ przez operator położenia {{Formuła|<MATH>\hat{\Phi}\;</MATH>}}, a Π przez operator pędu {{Formuła|<MATH>\hat{\Pi}\;</MATH>}}, otrzymujemy wzory na operatory {{Formuła|<MATH>\hat{G}_{\Phi}\;</MATH>}} i {{Formuła|<MATH>\hat{G}_{\Pi}\;</MATH>}}, których definicja jest przestawiona w postaci całkowania względem współrzędnych przestrzennych:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{G}_{\Phi}={{\hbar^2}\over{2m_0c^2}}\int d^3 x\hat{\Pi}\delta\hat{\Phi}\;</MATH>|31.28}}
| 2 = {{CentrujWzór|<MATH>\hat{G}_{\Pi}=-{{\hbar^2}\over{2m_0c^2}}\int d^3 x\hat{\Phi}\delta\hat{\Pi}\;</MATH>|31.29}}
}}
Mając operator Schwingera {{Formuła|<MATH>\hat{G}_{\Phi}\;</MATH>}} możemy napisać, że wariacja operatora {{Formuła|<MATH>\hat{F}\;</MATH>}} jest równa wyrażeniu zbudowanej przy pomocy komutatora w sposób:
{{CentrujWzór|<MATH>\delta\hat{F}=-{{i}\over{\hbar}}[\hat{F},\hat{G}_{\Phi}]\;</MATH>|31.30}}
Policzmy wariancję {{Formuła|<MATH>\delta\hat{\Phi}\;</MATH>}} kładąc {{Formuła|<MATH>\hat{F}(\hat{\Phi})=\hat{\Phi}\;</MATH>}}, wiedząc że rolę współrzędnych spełnia operator {{Formuła|<MATH>\hat{\Phi}\;</MATH>}}, a pędu operator "pędu" {{Formuła|<MATH>\hat{\Pi}\;</MATH>}}, korzystając z faktu {{LinkWzór|31.28}}, a także {{LinkWzór|31.30}}, jeszcze będziemy wykorzystywać fakt, że operatory {{Formuła|<MATH>\hat{\Phi}\;</MATH>}} i {{Formuła|<MATH>\delta\hat{\Phi}\;</MATH>}} są nawzajem przemienne.
{{CentrujWzór|<MATH>\delta\hat{\Phi}(x,t)=-{{i}\over{\hbar}}[\hat{\Phi}(x,t),{{\hbar^2}\over{2m_0c^2}}\int d^3x_1\hat{\Pi}(x_1,t)]\delta\hat{\Phi}(x_1,t)=-{{i\hbar^2}\over{2m_0\hbar c^2}}\int d^3x_1[\hat{\Phi}(x,t),\hat{\Pi}(x_1,t)]\delta\hat{\Phi}(x_1,t)=\;</MATH>{{Br}}<MATH>=-{{i\hbar}\over{2m_0c^2}}\int d^3x_1[\hat{\Phi}(x,t),\hat{\Pi}(x_1,t)]\delta\hat{\Phi}(x_1,t)</MATH>|31.31}}
Równość {{LinkWzór|31.31}} jest spełniona gdy nasza funkcja podcałkowa jest wprost proporcjonalna do delty Diraca pomnożonej przez iloczyn prędkości światła, stałej Plancka i jednostki urojonej.
{{CentrujWzór|<MATH>[\hat{\Phi}(x,t),\hat{\Pi}(x_1,t)]=i{{2m_0c^2}\over{\hbar}}\delta^3(x-x_1)\;</MATH>|31.32}}
Możemy wykorzystać {{LinkWzór|31.32}} i udowodnić stwierdzenie {{LinkWzór|31.31}}, który jest pewnym komutatorem, by dojść potem do tożsamości:
{{CentrujWzór|<MATH>-i{{\hbar}\over{2m_0 c^2}}\int d^3x_1[\hat{\Phi}(x,t),\hat{\Pi}(x_1,t)]\delta\hat{\Phi}(x_1,t)=\int d^3x\delta^3(x-x_1)\delta\hat{\Phi}(x_1,t)=\delta\hat{\Phi}(x_1,t)\;</MATH>|31.33}}
Zdefiniujemy nowy operator {{Formuła|<MATH>\hat{G}\;</MATH>}}, który możemy przestawić jako sumę operatorów w reprezentacji położeniowej {{Formuła|<MATH>\hat{G}_{\Phi}\;</MATH>}} {{LinkWzór|31.28}} i pędowej {{Formuła|<MATH>\hat{G}_{\Pi}\;</MATH>}} {{LinkWzór|31.29}}, jako:
{{CentrujWzór|<MATH>\hat{G}(x,t)={{1}\over{2}}\left(\hat{G}_{\hat{\Phi}}+\hat{G}_{\hat{\Pi}}\right)\;</MATH>|31.34}}
Ogólnie mamy według zasady {{LinkWzór|31.18}} możemy napisać wariację operatora {{Formuła|<MATH>\hat{F}\;</MATH>}}, którego definicja jest:
{{CentrujWzór|<MATH>\delta \hat{F}(\hat{\Phi},\hat{\Pi})=-2{{i}\over{\hbar}}[\hat{\hat{F}},\hat{G}]\;</MATH>|31.35}}
Podstawiając za {{Formuła|<MATH>\hat{G}_{\hat{\Phi}}\;</MATH>}} {{LinkWzór|31.28}} i za {{Formuła|<MATH>\hat{G}_{\hat{\Pi}}\;</MATH>}} {{LinkWzór|31.29}} we {{LinkWzór|31.34}}, a także przyporządkujemy za funkcję {{Formuła|<MATH>\hat{F}(\hat{\Phi},\hat{\Pi})\;</MATH>}} operator położenia, czyli napiszemy jego definicję {{Formuła|<MATH>\hat{F}(\hat{\Phi},\hat{\Pi})=\hat{\Phi}\;</MATH>}}, na podstawie {{LinkWzór|31.35}} możemy dojść do wniosku:
{{CentrujWzór|<MATH>\delta\hat{\Phi}=-{{i\hbar}\over{2m_0 c^2}}\int d^3x[\hat{\Phi}(x,t),\hat{\Phi}(x_1,t)]\delta\hat{\Pi}(x_1,t)-{{i\hbar}\over{2m_0c^2}}\int d^3x[\hat{\Phi}(x,t),\hat{\Pi}(x_1,t)]\delta\hat{\Phi}(x_1,t)\;</MATH>|31.36}}
By tożsamość {{LinkWzór|31.36}} była spełniona, to powinny być spełnione tożsamości na operatorach "położenia", a podobnie zachodzi na operatorach "pędu":
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>[\hat{\Phi}(x,t),\hat{\Phi}(x_1,t)]=0\;</MATH>|31.37}}
| 2 = {{CentrujWzór|<MATH>[\hat{\Pi}(x,t),\hat{\Pi}(x_1,t)]=0\;</MATH>|31.38}}
}}
== Zasada wariacyjna, a pole Diraca ==
Całkę działania w teorii wariacyjnej możemy zapisać dla mechaniki kwantowej Diraca, jeśli skorzystamy przy tym z definicji gęstości Lagrangianu, którego definicji jest podana w punkcie {{LinkWzór|26.43|Teoria pola we wzorach Eulera-Lagrange'a}} dla mechaniki kwantowej Diraca, naszą wspomnianą całkę działania przy pomocy tej ostatniej wielkości możemy przepisać w postaci:
{{CentrujWzór|<MATH>S={{1}\over{c}}\int^{\tau_2}_{\tau_1}d^4x_1\mathfrak{L}={{1}\over{c}}\int^{\tau_2}_{\tau_1}d^4x_1\overline{\psi}\left(i\hbar c\overset{\leftrightarrow}{\not{\partial}}-m_0c^2\right)\psi=\;</MATH>{{Br}}<MATH>={{1}\over{c}}\left[{{i\hbar c}\over{2}}\int^{\tau_2}_{\tau_1}d^4x_1\overline{\psi}\gamma^{\mu}\partial_{\mu}\psi -{{i\hbar c}\over{2}}\int^{\tau_2}_{\tau_1}d^4x_1\psi\gamma^{\mu}\partial_{\mu}\overline{\psi}-\int^{\tau_2}_{\tau_1} d^4x_1m_0c^2\psi\overline{\psi}\right]\;</MATH>|31.39}}
Następnie policzmy wariację działania S względem funkcji własnej równania własnego Diraca zależnego od czasu, czyli funkcji ψ, korzystając z definicji funkcjonału {{LinkWzór|31.39}}:
{{CentrujWzór|<MATH>\delta S_{\psi}={{i\hbar}\over{2}}\int^{\tau_2}_{\tau_1}d^4x_1\overline{\psi}\gamma^{\mu}\partial_{\mu}(\delta\psi)-{{1}\over{c}}\int^{\tau_2}_{\tau_1}d^4 x_1\left({{i\hbar c}\over{2}}\psi\gamma^{\mu}\partial_{\mu}\overline{\psi}+m_0c^2\overline{\psi}\right)\delta\psi\;</MATH>|31.40}}
Pierwszy składnik w {{LinkWzór|31.40}} możemy rozpisać przy wykorzystaniu definicji operatora {{Formuła|<MATH>\gamma^{\mu}\;</MATH>}} {{LinkWzór|26.37|Teoria_pola_we_wzorach_Eulera-Lagrange'a}}.
{{CentrujWzór|<MATH>{{i\hbar}\over{2}}\int^{\tau_2}_{\tau_1}d^4x_1\overline{\psi}\gamma^{\mu}\partial_{\mu}(\delta\psi)=
{{i\hbar}\over{2}}\int^{\tau_2}_{\tau_1}d^4x_1\overline{\psi}\beta{{\partial}\over{\partial t}}(\delta\psi)+{{i\hbar}\over{2}}\int^{\tau_2}_{\tau_1}d^4x_1\overline{\psi}\beta\alpha\nabla(\delta\psi)\;</MATH>|31.41}}
Dokonajmy całkowania pierwszej całki występujące w obliczeniach {{LinkWzór|31.41}} poprzez całkowanie przez części:
{{CentrujWzór|<MATH>{{i\hbar}\over{2}}\int^{\tau_2}_{\tau_1}d^4x_1
\overline{\psi}\beta{{\partial}\over{\partial ct}}(\delta\psi)={{i\hbar }\over{2}}\left[\int d^3x_1\overline{\psi}\hat{\beta}\delta\psi\right]^{\tau_2}_{\tau_1}-{{i\hbar}\over{2}}\int^{\tau_2}_{\tau_1}d^4x_1{{\partial\overline{\psi}}\over{\partial t}}\hat{\beta}(\delta\psi)\;</MATH>|31.42}}
Dokonajmy całkowania drugiej całki występujące w obliczeniach {{LinkWzór|31.41}} przez części, zatem:
{{CentrujWzór|<MATH>{{i\hbar}\over{2}}\int^{\tau_2}_{\tau_1}d^4x\overline{\psi}\hat{\beta}\hat{\alpha}\nabla(\delta\psi)={{i\hbar}\over{2}}\left[\int d^4x_1\overline{\psi}\hat{\beta}\hat{\alpha}\psi\right]^{x_2}_{x_1}-{{i\hbar}\over{2}}\int^{\tau_2}_{\tau_1}d^4x\nabla\overline{\psi}\hat{\beta}\hat{\alpha}\delta\psi=-{{i\hbar }\over{2}}\int^{\tau_2}_{\tau_1}d^4x\nabla\overline{\psi}\hat{\beta}\hat{\alpha}\delta\psi</MATH>|31.43}}
W obliczeniach na liczbach ogólnych wykorzystano, że {{Formuła|<MATH>\delta\Phi\;</MATH>}} znika w punkcie początkowym i końcowym dla krzywych mającej punkty końcowe stałe w przestrzeni, tylko krzywa pomiędzy tymi punktami może inaczej przebiegać.
Wyrażenie {{LinkWzór|31.41}}, przy pomocy obliczeń {{LinkWzór|31.42}} i {{LinkWzór|31.43}}, piszemy:
{{CentrujWzór|<MATH>{{i\hbar}\over{2}}\int_{\tau_1}^{\tau_2}d^4x_1\overline{\psi}\gamma^{\mu}\partial_{\mu}(\delta\psi)={{i\hbar }\over{2}}\left[\int d^3x_1\overline{\psi}\hat{\beta}\delta\psi\right]^{\tau_2}_{\tau_1}-{{i\hbar }\over{2}}\int^{\tau_2}_{\tau_1}d^4x_1{{\partial\overline{\psi}}\over{\partial t}}\hat{\beta}(\delta\psi)-{{i\hbar }\over{2}}\int^{\tau_2}_{\tau_1}d^4x\nabla\overline{\psi}\hat{\beta}\hat{\alpha}\delta\psi=\;</MATH>{{Br}}<MATH>={{i\hbar }\over{2}}\left[\int d^3x_1\overline{\psi}\hat{\beta}\delta\psi\right]^{\tau_2}_{\tau_1}
-{{i\hbar }\over{2}}\int^{\tau_2}_{\tau_1}d^4x\partial_{\mu}\overline{\psi}\gamma^{\mu}\hat{\alpha}\delta\psi\;</MATH>|31.44}}
Następnie wstawiamy wyrażenie {{LinkWzór|31.44}} do wariancji funkcjonału {{LinkWzór|31.40}}, mamy:
{{CentrujWzór|<MATH>\delta S_{\psi}=
{{i\hbar }\over{2}}\left[\int d^3x_1\overline{\psi}\hat{\beta}\delta\psi\right]^{\tau_2}_{\tau_1}
-{{i\hbar }\over{2}}\int^{\tau_2}_{\tau_1}d^4x_1\partial_{\mu}\overline{\psi}\gamma^{\mu}\hat{\alpha}\delta\psi-{{1}\over{c}}\int^{\tau_2}_{\tau_1}d^4x_1\left({{i\hbar c}\over{2}}\psi\gamma^{\mu}\partial_{\mu}\overline{\psi}+m_0c^2\overline{\psi}\right)\delta\psi=\;</MATH>{{Br}}<MATH>={{i\hbar }\over{2}}\left[\int d^3x_1\psi^{+}\delta\psi\right]^{\tau_2}_{\tau_1}-{{1}\over{c}}\int^{\tau_2}_{\tau_1}d^4x_1\left(i\hbar c\psi\gamma^{\mu}\partial_{\mu}\overline{\psi}+m_0c^2\overline{\psi}\delta\psi\right)\;</MATH>|31.45}}
Drugi wyraz w {{LinkWzór|31.45}} jest równy zero według równania Diraca w mechanice kwantowej relatywistycznej {{LinkWzór|26.35|Teoria_pola_we_wzorach_Eulera-Lagrange'a}}, to powiemy, że zachodzą związki na funkcje skalarne na funkcję "pędu" i "położenia":
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATh>G_{\psi}(\tau)={{i\hbar}\over{2}}\int d^3x_1\psi^{+}\delta\psi\;</MATH>|31.46}}
| 2 = {{CentrujWzór|<math>G_{\psi^{+}}(\tau)=-{{i\hbar}\over{2}}\int d^3x_1(\delta\psi^{+})\psi\;</MATH>|31.47}}
}}
Operatorowo zastępując wielkości klasyczne jej wielkościami operatorowymi, tzn. zastępujemy ψ operatorem "pędu" {{Formuła|<MATH>\hat{\psi}\;</MATH>}} a ψ{{Sup|+}} operatorem "pędu" {{Formuła|<MATH>\hat{\psi}^+\;</MATH>}}, wtedy możemy napisać operatory Schwingera, tzn. {{Formuła|<MATH>\hat{G}_{\psi}\;</MATH>}} i {{Formuła|<MATH>\hat{G}_{\psi^+}\;</MATH>}}, które są całkami zbudowanej na operatorach "pedu" i "położenia" względem współrzędnych położenia w czteroprzestrzeni:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{G}_{\psi}(\tau)={{i\hbar}\over{2}}\int d^3x_1\hat{\psi}^{+}\delta\hat{\psi}\;</MATH>|31.48}}
| 2 = {{CentrujWzór|<MATH>\hat{G}_{\psi^{+}}(\tau)=-{{i\hbar}\over{2}}\int d^3x_1(\delta\hat{\psi}^+)\hat{\psi}\;</MATH>|31.49}}
}}
Napiszmy operator Schwingera w następującej postaci przy definicjach odpowiedników operatorowych do {{LinkWzór|31.48}} i {{LinkWzór|31.49}}, zatem:
{{CentrujWzór|<MATH>\hat{G}=\hat{G}_{\psi}+\hat{G}_{\psi^+}\;</MATH>|31.50}}
Napiszmy zasadę wariacyjną w mechanice kwantowej Diraca przy pomocy operatora {{Formuła|<MATH>\hat{F}\;</MATH>}} i definicji operatora {{Formuła|<MATH>\hat{G}\;</MATH>}} podaną w punkcie {{LinkWzór|31.50}}:
{{CentrujWzór|<MATH>\delta \hat{F}(\hat{\psi})=-2{{i}\over{\hbar}}[\hat{F},\hat{G}]\;</MATH>|31.51}}
Korzystając ze wzoru {{LinkWzór|31.18}}, który jest słuszny również tutaj przy definicji {{LinkWzór|31.50}}, i biorąc funkcje {{Formuła|<MATH>\hat{F}=\hat{\psi}_{\alpha}(x,t)\;</MATH>}} korzystając z założenia, że operatory {{Formuła|<MATH>\hat{\psi}\;</MATH>}} oraz {{Formuła|<MATH>\delta \hat{\psi}\;</MATH>}} antykomutują ze sobą, wtedy można napisać z definicji funkcji operatorowej {{Formuła|<MATH>\hat{G}\;</MATH>}} {{LinkWzór|31.50}} wniosek:
{{CentrujWzór|<MATH>\delta\hat{\psi}_{\alpha}(x,t)=-2{{i}\over{\hbar}}[\hat{\psi}_{\alpha}(x,t),\hat{G}]=-2{{i}\over{\hbar}}[\hat{\psi}_{\alpha}(x,t),{{i\hbar}\over{2}}\int d^3x_1\hat{\psi}^+_{\beta}(x_1,t)\delta\hat{\psi}_{\beta}(x_1,t)-{{i\hbar}\over{2}}\int d^3x_1\delta\hat{\psi}^+_{\beta}(x_1,t)\hat{\psi}_{\beta}(x_1,t)]=\;</MATH>{{Br}}<MATH>=\int[\hat{\psi}_{\alpha}(x,t),\hat{\psi}_{\beta}^{+}(x_1,t)\delta\hat{\psi}_{\beta}(x_1,t)]d^3x_1-\int[\hat{\psi}_{\alpha}(x,t),\delta\hat{\psi}^+_{\beta}(x_1,t)\hat{\psi}_{\beta}(x_1,t)]d^3x_1=\;</MATH>{{Br}}<MATH>=\int\left\{\hat{\psi}_{\alpha}(x,t)\hat{\psi}_{\beta}^{+}(x_1,t)\right\}\delta\hat{\psi}_{\beta}d^2x_1+
\int\{\hat{\psi}_{\alpha}(x,t),\hat{\psi}_{\beta}(x_1,t)\}d^3x_1\delta\hat{\psi}^+_{\beta}(x_1,t)
\;</MATH>|31.52}}
We obliczeniach {{LinkWzór|31.52}} zauważamy, że zachodzą wnioski antykomutacyjne na operatorach "pędu" i "położenia", to przepisy tychże antykomutatorów są:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\{\hat{\psi}_{\alpha}(x,t),\hat{\psi}_{\beta}^{+}(x_1,t)\}=\delta_{\alpha\beta}\delta^3(x-x_1)\;</MATH>|31.53|Obramuj}}
| 2 = {{CentrujWzór|<MATH>\{\hat{\psi}_{\alpha}(x,t),\hat{\psi}_{\beta}(x_1,t)\}=0\;</MATH>|31.54|Obramuj}}
}}
Wtedy wyrażenie {{LinkWzór|31.52}} przy pomocy {{LinkWzór|31.53}} możemy napisać w celu dowodu tego ostatniego, że tak jest:
{{CentrujWzór|<MATH>\delta\hat{\psi}_{\alpha}(x,t)=\int\left\{\hat{\psi}_{\alpha},\hat{\psi}_{\beta}^{+}(x_1,t)\right\}\delta\hat{\psi}_{\beta}+\int\{\hat{\psi}_{\alpha}(x,t),\hat{\psi}_{\beta}(x_1,t)\}d^3x_1\delta\hat{\psi}^+_{\beta}(x_1,t)=\delta_{\alpha\beta}\delta\hat{\psi}_{\beta}+\int 0d^3x_1\delta\hat{\psi}^+_{\beta}(x_1,t)=\delta\hat{\psi}(x,t)\;</MATH>|31.55}}
Dalej, gdy obierzemy inny operator {{Formuła|<MATH>\hat{F}_{\alpha}=\hat{\psi}^+\;</MATH>}}, możemy dojść do następnych równań przy założeniu, że poniższe wyrażenie jest tożsamością:
{{CentrujWzór|<MATH>\delta\hat{\psi}^+_{\alpha}(x,t)=-2{{i}\over{\hbar}}[\hat{\psi}^+_{\alpha}(x,t),\hat{G}]=-2{{i}\over{\hbar}}[\hat{\psi}^+_{\alpha}(x,t),{{i\hbar}\over{2}}\int d^3x_1\hat{\psi}^+_{\beta}(x_1,t)\delta\hat{\psi}_{\beta}(x_1,t)-{{i\hbar}\over{2}}\int d^3x_1\delta\hat{\psi}^+_{\beta}(x_1,t)\delta\hat{\psi}_{\beta}(x_1,t)\hat{\psi}_{\beta}(x_1,t)]=\;</MATH>{{Br}}<MATH>=\int[\hat{\psi}^+_{\alpha}(x,t),\hat{\psi}_{\beta}^{+}(x_1,t)\delta\hat{\psi}_{\beta}(x_1,t)]d^3x_1-\int[\hat{\psi}^+_{\alpha}(x,t),\delta\hat{\psi}^+_{\beta}(x_1,t)\hat{\psi}_{\beta}(x_1,t)]d^3x_1=\;</MATH>{{Br}}<MATH>=\int\left\{\hat{\psi}^+_{\alpha}(x,t),\hat{\psi}_{\beta}^{+}(x_1,t)\right\}\delta\hat{\psi}_{\beta}d^2x_1+\int\{\hat{\psi}_{\alpha}(x,t),\hat{\psi}^+_{\beta}(x_1,t)\}d^3x_1\delta\hat{\psi}^+_{\beta}(x_1,t)
\;</MATH>|31.56}}
W obliczeniach {{LinkWzór|31.56}} nalezy wykorzystać warunek {{LinkWzór|31.54}} i na jej podstawie wynika też tożsamość:
{{CentrujWzór|<MATH>\left\{\hat{\psi}^+_{\alpha}(x,t),\hat{\psi}_{\beta}^{+}(x_1,t)\right\}=0\;</MATH>|31.57|Obramuj}}
== Własności operatorów kreacji i anihilacji, a pole Kleina-Gordona ==
Napiszmy rozwiązanie równania pola Kleina-Gordona i jego sprzężenie zespolone, przepisy ich są:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\Phi(x,t)=e^{i\vec{k}\vec{r}-i\omega_k t}\;</MATH>|31.58}}
| 2 = {{CentrujWzór|<MATH>\Phi^{*}(x,t)=e^{-i\vec{k}\vec{r}+i\omega_k t}\;</MATH>|31.59}}
}}
Wstawiamy równanie {{LinkWzór|31.58}} do równania pola Kleina-Gordona {{LinkWzór|26.30|Teoria_pola_we_wzorach_Eulera-Lagrange'a}} dla przestrzeni trójwymiarowej, otrzymujemy:
{{CentrujWzór|<MATH>-{{1}\over{c^2}}\omega^2+k^2=-{{m_0^2c^2}\over{\hbar^2}}\Rightarrow
\omega_k^2=k^2c^2+{{m_0^2c^2}\over{\hbar^2}}\;</MATH>|31.60}}
Założymy, że cząstka znajduje się w sześcianie o długości jakiegoś jednego bogu równym L.
Warunkami brzegowymi dla naszego przypadku są to przepisy zapisane jako:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\Phi(0,y,z,t)=\Phi(L,y,z,t)\;</MATH>|31.61}}
| 2 = {{CentrujWzór|<MATH>\Phi(x,0,z,t)=\Phi(x,L,z,t)\;</MATH>|31.62}}
| 3 = {{CentrujWzór|<MATH>\Phi(x,y,0,t)=\Phi(x,y,L,t)\;</MATH>|31.63}}
}}
Wszystkie te trzy warunki tzn. {{LinkWzór|31.61}}, {{LinkWzór|31.62}} oraz {{LinkWzór|31.63}} sprowadzają się do jednego równania dla współrzędnej j-tej wektora położenia dla j=1,2,3:
{{CentrujWzór|<MATH>e^0=e^{ik_jL}\Rightarrow 0=k_jL-2\pi n_j\Rightarrow k_j={{2\pi}\over{L}}n_j\;</MATH>|31.64}}
Wektor falowy, na podstawie obliczeń {{LinkWzór|31.64}}, możemy przestawić w postaci ogólnego wzoru przy pomocy trójki liczb całkowitych podanej też w tej linijce:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\vec{k}={{2\pi}\over{L}}[n_1,n_2,n_3]\;</MATH>|31.65}}
| 2 = {{CentrujWzór|<MATH>n_j=0,\pm 1,\pm 2,\pm 3,...\;</MATH>|31.66}}
}}
Rozwiązaniem równania Kleina-Gordona {{LinkWzór|26.30|Teoria_pola_we_wzorach_Eulera-Lagrange'a}}, możemy napisać w bazie na funkcjach {{Formuła|<MATH>\Phi(\vec r,t)\;</MATH>}} {{LinkWzór|31.71}}, {{Formuła|<MATH>\Phi^{*}(\vec r,t)\;</MATH>}} {{LinkWzór|31.72}}, przyjmuje postać:
{{CentrujWzór|<MATH>\Phi(\vec{r},t)=\sum_k\left({{\hbar\omega_k L^3}\over{m_0c^2}}\right)^{-{{1}\over{2}}}\left(b_k^-\exp(i\vec{k}\vec{r}-i\omega_k t)+b_k^+\exp(-i\vec{k}\vec{r}+i\omega_k t)\right)\;</MATH>|31.67}}
Korzystając ze wzoru na "kwantowy pęd" {{LinkWzór|31.26}}, co możemy napisać wzór na "pęd" w zależności od położenia przestrzennego i czasu różniczkując {{LinkWzór|31.67}} względem czasu, stąd:
{{CentrujWzór|<MATH>\Pi(\vec{r},t)=\dot{\Phi}(\vec{r},t)=-i\sum_k\left({{m_0c^2\omega_k}\over{\hbar L^3}}\right)^{{{1}\over{2}}}\left(b_k^-\exp(i\vec{k}\vec{r}-i\omega_k t)-b_k^+\exp(-i\vec{k}\vec{r}+i\omega_k t)\right)\;</MATH>|31.68}}
W {{LinkWzór|31.67}} i {{LinkWzór|31.68}} uważaliśmy za pewne funkcje {{Formuła|<MATH>\Phi(\vec{r},t)\;</MATH>}} i {{Formuła|<MATH>\dot{\Phi}(\vec{r},t)\;</MATH>}} jako pewne funkcje skalarne zależne od współrzędnych w czteroprzestrzeni, a teraz niech te funkcje uważajmy jako operatory, tzn.: jako {{Formuła|<MATH>\hat{\Phi}(\vec{r},t)\;</MATH>}} oraz {{Formuła|<MATH>\hat{\Pi}(\vec{r},t)\;</MATH>}}, którego definicję podamy najpierw dla operatora {{Formuła|<MATH>\hat{\Phi}(\vec{r},t)\;</math>}} zapisanej według tożsamości {{LinkWzór|31.67}} zastępując przy okazji b{{Sup|+}} i b{{Sup|-}} przez operatory kreacji i anihilacji, i w ten sposób dostajemy wniosek:
{{CentrujWzór|<MATH>\hat{\Phi}(\vec{r},t)=\sum_k\left({{\hbar\omega_k L^3}\over{m_0c^2}}\right)^{-{{1}\over{2}}}\left(\hat{b}_k^-\exp(i\vec{k}\vec{r}-i\omega_k t)+\hat{b}_k^+\exp(-i\vec{k}\vec{r}+i\omega_k t)\right)\;</MATH>|31.69}}
A później dla operatora {{Formuła|<MATH>\hat{\Pi}(\vec{r},t)\;</MATH>}} zapisanej według tożsamości {{LinkWzór|31.68}} zastępując w nim przy okazji b{{Sup|+}} i b{{Sup|-}} przez operatory kreacji i anihilacji by otrzymać:
{{CentrujWzór|<MATH>\hat{\Pi}(\vec{r},t)=-i\sum_k\left({{m_0c^2\omega_k}\over{\hbar L^3}}\right)^{{{1}\over{2}}}\left(\hat{b}_k^-\exp(i\vec{k}\vec{r}-i\omega_k t)-\hat{b}_k^+\exp(-i\vec{k}\vec{r}+i\omega_k t)\right)\;</MATH>|31.70}}
Operator {{LinkWzór|31.69}} mnożymy przez {{Formuła|<MATH>\omega_k\;</MATH>}}, a {{LinkWzór|31.70}} przez jednostkę urojoną {{Formuła|<MATH>i\;</MATH>}}, następnie dodajemy i odejmujemy je od siebie, w ten sposób otrzymujemy następujący układ równań:
{{CentrujWzór|<math>\begin{cases}\omega_t\hat{\Phi}(\vec{r},t)+i\hat{\Pi}(\vec{r},t)=\left({{4m_0c^2\omega_k}\over{L^3\hbar}}\right)^{{{1}\over{2}}}\sum_k\hat{b}_k^-\exp(ikx-i\omega_k t)\\
\omega_t\hat{\Phi}(\vec{r},t)-i\hat{\Pi}(\vec{r},t)=\left({{4m_0c^2\omega_k}\over{\hbar L^3}}\right)^{{{1}\over{2}}}\sum_k\hat{b}^{+}_k\exp(-i\vec{k}\vec{r}+i\omega_k)
\end{cases}\;</MATH>|31.71}}
Pomnóżmy pierwszą równość układu równań {{LinkWzór|31.71}} przez: {{Formuła|<MATH>\exp(-i\vec{k}^'\vec{r}+i\omega_t)\;</MATH>}}, a drugą przez: {{Formuła|<MATH>\exp(-i\vec{k}^'\vec{r}+i\omega_t)\;</MATH>}}, dalej scałkujemy te dwa równania otrzymując:
{{CentrujWzór|<MATH>\begin{cases}\int_{\vec r\in L^3}d^3\vec r\exp(-i\vec{k}^'\vec{r}+i\omega_{k^'} t)\left(\omega_k\hat{\Phi}(\vec{r},t)+i\hat{\Pi}(\vec{r},t)\right)=\left({{4m_0c^2L^3\omega_k}\over{\hbar}}\right)^{{{1}\over{2}}}\hat{b}_k^-\\
\int_{\vec r\in L^3}d^3\vec r\exp(i\vec{k}^'\vec{r}-i\omega_{k^'} t)\left(\omega_k\hat{\Phi}(\vec{r},t)-i\hat{\Pi}(\vec{r},t)\right)=\left({{4L^3 m_0c^2\omega_k}\over{\hbar}}\right)^{{{1}\over{2}}}\hat{b}^{+}_k
\end{cases}\;</MATH>|31.72}}
Przy obliczeniach {{LinkWzór|31.72}} w celu wyprowadzenie wyrażeń na operatory kreacji i anihilacji skorzystaliśmy z własności:
{{CentrujWzór|<MATH>\int_{\vec r\in L^3}d^3\vec r \exp(i(k^'_j-k_j)x_j)dx=L^3\delta_{k^'k}\;</MATH>}}
Z układu równań {{LinkWzór|31.72}} można otrzymać układ równań na operatory kreacji {{Formuła|<MATH>\hat{b}^+\;</MATH>}} i anihilacji {{Formuła|<MATH>\hat{b}^-\;</MATH>}} w zależności od operatorów "położenia" {{Formuła|<MATH>\hat{\Phi}\;,</MATH>}} i "pędu" {{Formuła|<MATH>\hat{\Pi}\;</MATH>}} w postaci układu dwóch równań:
{{CentrujWzór|<MATH>\begin{cases}\hat{b}_k^-=({{4m_0c^2L^3\omega_k}\over{\hbar}})^{-{{1}\over{2}}}\int_{\vec r\in L^3}d^3\vec r\exp(-i\vec{k}\vec{r}+i\omega_k t)\left(\omega_k\hat{\Phi}(\vec{r},t)+i\hat{\Pi}(\vec{r},t)\right)\\
\hat{b}^{+}_{k}=({{4m_0c^2L^3\omega_k}\over{\hbar}})^{-{{1}\over{2}}}\int_{\vec r\in L^3}d^3\vec r\exp(i\vec{k}\vec{r}-i\omega_k t)\left(\omega_k\hat{\Phi}(\vec{r},t)-i\hat{\Pi}(\vec{r},t)\right)\end{cases}\;</MATH>|31.73}}
Policzmy teraz komutator {{Formuła|<MATH>[\hat{b}_k^-,\hat{b}^+_{k'}]\;</MATH>}} korzystając z układu równań {{LinkWzór|31.73}}:
{{CentrujWzór|<Math>[\hat{b}_k^-,\hat{b}^{+}_{k'}]={{\hbar}\over{4m_0c^2 L^3}}\left(\omega_k\omega_{k'}\right)^{-{{1}\over{2}}}\int_{\vec r\in L^3}\int_{\vec r^'\in L^3} d^2\vec{r} d^2\vec{r}^' \exp(i(\vec{k}^'-\vec{k})\vec{r})\exp(i(\omega_k-\omega_{k'})t)\cdot\;</MATH>{{Br}}<MATH>\cdot[\omega_k\hat{\Phi}(\vec{r},t)+i\hat{\Pi}(\vec{r},t),\omega_{k^'}\hat{\Phi}(\vec{r}^',t)-i\hat{\Pi}(\vec{r}^',t)]\;</MATH>|31.74}}
Wyznaczmy czemu jest równy komutator występujących we wyrażeniu {{LinkWzór|31.74}}, który przepiszemy i rozwiniemy poniżej:
{{CentrujWzór|<MATh>[\omega_k\hat{\Phi}(\vec{r},t)+i\hat{\Pi}(\vec{r},t),\omega_{k^'}\hat{\Phi}(\vec{r}^',t)-i\hat{\Pi}(\vec{r}^',t)]=\omega_k\omega_{k^'}[\hat{\Phi}(\vec{r},t),\hat{\Phi}(\vec{r}^',t)]-i\omega_k[\hat{\Phi}(\vec{r},t),\hat{\Pi}(\vec{r}^',t)]+i\omega_{k^{'}}[\hat{\Pi}(\vec{r},t),\hat{\Phi}(\vec{r}^',t)]+\;</MATH>{{Br}}<MATH>+[\hat{\Pi}(\vec{r},t),\hat{\Pi}(\vec{r}^',t)]=-i(\omega_k+\omega_{k^'})[\hat{\Phi}(\vec{r},t),\hat{\Pi}(\vec{r}^',t)]</MATH>|31.75}}
Wyrażenie {{LinkWzór|31.74}}, które chcemy policzyć, przy pomocy obliczeń pomocniczych zapisanych w punkcie {{LinkWzór|31.75}}, do którego wykorzystamy tożsamości komutacyjne {{LinkWzór|31.32}}, {{LinkWzór|31.37}} i {{LinkWzór|31.38}}, by potem policzyć komutator na operatorach anihilacji i kreacji:
{{CentrujWzór|<MATH>[\hat{b}_k^-,\hat{b}^{+}_{k^'}]=-i{{\hbar}\over{4m_0c^2L^3}}(\omega_k\omega_{k^'})^{-{{1}\over{2}}}(\omega_k+\omega_{k^'})\exp(i(\omega_k-\omega_{k^'})t)\cdot\int\int d^3\vec{r}d^3\vec{r}^'\exp(i(\vec{k}'-\vec{k})\vec{r})[\hat{\Phi}(\vec{r},t),\hat{\Pi}(\vec{r}^',t)]=\;</MATH>{{Br}}<MATH>=-i{{\hbar}\over{4m_0c^2L^3}}(\omega_k\omega_{k^'})^{-{{1}\over{2}}}(\omega_k+\omega_{k^'})\exp(i(\omega_k-\omega_{k^'})t)\cdot\int \int d^3\vec{r}d^3\vec r^'\exp(i(\vec{k}'-\vec{k})\vec{r})i{{2m_0c^2}\over{\hbar}}\delta^3(\vec{r}-\vec{r}^')=\;</MATH>{{Br}}
<MATH>={{1}\over{2L^3}}(\omega_k\omega_{k^'})^{-{{1}\over{2}}}(\omega_k+\omega_{k^'})\exp(i(\omega_k-\omega_{k^'})t)\int d^3\vec{r}\exp (i(\vec{k}^'-\vec{k})\vec{r})={{1}\over{2L^3}}(\omega_k\omega_{k^'})^{-{{1}\over{2}}}(\omega_k+\omega_{k^'})\exp(i(\omega_k-\omega_{k^'})t)L^3\delta_{k^{'}k}\;</MATH>|31.76}}
Gdy założymy w obliczeniach {{LinkWzór|31.76}}, że mamy {{Formuła|<MATH>k\neq k^'\;</MATH>}}, to otrzymujemy tożsamość:
{{CentrujWzór|<MATH>[\hat{b}_k^-,\hat{b}^+_{k^'}]=0\;</MATH>|31.77}}
Ale gdy założymy w obliczeniach {{LinkWzór|31.76}}, że zachodzi: {{Formuła|<MATH>k=k^{'}\;</MATH>}}, to na pewno otrzymujemy:
{{CentrujWzór|<math>[\hat{b}_k^-,\hat{b}^{+}_k]={{1}\over{2L^3}}\omega_k^{-1} 2\omega_k L^3=1\;</MATH>|31.78}}
Udowodniliśmy na podstawie dwóch otrzymanych równań, że ogólnie równanie łączące dwie tożsamości zapisanej powyżej, tzn. {{LinkWzór|31.77}} i {{LinkWzór|31.78}} dla dowolnego k i k', można zapisać według ogólnej zasady:
{{CentrujWzór|<MATH>[\hat{b}_k^-,\hat{b}^{+}_{k^{'}}]=\delta_{kk^'}\;</MATH>|31.79}}
Następnie wyznaczmy komutator oparty tylko na operatorach anihilacji przy wykorzystaniu wzorów {{LinkWzór|31.73}}:
{{CentrujWzór|<MATH>[\hat{b}_k^-,\hat{b}^-_{k^{'}}]={{\hbar}\over{4m_0c^2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\int\int d^3\vec{r} d^3\vec{r}^'\exp(-i(\vec{k}\vec{r}-i\vec{k}^{'}\vec{r}^')\exp(i(\omega_k+\omega_{k^'})t)\cdot[\omega_k\hat{\Phi}(\vec{r},t)+i\hat{\Pi},\omega_{k^'}\hat{\Phi}(\vec{r}^',t)+\;</MATH>{{Br}}<MATH>+i\hat{\Pi}(\vec{r}^',t)]={{\hbar}\over{4m_0c^2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\int\int d^3\vec{r} d^3\vec{r}^'\exp(-i\vec{k}\vec{r}-i\vec{k}^{'}\vec{r}^')\exp(i\omega_kt+i\omega_{k^'}t)\cdot\;</MATH>{{Br}}
<MATH>\cdot\Bigg\{\omega_k\omega_{k^'}[\hat{\Phi}(\vec r,t),\hat{\Phi}(\vec r^',t)]+\omega_k i[\hat{\Phi}(\vec{r},t),\hat{\Pi}(\vec{r}^',t)]+i\omega_{k^'}[\hat{\Pi}(\vec{r},t),\hat{\Phi}(\vec{r}^',t)]-[\hat{\Pi}(\vec{r},t),\hat{\Pi}(\vec{r}^',t)]\Bigg\}=\;</MATH>{{Br}}
<MATH>={{\hbar}\over{4m_0c^2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\int\int d^3\vec{r} d^3\vec{r}^'\exp(-i\vec{k}\vec{r}-i\vec{k}^{'}\vec{r}^')\exp(i\omega_kt+i\omega_{k^'}t)\Bigg\{\omega_k i[\hat{\Phi}(\vec{r},t),\hat{\Pi}(\vec{r}^',t)]+\;</MATH>{{Br}}<MATH>+i\omega_{k^'}[\hat{\Pi}(\vec{r},t),\hat{\Phi}(\vec{r}^',t)]\Bigg\}={{\hbar}\over{4m_0c^2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\int\int d^3\vec{r} d^3\vec{r}^'\exp(-i\vec{k}\vec{r}-i\vec{k}^{'}\vec{r}^')\exp(i\omega_kt+i\omega_{k^'}t)\cdot\;</MATH>{{Br}}<MATH>\cdot\left\{\omega_k ii{{2m_0c^2}\over{\hbar}}\delta^3(\vec{r}-\vec{r}^')-ii{{2m_0c^2}\over{\hbar}}\omega_{k^'}\delta^3(\vec{r}-\vec{r}^') \right\}={{1}\over{2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\int d^3\vec{r}\exp(-i(\vec{k}+\vec{k}^')\vec{r})\exp(i(\omega_k +\omega_{k^'})t)\cdot\;</MATH>{{Br}}<MATH>\cdot(\omega_{k^'}-\omega_k)={{1}\over{2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\exp(i(\omega_k +\omega_{k^'})t)(\omega_{k^'}-\omega_k)\int\exp(-i(\vec{k}+\vec{k}^')\vec{r})d^3\vec r=0\;</MATH>|31.80}}
W obliczeniach w {{LinkWzór|31.80}} wyznaczyliśmy komutator, którego definicja jest zapisana przy pomocy operatorów kreacji i anihilacji dla bozonów:
{{CentrujWzór|<MATH>[\hat{b}_k^-,\hat{b}^-_{k^{'}}]=0\;</MATH>|31.81}}
Następnie krokiem jest wyznaczenie wyrażenia oparte tylko na operatorach kreacji:
{{CentrujWzór|<MATH>[\hat{b}^+_k,\hat{b}^+_{k^{'}}]={{\hbar}\over{4m_0c^2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\int\int d^3\vec{r} d^3\vec{r}^'\exp(i\vec{k}\vec{r}+i\vec{k}^{'}\vec{r}^')\exp(-i(\omega_k+\omega_{k^'})t)[\omega_k\hat{\Phi}(\vec{r},t)-i\hat{\Pi}(\vec{r},t),\omega_{k^'}\hat{\Phi}(\vec{r}^',t)+\;</MATH>{{Br}}<MATH>-i\hat{\Pi}(\vec{r}^',t)]={{\hbar}\over{4m_0c^2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\int\int d^3\vec{r}d^3\vec{r}^'\exp(i\vec{k}\vec{r}+i\vec{k}^{'}\vec{r}^')\exp(-i\omega_kt-i\omega_{k^'}t)\cdot\;</MATH>{{Br}}<MATH>\cdot\Bigg\{\omega_k\omega_{k^'}[\hat{\Phi}(\vec{r},t),\hat{\Phi}(\vec{r}^',t)]-\omega_k i[\hat{\Phi}(\vec{r},t),\hat{\Pi}(\vec{r}^',t)]-i\omega_{k^'}[\hat{\Pi}(\vec{r},t),\hat{\Phi}(\vec{r}^',t)]+i[\hat{\Phi}(\vec{r},t),\hat{\Phi}(\vec{r}^',t)]\Bigg\}=\;</MATH>{{Br}}<MATH>={{\hbar}\over{4m_0c^2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\int\int d^3\vec{r} d^3\vec{r}^'\exp(i\vec{k}\vec{r}+i\vec{k}^{'}\vec{r}^')\exp(-i\omega_kt-i\omega_{k^'}t)\cdot\Big\{-\omega_k i[\hat{\Phi}(\vec{r},t),\hat{\Pi}(\vec{r}^',t)]+\;</MATH>{{Br}}<MATH>-i\omega_{k^'}[\hat{\Pi}(\vec{r},t),\hat{\Phi}(\vec{r}^',t)]\Big\}={{\hbar}\over{4m_0c^2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\int\int d^3\vec{r}d^3\vec{r}^'\exp(i\vec{k}\vec{r}+i\vec{k}^{'}\vec{r}^')\exp(-i\omega_kt-i\omega_{k^'}t)\cdot\;</MATH>{{Br}}<MATH>\cdot\left\{-\omega_k ii{{2m_0c^2}\over{\hbar}}\delta(\vec{r}-\vec{r}^')+ii{{2m_0c^2}\over{\hbar}}\omega_{k^'}\delta^3(\vec{r}-\vec{r}^') \right\}={{1}\over{2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\int d^3\vec{r}\exp(i(\vec{k}+\vec{k}^')\vec r)\exp(-i(\omega_k +\omega_{k^'})t)\cdot\;</MATH>{{Br}}<MATH>\cdot(\omega_k-\omega_{k^'})={{1}\over{2L^3}}\left(\omega_k\omega_{k^'}\right)^{-{{1}\over{2}}}\exp(-i(\omega_k +\omega_{k^'})t)(\omega_k-\omega_{k^'})\int\exp(i(\vec{k}+\vec{k}^')\vec{r})d^3\vec r=0\;</MATH>|31.82}}
W obliczeniach w {{LinkWzór|31.82}} wyznaczyliśmy komutator operatorów kreacji według przepisu:
{{CentrujWzór|<MATH>[\hat{b}^+_k,\hat{b}^+_{k^{'}}]=0\;</MATH>|31.83}}
W tym rozdziale otrzymaliśmy ogólne prawa komutacyjne operatorów kreacji i anihilacji dla bozonów, które podaliśmy z dowodami, ale innym sposobami niż w rozdziale: {{sr|p=Wprowadzenie do interpretacji fizycznych operatorów|#Reprezentacja liczby obsadzeń-operatory kreacji i anihilacji bozonów}}.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
1sjfk9pwqhmdbi6drby8i39bxu8tl1u
Mechanika kwantowa/Funkcje Greena w teorii kwantów
0
17929
558850
470224
2026-10-07T12:59:31Z
Persino
2851
558850
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Tutaj zapoznamy się z zastosowaniem funkcji Greena w celu wyliczenia funkcji falowej rządzącej danym problemem fizycznym, w tym celu należy przed wyznaczeniem wyznaczyć funkcję Greena. Tutaj rozważamy problem Schrödingera i Klieina-Gordona.
== Funkcje Greena dla hamiltonianu Schrödingera ==
Rozważmy równanie własne operatora energii całkowitej dla przestrzeni trójwymiarowej, w której występuje kwadrat operatora ∇ ten operator mnożenia energii potencjalnej oraz funkcja i wartość własna operatora całkowitej energii całkowitej, piszemy przez równanie:
{{CentrujWzór|<MATH>\left(-{{\hbar^2}\over{2m}}\nabla^2+V(\vec{r})\right)\psi(\vec{r})=E\psi(\vec{r})\;</MATH>|28.1}}
Pomnóżmy równanie własne {{LinkWzór|28.1}} przez stałą, będącą kombinacją stałych fizycznych {{Formuła|<MATH>-{{2m}\over{\hbar^2}}\;</MATH>}}, aby stało się ono prostsze w dalszych obliczeniach, można napisać:
{{CentrujWzór|<MATH>\left(\nabla^2-{{2m V(\vec{r})}\over{\hbar^2}}\right)\psi(\vec{r})=-{{2mE}\over{\hbar^2}}\psi(\vec{r})\;</MATH>|28.2}}
Połóżmy występujące w równaniu {{LinkWzór|28.2}} na funkcję {{Formuła|<MATH>V(\vec{r})\;</MATH>}} i wartość własną E definicję pewnych stałych, w taki sposób, by nasze końcowe równanie nie zależało od masy cząstki i od stałych fizycznych, których definicję tych stałych podamy poniżej:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>E={{\hbar^2k_0^2}\over{2m}}\geq 0\;</MATH>|28.3}}
| 2 = {{CentrujWzór|<MATH>V(\vec{r})={{\hbar}\over{2m}}U(\vec{r})\;</MATH>|28.4}}
}}
Na podstawie {{LinkWzór|28.3}} (definicja stałej E) i {{LinkWzór|28.4}} (definicja {{Formuła|<MATH>V(\vec{r})\;</MATH>}}), wzór {{LinkWzór|28.2}} przybiera inną równoważną postać:
{{CentrujWzór|<MATH>\left(\nabla^2-U(\vec{r})\right)\psi(\vec{r})=-k_0^2\psi\;</MATH>|28.5}}
Widzimy, że wyrażenie {{LinkWzór|28.5}} spełnia kryteria, które na nią wcześniej nałożyliśmy w postaci pewnych znaczeń.
W równaniu {{LinkWzór|28.5}} przenieśmy wyraz po prawej stronie na lewą, a drugi wyraz z lewej strony na jej prawą, otrzymujemy:
{{CentrujWzór|<MATH>\left(\nabla^2+k_0^2\right)\psi(\vec{r})=U(\vec{r})\psi(\vec{r})\;</MATH>|28.6}}
Porównując równanie {{LinkWzór|28.6}} z {{LinkWzór|20.1|Funkcje_Greena|Metody_matematyczne_fizyki|MMF}}, otrzymujemy wzory na dwie tożsamości:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>K(\vec{r})=U(\vec{r})\psi(\vec{r})\;</MATH>|28.7}}
| 2 = {{CentrujWzór|<MATH>\hat{O}=\nabla^2+k_0^2\;</MATH>|28.8}}
}}
Według mechaniki kwantowej i rachunku zaburzeń całkowita funkcja własna operatora energii jest równa sumie funkcji własnej stanu niezaburzonego (to jest funkcja własna operatora energii kinetycznej) i stanu zaburzonego i zapisujemy ją w sposób:
{{CentrujWzór|<MATH>\psi(\vec{r})=\psi_0(\vec{r})+\psi_1(\vec{r})\;</MATH>|28.9}}
Jeśli zaburzenie jest małe, to w niektórych przypadkach możemy zapisać:
{{CentrujWzór|<MATH>\psi(\vec{r})\simeq \psi_0(\vec{r})\;</MATH>|28.10}}
Mamy sobie równanie {{LinkWzór|28.6}}, które możemy porównać ze wzorem {{LinkWzór|20.1|Funkcje_Greena|Metody_matematyczne_fizyki|MMF}}, stąd dochodzimy do wniosku {{LinkWzór|28.7}}, wykorzystując przy tym fakt, że funkcja własna operatora energii jest {{LinkWzór|7.118|Postulat_drugi_mechaniki_kwantowej}}, wiedząc, że w nim zachodzi przybliżenie {{LinkWzór|28.10}}, wtedy możemy napisać funkcję {{LinkWzór|28.9}}, która zależy od funkcji Greena:
{{CentrujWzór|<MATH>\psi(\vec{r})=e^{i\vec{k}_0\vec{r}}+\int U(\vec{r}^')e^{i\vec{k}_0\vec{r}^'}G(\vec{r},\vec{r}^')d^3\vec{r}\;</MATH>|28.11}}
Wyznaczmy funkcję Greena występującego w równaniu {{LinkWzór|28.11}} według jego definicji {{LinkWzór|20.4|Funkcje_Greena|Metody_matematyczne_fizyki|MMF}} i delty Diraca w przestrzeni jednowymiarowej {{LinkWzór|14.39|Wstęp_do_transformacji_Fouriera|Metody_matematyczne_fizyki|MMF}}, w której będziemy mogli napisać operator {{Formuła|<MATH>\hat{O}\;</MATH>}} {{LinkWzór|28.8}} dla przestrzeni trójwymiarowej, także wymnażać będziemy funkcję Diraca dotyczące każdej współrzędnej względem siebie, by otrzymać:
{{CentrujWzór|<MATH>G(\vec{r},\vec{r}^')=\hat{O}^{-1}\delta^3(\vec{r}-\vec{r}^')=\;
{{1}\over{(2\pi)^3}}\int d^3\vec{k}\hat{O}^{-1}e^{i\vec{k}(\vec{r}-\vec{r}^')}=
{{1}\over{(2\pi)^3}}\int d^3\vec{k}{{1}\over{\hat{O}e^{-i\vec{k}(\vec{r}-\vec{r}^')}}}
={{1}\over{(2\pi)^3}}\int d^3\vec{k}{{1}\over{\left(\nabla^2+k_0^2\right)e^{-i\vec{k}(\vec{r}-\vec{r}^')}}}=\;</MATH>{{Br}}<MaTH>={{1}\over{(2\pi)^3}}\int d^3\vec{k}{{1}\over{(-k^2+k_0^2)e^{-i\vec{k}(\vec{r}-\vec{r}^')}}}={{1}\over{(2\pi)^3}}\int d^3\vec{k}{{e^{i\vec{k}(\vec{r}-\vec{r}^')}}\over{k_0^2-k^2}}\;</MATH>|28.12}}
Następnym krokiem jest wyznaczenie funkcji Greena {{LinkWzór|28.12}} w postaci zwartej, wpierw wyznaczmy całkę, ale przedtem załóżmy, że różnica wektorów {{Formuła|<MATH>\vec{r}-\vec{r}^'\;</MATH>}} leży na osi rzędnych OY:
{{CentrujWzór|<MATH>{{1}\over{(2\pi)^3}}\int d^3\vec{k}{{e^{i\vec{k}(\vec{r}-\vec{r}^')}}\over{k_0^2-k^2}}={{1}\over{(2\pi)^3}}\int_0^{\infty}{{k^2}\over{k_0^2-k^2}}\int_0^{2\pi}d\theta\int_0^{\pi}d\psi\sin\psi e^{ik|\vec{r}-\vec{r}^'|\cos\psi}=\;</Math>{{Br}}<MATH>={{1}\over{4\pi^2}}\int_0^{\infty}{{k^2}\over{k_0^2-k^2}}\int^{-1}_{1}-du e^{ik|\vec{r}-\vec{r}^'|u}=
{{1}\over{4\pi^2}}\int_0^{\infty}{{k^2dk}\over{k_0^2-k^2}}\left[{{e^{ik|\vec{r}-\vec{r}^'|u}}\over{ik|\vec{r}-\vec{r}^'|}}\right]^1_{-1}=\;</MATH>{{Br}}<MATH>=
{{1}\over{4\pi^2|\vec{r}-\vec{r}^'|}}\int_0^{\infty}{{k^2dk}\over{(k_0^2-k^2)k}}{{e^{ik|\vec{r}-\vec{r}^'|}-e^{-ik|\vec{r}-\vec{r}^'|}}\over{2i}}=
{{1}\over{4i\pi^2|\vec{r}-\vec{r}^'|}}\left[\int_0^{\infty}{{kdk}\over{k_0^2-k^2}}e^{ik|\vec{r}-\vec{r}^'|}-\int_0^{\infty}{{kdk}\over{k_0^2-k^2}}e^{-ik|\vec{r}-\vec{r}^'|}\right]=\;</MATH>{{Br}}<MATH>=
{{1}\over{4i\pi^2|\vec{r}-\vec{r}^'|}}\left[\int_0^{\infty}{{kdk}\over{k_0^2-k^2}}e^{ik|\vec{r}-\vec{r}^'|}-\int_0^{-\infty}{{kdk}\over{k_0^2-k^2}}e^{ik|\vec{r}-\vec{r}^'|}\right]=\;</MATH>{{Br}}<MATH>=
{{1}\over{4i\pi^2|\vec{r}-\vec{r}^'|}}\int_{-\infty}^{\infty}{{kdk}\over{k_0^2-k^2}}e^{ik|\vec{r}-\vec{r}^'|}={{1}\over{4i\pi^2|\vec{r}-\vec{r}^'|}}\int_{-\infty}^{\infty}{{kdk}\over{k_0^2-k^2}}e^{ik|\vec{r}-\vec{r}^'|}={{1}\over{4i\pi^2|\vec{r}-\vec{r}^'|}}\lim_{\epsilon\rightarrow 0}\int_{-\infty}^{\infty}{{kdk}\over{k_0^2-k^2+i\epsilon}}e^{ik|\vec{r}-\vec{r}^'|}\;</MATH>|28.13}}
Całkowanie po linii prostej na osi rzeczywistej możemy zastąpić całkowaniem po półkręgu o środku w punkcie (0,0) wraz z odcinkiem łączących dwa końcowe punkty tego półokręgu w płaszczyźnie zespolonej, to całka na półokręgu dąży do zera, a całka na odcinku (-R,R) na osi rzeczywistej do linii prostej dla R→∞ ,a to z kolei dąży do {{LinkWzór|28.13}}, ale najpierw napiszmy zamiast k liczbę zespoloną {{Formuła|<MaTH>R\cos\theta+iR\sin\theta\;</MATH>}}, zatem jeśli {{Formuła|<MATH>k\rightarrow\pm\infty\;</MATH>}}, to R→∞, wtedy możemy przecałkować po półokręgu dla ε skończonego, ale nierównego zero, zobaczymy co nam wyjdzie dalej:
{{CentrujWzór|<MATH>\left|\int_{O}{{kdk}\over{k_0^2-k^2+i\epsilon}}e^{ik|\vec{r}-\vec{r}^'|}\right|=\left|\int_O{{kdk}\over{k_0^2-k^2+i\epsilon}}e^{iR|\vec{r}-\vec{r}^'|\cos\theta }e^{-R|\vec{r}-\vec{r}^'|\sin\theta}\right|\leq\int_{O}\left|{{k}\over{k_0^2-k^2+i\epsilon}}\right|e^{-R|\vec{r}-\vec{r}^'|\sin\theta}|dk|\leq\;</MATH>{{Br}}<math>\leq\max_{k\in O}\left|{{k}\over{k_0^2-k^2+i\epsilon}}\right|R\int_0^{\pi}e^{-R|\vec{r}-\vec{r}^'|\sin\theta}d\theta\;</MAth>|28.14}}
Aby policzyć powyższą całkę należy skorzystać z symetrii funkcji sinus na przedziale {{Formuła|<MATH>(0,{{\pi}\over{2}})\;</math>}}, gdzie funkcja y=sin x jest zawsze większa niż prosta {{Formuła|<MATH>y={{2}\over{\pi}}x\;</MaTH>}}, zatem zachodzi:{{Formuła|<MATH>\sin x\geq {{2}\over{\pi}}x\Rightarrow -\sin x\leq -{{2}\over{\pi}}x\;</MATH>}}, zatem przedział całkowania w {{LinkWzór|28.14}} należy ograniczyć do omawianego przedziału, a wynik pomnożyć przez dwa, zatem:
{{CentrujWzór|<maTh>\int_0^{\pi}e^{-R|\vec{r}-\vec{r}^'|\sin\theta}d\theta\leq
2\int_0^{{{\pi}\over{2}}}e^{-R|\vec{r}-\vec{r}^'|{{2}\over{\pi}}\theta}d\theta=
{{2}\over{-R|\vec{r}-\vec{r}^'|{{2}\over{\pi}}}}\left[e^{-R|\vec{r}-\vec{r}^'|{{2}\over{\pi}}\theta}\right]_0^{{{\pi}\over{2}}}={{2}\over{-R|\vec{r}-\vec{r}^'|{{2}\over{\pi}}}}\left(e^{-R|\vec{r}-\vec{r}^'|}-1\right)=\;</MATH>{{Br}}<MATH>={{\pi}\over{R|\vec{r}-\vec{r}^'|}}\left(1-e^{-R|\vec{r}-\vec{r}^'|}\right)\;</MATH>|28.15}}
Całka {{LinkWzór|28.14}}, na podstawie obliczeń {{LinkWzór|28.15}}, jest równa:
{{CentrujWzór|<MATH>\left|\int_{O}{{kdk}\over{k_0^2-k^2+i\epsilon}}e^{ik|\vec{r}-\vec{r}^'|}\right|\leq
\max_{k\in O}\left|{{k}\over{k_0^2-k^2+i\epsilon}}\right|R{{\pi}\over{R|\vec{r}-\vec{r}^'|}}\left(1-e^{-R|\vec{r}-\vec{r}^'|}\right)=\;</MATH>{{Br}}<MATH>=
\max_{k\in O}\left|{{k}\over{k_0^2-k^2+i\epsilon}}\right|{{\pi}\over{|\vec{r}-\vec{r}^'|}}\left(1-e^{-R|\vec{r}-\vec{r}^'|}\right)\;</MATh>|28.16}}
Punkty na półkregu leżą nieskończenie daleko od jej środka, zatem {{Formuła|<MATH>|k|\rightarrow\infty\;</MATH>}}, bo {{Formuła|<MATH>R\rightarrow\infty\;</MATH>}}, zatem wyznaczmy granice i zobaczymy co wyjdzie:
{{CentrujWzór|<MATH>\lim_{|k|\rightarrow\infty}\left|{{k}\over{k_0^2-k^2+i\epsilon}}\right|=
\lim_{|k|\rightarrow\infty}{{|k|}\over{|k|^2\left|{{k_0^2}\over{|k|^2}}-{{k^2}\over{|k|^2}}+{{i\epsilon}\over{|k|^2}}\right|}}=\lim_{|k|\rightarrow\infty}{{1}\over{|k|}}{{1}\over{\left|{{k_0^2}\over{|k|^2}}-{{k^2}\over{|k|^2}}+{{i\epsilon}\over{|k|^2}}\right|}}=0\cdot 1=0\;</MATH>|28.17}}
bo jest skończone i równe jeden w podwyrażeniu {{LinkWzór|28.17}}:
{{CentrujWzór|<MATH>\left|{{k_0^2}\over{|k|^2}}-{{k^2}\over{|k|^2}}+{{i\epsilon}\over{|k|^2}}\right|\leq {{|k_0|^2}\over{|k|^2}}+1+{{|\epsilon|}\over{|k|^2}}\xrightarrow[|k|\rightarrow\infty ]{}1\;</MATH>}}
Całka na półokręgu {{LinkWzór|28.16}} dąży do zera na podstawie {{LinkWzór|28.17}}, bo jak powiedzeliśmy wcześniej dla omawianego półokręgu {{Formuła|<MATH>|k|\rightarrow\infty\;</MATH>}}, wtedy całkowanie po półokręgu dąży do zera, zatem nasz wynik dla R nieskończonego leży na odcinku {{Formuła|<MaTH>(-R,R)\;</MATH>}}, dochodzimy więc do wniosku, że całkowanie dokonujemy po pewnym konturze, tzn. po półokręgu dla {{Formuła|<MATH>R\rightarrow\infty\;</MATH>}} wraz z odcinkiem łączący oba punkty naszego półokręgu, ale z twierdzenia z analizy matematycznej, całkowanie nie zależy od konturu wokół pewnego punktu osobliwości po jakim całkujemy, zatem całkowanie możemy ograniczyć po okręgu o promieniu ρ dążących do zera wokół omawianego punktu osobliwowego.
W całce {{LinkWzór|28.13}} dokonajmy podstawienia {{Formuła|<MATH>k_0^2-k^2+i\epsilon=\rho e^{i\theta}\;</MAtH>}}, co stąd po zróżniczkowaniu tego wyrażenia otrzymujemy {{Formuła|<MATH>-2kdk=\rho e^{i\theta}i d\theta\Rightarrow kdk=-{{1}\over{2}}\rho e^{i\theta}id\theta\;</MATH>}}, wykorzystując te podstawienia do całki {{LinkWzór|28.13}} oraz wykorzystując, że funkcja podcałkowa w omawianej całce ma osobliwości w punktach {{Formuła|<Math>k=\pm \sqrt{k_0^2+i\epsilon}=\pm\sqrt{k_0^2\left(1+{{i\epsilon}\over{k_0^2}}\right)}\simeq \pm k_0\pm{{i\epsilon}\over{2k_0^2}}\;</MATH>}}.
Gdy ε>0, to do wewnątrz półokręgu należy oczywiście punkt {{Formuła|<MATH>k=k_0+{{i\epsilon}\over{2k_0^2}}\rightarrow k_0\;</Math>}}, a drugi nie należy, ale gdy natomiast ε<0, to do wewnątrz półokręgu należy drugi punkt {{Formuła|<MATH>k=-k_0-{{i\epsilon}\over{2k_0^2}}\rightarrow -k_0\;</MATH>}}, a pierwszy nie należy.
Wykorzystując, że całka nie zależy od konturu po jakim jest całkowanie zawierający jakiś punkt osobliwy, co udowodniliśmy, że zawiera dokładnie jeden punkt w zależności od znaku {{Formuła|<MATH>\epsilon\rightarrow 0\;</MATH>}}, więc możemy przyjąć, że ten promień okręgu, po którym całkować będziemy, dąży do zera, wokół określonego punktu osobliwego, wtedy zmienna k dąży do jednego z nich.
{{CentrujWzór|<MATH>G(\vec{r},\vec{r}^')={{1}\over{4i\pi^2|\vec{r}-\vec{r}^'|}}\lim_{\epsilon\rightarrow 0}\lim_{\rho\rightarrow 0}\int_0^{2\pi}(-1){{{{1}\over{2}}\rho e^{i\theta}id\theta}\over{\rho e^{i\theta}}}e^{ik|\vec{r}-\vec{r}^'|}=
-{{1}\over{4i\pi^2|\vec{r}-\vec{r}^'|}}i{{1}\over{2}}\lim_{\epsilon\rightarrow 0}\lim_{\rho\rightarrow 0}\int_0^{2\pi}d\theta e^{ik|\vec{r}-\vec{r}^'|}=\;</MATH>{{Br}}<MaTH>=-{{1}\over{8\pi^2|\vec{r}-\vec{r}^'|}}\lim_{\epsilon\rightarrow 0}e^{\pm i(k_0+{{i\epsilon}\over{2k_0^2}})|\vec{r}-\vec{r}^'|}\int_0^{2\pi}d\theta=-{{1}\over{8\pi^2|\vec{r}-\vec{r}^'|}}e^{\pm ik_0|\vec{r}-\vec{r}^'|}2\pi=-{{1}\over{4\pi}}{{e^{\pm ik_0|\vec{r}-\vec{r}^'|}}\over{|\vec{r}-\vec{r}^'|}}\;</MATH>|28.18}}
Otrzymaliśmy według obliczeń {{LinkWzór|28.18}}, że funkcja Greena ma dwie postacie zapisane w postaci ogólnej:
{{CentrujWzór|<MATH>G(\vec{r},\vec{r}^')=-{{1}\over{4\pi}}{{e^{\pm ik_0|\vec{r}-\vec{r}^'|}}\over{|\vec{r}-\vec{r}^'|}}\;</MATH>|28.19|Obramuj}}
Funkcję Greena {{LinkWzór|28.19}} można wstawić do równania {{LinkWzór|28.11}}, w ten sposób można obliczyć funkcję własne równania własnego operatora energii według kwantowej mechaniki klasycznej Schrödingera.
== Funkcja Greena a zmodyfikowane pole Kleina-Gordona ==
Gęstość Lagrangianu {{LinkWzór|26.24|Teoria_pola_we_wzorach_Eulera-Lagrange'a}} uzupełnijmy o dodatkowy wyraz wprowadzając źródło nowych fal, wtedy go napiszemy:
{{CentrujWzór|<MATH>\mathfrak{L}={{1}\over{2}}\partial_{\mu}\psi\partial^{\mu}\psi-{{1}\over{2}}{{m^2_0c^2}\over{\hbar^2}}\psi^2+J\psi\;</MATH>|28.20}}
Powyższe wyrażenie możemy podstawić do równania Eulera-Lagrange'a {{LinkWzór|26.23|Teoria_pola_we_wzorach_Eulera-Lagrange'a}}, w tym celu pochodne {{LinkWzór|26.26|Teoria_pola_we_wzorach_Eulera-Lagrange'a}} i {{LinkWzór|26.27|Teoria_pola_we_wzorach_Eulera-Lagrange'a}} są takie same dla {{LinkWzór|26.24|Teoria_pola_we_wzorach_Eulera-Lagrange'a}} jak dla {{LinkWzór|28.20}} tylko jedyna różnica jest dla pochodnej {{LinkWzór|26.28|Teoria_pola_we_wzorach_Eulera-Lagrange'a}}, który tutaj wynosi:
{{CentrujWzór|<MATH>{{\partial\mathfrak{L}}\over{\partial\psi}}=-{{m_0^2c^2}\over{\hbar^2}}\psi+J\;</MATH>|28.21}}
Obliczone pochodne wstawiamy do równania Eulera-Lagrange'a dostając równanie ruchu:
{{CentrujWzór|<MATH>\partial_0^2\psi-\partial_k^2\psi+{{m_0^2c^2}\over{\hbar^2}}\psi-J=0\Rightarrow \nabla^2-{{1}\over{c^2}}{{\partial^2}\over{\partial t^2}}-{{m_0^2c^2}\over{\hbar^2}}=-J\;</MATH>|28.22}}
Możemy wykorzystać definicję delambercjanu w {{LinkWzór|28.22}}, wtedy rozważane równanie różniczkowe jest bardzo podobne do równania Kleina-Gordona {{LinkWzór|26.31|Teoria_pola_we_wzorach_Eulera-Lagrange'a}}, bo w tym równaniu zachodzi {{Formuła|<MaTH>J(\underline{x})\equiv 0\;</MATH>}}, a w naszym przypadku ten wyraz jest różny od zera, zapisujemy w formie:
{{CentrujWzór|<MATH>\left(\square-{{m_0^2c^2}\over{\hbar^2}}\right)\psi(\underline{x})=-J(\underline{x})\;</MATH>|28.23}}
Równanie {{LinkWzór|28.23}} jest bardzo podobne do równania operatorowego {{LinkWzór|28.1}}, gdzie definicja operatora {{Formuła|<MATH>\hat{O}\;</MATH>}} i funkcji {{Formuła|<MATH>K(\underline{x})\;</MATH>}} jest zarysowana:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{O}=\square-{{m_0^2c^2}\over{\hbar^2}}\;</MATH>|28.24}}
| 2 = {{CentrujWzór|<MATH>\hat{O}K(\underline{x})=-J(\underline{x})\;</MATH>|28.25}}
}}
Zatem równanie na funkcję Greena według równości {{LinkWzór|20.5|Funkcje_Greena|Metody_matematyczne_fizyki|MMF}}, którego definicja dla naszego przypadku przestawiamy wzorem:
{{CentrujWzór|<MATH>\left(\square-{{m_0^2c^2}\over{\hbar^2}}\right)G(\underline{x},\underline{x}^')=\delta^4(\underline{x}-\underline{x}^')\;</MATH>|28.26}}
Aby policzyć bezpośrednio funkcję Greena należy wykorzystać równanie {{LinkWzór|20.4|Funkcje_Greena|Metody_matematyczne_fizyki|MMF}} oraz całkę na funkcję Diraca dla przestrzeni czerowymiarowej:
{{CentrujWzór|<MATh>G(\underline{x},\underline{x}^')={{1}\over{(2\pi)^4}}\int \hat{O}^{-1}e^{ik(\underline{x}-\underline{x}^')}=
{{1}\over{(2\pi)^4}}\int d^4\underline{k}{{1}\over{\hat{O}e^{-i\underline{k}(\underline{x}-\underline{x}^')}}}={{1}\over{(2\pi)^4}}\int d^4\underline{k}{{1}\over{\left(\square-{{m_0^2c^2}\over{\hbar^2}}\right)e^{-i\underline{k}(\underline{x}-\underline{x}^')}}}=\;</MATH>{{Br}}<MATH>=
{{1}\over{(2\pi)^4}}\int d^4\underline{k}{{e^{i\underline{k}(\underline{x}-\underline{x}^')}}\over{-(k_ik_i-k_0^2)-{{m_0^2c^2}\over{\hbar^2}}}}=
{{1}\over{(2\pi)^4}}\int d^4\underline{k}{{e^{i\underline{k}(\underline{x}-\underline{x}^')}}\over{k^2-{{m_0^2c^2}\over{\hbar^2}}}}\;</MATH>|28.27}}
W powyższym oznaczeniu funkcji Greena przyjęto:{{Formuła|<MATH>\underline{k}\underline{x}=k_{\mu}x^{\mu}\;</MATH>}}.
Jeśli już mamy policzoną funkcję Greena {{LinkWzór|28.27}} oraz wyznaczone równania różniczkowego niejednorodne {{LinkWzór|28.23}} dla J=0, to całkowite rozwiązanie równania różniczkowego jest wedle {{LinkWzór|20.7|Funkcje_Greena|Metody_matematyczne_fizyki|MMF}}.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
jie1z2i25fy8rmfkxbw5a7gqfhewbmh
Elektrodynamika klasyczna/Zasada wariacyjna w elektromagnetyzmie
0
18750
558897
548290
2026-10-08T02:47:23Z
Persino
2851
558897
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy tutaj wyprowadzać zasady elektromagnetyzmu z zasad wariacyjnych, na podstawie tego, aby funkcjonał S przyjmował wartość najmniejszą.
== Zasada wariacyjna a równania tensorowe elektromagnetyzmu z definicją czteroprądu ==
Gęstość Lagrangianu w elektromagnetyzmie definiujemy przy pomocy tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} i przy pomocy definicji czteroprądu objętościowego napisanej wedle schematu {{LinkWzór|26.5|Elektrodynamika_relatywistyczna}}. Zatem napiszmy dla obu sygntur tensora Minkowskiego szczególnej teorii względności (znak u góry sygnatura dodatnia, u dołu ujemna):
{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\;</MAth>|27.1}}
Całką działania nazywamy wyrażenie zdefiniowane na podstawie definicji gęstości lagrangianu {{LinkWzór|27.1}} w postaci:
{{CentrujWzór|<math>S=\int d^4x\mathfrak{L}=\int d^4x\left[-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\right]\;</MATH>|27.2}}
Wariacji całki działania {{LinkWzór|27.2}} zakładamy, że ona jest równa zero, wtedy na podstawie tego powinniliśmy otrzymać tensorowe równanie Maxwella {{LinkWzór|26.12|Elektrodynamika_relatywistyczna}}, zatem sprawdźmy, czy o nam wyjdzie.
{{CentrujWzór|
<math>\delta S=\delta\int d^4x\left[-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\right]=
\int d^4 x\left[-{{1}\over{4\mu_0}}F^{\mu\nu}\delta F_{\mu\nu}-{{1}\over{4\mu_0}}F_{\mu\nu}\delta F^{\mu\nu}\mp J^{\mu}\delta A_{\mu}\right]\;</MATH>|27.3}}
W wariację funkcjonału S {{LinkWzór|27.2}}, czyli δS {{LinkWzór|27.3}}, liczymy względem gęstości objętościowej czteroprądu {{LinkWzór|26.5|Elektrodynamika_relatywistyczna}} (J{{Sup|μ}}), czeropotencjału i tensora pola elektromagnetycznego. Idąc dalej wykorzystajmy wzór na tensor pola elektromagnetycznego wyznaczony w zależności od czteropotencjału, czyli wzoru {{LinkWzór|26.34|Elektrodynamika_relatywistyczna}}.
{{CentrujWzór|<MATH>\delta S=
\int d^4x\left[-{{1}\over{2\mu_0}}F_{\mu\nu}\delta F^{\mu\nu}\mp J^{\mu}\delta A_{\mu}\right]=
\int d^4x\left[-{{1}\over{2\mu_0}}F_{\mu\nu}\left[\partial^{\nu}\left(\delta A^{\mu}\right)-\partial^{\mu}\left(\delta A^{\nu}\right)\right]\mp J^{\mu}\delta A_{\mu}\right]\;</MAth>|27.4}}
W obliczeniach {{LinkWzór|27.4}} wykorzystujemy rozdzielność mnożenia względem dodawania, wiedząc że tensor pola elektromagnetycznego F{{Sup|μν}} {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} jest tensorem antysymetrycznym, tzn. przy zamianie wskaźników miejscami w tym wspomnianym tensorze przed tym tensorem pojawia się znak minus, czyli F{{Sup|μν}}=-F{{Sup|νμ}}.
{{CentrujWzór|<MAth>\delta S=
\int d^4x\left[-{{1}\over{2\mu_0}}\left[F_{\mu\nu}\partial^{\nu}\left(\delta A^{\mu}\right)-F_{\mu\nu}\partial ^{\mu}\left(\delta A^{\nu}\right)\right]\mp J^{\mu}\delta A_{\mu}\right]=\int d^4x\left[-{{1}\over{\mu_0}}F_{\mu\nu}\partial^{\nu}\left(\delta A^{\mu}\right)\mp J^{\mu}\delta A_{\mu}\right]\;</MATh>|27.5}}
Następnym krokiem jest wykorzystanie definicji pochodnej iloczynu dwóch funkcji do pierwszego wyrazu w obliczeniach {{LinkWzór|27.5}}, zatem w takim przypadku dostajemy równość:
{{CentrujWzór|<MATH>\delta S=
\int d^4x\left[-{{1}\over{\mu_0}}\partial ^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)+{{1}\over{\mu_0}}\partial^{\nu}F_{\mu\nu} \delta A^{\mu}\mp J^{\mu}\delta A_{\mu}\right]\;</Math>|27.6}}
Dalszym krokiem jest rozdzielenie w wariacji {{LinkWzór|27.6}} na dwie osobne całki z twierdzenia na całkę sumy dwóch wyrażeń podcałkowych jako sumę całek, w których występują te wyrażenia podcałkowe, wtedy mamy wniosek:
{{CentrujWzór|<MATh>\delta S=
-{{1}\over{\mu_0}}\int d^4x\partial^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)+\int d^4x\left({{1}\over{\mu_0}}\partial_{\nu}F^{\mu\nu}\delta A_{\mu}\mp J^{\mu}\delta A_{\mu}\right)\;</MatH>|27.7}}
Pierwsza całka w obliczeniach {{LinkWzór|27.7}} jest zawsze równa zero, ponieważ można go rozpisać względem całkowania po zmiennej x{{Sup|μ}}, i zakładamy, że wariancja czteropotencjału na końcach x{{Sup|μ}}{{Sub|2}} i x{{Sup|μ}}{{Sub|1}} jest równa zero, co możemy powiedzieć, że:
{{CentrujWzór|<math>\int d^{4}x\partial^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)=\int dx^3F_{\mu\nu}\delta A^{\mu}\bigg|^{x^{\nu}_2}_{x^{\nu}_1}=0\;</Math>|27.8}}
Jeśli wykorzystamy nasz warunek {{LinkWzór|27.8}} do wariacji δS {{LinkWzór|27.7}}, zatem to samo wyrażenie możemy przepisać po wyzerowaniu się według przeprowadzonego naszego dowodu powyżej, zatem tą naszą wspomnianą tożsamość piszemy w postaci:
{{CentrujWzór|<Math>\delta S=\int d^4x\left({{1}\over{\mu_0}}\partial _{\nu}F^{\mu\nu}\mp J^{\mu}\right)\delta A_{\mu}\;</MATH>|27.9}}
Aby wariancja funkcjonału {{LinkWzór|27.9}} była równa zero dla dowolnej wariacji wielkości czteropotencjału A{{Sub|μ}}, to wyrażenie podcałkowe w ostatnim wniosku powinno być równa zero, zatem na tej podstawie powinna zachodzić tożsamość:
{{CentrujWzór|<MATH>{{1}\over{\mu_0}}\partial _{\nu}F^{\mu\nu}\mp J^{\mu}=0\Rightarrow \partial _{\nu}F^{\mu\nu}=\pm\mu_0J^{\mu}\Rightarrow {F^{\mu\nu}}_{,\nu}=\pm \mu_0J^{\mu}\;</MATH>|27.10}}
Widzimy, że równanie {{LinkWzór|27.10}} jest równoważne z równaniem {{LinkWzór|26.12|Elektrodynamika_relatywistyczna}}, zatem gęstość lagrangianu {{LinkWzór|27.1}} jest poprawnym Lagrangianem, czyli wzór {{LinkWzór|27.10}} jest poprawnym wzorem tensorowym z definicją tensora pola elektromagnetycznego napisanego wzorem {{LinkWzór|26.34|Elektrodynamika relatywistyczna}}.
== Lagrangian relatywistyczny pola elektromagnetostatycznego ==
Lagrangian w elektrodynamice relatywistycznej definiujemy przy pomocy potencjału skalarnego φ i wektorowego {{Formuła|<Math>\vec{A}\;</MATH>}} przy prędkości cząstki równym {{Formuła|<MATH>\vec{v}\;</mAth>}} przy rozpatrywanej cząstce o ładunku o wartości q, przedstawiamy według:
{{CentrujWzór|<MATH>L=-m_0c^2\sqrt{1-{{v^2}\over{c^2}}}-q\varphi+q\vec{v}\vec{A}\;</MATH>|27.11}}
Pęd uogólniony w elektrodynamice jest napisany jako pochodna cząstkowa Lagrangianu {{LinkWzór|27.11}} względem wektora prędkości, mamy:
{{CentrujWzór|<maTH>\vec{p}={{\partial L}\over{\partial\vec{v}}}={{m_0\vec{v}}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+q\vec{A}=m\vec{v}+q\vec{A}\;</MATH>|27.12}}
Pęd uogólniony w polu elektromagnetycznym jest równy sumie pędu klasycznego znanej ze szczególnej teorii względności i iloczynowi ładunku cząstki i potencjału wektorowego tego pola. Zatem dochodzimy do wniosku, że ten pęd to nie jest zwykły iloczyn masy relatywistycznej i prędkości cząstki, zachodzi tak tylko w polu bez potencjału wektorowego.
Równanie wariacyjne Eulera-Lagrange'a dla lagrangianu {{LinkWzór|27.11}} jest dokładnie takie same w {{LinkWzór|5.12|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}. W tym wzorze w pierwszym wyrazie pod pochodną zupełną względem czasu występuje pęd uogólniony cząstki {{LinkWzór|27.12}}. Zatem rozważając prawie tak samo jak w tym rozdziale, w którym znajduje się ostatnio wspomniany wzór, wtedy dochodzimy do wzoru na równanie ruchu cząstki punktowej {{LinkWzór|5.21|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, tylko po lewej stronie wzoru występuje nie siła klasyczna Newtona według drugiej zasady dynamiki Newtona, tylko siła relatywistyczna Einsteina. Co kończy dowód, że z zasady najmniejszego działania przy definicji Lagragianu {{LinkWzór|27.11}} wynika dobrze nam znane równanie ruchu.
== Lagrangian relatywistyczny cząstki, w przybliżeniu małych prędkości, dla pola elektromagnetostatycznego ==
Lagrangian relatywistyczny cząstki punktowej o ładunku q {{LinkWzór|27.11}} dla prędkości o wiele mniejszej od prędkości światła, czyli wtedy zachodzi {{Formuła|<MATH>{{v}\over{c}}<<1\;</MATH>}}, wtedy na podstawie tego pierwiastek w nim występujący można rozwinąć w szereg Taylora, wtedy dla tego przybliżenia dostajemy:
{{CentrujWzór|<math>L=-m_0c^2\left(1-{{v^2}\over{2c^2}}+...\right)-q\varphi+q\vec{v}\vec{A}\simeq-m_0c^2+{{1}\over{2}}m_0\vec{v}\vec{v}-q\varphi+q\vec{v}\vec{A}\;</MATH>|27.13}}
W wyrażeniu przybliżonym {{LinkWzór|27.13}} w stosunku do jej odpowiednika klasycznego {{LinkWzór|1.122b|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} różni się o stałą -m{{Sub|0}}c{{Sup|2}}, która w tym przypadku nie odgrywa żadnej roli, ponieważ w równaniu Eulera-Lagrange'a {{LinkWzór|5.12|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} występują pochodne cząstkowe i ta stała według twierdzenia o pochodnej sumy nic nie wnosi we końcowym wniosku.
== Relatywistyczny hamiltonian dla pola elektromagnetostatycznego ==
Wyznaczmy relatywistyczny hamiltoniam dla cząstki w polu elektromagnetostatycznym, korzystając z definicji hamiltonianu dla cząstki relatywistycznej i Lagrangianu relatywistycznego {{LinkWzór|27.11}}, a także z definicji pędu uogólnionego {{LinkWzór|27.12}} dla pola elektromagnetostatycznego:
{{CentrujWzór|<MATH>H=\vec{p}\vec{v}-L=(m\vec{v}+q\vec{A})\vec{v}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi-q\vec{v}\vec{A}=m\vec{v}\vec{v}+q\vec{A}\vec{v}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}v^2+\;</MATH>{{Br}}<MATH>+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2\left(1-{{v^2}\over{c^2}}\right)\right)+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2-v^2\right)+q\varphi={{m_0c^2}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+q\varphi=\;</MATH>{{Br}}<MATH>=mc^2+q\varphi\Rightarrow H=mc^2+q\varphi</MAth>|27.14}}
Widzimy, że wedle końcowych obliczeń przeprowadzonych w punkcie {{LinkWzór|27.14}} hamiltonian ładunku punktowego, to jest po prostu jego energia mechaniczna (całkowita), która jest sumą całkowitej energii relatywistycznej cząstki mc{{Sup|2}} i jego energii potencjalnej qφ.
== Lagrangian a czterowektor potencjału i różniczki zmiany położenia cząstki w czasoprzestrzeni ==
Wykorzystując definicję czteropotencjału kowariantnego {{LinkWzór|26.33|Elektrodynamika_relatywistyczna}} i definicję położenia w czterowymiarowej czasoprzestrzeni, a także definicję różniczki interwału czasoprzestrzennego w szczególnej teorii względności, wtedy definicję Lagrangianu {{LinkWzór|27.11}} możemy zapisać w równoważnej postaci:
{{CentrujWzór|<Math>L=-m_0c^2{{ds}\over{cdt}}-q\left({{\varphi}\over{c}},-\vec{A}\right)\left({{cdt}\over{dt}},{{dx^i}\over{dt}}\right)=
-m_0c^2{{ds}\over{cdt}}\mp qA_{\mu}{{dx^{\mu}}\over{dt}}\;</MATH>|27.15}}
Wedle przekazów z obliczeń przeprowadzonych w punkcie {{LinkWzór|27.15}} iloczyn wspomnianego Lagrangianu L i różniczki czasu, w której badamy ruch badanej cząstki jest wyrażony:
{{CentrujWzór|<MATH>Ldt=-m_0cds\mp qA_{\mu}dx^{\mu}\;</MATH>|27.16}}
Całka działania Lagrangianu {{LinkWzór|27.15}} jest całką naszego Lagrangianu względem czasu i na podstawie wzoru {{LinkWzór|27.16}} jest równa jego przedstawieniu:
{{CentrujWzór|<MATH>S=\int Ldt=\int\left(-m_0cds\mp qA_{\mu}dx^{\mu}\right)\;</MATH>|27.17}}
== Równanie ruchu w czteroprzestrzeni Minkowskiego ==
Zasada najmniejszego działania stwierdza, że względem funkcjonału {{LinkWzór|27.17}}, wariacja tegoż obiektu jest równa zero, tzn.:
{{CentrujWzór|<MATH>\delta S=\delta \int_a^b\left(-m_0cds\mp qA_{\mu}dx^{\mu}\right)=0\;</MATH>|27.18}}
Z definicji różniczki wariacji {{Formuła|<MATh>ds=\sqrt{dx_{\mu}dx^{\mu}}\;</MAth>}} wariację {{LinkWzór|27.18}} po jego działaniu na wnętrze jego nawiasu, stwierdzamy, że na pewno zachodzi:
{{CentrujWzór|<MATH>\delta S=\int_a^b\left(\mp m_0c{{dx_{\mu}d\delta x^{\mu}}\over{ds}}\mp qA_{\mu}d\delta x^{\mu}\mp q\delta A_{\mu}dx^{\mu}\right)=0\Rightarrow
\mp\int_a^b\left(m_0c{{dx_{\mu}d\delta x^{\mu}}\over{ds}}+qA_{\mu}d\delta x^{\mu}+ q\delta A_{\mu}dx^{\mu}\right)=0\;</MATH>|27.19}}
We wzorze {{LinkWzór|27.19}} stosujemy definicję kowariantnego czterowektora prędkości {{Formuła|<MaTH>u_{\mu}={{dx_{\mu}}\over{ds}}\;</MATH>}}, a także całkujemy przez części jego pierwszy i drugi wyraz, dalej grupując odpowiednio wyrazy, otrzymujemy:
{{CentrujWzór|<mAth>\int_a^b\left(m_0cdu_{\mu}\delta x^{\mu}+q\delta x^{\mu}dA_{\mu}-q\delta A_{\mu}dx^{\mu}\right)-\left(m_0cu_{\mu}+qA_{\mu}\right)\delta x^{\mu}\Bigg|_a^b=0\;</MATH>|27.20}}
Drugi wyraz w {{LinkWzór|27.20}} jest równy zero, bo przy wariowaniu całki należy uwzględnić, że współrzędne mają ustalone wartości na końcach przedziału całkowania. Dalej należy uwzględnić tożsamości:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\delta A_{\mu}=A_{\mu,\nu}\delta x^{\nu}\;</MATH>|27.21}}
| 2 = {{CentrujWzór|<math>dA_{\mu}=A_{\mu,\nu}dx^{\nu}\;</MATH>|27.22}}
}}
Jeśli podstawimy tożsamości {{LinkWzór|27.21}} i {{LinkWzór|27.22}} do {{LinkWzór|27.20}}, to otrzymamy do tego ostatniego równoważny wzór:
{{CentrujWzór|<MATH>\int_a^b\left(m_0cdu_{\mu}\delta x^{\mu}+qA_{\mu,\nu}\delta x^{\mu}dx^{\nu}-qA_{\mu,\nu}dx^{\mu}\delta x^{\nu}\right)=0\;</MatH>|27.23}}
Ponieważ we wzorze {{LinkWzór|27.23}} wskaźniki μ i ν są wskaźnikami niemymi, więc w trzecim jego wyrazie pod całką {{LinkWzór|27.23}} zamieniamy miejscami te wskaźniki, a także dla wyrazu drugiego i trzeciego stosujemy wzór {{Formuła|<mATH>dx^{\mu}=u^{\mu}ds\;</MATH>}} wynikająca z defiicji kontrawariannej czteroprędkości, zatem na podstawie wyżej wymienionej tożsamości otrzymujemy wzór:
{{CentrujWzór|<MATH>\int_a^b\left[m_0c{{du_{\mu}}\over{ds}}-q\left(A_{\nu,\mu}-A_{\mu,\nu}\right)u^{\nu}\right]\delta x^{\mu}ds=0\;</MATH>|27.24}}
Ponieważ we wzorze {{LinkWzór|27.24}} rozpatrujemy dowolne wariacje zmiennej {{Sup|μ}}, dla której cała całka jest równa zero, wtedy wyrażenie podcałkowe musi być zawsze być równa zero, zatem:
{{CentrujWzór|<math>m_0c{{du_{\mu}}\over{ds}}-q\left(A_{\nu,\mu}-A_{\mu,\nu}\right)u^{\nu}=0\;</MATH>|27.25}}
Wykorzystujemy definicję tensora pola elektromagnetycznego podwójnie kowariantnego przy pomocy kowariantnego czteropotencjału {{LinkWzór|26.33|Elektrodynamika_relatywistyczna}}, czyli tożsamości fizycznej równoważnej do {{LinkWzór|26.34|Elektrodynamika_relatywistyczna}}, wtedy wzór {{LinkWzór|27.25}} przyjmuje bardziej uproszczoną postać:
{{CentrujWzór|<math>m_0c{{du_{\mu}}\over{ds}}=qF_{\nu\mu}u^{\nu}\Rightarrow m_0c{{du^{\mu}}\over{ds}}=qF^{\nu\mu}u_{\nu}\;</MATH>|27.25a}}
Jeśli wprowadzimy definicję czteropędu w szczególnej teorii względności we wzorze {{LinkWzór|27.25a}} i wykorzystamy definicję czterosiły znanej w szczególnej teorii względności i także wykorzystamy, że tensor pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} jest tensorem antysymetrycznym, wtedy mamy wniosek:
{{CentrujWzór|<math>{{dp^{\mu}}\over{ds}}=qF^{\nu\mu}u_{\nu}\Rightarrow K^{\mu}=-qF^{\mu\nu}u_{\nu}\;</math>|27.26}}
Ten sam wzór, co {{LinkWzór|27.26}}, który otrzymaliśmy z zasady wariacyjnej, napisaliśmy w punkcie {{LinkWzór|26.61|Elektrodynamika_relatywistyczna}}, którego zgodność ze szczególną teorią względności i z definicja siły Lorentza {{LinkWzór|8.3|Magnetostatyka}} udowodniliśmy wykorzystując definicję tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}}. Zatem te dwie metody prowadzą do takiej samej definicji czterowektora siły K{{Sup|μ}}.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
pdly357sjsmg92ta7an0il69tihxp6i
558906
558897
2026-10-08T07:05:10Z
Persino
2851
558906
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy tutaj wyprowadzać zasady elektromagnetyzmu z zasad wariacyjnych, na podstawie tego, aby funkcjonał S przyjmował wartość najmniejszą.
== Zasada wariacyjna a równania tensorowe elektromagnetyzmu z definicją czteroprądu ==
Gęstość Lagrangianu w elektromagnetyzmie definiujemy przy pomocy tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} i przy pomocy definicji czteroprądu objętościowego napisanej wedle schematu {{LinkWzór|26.5|Elektrodynamika_relatywistyczna}}. Zatem napiszmy dla obu sygnatur tensora Minkowskiego szczególnej teorii względności (znak u góry sygnatura dodatnia, u dołu ujemna):
{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\;</MAth>|27.1}}
Całką działania nazywamy wyrażenie zdefiniowane na podstawie definicji gęstości lagrangianu {{LinkWzór|27.1}} w postaci:
{{CentrujWzór|<math>S=\int d^4x\mathfrak{L}=\int d^4x\left[-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\right]\;</MATH>|27.2}}
Wariacji całki działania {{LinkWzór|27.2}} zakładamy, że ona jest równa zero, wtedy na podstawie tego powinniliśmy otrzymać tensorowe równanie Maxwella {{LinkWzór|26.12|Elektrodynamika_relatywistyczna}}, zatem sprawdźmy, czy o nam wyjdzie.
{{CentrujWzór|
<math>\delta S=\delta\int d^4x\left[-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\right]=
\int d^4 x\left[-{{1}\over{4\mu_0}}F^{\mu\nu}\delta F_{\mu\nu}-{{1}\over{4\mu_0}}F_{\mu\nu}\delta F^{\mu\nu}\mp J^{\mu}\delta A_{\mu}\right]\;</MATH>|27.3}}
W wariację funkcjonału S {{LinkWzór|27.2}}, czyli δS {{LinkWzór|27.3}}, liczymy względem gęstości objętościowej czteroprądu {{LinkWzór|26.5|Elektrodynamika_relatywistyczna}} (J{{Sup|μ}}), czeropotencjału i tensora pola elektromagnetycznego. Idąc dalej wykorzystajmy wzór na tensor pola elektromagnetycznego wyznaczony w zależności od czteropotencjału, czyli wzoru {{LinkWzór|26.34|Elektrodynamika_relatywistyczna}}.
{{CentrujWzór|<MATH>\delta S=
\int d^4x\left[-{{1}\over{2\mu_0}}F_{\mu\nu}\delta F^{\mu\nu}\mp J^{\mu}\delta A_{\mu}\right]=
\int d^4x\left[-{{1}\over{2\mu_0}}F_{\mu\nu}\left[\partial^{\nu}\left(\delta A^{\mu}\right)-\partial^{\mu}\left(\delta A^{\nu}\right)\right]\mp J^{\mu}\delta A_{\mu}\right]\;</MAth>|27.4}}
W obliczeniach {{LinkWzór|27.4}} wykorzystujemy rozdzielność mnożenia względem dodawania, wiedząc że tensor pola elektromagnetycznego F{{Sup|μν}} {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} jest tensorem antysymetrycznym, tzn. przy zamianie wskaźników miejscami w tym wspomnianym tensorze przed tym tensorem pojawia się znak minus, czyli F{{Sup|μν}}=-F{{Sup|νμ}}.
{{CentrujWzór|<MAth>\delta S=
\int d^4x\left[-{{1}\over{2\mu_0}}\left[F_{\mu\nu}\partial^{\nu}\left(\delta A^{\mu}\right)-F_{\mu\nu}\partial ^{\mu}\left(\delta A^{\nu}\right)\right]\mp J^{\mu}\delta A_{\mu}\right]=\int d^4x\left[-{{1}\over{\mu_0}}F_{\mu\nu}\partial^{\nu}\left(\delta A^{\mu}\right)\mp J^{\mu}\delta A_{\mu}\right]\;</MATh>|27.5}}
Następnym krokiem jest wykorzystanie definicji pochodnej iloczynu dwóch funkcji do pierwszego wyrazu w obliczeniach {{LinkWzór|27.5}}, zatem w takim przypadku dostajemy równość:
{{CentrujWzór|<MATH>\delta S=
\int d^4x\left[-{{1}\over{\mu_0}}\partial ^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)+{{1}\over{\mu_0}}\partial^{\nu}F_{\mu\nu} \delta A^{\mu}\mp J^{\mu}\delta A_{\mu}\right]\;</Math>|27.6}}
Dalszym krokiem jest rozdzielenie w wariacji {{LinkWzór|27.6}} na dwie osobne całki z twierdzenia na całkę sumy dwóch wyrażeń podcałkowych jako sumę całek, w których występują te wyrażenia podcałkowe, wtedy mamy wniosek:
{{CentrujWzór|<MATh>\delta S=
-{{1}\over{\mu_0}}\int d^4x\partial^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)+\int d^4x\left({{1}\over{\mu_0}}\partial_{\nu}F^{\mu\nu}\delta A_{\mu}\mp J^{\mu}\delta A_{\mu}\right)\;</MatH>|27.7}}
Pierwsza całka w obliczeniach {{LinkWzór|27.7}} jest zawsze równa zero, ponieważ można go rozpisać względem całkowania po zmiennej x{{Sup|μ}}, i zakładamy, że wariancja czteropotencjału na końcach x{{Sup|μ}}{{Sub|2}} i x{{Sup|μ}}{{Sub|1}} jest równa zero, co możemy powiedzieć, że:
{{CentrujWzór|<math>\int d^{4}x\partial^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)=\int dx^3F_{\mu\nu}\delta A^{\mu}\bigg|^{x^{\nu}_2}_{x^{\nu}_1}=0\;</Math>|27.8}}
Jeśli wykorzystamy nasz warunek {{LinkWzór|27.8}} do wariacji δS {{LinkWzór|27.7}}, zatem to samo wyrażenie możemy przepisać po wyzerowaniu się według przeprowadzonego naszego dowodu powyżej, zatem tą naszą wspomnianą tożsamość piszemy w postaci:
{{CentrujWzór|<Math>\delta S=\int d^4x\left({{1}\over{\mu_0}}\partial _{\nu}F^{\mu\nu}\mp J^{\mu}\right)\delta A_{\mu}\;</MATH>|27.9}}
Aby wariancja funkcjonału {{LinkWzór|27.9}} była równa zero dla dowolnej wariacji wielkości czteropotencjału A{{Sub|μ}}, to wyrażenie podcałkowe w ostatnim wniosku powinno być równa zero, zatem na tej podstawie powinna zachodzić tożsamość:
{{CentrujWzór|<MATH>{{1}\over{\mu_0}}\partial _{\nu}F^{\mu\nu}\mp J^{\mu}=0\Rightarrow \partial _{\nu}F^{\mu\nu}=\pm\mu_0J^{\mu}\Rightarrow {F^{\mu\nu}}_{,\nu}=\pm \mu_0J^{\mu}\;</MATH>|27.10}}
Widzimy, że równanie {{LinkWzór|27.10}} jest równoważne z równaniem {{LinkWzór|26.12|Elektrodynamika_relatywistyczna}}, zatem gęstość lagrangianu {{LinkWzór|27.1}} jest poprawnym Lagrangianem, czyli wzór {{LinkWzór|27.10}} jest poprawnym wzorem tensorowym z definicją tensora pola elektromagnetycznego napisanego wzorem {{LinkWzór|26.34|Elektrodynamika relatywistyczna}}.
== Lagrangian relatywistyczny pola elektromagnetostatycznego ==
Lagrangian w elektrodynamice relatywistycznej definiujemy przy pomocy potencjału skalarnego φ i wektorowego {{Formuła|<Math>\vec{A}\;</MATH>}} przy prędkości cząstki równym {{Formuła|<MATH>\vec{v}\;</mAth>}} przy rozpatrywanej cząstce o ładunku o wartości q, przedstawiamy według:
{{CentrujWzór|<MATH>L=-m_0c^2\sqrt{1-{{v^2}\over{c^2}}}-q\varphi+q\vec{v}\vec{A}\;</MATH>|27.11}}
Pęd uogólniony w elektrodynamice jest napisany jako pochodna cząstkowa Lagrangianu {{LinkWzór|27.11}} względem wektora prędkości, mamy:
{{CentrujWzór|<maTH>\vec{p}={{\partial L}\over{\partial\vec{v}}}={{m_0\vec{v}}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+q\vec{A}=m\vec{v}+q\vec{A}\;</MATH>|27.12}}
Pęd uogólniony w polu elektromagnetycznym jest równy sumie pędu klasycznego znanej ze szczególnej teorii względności i iloczynowi ładunku cząstki i potencjału wektorowego tego pola. Zatem dochodzimy do wniosku, że ten pęd to nie jest zwykły iloczyn masy relatywistycznej i prędkości cząstki, zachodzi tak tylko w polu bez potencjału wektorowego.
Równanie wariacyjne Eulera-Lagrange'a dla lagrangianu {{LinkWzór|27.11}} jest dokładnie takie same w {{LinkWzór|5.12|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}. W tym wzorze w pierwszym wyrazie pod pochodną zupełną względem czasu występuje pęd uogólniony cząstki {{LinkWzór|27.12}}. Zatem rozważając prawie tak samo jak w tym rozdziale, w którym znajduje się ostatnio wspomniany wzór, wtedy dochodzimy do wzoru na równanie ruchu cząstki punktowej {{LinkWzór|5.21|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, tylko po lewej stronie wzoru występuje nie siła klasyczna Newtona według drugiej zasady dynamiki Newtona, tylko siła relatywistyczna Einsteina. Co kończy dowód, że z zasady najmniejszego działania przy definicji Lagragianu {{LinkWzór|27.11}} wynika dobrze nam znane równanie ruchu.
== Lagrangian relatywistyczny cząstki, w przybliżeniu małych prędkości, dla pola elektromagnetostatycznego ==
Lagrangian relatywistyczny cząstki punktowej o ładunku q {{LinkWzór|27.11}} dla prędkości o wiele mniejszej od prędkości światła, czyli wtedy zachodzi {{Formuła|<MATH>{{v}\over{c}}<<1\;</MATH>}}, wtedy na podstawie tego pierwiastek w nim występujący można rozwinąć w szereg Taylora, wtedy dla tego przybliżenia dostajemy:
{{CentrujWzór|<math>L=-m_0c^2\left(1-{{v^2}\over{2c^2}}+...\right)-q\varphi+q\vec{v}\vec{A}\simeq-m_0c^2+{{1}\over{2}}m_0\vec{v}\vec{v}-q\varphi+q\vec{v}\vec{A}\;</MATH>|27.13}}
W wyrażeniu przybliżonym {{LinkWzór|27.13}} w stosunku do jej odpowiednika klasycznego {{LinkWzór|1.122b|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} różni się o stałą -m{{Sub|0}}c{{Sup|2}}, która w tym przypadku nie odgrywa żadnej roli, ponieważ w równaniu Eulera-Lagrange'a {{LinkWzór|5.12|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} występują pochodne cząstkowe i ta stała według twierdzenia o pochodnej sumy nic nie wnosi we końcowym wniosku.
== Relatywistyczny hamiltonian dla pola elektromagnetostatycznego ==
Wyznaczmy relatywistyczny hamiltoniam dla cząstki w polu elektromagnetostatycznym, korzystając z definicji hamiltonianu dla cząstki relatywistycznej i Lagrangianu relatywistycznego {{LinkWzór|27.11}}, a także z definicji pędu uogólnionego {{LinkWzór|27.12}} dla pola elektromagnetostatycznego:
{{CentrujWzór|<MATH>H=\vec{p}\vec{v}-L=(m\vec{v}+q\vec{A})\vec{v}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi-q\vec{v}\vec{A}=m\vec{v}\vec{v}+q\vec{A}\vec{v}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}v^2+\;</MATH>{{Br}}<MATH>+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2\left(1-{{v^2}\over{c^2}}\right)\right)+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2-v^2\right)+q\varphi={{m_0c^2}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+q\varphi=\;</MATH>{{Br}}<MATH>=mc^2+q\varphi\Rightarrow H=mc^2+q\varphi</MAth>|27.14}}
Widzimy, że wedle końcowych obliczeń przeprowadzonych w punkcie {{LinkWzór|27.14}} hamiltonian ładunku punktowego, to jest po prostu jego energia mechaniczna (całkowita), która jest sumą całkowitej energii relatywistycznej cząstki mc{{Sup|2}} i jego energii potencjalnej qφ.
== Lagrangian a czterowektor potencjału i różniczki zmiany położenia cząstki w czasoprzestrzeni ==
Wykorzystując definicję czteropotencjału kowariantnego {{LinkWzór|26.33|Elektrodynamika_relatywistyczna}} i definicję położenia w czterowymiarowej czasoprzestrzeni, a także definicję różniczki interwału czasoprzestrzennego w szczególnej teorii względności, wtedy definicję Lagrangianu {{LinkWzór|27.11}} możemy zapisać w równoważnej postaci:
{{CentrujWzór|<Math>L=-m_0c^2{{ds}\over{cdt}}-q\left({{\varphi}\over{c}},-\vec{A}\right)\left({{cdt}\over{dt}},{{dx^i}\over{dt}}\right)=
-m_0c^2{{ds}\over{cdt}}\mp qA_{\mu}{{dx^{\mu}}\over{dt}}\;</MATH>|27.15}}
Wedle przekazów z obliczeń przeprowadzonych w punkcie {{LinkWzór|27.15}} iloczyn wspomnianego Lagrangianu L i różniczki czasu, w której badamy ruch badanej cząstki jest wyrażony:
{{CentrujWzór|<MATH>Ldt=-m_0cds\mp qA_{\mu}dx^{\mu}\;</MATH>|27.16}}
Całka działania Lagrangianu {{LinkWzór|27.15}} jest całką naszego Lagrangianu względem czasu i na podstawie wzoru {{LinkWzór|27.16}} jest równa jego przedstawieniu:
{{CentrujWzór|<MATH>S=\int Ldt=\int\left(-m_0cds\mp qA_{\mu}dx^{\mu}\right)\;</MATH>|27.17}}
== Równanie ruchu w czteroprzestrzeni Minkowskiego ==
Zasada najmniejszego działania stwierdza, że względem funkcjonału {{LinkWzór|27.17}}, wariacja tegoż obiektu jest równa zero, tzn.:
{{CentrujWzór|<MATH>\delta S=\delta \int_a^b\left(-m_0cds\mp qA_{\mu}dx^{\mu}\right)=0\;</MATH>|27.18}}
Z definicji różniczki wariacji {{Formuła|<MATh>ds=\sqrt{dx_{\mu}dx^{\mu}}\;</MAth>}} wariację {{LinkWzór|27.18}} po jego działaniu na wnętrze jego nawiasu, stwierdzamy, że na pewno zachodzi:
{{CentrujWzór|<MATH>\delta S=\int_a^b\left(\mp m_0c{{dx_{\mu}d\delta x^{\mu}}\over{ds}}\mp qA_{\mu}d\delta x^{\mu}\mp q\delta A_{\mu}dx^{\mu}\right)=0\Rightarrow
\mp\int_a^b\left(m_0c{{dx_{\mu}d\delta x^{\mu}}\over{ds}}+qA_{\mu}d\delta x^{\mu}+ q\delta A_{\mu}dx^{\mu}\right)=0\;</MATH>|27.19}}
We wzorze {{LinkWzór|27.19}} stosujemy definicję kowariantnego czterowektora prędkości {{Formuła|<MaTH>u_{\mu}={{dx_{\mu}}\over{ds}}\;</MATH>}}, a także całkujemy przez części jego pierwszy i drugi wyraz, dalej grupując odpowiednio wyrazy, otrzymujemy:
{{CentrujWzór|<mAth>\int_a^b\left(m_0cdu_{\mu}\delta x^{\mu}+q\delta x^{\mu}dA_{\mu}-q\delta A_{\mu}dx^{\mu}\right)-\left(m_0cu_{\mu}+qA_{\mu}\right)\delta x^{\mu}\Bigg|_a^b=0\;</MATH>|27.20}}
Drugi wyraz w {{LinkWzór|27.20}} jest równy zero, bo przy wariowaniu całki należy uwzględnić, że współrzędne mają ustalone wartości na końcach przedziału całkowania. Dalej należy uwzględnić tożsamości:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\delta A_{\mu}=A_{\mu,\nu}\delta x^{\nu}\;</MATH>|27.21}}
| 2 = {{CentrujWzór|<math>dA_{\mu}=A_{\mu,\nu}dx^{\nu}\;</MATH>|27.22}}
}}
Jeśli podstawimy tożsamości {{LinkWzór|27.21}} i {{LinkWzór|27.22}} do {{LinkWzór|27.20}}, to otrzymamy do tego ostatniego równoważny wzór:
{{CentrujWzór|<MATH>\int_a^b\left(m_0cdu_{\mu}\delta x^{\mu}+qA_{\mu,\nu}\delta x^{\mu}dx^{\nu}-qA_{\mu,\nu}dx^{\mu}\delta x^{\nu}\right)=0\;</MatH>|27.23}}
Ponieważ we wzorze {{LinkWzór|27.23}} wskaźniki μ i ν są wskaźnikami niemymi, więc w trzecim jego wyrazie pod całką {{LinkWzór|27.23}} zamieniamy miejscami te wskaźniki, a także dla wyrazu drugiego i trzeciego stosujemy wzór {{Formuła|<mATH>dx^{\mu}=u^{\mu}ds\;</MATH>}} wynikająca z defiicji kontrawariannej czteroprędkości, zatem na podstawie wyżej wymienionej tożsamości otrzymujemy wzór:
{{CentrujWzór|<MATH>\int_a^b\left[m_0c{{du_{\mu}}\over{ds}}-q\left(A_{\nu,\mu}-A_{\mu,\nu}\right)u^{\nu}\right]\delta x^{\mu}ds=0\;</MATH>|27.24}}
Ponieważ we wzorze {{LinkWzór|27.24}} rozpatrujemy dowolne wariacje zmiennej {{Sup|μ}}, dla której cała całka jest równa zero, wtedy wyrażenie podcałkowe musi być zawsze być równa zero, zatem:
{{CentrujWzór|<math>m_0c{{du_{\mu}}\over{ds}}-q\left(A_{\nu,\mu}-A_{\mu,\nu}\right)u^{\nu}=0\;</MATH>|27.25}}
Wykorzystujemy definicję tensora pola elektromagnetycznego podwójnie kowariantnego przy pomocy kowariantnego czteropotencjału {{LinkWzór|26.33|Elektrodynamika_relatywistyczna}}, czyli tożsamości fizycznej równoważnej do {{LinkWzór|26.34|Elektrodynamika_relatywistyczna}}, wtedy wzór {{LinkWzór|27.25}} przyjmuje bardziej uproszczoną postać:
{{CentrujWzór|<math>m_0c{{du_{\mu}}\over{ds}}=qF_{\nu\mu}u^{\nu}\Rightarrow m_0c{{du^{\mu}}\over{ds}}=qF^{\nu\mu}u_{\nu}\;</MATH>|27.25a}}
Jeśli wprowadzimy definicję czteropędu w szczególnej teorii względności we wzorze {{LinkWzór|27.25a}} i wykorzystamy definicję czterosiły znanej w szczególnej teorii względności i także wykorzystamy, że tensor pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} jest tensorem antysymetrycznym, wtedy mamy wniosek:
{{CentrujWzór|<math>{{dp^{\mu}}\over{ds}}=qF^{\nu\mu}u_{\nu}\Rightarrow K^{\mu}=-qF^{\mu\nu}u_{\nu}\;</math>|27.26}}
Ten sam wzór, co {{LinkWzór|27.26}}, który otrzymaliśmy z zasady wariacyjnej, napisaliśmy w punkcie {{LinkWzór|26.61|Elektrodynamika_relatywistyczna}}, którego zgodność ze szczególną teorią względności i z definicja siły Lorentza {{LinkWzór|8.3|Magnetostatyka}} udowodniliśmy wykorzystując definicję tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}}. Zatem te dwie metody prowadzą do takiej samej definicji czterowektora siły K{{Sup|μ}}.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
oh7q36i0444d1m8mv5rb79zlxrmxa8u
558907
558906
2026-10-08T07:08:27Z
Persino
2851
/* Lagrangian relatywistyczny pola elektromagnetostatycznego */
558907
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Będziemy tutaj wyprowadzać zasady elektromagnetyzmu z zasad wariacyjnych, na podstawie tego, aby funkcjonał S przyjmował wartość najmniejszą.
== Zasada wariacyjna a równania tensorowe elektromagnetyzmu z definicją czteroprądu ==
Gęstość Lagrangianu w elektromagnetyzmie definiujemy przy pomocy tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} i przy pomocy definicji czteroprądu objętościowego napisanej wedle schematu {{LinkWzór|26.5|Elektrodynamika_relatywistyczna}}. Zatem napiszmy dla obu sygnatur tensora Minkowskiego szczególnej teorii względności (znak u góry sygnatura dodatnia, u dołu ujemna):
{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\;</MAth>|27.1}}
Całką działania nazywamy wyrażenie zdefiniowane na podstawie definicji gęstości lagrangianu {{LinkWzór|27.1}} w postaci:
{{CentrujWzór|<math>S=\int d^4x\mathfrak{L}=\int d^4x\left[-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\right]\;</MATH>|27.2}}
Wariacji całki działania {{LinkWzór|27.2}} zakładamy, że ona jest równa zero, wtedy na podstawie tego powinniliśmy otrzymać tensorowe równanie Maxwella {{LinkWzór|26.12|Elektrodynamika_relatywistyczna}}, zatem sprawdźmy, czy o nam wyjdzie.
{{CentrujWzór|
<math>\delta S=\delta\int d^4x\left[-{{1}\over{4\mu_0}}F_{\mu\nu}F^{\mu\nu}\mp J^{\mu}A_{\mu}\right]=
\int d^4 x\left[-{{1}\over{4\mu_0}}F^{\mu\nu}\delta F_{\mu\nu}-{{1}\over{4\mu_0}}F_{\mu\nu}\delta F^{\mu\nu}\mp J^{\mu}\delta A_{\mu}\right]\;</MATH>|27.3}}
W wariację funkcjonału S {{LinkWzór|27.2}}, czyli δS {{LinkWzór|27.3}}, liczymy względem gęstości objętościowej czteroprądu {{LinkWzór|26.5|Elektrodynamika_relatywistyczna}} (J{{Sup|μ}}), czeropotencjału i tensora pola elektromagnetycznego. Idąc dalej wykorzystajmy wzór na tensor pola elektromagnetycznego wyznaczony w zależności od czteropotencjału, czyli wzoru {{LinkWzór|26.34|Elektrodynamika_relatywistyczna}}.
{{CentrujWzór|<MATH>\delta S=
\int d^4x\left[-{{1}\over{2\mu_0}}F_{\mu\nu}\delta F^{\mu\nu}\mp J^{\mu}\delta A_{\mu}\right]=
\int d^4x\left[-{{1}\over{2\mu_0}}F_{\mu\nu}\left[\partial^{\nu}\left(\delta A^{\mu}\right)-\partial^{\mu}\left(\delta A^{\nu}\right)\right]\mp J^{\mu}\delta A_{\mu}\right]\;</MAth>|27.4}}
W obliczeniach {{LinkWzór|27.4}} wykorzystujemy rozdzielność mnożenia względem dodawania, wiedząc że tensor pola elektromagnetycznego F{{Sup|μν}} {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} jest tensorem antysymetrycznym, tzn. przy zamianie wskaźników miejscami w tym wspomnianym tensorze przed tym tensorem pojawia się znak minus, czyli F{{Sup|μν}}=-F{{Sup|νμ}}.
{{CentrujWzór|<MAth>\delta S=
\int d^4x\left[-{{1}\over{2\mu_0}}\left[F_{\mu\nu}\partial^{\nu}\left(\delta A^{\mu}\right)-F_{\mu\nu}\partial ^{\mu}\left(\delta A^{\nu}\right)\right]\mp J^{\mu}\delta A_{\mu}\right]=\int d^4x\left[-{{1}\over{\mu_0}}F_{\mu\nu}\partial^{\nu}\left(\delta A^{\mu}\right)\mp J^{\mu}\delta A_{\mu}\right]\;</MATh>|27.5}}
Następnym krokiem jest wykorzystanie definicji pochodnej iloczynu dwóch funkcji do pierwszego wyrazu w obliczeniach {{LinkWzór|27.5}}, zatem w takim przypadku dostajemy równość:
{{CentrujWzór|<MATH>\delta S=
\int d^4x\left[-{{1}\over{\mu_0}}\partial ^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)+{{1}\over{\mu_0}}\partial^{\nu}F_{\mu\nu} \delta A^{\mu}\mp J^{\mu}\delta A_{\mu}\right]\;</Math>|27.6}}
Dalszym krokiem jest rozdzielenie w wariacji {{LinkWzór|27.6}} na dwie osobne całki z twierdzenia na całkę sumy dwóch wyrażeń podcałkowych jako sumę całek, w których występują te wyrażenia podcałkowe, wtedy mamy wniosek:
{{CentrujWzór|<MATh>\delta S=
-{{1}\over{\mu_0}}\int d^4x\partial^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)+\int d^4x\left({{1}\over{\mu_0}}\partial_{\nu}F^{\mu\nu}\delta A_{\mu}\mp J^{\mu}\delta A_{\mu}\right)\;</MatH>|27.7}}
Pierwsza całka w obliczeniach {{LinkWzór|27.7}} jest zawsze równa zero, ponieważ można go rozpisać względem całkowania po zmiennej x{{Sup|μ}}, i zakładamy, że wariancja czteropotencjału na końcach x{{Sup|μ}}{{Sub|2}} i x{{Sup|μ}}{{Sub|1}} jest równa zero, co możemy powiedzieć, że:
{{CentrujWzór|<math>\int d^{4}x\partial^{\nu}\left(F_{\mu\nu}\delta A^{\mu}\right)=\int dx^3F_{\mu\nu}\delta A^{\mu}\bigg|^{x^{\nu}_2}_{x^{\nu}_1}=0\;</Math>|27.8}}
Jeśli wykorzystamy nasz warunek {{LinkWzór|27.8}} do wariacji δS {{LinkWzór|27.7}}, zatem to samo wyrażenie możemy przepisać po wyzerowaniu się według przeprowadzonego naszego dowodu powyżej, zatem tą naszą wspomnianą tożsamość piszemy w postaci:
{{CentrujWzór|<Math>\delta S=\int d^4x\left({{1}\over{\mu_0}}\partial _{\nu}F^{\mu\nu}\mp J^{\mu}\right)\delta A_{\mu}\;</MATH>|27.9}}
Aby wariancja funkcjonału {{LinkWzór|27.9}} była równa zero dla dowolnej wariacji wielkości czteropotencjału A{{Sub|μ}}, to wyrażenie podcałkowe w ostatnim wniosku powinno być równa zero, zatem na tej podstawie powinna zachodzić tożsamość:
{{CentrujWzór|<MATH>{{1}\over{\mu_0}}\partial _{\nu}F^{\mu\nu}\mp J^{\mu}=0\Rightarrow \partial _{\nu}F^{\mu\nu}=\pm\mu_0J^{\mu}\Rightarrow {F^{\mu\nu}}_{,\nu}=\pm \mu_0J^{\mu}\;</MATH>|27.10}}
Widzimy, że równanie {{LinkWzór|27.10}} jest równoważne z równaniem {{LinkWzór|26.12|Elektrodynamika_relatywistyczna}}, zatem gęstość lagrangianu {{LinkWzór|27.1}} jest poprawnym Lagrangianem, czyli wzór {{LinkWzór|27.10}} jest poprawnym wzorem tensorowym z definicją tensora pola elektromagnetycznego napisanego wzorem {{LinkWzór|26.34|Elektrodynamika relatywistyczna}}.
== Lagrangian relatywistyczny pola elektromagnetostatycznego ==
Lagrangian w elektrodynamice relatywistycznej definiujemy przy pomocy potencjału skalarnego φ i wektorowego {{Formuła|<Math>\vec{A}\;</MATH>}} przy prędkości cząstki równym {{Formuła|<MATH>\vec{v}\;</mAth>}} przy rozpatrywanej cząstce o ładunku o wartości q, przedstawiamy według:
{{CentrujWzór|<MATH>L=-m_0c^2\sqrt{1-{{v^2}\over{c^2}}}-q\varphi+q\vec{v}\vec{A}\;</MATH>|27.11}}
Pęd uogólniony w elektrodynamice jest napisany jako pochodna cząstkowa Lagrangianu {{LinkWzór|27.11}} względem wektora prędkości, mamy:
{{CentrujWzór|<maTH>\vec{p}={{\partial L}\over{\partial\vec{v}}}={{m_0\vec{v}}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+q\vec{A}=m\vec{v}+q\vec{A}\;</MATH>|27.12}}
Pęd uogólniony w polu elektromagnetycznym jest równy sumie pędu klasycznego znanej ze szczególnej teorii względności i iloczynowi ładunku cząstki i potencjału wektorowego tego pola. Zatem dochodzimy do wniosku, że ten pęd to nie jest zwykły iloczyn masy relatywistycznej i prędkości cząstki, zachodzi tak tylko w polu bez potencjału wektorowego.
Równanie wariacyjne Eulera-Lagrange'a dla lagrangianu {{LinkWzór|27.11}} jest dokładnie takie same w {{LinkWzór|5.12|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}. W tym wzorze w pierwszym wyrazie pod pochodną zupełną względem czasu występuje pęd uogólniony cząstki {{LinkWzór|27.12}}. Zatem rozważając prawie tak samo jak w tym rozdziale, w którym znajduje się ostatnio wspomniany wzór, wtedy dochodzimy do wzoru na równanie ruchu cząstki punktowej {{LinkWzór|5.21|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, tylko po lewej stronie wzoru występuje nie siła klasyczna Newtona według drugiej zasady dynamiki Newtona, tylko siła relatywistyczna Einsteina.
Co kończy dowód, że z zasady najmniejszego działania przy definicji Lagragianu {{LinkWzór|27.11}} wynika dobrze nam znane równanie ruchu.
== Lagrangian relatywistyczny cząstki, w przybliżeniu małych prędkości, dla pola elektromagnetostatycznego ==
Lagrangian relatywistyczny cząstki punktowej o ładunku q {{LinkWzór|27.11}} dla prędkości o wiele mniejszej od prędkości światła, czyli wtedy zachodzi {{Formuła|<MATH>{{v}\over{c}}<<1\;</MATH>}}, wtedy na podstawie tego pierwiastek w nim występujący można rozwinąć w szereg Taylora, wtedy dla tego przybliżenia dostajemy:
{{CentrujWzór|<math>L=-m_0c^2\left(1-{{v^2}\over{2c^2}}+...\right)-q\varphi+q\vec{v}\vec{A}\simeq-m_0c^2+{{1}\over{2}}m_0\vec{v}\vec{v}-q\varphi+q\vec{v}\vec{A}\;</MATH>|27.13}}
W wyrażeniu przybliżonym {{LinkWzór|27.13}} w stosunku do jej odpowiednika klasycznego {{LinkWzór|1.122b|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} różni się o stałą -m{{Sub|0}}c{{Sup|2}}, która w tym przypadku nie odgrywa żadnej roli, ponieważ w równaniu Eulera-Lagrange'a {{LinkWzór|5.12|Teoria funkcji lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} występują pochodne cząstkowe i ta stała według twierdzenia o pochodnej sumy nic nie wnosi we końcowym wniosku.
== Relatywistyczny hamiltonian dla pola elektromagnetostatycznego ==
Wyznaczmy relatywistyczny hamiltoniam dla cząstki w polu elektromagnetostatycznym, korzystając z definicji hamiltonianu dla cząstki relatywistycznej i Lagrangianu relatywistycznego {{LinkWzór|27.11}}, a także z definicji pędu uogólnionego {{LinkWzór|27.12}} dla pola elektromagnetostatycznego:
{{CentrujWzór|<MATH>H=\vec{p}\vec{v}-L=(m\vec{v}+q\vec{A})\vec{v}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi-q\vec{v}\vec{A}=m\vec{v}\vec{v}+q\vec{A}\vec{v}+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}v^2+\;</MATH>{{Br}}<MATH>+m_0c^2\sqrt{1-{{v^2}\over{c^2}}}+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2\left(1-{{v^2}\over{c^2}}\right)\right)+q\varphi={{m_0}\over{\sqrt{1-{{v^2}\over{c^2}}}}}\left(v^2+c^2-v^2\right)+q\varphi={{m_0c^2}\over{\sqrt{1-{{v^2}\over{c^2}}}}}+q\varphi=\;</MATH>{{Br}}<MATH>=mc^2+q\varphi\Rightarrow H=mc^2+q\varphi</MAth>|27.14}}
Widzimy, że wedle końcowych obliczeń przeprowadzonych w punkcie {{LinkWzór|27.14}} hamiltonian ładunku punktowego, to jest po prostu jego energia mechaniczna (całkowita), która jest sumą całkowitej energii relatywistycznej cząstki mc{{Sup|2}} i jego energii potencjalnej qφ.
== Lagrangian a czterowektor potencjału i różniczki zmiany położenia cząstki w czasoprzestrzeni ==
Wykorzystując definicję czteropotencjału kowariantnego {{LinkWzór|26.33|Elektrodynamika_relatywistyczna}} i definicję położenia w czterowymiarowej czasoprzestrzeni, a także definicję różniczki interwału czasoprzestrzennego w szczególnej teorii względności, wtedy definicję Lagrangianu {{LinkWzór|27.11}} możemy zapisać w równoważnej postaci:
{{CentrujWzór|<Math>L=-m_0c^2{{ds}\over{cdt}}-q\left({{\varphi}\over{c}},-\vec{A}\right)\left({{cdt}\over{dt}},{{dx^i}\over{dt}}\right)=
-m_0c^2{{ds}\over{cdt}}\mp qA_{\mu}{{dx^{\mu}}\over{dt}}\;</MATH>|27.15}}
Wedle przekazów z obliczeń przeprowadzonych w punkcie {{LinkWzór|27.15}} iloczyn wspomnianego Lagrangianu L i różniczki czasu, w której badamy ruch badanej cząstki jest wyrażony:
{{CentrujWzór|<MATH>Ldt=-m_0cds\mp qA_{\mu}dx^{\mu}\;</MATH>|27.16}}
Całka działania Lagrangianu {{LinkWzór|27.15}} jest całką naszego Lagrangianu względem czasu i na podstawie wzoru {{LinkWzór|27.16}} jest równa jego przedstawieniu:
{{CentrujWzór|<MATH>S=\int Ldt=\int\left(-m_0cds\mp qA_{\mu}dx^{\mu}\right)\;</MATH>|27.17}}
== Równanie ruchu w czteroprzestrzeni Minkowskiego ==
Zasada najmniejszego działania stwierdza, że względem funkcjonału {{LinkWzór|27.17}}, wariacja tegoż obiektu jest równa zero, tzn.:
{{CentrujWzór|<MATH>\delta S=\delta \int_a^b\left(-m_0cds\mp qA_{\mu}dx^{\mu}\right)=0\;</MATH>|27.18}}
Z definicji różniczki wariacji {{Formuła|<MATh>ds=\sqrt{dx_{\mu}dx^{\mu}}\;</MAth>}} wariację {{LinkWzór|27.18}} po jego działaniu na wnętrze jego nawiasu, stwierdzamy, że na pewno zachodzi:
{{CentrujWzór|<MATH>\delta S=\int_a^b\left(\mp m_0c{{dx_{\mu}d\delta x^{\mu}}\over{ds}}\mp qA_{\mu}d\delta x^{\mu}\mp q\delta A_{\mu}dx^{\mu}\right)=0\Rightarrow
\mp\int_a^b\left(m_0c{{dx_{\mu}d\delta x^{\mu}}\over{ds}}+qA_{\mu}d\delta x^{\mu}+ q\delta A_{\mu}dx^{\mu}\right)=0\;</MATH>|27.19}}
We wzorze {{LinkWzór|27.19}} stosujemy definicję kowariantnego czterowektora prędkości {{Formuła|<MaTH>u_{\mu}={{dx_{\mu}}\over{ds}}\;</MATH>}}, a także całkujemy przez części jego pierwszy i drugi wyraz, dalej grupując odpowiednio wyrazy, otrzymujemy:
{{CentrujWzór|<mAth>\int_a^b\left(m_0cdu_{\mu}\delta x^{\mu}+q\delta x^{\mu}dA_{\mu}-q\delta A_{\mu}dx^{\mu}\right)-\left(m_0cu_{\mu}+qA_{\mu}\right)\delta x^{\mu}\Bigg|_a^b=0\;</MATH>|27.20}}
Drugi wyraz w {{LinkWzór|27.20}} jest równy zero, bo przy wariowaniu całki należy uwzględnić, że współrzędne mają ustalone wartości na końcach przedziału całkowania. Dalej należy uwzględnić tożsamości:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\delta A_{\mu}=A_{\mu,\nu}\delta x^{\nu}\;</MATH>|27.21}}
| 2 = {{CentrujWzór|<math>dA_{\mu}=A_{\mu,\nu}dx^{\nu}\;</MATH>|27.22}}
}}
Jeśli podstawimy tożsamości {{LinkWzór|27.21}} i {{LinkWzór|27.22}} do {{LinkWzór|27.20}}, to otrzymamy do tego ostatniego równoważny wzór:
{{CentrujWzór|<MATH>\int_a^b\left(m_0cdu_{\mu}\delta x^{\mu}+qA_{\mu,\nu}\delta x^{\mu}dx^{\nu}-qA_{\mu,\nu}dx^{\mu}\delta x^{\nu}\right)=0\;</MatH>|27.23}}
Ponieważ we wzorze {{LinkWzór|27.23}} wskaźniki μ i ν są wskaźnikami niemymi, więc w trzecim jego wyrazie pod całką {{LinkWzór|27.23}} zamieniamy miejscami te wskaźniki, a także dla wyrazu drugiego i trzeciego stosujemy wzór {{Formuła|<mATH>dx^{\mu}=u^{\mu}ds\;</MATH>}} wynikająca z defiicji kontrawariannej czteroprędkości, zatem na podstawie wyżej wymienionej tożsamości otrzymujemy wzór:
{{CentrujWzór|<MATH>\int_a^b\left[m_0c{{du_{\mu}}\over{ds}}-q\left(A_{\nu,\mu}-A_{\mu,\nu}\right)u^{\nu}\right]\delta x^{\mu}ds=0\;</MATH>|27.24}}
Ponieważ we wzorze {{LinkWzór|27.24}} rozpatrujemy dowolne wariacje zmiennej {{Sup|μ}}, dla której cała całka jest równa zero, wtedy wyrażenie podcałkowe musi być zawsze być równa zero, zatem:
{{CentrujWzór|<math>m_0c{{du_{\mu}}\over{ds}}-q\left(A_{\nu,\mu}-A_{\mu,\nu}\right)u^{\nu}=0\;</MATH>|27.25}}
Wykorzystujemy definicję tensora pola elektromagnetycznego podwójnie kowariantnego przy pomocy kowariantnego czteropotencjału {{LinkWzór|26.33|Elektrodynamika_relatywistyczna}}, czyli tożsamości fizycznej równoważnej do {{LinkWzór|26.34|Elektrodynamika_relatywistyczna}}, wtedy wzór {{LinkWzór|27.25}} przyjmuje bardziej uproszczoną postać:
{{CentrujWzór|<math>m_0c{{du_{\mu}}\over{ds}}=qF_{\nu\mu}u^{\nu}\Rightarrow m_0c{{du^{\mu}}\over{ds}}=qF^{\nu\mu}u_{\nu}\;</MATH>|27.25a}}
Jeśli wprowadzimy definicję czteropędu w szczególnej teorii względności we wzorze {{LinkWzór|27.25a}} i wykorzystamy definicję czterosiły znanej w szczególnej teorii względności i także wykorzystamy, że tensor pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}} jest tensorem antysymetrycznym, wtedy mamy wniosek:
{{CentrujWzór|<math>{{dp^{\mu}}\over{ds}}=qF^{\nu\mu}u_{\nu}\Rightarrow K^{\mu}=-qF^{\mu\nu}u_{\nu}\;</math>|27.26}}
Ten sam wzór, co {{LinkWzór|27.26}}, który otrzymaliśmy z zasady wariacyjnej, napisaliśmy w punkcie {{LinkWzór|26.61|Elektrodynamika_relatywistyczna}}, którego zgodność ze szczególną teorią względności i z definicja siły Lorentza {{LinkWzór|8.3|Magnetostatyka}} udowodniliśmy wykorzystując definicję tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna}}. Zatem te dwie metody prowadzą do takiej samej definicji czterowektora siły K{{Sup|μ}}.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
n721vnfk88hkfwjy1y36s8m07myszzh
Elektrodynamika klasyczna/Pole skalarne
0
18969
558871
513480
2026-10-08T00:11:05Z
Persino
2851
558871
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
''Polem skalarnym'' nazywamy pole, w której w każdym punkcie w przestrzeni odpowiada pewien skalar.
== Potencjał elektryczny ==
Weźmy dwa punkty, A i B, w których występują pewne statyczne pola elektryczne.Wtedy zmianę potencjału skalarnego pola elektrycznego definiujemy jako:
{{CentrujWzór|<MATH>\Delta_A^B \varphi=-\int_A^B\vec{E}d\vec{l}\;</MATH>|3.1}}
Dla pola elektrycznego skalarnego zakładamy, że zmiana potencjału nie zależy od jej drogi na drodze dowolnej z A do B, całka z różniczki zupełnej jest tak właśnie skonstruowana, by ona nie zależała od trajektorii między oba określonymi punktami, a zatem z definicji różniczki zupełnej, różniczkę zupełną pod całką możemy rozpisać wedle schematu poniżej:
{{CentrujWzór|<MATH>\Delta_A^B \varphi=\int_A^Bd\varphi=\int_A^B\left[{{\partial \varphi}\over{\partial x}}dx+{{\partial \varphi}\over{\partial y}}dy+{{\partial \varphi}\over{\partial z}}dz\right]=\int_A^B \operatorname{grad}\varphi d\vec{l}\;</MATH>|3.2}}
Porównajmy wzór {{LinkWzór|3.1}} ze wzorem {{LinkWzór|3.2}}, bo oba wzory oznaczają to samo, zmianę potencjału na drodze z A do B, która w ogólności nie jest odcinkiem prostym i przenosząc wszystko na lewą stronę tak by po lewej stronie była całka z pewną funkcją podcałkową, a po prawej stronie zero:
{{CentrujWzór|<MATH>\int_A^B \operatorname{grad}\varphi d\vec{l}=-\int_A^B\vec{E}d\vec{l}\Rightarrow \int_A^B\left(\operatorname{grad}\varphi+\vec{E}\right)d\vec{l}=0\;</MATH>|3.3}}
Wzór {{LinkWzór|3.3}} jest spełniony dla dowolnej linii łączącej punkt początkowy A z punktem końcowym B, zatem wnioskujemy we wspomnianym wzorze funkcja podcałkowa jest równa zero, czyli
{{CentrujWzór|<MATH>\operatorname{grad}\varphi+\vec{E}=0\;</MATH>|3.4}}
zatem ostatecznie z {{LinkWzór|3.4}} wyznaczając wektor natężenia pola elektrycznego, wtedy dostajemy wzór na tą wielkość w zależności od gradientu potencjału skalarnego wziętych z minusem:
{{CentrujWzór|<MATH>\vec{E}=-\operatorname{grad}\varphi\;</MATH>|3.5}}
== Prawo Stokesa dla elektrostatyki a definicja pola elektrostatycznego poprzez potencjał ==
Teraz sprawdzimy czy jest spełnione prawo Stokesa dla elektrostatyki, zatem policzmy wtedy wyrażenie matematyczne składające z rotacji i gradientu, zatem piszemy:
{{CentrujWzór|<MATH>\operatorname{rot}\vec{E}=\operatorname{rot}\operatorname{grad}\varphi=(\nabla\times\nabla)\varphi=
\epsilon_{ijk}\nabla_{j}\nabla_k\varphi={{1}\over{2}}\left(\epsilon_{ijk}\nabla_{j}\nabla_k+\epsilon_{ijk}\nabla_{j}\nabla_k\right)\varphi=
{{1}\over{2}}\left(\epsilon_{ijk}\nabla_{j}\nabla_k+\epsilon_{ikj}\nabla_{k}\nabla_j\right)\varphi=\;</MaTH>{{Br}}<Math>=
{{1}\over{2}}\left(\epsilon_{ijk}\nabla_{j}\nabla_k-\epsilon_{ijk}\nabla_{k}\nabla_j\right)\varphi={{1}\over{2}}\left(\epsilon_{ijk}\nabla_{j}\nabla_k-\epsilon_{ijk}\nabla_j\nabla_k\right)\varphi=0\;</MATH>|3.6}}
Co dla pola elektrostatycznego udowodniliśmy prawo Stokesa {{LinkWzór|2.17|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}}.
== Addytywność potencjału elektrycznego ==
Jeśli potencjał pola skalarnego jest wielkością addytywną, to natężenie pola elektrycznego jest też addytywne, i odwrotne.
Określmy i nazwijmy ją całkowitym potencjałem elektrycznym pola elektrycznego jako sumę potencjałów elektrycznych pochodzących od N ładunków:
{{CentrujWzór|<MATH>\varphi=\sum_{i=1}^N \varphi_i\;</MATH>|3.7}}
I policzmy wyrażenie poniżej, korzystając ze wzoru {{LinkWzór|3.7}}, wtedy dojdziemy do wzoru {{LinkWzór|1.5|Elektrostatyka}}, że natężenie natężenia elektrycznego jest wielkością addytywną, co jest prawdą, tzn:
{{CentrujWzór|<MATH>-\operatorname{grad}\varphi=\operatorname{grad}\sum_{i=1}^N \varphi_i=-\sum^N_{i=1}\operatorname{grad}\varphi_i=\sum^N_{i=1}\vec{E}_i=\vec{E}\;</MATH>|3.8}}
Dowodząc odwrotnie z addywności natężeń elektrycznych dostajemy addywność potencjałów elektrycznych w postaci {{LinkWzór|3.7}}, prowadząc obliczenia w przeciwnym kierunku, niż w dowodzie {{LinkWzór|3.8}}.
Dochodzimy, że jeśli pole skalarne, których jest potencjał elektryczny jest addytywny, to stąd wynika, że pole elektryczne wektorowe też jest jest wielkością addytywną, co otrzymujemy prawidłowo dotyczące właściwości natężenia pola elektrycznego, która z kolei wynika niezależności działania sił elektrycznych pochodzący od różnych ładunków.
== Równanie Poissona a równanie Laplace'a ==
Równania Poissona można udowodnić korzystając z {{LinkWzór|2.11|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}} i z definicji natężenia pola elektrycznego poprzez jego potencjał skalarny w danym punkcie {{LinkWzór|3.5}}, zatem łącząc obydwa te dwa równania, otrzymujemy:
{{CentrujWzór|<MATH>-\operatorname{div}\operatorname{grad}\varphi={{\rho}\over{\epsilon_0}}\;</MATH>|3.9}}
co równaniu {{LinkWzór|3.8}} rozpisujemy operator {{Formuła|<MATH>\operatorname{div}\operatorname{grad}\;</MATH>}} i dochodzimy do wniosku, że ten nasz wspomniany operator jest to po prostu laplasjan, czyli kwadrat operatora dywergencji.
{{CentrujWzór|<MATH>\Delta \varphi=-{{\rho}\over{\epsilon_0}}\;</MATH>|3.10}}
Równanie Laplace'a otrzymujemy z {{LinkWzór|3.10}}, gdy zachodzi ρ=0, czyli gęstość objętościowa ładunku elektrycznego jest równa zero, a zatem mamy:
{{CentrujWzór|<MATH>\Delta \varphi=0\;</MATH>|3.11}}
Czyli wyliczając natężenie pola elektrostatycznego należy z korzystać z równania Poissona {{LinkWzór|3.9}} i potem z obliczeń potencjału skalarnego wyznaczyć natężenie pola elektrycznego, należy pamiętać, że przy definicji potencjału elektrycznego różniczkowe prawo Stokesa jest automatycznie spełnione jak pokazano w dowodzie {{LinkWzór|3.6}}.
== Praca podczas przesuwania ładunku próbnego ==
Wiadomo, że jednak praca wykonana podczas przesuwania ładunku q w polu o ładunku Q jest napisana wzorem poniżej, wiedząc że źródło nie porusza się i środek układu współrzędnych znajduje się, gdzie jest nasze źródło pola i wtedy zachodzi na pewno {{Formuła|<MATH>\vec{R}=\vec{r}</MATH>}}, zatem:
{{CentrujWzór|<MATH>W=\int_A^B dW=-\int_A^B \vec{F}d\vec{r}=-\int_A^B FdR=-\int_A^B{{Qq}\over{4\pi\epsilon_0}}{{dR}\over{R^2}}=-{{Qq}\over{4\pi\epsilon_0}}\int_A^B{{dR}\over{R^2}}=-{{Qq}\over{4\pi\epsilon_0}}\left[-{{1}\over{R}}\right]_A^B=
{{Qq}\over{4\pi\epsilon_0}}\left[{{1}\over{R_B}}-{{1}\over{R_A}}\right]\;</MATH>|3.12}}
A zatem pracę wykonana nad ładunkiem q w polu o ładunku Q jest zależna od odległości od ładunku Q z jaką ładunek q zostaje przesunięty od R{{Sub|A}} do R{{Sub|B}}, i ta praca jest zatem wyrażona:
{{CentrujWzór|<MATH>W={{Qq}\over{4\pi\epsilon_0}}\left[{{1}\over{R_B}}-{{1}\over{R_A}}\right]\;</MATH>|3.13}}
== Energia potencjalna ładunku q w polu ładunku Q ==
Zakładamy, że energia elektryczna ładunku q w polu ładunku Q, nieskończenie daleko od Q jest równa zero, a zatem praca {{LinkWzór|3.13}} wykonana podczas przesuwania ładunku q z {{Formuła|<MATH>R_A=\infty\;</MATH>}} do odległości R między tymi punktami przy nieruchomym ładunku Q, jest z definicji energią potencjalną omawianego ładunku w odległości R od ładunku Q, jest wyrażona:
{{CentrujWzór|<MATH>W={{Qq}\over{4\pi\epsilon_0}}\left[{{1}\over{R}}-{{1}\over{\infty}}\right]={{Qq}\over{4\pi\epsilon_0}}{{1}\over{R}}=E_p\;</MATH>|3.14}}
Energia ładunku q w polu elektrycznym na podstawie wzoru {{LinkWzór|3.14}} jest wyrażona poprzez odległość R między tymi ładunkami i od wartości naszych ładunków q i Q oraz jest ona napisana:
{{CentrujWzór|<MATH>E_p={{Qq}\over{4\pi\epsilon_0}}{{1}\over{R}}\;</MATH>|3.15}}
== Alternatywna definicja potencjału elektrycznego ==
Potencjałem elektrycznym nazywamy iloraz energii potencjalnej {{LinkWzór|3.15}} ładunku próbnego przez wartość tego ładunku, by ten ładunek nie zaburzał pół pochodzących od innych ładunków w przestrzeni:
{{CentrujWzór|<MATH>\varphi={{E_p}\over{q}}\;</MATH>|3.16}}
Dla ładunku punktowego potencjał elektryczny zdefiniowanej wedle wzoru {{LinkWzór|3.16}}, będziemy skorzystać z definicji energii potencjalnej dla ładunku punktowego q {{LinkWzór|3.15}} w polu ładunku Q, zależy ona tylko o wartości ładunku Q i odległości R od tego ładunku, w którym liczymy ten potencjał, jest wyrażony poprzez:
{{CentrujWzór|<MATH>\varphi={{1}\over{4\pi\epsilon_0}}{{Q}\over{R}}\;</MATH>|3.17}}
Poniżej zakładamy, że źródło pola elektrycznego nie porusza się.
Zbadajmy równoważność wzoru na potencjał skalarny {{LinkWzór|3.17}} z definicją potencjału skalarnego otrzymanego ze wzoru {{LinkWzór|3.5}} mając już znane natężenie pola elektrycznego, zatem zbadajmy czy dla ładunku punktowego znając te obydwa wspomniane wzory, w której czy dostaniemy prawidłową definicję natężenia pola elektrycznego ładunku punktowego {{LinkWzór|1.3|Elektrostatyka}}.
{{CentrujWzór|<MATH>\operatorname{grad}\varphi={{\partial \varphi}\over{\partial R}}\operatorname{grad}R={{\vec{R}}\over{R}}{{\partial \varphi}\over{\partial R}}=
{{\vec{R}}\over{R}}{{\partial }\over{\partial R}}\left[{{1}\over{4\pi\epsilon_0}}{{Q}\over{R}}\right]=-{{1}\over{4\pi\epsilon_0}}{{Q}\over{R^2}}\hat{\vec{R}}=-\vec{E}\;</MATH>|3.18}}
Z obliczeń {{LinkWzór|3.18}} otrzymujemy wyrażenie na natężenia pola elektrycznego poprzez jego potencjał skalarny, czyli {{LinkWzór|3.17}}.
Dochodzimy więc do wniosku, że definicja potencjału elektrycznego jako iloraz energii potencjalnej i wartości ładunku punktowego {{LinkWzór|3.16}} jest poprawną definicją.
== Potencjał dla ciągłego rozkładu ładunków ==
Z definiujmy, że ładunek infinitezymalny znajdujący się w danym punkcie przestrzeni przez {{LinkWzór|1.6|Elektrostatyka}}, wtedy potencjał elektryczny w punkcie A jest wyrażona przez całkę infitezymalnych potencjałów elektrycznych, ponieważ jak udowodniliśmy potencjały elektryczne, nawet te infitezymalne są wielkościami addtywnymi według {{LinkWzór|3.6}} i dowodu tej addywności {{LinkWzór|3.7}}, które te potencjały są wyrażone zamiast przy pomocy ładunku Q w {{LinkWzór|3.15}}, przez infinitezymalne ładunki, wyrażone przez gęstość objętościową pomnożoną przez infitezymalną objętość zajmowany przez nasz infinitezymalny ładunek w danym punkcie o wektorze wodzącym {{Formuła|<MATH>\vec{r}^'\;</MATH>}}:
{{CentrujWzór|<MATH>\varphi(\vec{r})=\int_V d\varphi(\vec{r}^')=
{{1}\over{4\pi\epsilon_0}}\int_V{{\rho(\vec{r}^')}\over{R}}dV^'\;</MATH>|3.19}}
Zatem nasz całkowity potencjał występujący w punkcje A wedle {{LinkWzór|3.19}} jest zależny od gęstości ładunków znajdujących się w danych punktach w objętości V oraz wyrażona jest:
{{CentrujWzór|<MATH>\varphi(\vec{r})={{1}\over{4\pi\epsilon_0}}\int_V{{\rho(\vec{r}^')}\over{R}}dV^'\;</MATH>|3.20}}
Jest to ogólny wzór na rozkład ciągły ładunków w ściśle określonej przestrzeni.
== Całkowita energia układu dyskretnego w wzajemnym polu elektrycznym ==
Całkowita energia potencjalna dyskretnego układu ładunków jest wyrażona w postaci sumy energii potencjalnej układu ładunków, które te składniki są iloczynem potencjału elektrycznego i danego ładunku, ponieważ energia potencjalna układu dwóch ładunków jest rozłożona pomiędzy nimi jednokrotnie, więc po sumowaniu po wszystkich ładunkach wynika, że wynik należy podzielić przez dwa, aby energia danych dwóch ładunków najpierw po sumowaniu po pierwszym, a potem po drugim ładunku, aby się nie powtarzała, ponieważ wedle wzoru {{LinkWzór|3.16}} (definicja potencjały cząstki), a potem {{LinkWzór|3.15}} (energia pojedynczej cząstki) energia układu jest symetryczna względem przestawień ładunków, i jest wyrysowana:
{{CentrujWzór|<MATH>E_p={{1}\over{2}}\sum^N_{i=1}q_i \varphi_i\;</MATH>|3.21}}
Powyżej dlatego występuje czynnik: {{Formuła|<MATH>{{1}\over{2}}\;</MATH>}}, bo pomiędzy dwoma cząstkami jest rozłożona cząstkowa energia potencjalna, a zatem znając definicję φ{{Sub|i}}, to całkowita energia układu jest wyrażona przez:
{{CentrujWzór|<MATH>E_p={{1}\over{2}}\sum^N_{i=1}q_i\sum^N_{j=1}{{1}\over{4\pi\epsilon_0}}{{q_j}\over{r_{ij}}}={{1}\over{8\pi\epsilon_0}}\sum^N_{i,j=1}{{q_iq_j}\over{r_{ij}}}\;</MATH>|3.22}}
== Energia ciągłego rozkładu ładunku ==
Energia ciągłego rozkładu ładunku na podstawie jej dyskretnego przedstawienia {{LinkWzór|3.21}}, dalej zamieniając dyskretne ładunki punktowe na ich infinitezymalne odpowiedniki, a to z kolei wykorzystywać będziemy wzór {{LinkWzór|1.6|Elektrostatyka}} zamieniając sumę na całkowanie po infinitezymalnej objętości, w której zawarte są te ładunki:
{{CentrujWzór|<MATH>E_p={{1}\over{2}}\int\rho \varphi dV\;</MATH>|3.23}}
Jeśli wiadomo, że z {{LinkWzór|2.11|Różniczkowe_i_całkowe_prawa_dla_elektrostatyki}} wynika wzór na gęstość ładunku w danym punkcie w zależności od dywergencji natężenia pola elektrycznego:
{{CentrujWzór|<MATH>\operatorname{div}\vec{E}={{\rho}\over{\epsilon_0}}\Rightarrow \rho=\epsilon_0\operatorname{div}\vec{E}\;</MATH>|3.24}}
Zatem nasza energia potencjalna {{LinkWzór|3.23}} dla naszego układu, gdy gęstość ładunku występuje w danym punkcie jest wyrażone wedle wzoru {{LinkWzór|3.24}}, to wtedy całkowita energia układu ciągłego ładunków jest wyrażona poprzez dywergencję natężenia pola elektrycznego, przyjmuje postać:
{{CentrujWzór|<MATH>E={{\epsilon_0}\over{2}}\int \operatorname{div}\vec{E}\varphi dV\;</MATH>|3.25}}
Dokonajmy całkowania przez części równania {{LinkWzór|3.25}}, korzystając przy tym, że całka {{Formuła|<MATH>\int_S\vec{E}\varphi d\vec{S}\;</MATH>}} jest równa zero obierając kulę o nieskończenie dużym promieniu, wtedy potencjał skalarny tam jest równy zero i wtedy ten wyraz znika, zatem dostajemy, że energia potencjalna układu ładunków rozmieszczonych w próżni jest równa:
{{CentrujWzór|<MATH>E_p={{\epsilon_0}\over{2}}\int \operatorname{div}\vec{E}\varphi dV=
{{\epsilon_0}\over{2}}\left[\oint_S\vec{E}\varphi d\vec{S}-\int\vec{E}\operatorname{grad}\varphi dV\right]=
-{{\epsilon_0}\over{2}}\int\vec{E}\operatorname{grad}\varphi dV={{\epsilon_0}\over{2}}\int E^2dV\;</MATH>|3.26}}
Całkowita energia w układu ciągłego ładunków wedle wzoru {{LinkWzór|3.26}} jest wyrażona w postaci:
{{CentrujWzór|<MATH>E_p={{\epsilon_0}\over{2}}\int E^2dV\;</MATH>|3.27}}
Energia potencjalna układu ładunków o bardzo dużej objętości i jest to całka kwadratu natężenia pola elektrycznego wytwarzanych przez te ładunki całkowaną względem objętości.
== Łamanie superpozycji dla pola elektrycznego ==
Połóżmy, jako że całkowite natężenie pola jako suma dwóch natężeń pochodzących od dwóch rozkładów ładunków ciągłych wedle prawa {{LinkWzór|1.5|Elektrostatyka}}, którego całkowite natężenia pola elektrycznego jest sumą natężeń rozkładów cząstkowych w postaci:
{{CentrujWzór|<MATH>\vec{E}=\vec{E}_1+\vec{E}_2\;</MATH>|3.28}}
to wyrażenie {{LinkWzór|3.27}} na podstawie superpozycji natężeń pól elektrycznych {{LinkWzór|3.28}} jest napisana przez całkę:
{{CentrujWzór|<MATH>W={{\epsilon_0}\over{2}}\int E^2dV={{\epsilon_0}\over{2}}\int \left(\vec{E}_1+\vec{E}_2\right)^2dV={{\epsilon_0}\over{2}}\int \left(E_1^2+E_2^2+2\vec{E}_1\vec{E}_2\right)dV=W_1+W_2+\epsilon_0\int \vec{E}_1\vec{E}_2dV\;</MATH>|3.29}}
W ten sposób udowodniliśmy, że energia układu cząstek {{LinkWzór|3.29}} nie jest wielkością addytywną, czyli nie jest sumą energii dwóch rozkładów ciągłych ładunków, ponieważ w powyższym wzorze występuje ostatni człon, oprócz energii potencjalnej dwóch rozkładów ładunków występuje również człon, który jest całką iloczynu skalarnego natężeń pochodzących od dwóch rozkładów ładunków ciągłych całkując po objętości, która w ogólności jest różna od zera. Ten człon jest odpowiedzialny za wzajemną energię potencjalną między tymi dwoma rozkładami.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
kg2pd6vrkyiifxmlwnrt4vb8wivdjob
Niemiecki/Słowotwórstwo/Zrostek/Tabela zrostków derywacyjnych
0
22422
558936
548323
2026-10-08T11:46:22Z
EdytaT
2664
/* Sufixoidy (Suffixoide) */
558936
wikitext
text/x-wiki
{{Podrozdział|[[Niemiecki|Język niemiecki]]<br>[[Niemiecki/Słowotwórstwo|Słowotwórstwo]]|Tabela zrostków derywacyjnych}}
== Zrostki derywacyjne (''Derivationsaffixe'') w języku niemieckim ==
=== Afiksy rzeczownikowe (''Nominalaffixe'') ===
{|class="wikitable"
|+
! Przedrostki (''Präfixe'')
! Przedrostki (''Präfixe'')<br> pochodzenia obcego
! Przyrostki (''Suffixe'')
! Przyrostki (''Suffixe'')<br> pochodzenia obcego
|-
| erz-, ge-, haupt-, [http://pl.wiktionary.org/wiki/miss- miss-], [http://pl.wiktionary.org/wiki/un- un-], [http://pl.wiktionary.org/wiki/ur- ur-]
| a-/an-, anti-, de-/des-, dis-, ex- hyper-, in-, inter-, ko-/kon-, kom-, non-, prä-, pro-, re-, super-, trans-, ultra-
| [http://pl.wiktionary.org/wiki/-bold -bold], [http://pl.wiktionary.org/wiki/-chen -chen], [http://pl.wiktionary.org/wiki/-de -de], [http://pl.wiktionary.org/wiki/-e -e], [http://pl.wiktionary.org/wiki/-ei -(er/el)ei], [http://pl.wiktionary.org/wiki/-er -er], [http://pl.wiktionary.org/wiki/-heit -heit], [http://pl.wiktionary.org/wiki/-keit -keit]/[http://pl.wiktionary.org/wiki/-igkeit -igkeit], [http://pl.wiktionary.org/wiki/-icht -icht], [http://pl.wiktionary.org/wiki/-ian -ian]/[http://pl.wiktionary.org/wiki/-jan -jan], [http://pl.wiktionary.org/wiki/-i -i], [http://pl.wiktionary.org/wiki/-in -in], [http://pl.wiktionary.org/wiki/-kein -kein], [http://pl.wiktionary.org/wiki/-ler -ler], [http://pl.wiktionary.org/wiki/-ling -ling], [http://pl.wiktionary.org/wiki/-ner -ner], [http://pl.wiktionary.org/wiki/-nis -nis], [http://pl.wiktionary.org/wiki/-or -or], [http://pl.wiktionary.org/wiki/-rich -rich], [http://pl.wiktionary.org/wiki/-s -s], [http://pl.wiktionary.org/wiki/-sal -sal], [http://pl.wiktionary.org/wiki/-schaft -schaft], [http://pl.wiktionary.org/wiki/-sel -sel], [http://pl.wiktionary.org/wiki/-t -t], [http://pl.wiktionary.org/wiki/-tel -tel], [http://pl.wiktionary.org/wiki/-tum -tum], [http://pl.wiktionary.org/wiki/-ung -ung], [http://pl.wiktionary.org/wiki/-wesen -wesen]
| -ament/-ement, -ant/-ent, -anz/-enz, -age, -ar/-är, -arium, -at, -aille, -ade, -asmus/[http://pl.wiktionary.org/wiki/-de -ismus], -ee, -elle, -esse, -ette, -(er)ie, -eur, -ier, -iere, -ik, -iker, -ine, -(at/t/x)ion, [http://pl.wiktionary.org/wiki/-de -ist], -(i)tät, -(at/it)or, -ose, -ur
|-
|}
=== Afiksy przymiotnikowe (''Adjektivaffixe'') ===
{|class="wikitable"
|+
! Przedrostki (''Präfixe'')
! Przedrostki (''Präfixe'')<br> pochodzenia obcego
! Przyrostki (''Suffixe'')
! Przyrostki (''Suffixe'')<br> pochodzenia obcego
|-
| erz-, [http://pl.wiktionary.org/wiki/miss- miss-], [http://pl.wiktionary.org/wiki/un- un-], [http://pl.wiktionary.org/wiki/ur- ur-]
| a-/an-, anti-, de-/des-, dis-, ex- hyper-, in-/il-/-im/-ir, inter-, ko-/kon-/kor-, non-, par-, post-, prä-, pro-, super-, trans-, ultra-
| [http://pl.wiktionary.org/wiki/-bar -bar], [http://pl.wiktionary.org/wiki/-ern -e(r)n], [http://pl.wiktionary.org/wiki/-er -er], [http://pl.wiktionary.org/wiki/-fach -fach], [http://pl.wiktionary.org/wiki/-haft -haft], [http://pl.wiktionary.org/wiki/-icht -icht], [http://pl.wiktionary.org/wiki/-ig -ig], [http://pl.wiktionary.org/wiki/-isch -isch], [http://pl.wiktionary.org/wiki/-lich -lich], [http://pl.wiktionary.org/wiki/-los -los], [http://pl.wiktionary.org/wiki/-sam -sam], [http://pl.wiktionary.org/wiki/-voll -voll]
| -abel/-ibel, -al/-ell, -ant/-ent, -ar/-är, -esk, -iv, -oid, -os/-õs
|-
|}
=== Afiksy czasownikowe (''Verbalaffixe'') ===
{|class="wikitable"
|+
! Przedrostki (''Präfixe'')
! Przedrostki (''Präfixe'')<br> pochodzenia obcego
! Przyrostki (''Suffixe'')
! Przyrostki (''Suffixe'')<br> pochodzenia obcego
|-
| [http://pl.wiktionary.org/wiki/ab- ab-], [http://pl.wiktionary.org/wiki/an- an-], [http://pl.wiktionary.org/wiki/auf- auf-], [http://pl.wiktionary.org/wiki/aus- aus-], [http://pl.wiktionary.org/wiki/be- be-], bei-, dar-, ein-, [http://pl.wiktionary.org/wiki/ent- ent-], er-, ge-, los-, [http://pl.wiktionary.org/wiki/miss- miss-], nach-, ob, über-, [http://pl.wiktionary.org/wiki/ver- ver-], vor-, weg-, wider-, zer-, zu-
| de-/des-/dis-, in-, inter-, ko-/kom-/kon-/kor-/kol-, prä-, re-, trans-
| -ig, -(is/ifiz)ier, -(e)l, -(e)r
|
|-
|}
=== Afiksy przysłówkowe (''Adverbialaffixe'') ===
{|class="wikitable"
|+
! Przedrostki (''Präfixe'')
! Przedrostki (''Präfixe'')<br> pochodzenia obcego
! Przyrostki (''Suffixe'')
! Przyrostki (''Suffixe'')<br> pochodzenia obcego
|-
|
|
| -dings, -ens, -halben/-halber, hin-, lei, -lings, -mals, -maßen, -s, -wärts, -weg, -weise
|
|-
|}
=== Sufixoidy (''Suffixoide'') ===
Sufixoidy (''Suffixoide''),należące do grupy półafiksów, to cząstki słowotwórcze, które stoją na pograniczu samodzielnego słowa i przyrostka. W nowym złożeniu zatracają swoje pierwotne znaczenie i pełnią funkcję cząstki tworzącej nowe słowo.
* [http://pl.wiktionary.org/wiki/-achsig -achsig]
* [http://pl.wiktionary.org/wiki/-artig -artig]
* [http://pl.wiktionary.org/wiki/-arm -arm]
* [http://pl.wiktionary.org/wiki/-feindlich -feindlich]
* [http://pl.wiktionary.org/wiki/-fest -fest]
* [http://pl.wiktionary.org/wiki/-förmig -förmig]
* [http://pl.wiktionary.org/wiki/-frei -frei]
* [http://pl.wiktionary.org/wiki/-freundlich -freundlich]
* [http://pl.wiktionary.org/wiki/-gemäß -gemäß]
* [http://pl.wiktionary.org/wiki/-haltig -haltig]
* [http://pl.wiktionary.org/wiki/-krank -krank]
* [http://pl.wiktionary.org/wiki/-los -los]
* [http://pl.wiktionary.org/wiki/-mäßig -mäßig]
* [http://pl.wiktionary.org/wiki/-reich -reich]
* [http://pl.wiktionary.org/wiki/-teilig -teilig]
* [http://pl.wiktionary.org/wiki/-voll -voll]
* [http://pl.wiktionary.org/wiki/-werk -werk]
* [http://pl.wiktionary.org/wiki/-wert -wert]
{{Przypisy}}
<!-- https://www.duden.de/sprachwissen/sprachratgeber/Die-Suffixe-los-und-weise -->
7ngwjl6h2uv6bhqkkgukg5ln8swjjtd
Mechanika kwantowa/Wnioski wynikające z mechaniki kwantowej Diraca
0
52417
558847
513503
2026-10-07T12:45:21Z
Persino
2851
558847
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
== Uogólnienie klasycznego Hamiltonianu o moment magnetyczny elektronu (q=e) ==
Ukrytą zaletą równań Diraca jest to, że zawiera w sobie informacje o spinie elektronu.
Jeśli taki elektron umieścimy w polu magnetycznym, to ono uzyska dodatkową energię {{Formuła|<MATH>\Delta E=-\vec{\mu}\vec{B}</MATH>}}, którą wyrazimy za pomocą momentu magnetycznego znajdujący się w polu magnetycznym o pewnym natężeniu.
Przenosimy wyraz związany z energią potencjalną cząstki, czyli {{Formuła|<MATH>q\varphi</MATH>}} na lewą stronie równania {{LinkWzór|25.3|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} z prawej jego strony, a następnie podzielmy obustronnie przez c, też obustronnie podnosimy do kwadratu, wszystkie te operację przedstawiamy je jako:
{{CentrujWzór|<MATH>{{\hat{H}-q\varphi}\over{c}}=\hat{\alpha}(\hat{p}-q\vec{A})+m_0c\hat{\beta}\Rightarrow\left({{\hat{H}-q\varphi}\over{c}}\right)^2=[\hat{\alpha}(\hat{p}-q\vec{A})+m_0c\hat{\beta}]^2</MATH>|25.25}}
Następnie korzystamy, że operatory współrzędnych operatora {{Formuła|<MATH>\hat{\alpha}\;</MATH>}}, czyli {{Formuła|<MATH>\hat{\alpha}_i\;</MATH>}} i operatora {{Formuła|<MATH>\hat{\beta}\;</MATH>}}, które za sobą antykomutują, zatem na podstawie równości {{LinkWzór|25.20|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} tożsamość {{LinkWzór|25.25}} można przestawić przez:
{{CentrujWzór|<MATH>\left({{\hat{H}-q\varphi}\over{c}}\right)^2=[\alpha(\hat{p}-q\hat{A})]^2+m_0^2c^2</MATH>|25.26}}
Pierwszy wyraz występujący po prawej stronie wzoru {{LinkWzór|25.26}} możemy rozpisać jako iloczyn dwóch takich samych operatorów i wymnożyć je względem siebie. W tym rozpisaniu tego iloczynu występują wyrazy mieszane i niemieszane, przy czym pierwszy wyraz niemieszany zapisujemy zapisujemy według {{LinkWzór|25.5g|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, a wyraz mieszany jest jako {{LinkWzór|25.5h|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}.
Na podstawie {{LinkWzór|25.29|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, {{LinkWzór|25.30|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} i {{LinkWzór|25.31|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, także na podstawie obliczeń pomocniczych {{LinkWzór|25.5g|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} (wyrazy niemieszane) i {{LinkWzór|25.5h|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} (wyrazy mieszane) równanie {{LinkWzór|25.26}} przyjmuje kształt:
{{CentrujWzór|<MATH>\left({{\hat{H}-q\varphi}\over{c}}\right)^2=\left(\hat{p}-q\vec{A}\right)^2+m_0^2c^2-q\hbar\sigma\vec{B}</MATH>|25.32}}
Powracając do naszego równania {{LinkWzór|25.32}}, to wydzielmy z Hamiltonianu energię spoczynkową cząstki ze spinem, natomiast nasz hamiltonian jest równy sumie energii spoczynkowej cząstki i relatywistycznego operatora energii kinetycznej cząstki, zapisujemy ten hamiltonian wedle schematu:
{{CentrujWzór|<math>\hat{H}=\hat{H}_1+m_0c^2\;</MATH>|25.37}}
A więc równość {{LinkWzór|25.32}} na podstawie tożsamości operatorowej {{LinkWzór|25.37}}, w której hamiltonian Diraca jest zapisany jako suma hamiltonianu energii mechanicznej i operatora energii spoczynkowej naszego badanego ciała, piszemy:
{{CentrujWzór|<MATH>\left({{\hat{H}_1-q\varphi}\over{c}}+m_0c\right)^2=\left(\hat{p}-q\vec{A}\right)^2-q\hbar\vec{\sigma} \vec{B}+m_0^2c^2</MATH>|25.38}}
Wykonujemy działania związane z podnoszeniem do drugiej potęgi po lewej stronie w równości {{LinkWzór|25.38}}, tak jak się wykonuje podnoszenie do kwadratu operatorów, ale w tym przypadku należy zastosować wzór skróconego mnożenia znanego z gimnazjum:
{{CentrujWzór|<MATH>\left({{\hat{H}_1-q\varphi}\over{c}}\right)^2+2m_0\left\{\hat{H}_1-q\varphi\right\}+m_0^2c^2
=\left(\hat{p}-q\vec{A}\right)^2-q\hbar\vec{\sigma} \vec{B}+m_0^2c^2\Rightarrow</MATH><br>
<MATH>\Rightarrow\left({{\hat{H}_1-q\varphi}\over{c}}\right)^2+2m_0\left\{\hat{H}_1-q\varphi\right\}=(\hat{p}-
e\vec{A})^2-q\hbar\vec{\sigma} \vec{B}\Rightarrow 2m_0\left\{\hat{H}_1-q\varphi\right\}\left({{\left(\hat{H}_1-q\varphi\right)^2}\over{2m_0c^2\left\{\hat{H}_1-q\varphi\right\}}}+1\right)=\;</MATH><BR><MATH>=(\hat{p}-
e\vec{A})^2-q\hbar\vec{\sigma} \vec{B}\;</MaTH>|25.39}}
W obliczeniach {{LinkWzór|25.39}} możemy znaleźć taki wyraz, który znajduje się w nawiasie i jego pierwszy składnik przepisujemy i jednocześnie uproszczamy go:
{{CentrujWzór|<MATH>{{\left(\hat{H}_1-q\varphi\right)^2}\over{2m_0 c^2\left\{\hat{H}_1-q\varphi\right\}}}={{(H_1-q\varphi)}\over{2c^2m_0}}</MATH>|25.40}}
Niech energia spoczynkowa jest o wiele większa od energii kinetycznej cząstki napisanej jako {{Formuła|<MATH>\hat{H}_1-e\varphi</MATH>}}, wiedząc, że {{Formuła|<MATH>\hat{H}_1\;</MATH>}} jest operatorem całkowitej energii mechanicznej cząstki, zatem rozważmy przypadek, gdy zachodzi:
{{CentrujWzór|<MATH>\left|\left|{{(H_1-q\varphi)}\over{2m_0c^2}}\right|\right|<<1</MATH>|25.41}}
A zatem pierwszy wyraz w nawiasie w {{LinkWzór|25.39}} należy powinąć przy zachodzącym przybliżeniu {{LinkWzór|25.41}}, dostajemy:
{{CentrujWzór|<MATH>2m_0({\hat{H}-q\varphi})=(\hat{p}-q\vec{A})^2-q\hbar\vec {\sigma}\vec{B}</MATH>|25.42}}
Następnie dzielimy obie strony {{LinkWzór|25.42}} przez podwojoną masę spoczynkową cząstki {{Formuła|<MaTH>2m_0\;</MaTH>}}, wtedy hamiltonian cząstki można zapisać w przybliżeniu, gdy jego energia kinetyczna cząstki jest o wiele mniejsza niż energia spoczynkowa cząstki:
{{CentrujWzór|<MATH>\hat{H}={{(\hat{p}-q\vec{A})^2}\over {2m_0}}+\varphi q-{{q\hbar}\over{2m_0}}\vec{\sigma}\vec{B}</MATH>|25.43}}
Widzimy, że hamiltonian nierelatywistyczny cząstki w stosunku do {{LinkWzór|5.31|Postulat_pierwszy_mechaniki_kwantowej}} posiada dodatkowy człon związany, że elektron posiada spin, a zatem ma pewien moment magnetyczny, czyli posiada dodatkową energię, która występuje zawsze, gdy cząstka znajduje się w polu magnetycznym o natężeniu pola magnetycznego {{Formuła|<MATH>\hat{H}\;</MATH>}}.
Moment magnetyczny związany ze spinem cząstki według wzoru na operator energii całkowitej cząstki {{LinkWzór|25.43}} przedstawia się:
{{CentrujWzór|<MATH>\vec\mu={{q\hbar}\over{2m_0}}\vec\sigma</MATH>|25.44}}
Minus we wzorze {{LinkWzór|25.44}} jest związany z ujemnym ładunkiem elektronu ładunku elementarnego "e".
a dla współrzędnych zetowej moment magnetyczny cząstki przedstawiamy w sposób ogólny wedle schematu {{LinkWzór|25.44}} w postaci:
{{CentrujWzór|<MATH>\mu_z={{q\hbar}\over{2m_0}}\sigma_z</MATH>|25.45}}
== Prawo zachowania momentu pędu, a spin elektronu w teorii Diraca, w zerowym polu elektrycznym i magnetycznym ==
Rozważmy Hamiltonian Diraca {{LinkWzór|25.24|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} swobodnego elektronu, tzn. gdy ta cząstka znajduje się w zerowym polu elektrycznym i magnetycznym, ten operator energii całkowitej cząstki możemy zapisać:
{{CentrujWzór|<MATH>\hat{H}=c\hat{\alpha}\hat{p}+m_0c^2\hat{\beta}</MATH>|25.46}}
Jeśli jest zachowana jakaś współrzędna momentu pędu, stąd wynika, że ta współrzędna powinna komutować z hamiltonianem {{LinkWzór|25.46}}. Rozważmy komutator momentu pędu orbitalnego {{Formuła|<MATH>\hat{l}_i</MATH>}} z hamiltonianem {{Formuła|<MATH>\hat{H}\;</MATH>}}, wiedząc że współrzędna operatora pędu komutuje z operatorem {{Formuła|<MATH>\hat{\beta}\;</MATH>}}, zatem dowolna współrzędna operatora momentu pędu komutuje z operatorem {{Formuła|<MATH>\hat{\beta}\;</MATh>}}:
{{CentrujWzór|<MATH>[\hat{l}_i,\hat{H}]=[\hat{l}_i,c\hat{\alpha}\hat{p}+m_0c^2\hat{\beta}]=
[\hat{l}_i,c\hat{\alpha}\hat{p}]+
[\hat{l}_i,c^2\hat{\beta}]=[\hat{l}_i,c\hat{\alpha}\hat{p}]=
c\hat{\alpha}_j[\hat{l}_i,\hat{p}_j]</MATH>|25.47}}
Policzmy następnie komutator współrzędnej momentu pędu z dowolną współrzędna pędu, który to jest potrzebne do dokończenia obliczeń w zapiskach {{LinkWzór|25.47}}:
{{CentrujWzór|<MATH>[\hat{l}_i,\hat{p}_l]=\left[-i\hbar\epsilon_{ijk}x_j{{\partial}\over{\partial x_k}},-i\hbar{{\partial}\over{\partial x_l}}\right]=-\hbar^2\left(\epsilon_{ijk}x_j{{\partial}\over{\partial x_k}}{{\partial}\over{\partial x_l}}-{{\partial}\over{\partial x_l}}\epsilon_{ijk}x_j{{\partial}\over{\partial x_k}}\right)=-\hbar^2\Bigg(\epsilon_{ijk}x_j{{\partial^2}\over{\partial x_k\partial x_l}}-\epsilon_{ijk}x_j{{\partial^2}\over{\partial x_k\partial x_l}}+\;</MATH><BR><MATH>-\epsilon_{ijk}\delta_{jl}{{\partial}\over{\partial x_k}}\Bigg)=\hbar^2\epsilon_{ilk}{{\partial}\over{\partial x_k}}=i\hbar\epsilon_{ilk} (-i\hbar){{\partial}\over{\partial x_k}}=i\hbar \epsilon_{ilk}\hat{p}_k</MATH>|25.48}}
Komutator współrzędnej itowej momentu pędu i Hamiltonianu Diraca na podstawie obliczeń {{LinkWzór|25.47}} i obliczeń pomocniczych {{LinkWzór|25.48}} przedstawia się:
{{CentrujWzór|<MATH>[\hat{l}_i,\hat{H}]=c\hat{\alpha}_ji\hbar \epsilon_{ijk}\hat{p}_k</MATH>|25.49}}
Powyższy komutator udowadnia, że moment pędu nie jest zachowany. Tak się to dzieje, że nie jest zachowana ta wielkość, ponieważ nie uwzględniono spinu elektronu.
Sprawdźmy własności komutacyjne operatora {{Formuła|<MATH>\hat{\sigma}_i</MATH>}} z hamiltonianem Diraca i obliczymy czemu jest on równy.
{{CentrujWzór|<MATH>[\hat{\sigma}_i,\hat{H}]=c[\hat{\sigma}_i,\hat{\alpha} \hat{p}]+mc^2[\hat{\sigma}_i,\hat{\beta}]</MATH>|25.50}}
Przeprowadźmy czemu jest równy komutator znajdujący się w {{LinkWzór|25.50}} w pierwszym jego składniku:
{{CentrujWzór|<MATH>[\hat{\sigma}_i,\hat{\alpha}_l\hat{p}_l]=
\hat{\sigma}_i\hat{\alpha}_l\hat{p}_l-\hat{\alpha}_l\hat{p}_l\hat{\sigma}_i=
-i\left({{1}\over{2}}\epsilon_{ijk}\alpha_j\alpha_k\hat{\alpha}_l\hat{p}_l-
\hat{\alpha}_l\hat{p}_l{{1}\over{2}}\epsilon_{ijk}\hat{\alpha}_j\hat{\alpha}_k\right)=-{{i}\over{2}}\epsilon_{ijk}\left(\hat{\alpha}_j\hat{\alpha}_k\hat{\alpha}_l\hat{p}_l-\hat{\alpha}_l\hat{p}_l\hat{\alpha}_j\hat{\alpha}_k\right)=</MATH><br>
<MATH>=-{{i}\over{2}}\epsilon_{ijk}\left(
\hat{\alpha}_j(-\hat{\alpha}_l\hat{\alpha}_k+2\delta_{lk})\hat{p}_l-\hat{\alpha}_l\hat{p}_l\epsilon_{ijk}\hat{\alpha}_j\hat{\alpha}_k\right)=-{{i}\over{2}}\epsilon_{ijk}\left(-\left\{\hat{\alpha}_j,\hat{\alpha}_l\right\}\hat{p}_l\alpha_k+2\delta_{lk}\hat{\alpha}_j\hat{p}_l\right)=-{{i}\over{2}}\epsilon_{ijk}\left(-2\delta_{jl}\hat{p}_l\hat{\alpha}_k+2\delta_{lk}\hat{\alpha}_j\hat{p}_l\right)=\;</MATH><BR><MATH>=i\epsilon_{ilk}\hat{p}_l\hat{\alpha}_k-i\epsilon_{ijl}\hat{\alpha}_j\hat{p}_l=
i\epsilon_{ilj}\hat{p}_l\hat{\alpha}_j-i\epsilon_{ijl}\hat{p}_l\hat{\alpha}_j=-i\epsilon_{ijl}\hat{p}_l\hat{\alpha}_j-i\epsilon_{ijl}\hat{p}_l\hat{\alpha}_j=-2i\epsilon_{ijl}\hat{\alpha}_j\hat{p}_l</MATH>|25.53}}
Wyznaczmy drugi komutator występujący jako drugi składnik w {{LinkWzór|25.50}}, korzystając przy tym z antykomutatora {{LinkWzór|25.20|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, który jest zdefiniowany na operatorach {{Formuła|<MATH>\hat{\alpha}_i\;</MAtH>}} i {{Formuła|<MATH>\hat{\beta}\;</MATH>}}, tutaj rozwiniemy operator {{Formuła|<MATH>\hat{\sigma}_i\;</MATH>}} według schematu {{LinkWzór|25.51|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}:
{{CentrujWzór|<MATH>[\hat{\sigma}_i,\hat{\beta}]=-{{i}\over{2}}\epsilon_{ijk}[\hat{\alpha}_j\hat{\alpha}_k,\hat{\beta}]=-{{i}\over{2}}\epsilon_{ijk}\left(\hat{\alpha}_j\hat{\alpha}_k\hat{\beta}-\hat{\beta}\hat{\alpha}_j\hat{\alpha}_k\hat{\beta}\right)=-{{i}\over{2}}\epsilon_{ijk}\left(\hat{\alpha}_j\hat{\alpha}_k\hat{\beta}+\hat{\alpha}_j\hat{\beta}\hat{\alpha}_k\right)=-{{i}\over{2}}\epsilon_{ijk}\left(\hat{\alpha}_j\hat{\alpha}_k\hat{\beta}-\hat{\alpha}_j\hat{\alpha}_k\hat{\beta}\right)=0\;</MATH>|25.54}}
Komutacja operatora {{Formuła|<MATH>\hat{\sigma}_i\;</MATH>}} zdefiniowaną według {{LinkWzór|25.51|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} z operatorem hamiltonianu Diraca {{LinkWzór|25.46}}, dla której ten nasz komutator na podstawie obliczeń pomocniczych {{LinkWzór|25.53}} i {{LinkWzór|25.54}} przedstawiamy wedle:
{{CentrujWzór|<MATH>[\hat{\sigma}_i,\hat{H}]=-2ic\epsilon_{ijl}\hat{\alpha}_j\hat{p}_l\;</MATH>|25.55}}
Policzmy następny komutator, którego pierwszym elementem jest współrzędna operatora momentu pędu plus wyrażenie równe współrzędnej operatora {{Formuła|<MATH>\hat{\sigma}\;</MATH>}} wraz z czynnikiem, który jest połówką stałej kreślonej Plancka, zatem:
{{CentrujWzór|<MATH>[\hat{l}_i+{{\hbar}\over{2}}\hat{\sigma}_i,\hat{H}]=
[\hat{l}_i,\hat{H}]+{{\hbar}\over{2}}[\hat{\sigma}_i,\hat{H}]=
i\hbar c\hat{\alpha}_j\epsilon_{ijk}\hat{p}_k-{{\hbar}\over{2}}2ic\epsilon_{ijk}\hat{\alpha}_j\hat{p}_k=i\hbar c\hat{\alpha}_j\epsilon_{ijk}\hat{p}_k-\hbar ci\epsilon_{ijk}\hat{\alpha}_j\hat{p}_k=0</MATH>|25.56}}
A więc moment pędu elektronu możemy zdefiniować tak jak poniżej, to on komutuje z operatorem całkowitej energii cząstki według Diraca {{LinkWzór|25.46}}, zatem całkowity operator momentu pędu jest zdefiniowany wedle:
{{CentrujWzór|<MATH>\hat{l}+{{\hbar}\over{2}}\hat{\sigma}\equiv \hat{j}</MATH>|25.57}}
Na podstawie obliczeń wedle {{LinkWzór|25.57}} spin elektronu przedstawiamy:
{{CentrujWzór|<MATH>\hat{s}={{\hbar}\over{2}}\hat{\sigma}</MATH>|25.58}}
Operator momentu magnetycznego spinu elektronu na podstawie wzoru {{LinkWzór|25.44}} (definicji momentu magnetycznego elektronu związanego z jego spinem) i {{LinkWzór|25.58}} (definicja spinu) przedstawia się w zależności od spinu elektronu wedle:
{{CentrujWzór|<MATH>\hat{\mu}={{e\hbar}\over{2m_0}}\hat{\sigma}={{e}\over{m_0}}{{\hbar}\over{2}}\hat{\sigma}={{e}\over{m_0}}\hat{s}</MATH>|25.59}}
Z powyższych rozważań wynika, że równania Diraca zawierają również spin elektronu.
== Atom wodoru według teorii Diraca ==
Rozważmy atom wodoru według teorii Diraca, w tym celu przyjmijmy potencjał wektorowy magnetyczny za równy zero a skalarny potencjał elekryczny w polu jądra atomowego wodoru jest zdefiniowany:
{{CentrujWzór|<MATH>\varphi={{e}\over{4\pi\epsilon_0 r}}\;</MATH>|25.60}}
Wówczas operator Diraca {{LinkWzór|25.24|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} zapisujemy przy zerowym wektorowym potencjale magnetycznym i przy skalarnym potencjale elektryczny {{LinkWzór|25.60}} w polu jądra atomowego, który wystepuje w równaniu własnym wspomnianego operatora energii całkowitej elektronu, wiedząc jednocześnie że ładunek elekronu jest ujemny, a jego wartość bezwzględna jest równa "e", wtedy jego równanie własne jest:
{{CentrujWzór|<MATH>\left[c(\hat{\alpha}\hat{p})+m_0c^2\beta-{{e^2}\over{4\pi\epsilon_0 r}}\right]\psi=E\psi\;</MATH>|25.61}}
Doprowadźmy nasze równanie tak by był opisywane we współrzędnych sferycznych, w prowadzając najpierw nowe operatory, za pomocą których opiszemy nasz Hamiltonian Diraca, których definicje są:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{k}=\hbar^{-1}\hat{\beta}(\hat{\sigma}\hat{l}+\hbar)\;</MATH>|25.62}}
| 2 = {{CentrujWzór|<MATH>\hat{p}_r=r^{-1}(\vec{r}\hat{p}-i\hbar)=-i\hbar\left({{\partial}\over{\partial r}}+{{1}\over{r}}\right)\;</MATH>|25.63}}
| 3 = {{CentrujWzór|<MATH>\hat{\epsilon}=r^{-1}(\hat{\alpha}\vec{r})\;</MATH>|25.64}}
}}
Zauważmy, że operator {{Formuła|<MATH>\hat{k}\;</MATH>}} zależy tylko od współrzędnych kątowych, bo operator {{Formuła|<MATH>\hat{l}\;</Math>}} zależy od współrzędnych kątowych na podstawie współrzędnych operatorów momentów pędu wyrażonych według wzorów {{LinkWzór|5.35|Postulat_pierwszy_mechaniki_kwantowej}}, {{LinkWzór|5.36|Postulat_pierwszy_mechaniki_kwantowej}} i {{LinkWzór|5.37|Postulat_pierwszy_mechaniki_kwantowej}} wyrażonych we współrzędnych kulistych kątowych.
Operator {{Formuła|<MATH>\hat{p}_r\;</MATH>}} zależy od współrzędnych radialnych.
A równanie na {{Formuła|<MATH>\hat{\epsilon}\;</MATH>}} od wektora jednostkowego, który jest wyznaczone według dwóch współrzędnych kątowych.
Podajmy kilka własności naszych nowych operatorów, po pierwsze można sprawdzić, że są to operatory hermitowskie, najpierw wykażmy to dla {{LinkWzór|25.62}} {{Formuła|<MATH>\hat{k}\;</MATH>}}:
{{CentrujWzór|<MATH>\hat{k}^{+}=\left[\hbar^{-1}\hat{\beta}\left(\hat{\sigma}\hat{l}+\hbar\right)\right]^{+}=
\left(\hat{l}^{+}\hat{\sigma}^{+}+\hbar\right)\hbar^{-1}\hat{\beta}^{+}=
\hbar^{-1}\hat{\beta}\left(\hat{\sigma}\hat{l}+\hbar\right)=\hat{k}\;</MATH>|25.65}}
A następnie sprawdźmy, czy operator {{LinkWzór|25.63}} {{Formuła|<MATH>\hat{p}_r\;</MATH>}} jest operatorem hermitowskim, ten dowód jest trochę trudny i nie jest wcale oczywisty, że ten operator jest w ogóle hermitowski:
{{CentrujWzór|<MATH>\hat{p}_r^{+}=\left[r^{-1}\left(\vec{r}\hat{p}-i\hbar\right)\right]^{+}=
(\hat{p}\vec{r}+i\hbar)r^{-1}=(\hat{p}_mx_m+i\hbar)r^{-1}=(x_m\hat{p}_m-i\hbar\delta_{mm}+i\hbar)r^{-1}=
(x_m\hat{p}_m-2i\hbar)r^{-1}=\;</MATH><BR><MATH>=(x_m\hat{p}_m r^{-1}-2i\hbar r^{-1})=
x_mr^{-1}\hat{p}_m+i\hbar x_m{{x_m}\over{r^3}}-2i\hbar r^{-1}=
r^{-1}\vec{r}\hat{p}+i\hbar r^{-1}-2i\hbar r^{-1}=r^{-1}\vec{r}\hat{p}-i\hbar r^{-1}=\;</MATH><BR><MATH>=r^{-1}\left(\vec{r}\hat{p}-i\hbar\right)=\hat{p}_r\;</MATH>|25.66}}
W końcu operator {{Formuła|<MATH>\hat{\epsilon}\;</MATH>}} {{LinkWzór|25.64}} też udowodnimy w sposób bardzo łatwy, że jest operatorem hermitowskim:
{{CentrujWzór|<MATH>\epsilon^{+}=\left[r^{-1}\left(\hat \alpha \vec{r}\right)\right]^{+}=\left(\vec{r}^{+}\hat \alpha^{+}\right)r^{-1}=r^{-1}\left(\hat{\alpha}\vec{r}\right)=\hat{\epsilon}\;</MATH>|25.67}}
Wykażmy, ile jest równy kwadrat operatora {{Formuła|<MATH>\hat{\epsilon}\;</MATH>}} {{LinkWzór|25.64}}, udowodniamy to korzystając z antykomutacji operatorów {{LinkWzór|25.19|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} dla różnych współrzędnych tegoż omawianego operatora:
{{CentrujWzór|<MATH>\hat{\epsilon}^2=\left(r^{-1}(\hat{\alpha}\vec{r})\right)^2=(\hat{\alpha}\vec{e}_r)^2=(\hat{\alpha}\vec{e}_r)(\hat{\alpha}\vec{e}_r)=\sum_{ij}\hat{\alpha}_i\hat{\alpha}_je_{ri}e_{rj}={{1}\over{2}}\sum_{ij}\left(\hat{\alpha}_i\hat{\alpha}_j+\hat{\alpha}_j\hat{\alpha}_i\right)e_{ri}e_{rj}={{1}\over{2}}\sum_{ij}2\delta_{ij}e_{ri}e_{rj}=\sum_i e^2_{ri}=1\;</MATH>|25.68}}
Następnie wyznaczmy antykomutator operatorów {{Formuła|<MATH>\hat{\epsilon}\;</MATH>}} i {{Formuła|<MATH>\hat{\beta}\;</MATH>}}, wyznaczymy, że jest on równy zero, czyli te operatory antykomutują ze sobą. Udowodnimy to na podstawie antykomutacji operatorów {{Formuła|<MATH>\hat{\alpha}_i\;</MATH>}} i {{Formuła|<MATH>\hat{\beta}\;</MATH>}} wedle wzoru {{LinkWzór|25.20|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}:
{{CentrujWzór|<MATH>\left\{\hat{\epsilon},\hat{\beta}\right\}=\hat{\epsilon}\hat{\beta}+\hat{\beta}\hat{\epsilon}=(\hat{\alpha}\vec{e}_r)\hat{\beta}+\hat{\beta}(\hat{\alpha}\vec{e}_r)=
-\hat{\beta}(\hat{\alpha}\vec{e}_r)+\hat{\beta}(\hat{\alpha}\vec{e}_r)=0\;</MATH>|25.69}}
Udowodnijmy wyrażenie poniżej skonstrułowanych przy pomocy operatorów {{LinkWzór|25.62}}({{Formuła|<Math>\hat{k}\;</MATH>}}), {{LinkWzór|25.63}}({{Formuła|<MATH>\hat{p}_r\;</MATH>}}) i {{LinkWzór|25.64}}({{Formuła|<MATH>\hat{\epsilon}\;</MATH>}}), którego wyrażenie mamy udowodnić w postaci lematu dla:
{{CentrujWzór|<MATH>\hat{\alpha}\hat{p}=\hat{p}_r\hat{\epsilon}+i\hbar r^{-1}\hat{k}\hat{\epsilon}\hat{\beta}\;</MATH>|25.70}}
A zatem do dzieła udowodnijmy wyrażenie {{LinkWzór|25.70}} korzystając przy tym z tożsamości {{LinkWzór|25.51|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} (wzór na współrzędne operatora {{Formuła|<MATH>\hat{\sigma}\;</MATH>}}), a także z własności {{LinkWzór|25.19|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, który jest antykomutatorem zbudowanym na współrzędnych operatora {{Formuła|<MATH>\hat{\alpha}\;</MATH>}}:
{{CentrujWzór|<MATH>\hat{p}_r\hat{\epsilon}+i\hbar r^{-1}\hat{k}\hat{\epsilon}\hat{\beta}=-i\hbar\left({{\partial}\over{\partial r}}+{{1}\over{r}}\right)r^{-1}(\hat{\alpha}\vec{r})+i\hbar r^{-1}\hbar^{-1}\hat{\beta}(\hat{\sigma}\hat{l}+\hbar)r^{-1}(\hat{\alpha}\vec{r})\hat{\beta}=-i\hbar {{\partial}\over{\partial r}}{{1}\over{r}}(\hat{\alpha}\vec r)-i\hbar r^{-2}(\hat{\alpha}\vec r)+\;</MATH><BR><MATH>
+ir^{-1}\hat{\beta}(\hat{\sigma}\hat{l}+\hbar)r^{-1}(\hat{\alpha}\vec{r})\hat{\beta}=(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)-i\hbar r^{-2}(\hat{\alpha}\vec r)+ir^{-1}\hat{\beta}(\hat{\sigma}\hat{l})(\hat{\alpha}\vec{e}_r)\hat{\beta}+i\hbar r^{-1}\hat{\beta}r^{-1}(\hat{\alpha}\vec{r})\hat{\beta}=(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)+\;</MATH><BR><MATH>-i\hbar r^{-2}(\hat{\alpha}\vec r)+ir^{-2}\hat{\beta}(\hat{\sigma}\hat{l})(\hat{\alpha}\vec{r})\hat{\beta}-i\hbar r^{-2}(\hat{\alpha}\vec{r})=(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)-2i\hbar r^{-2}(\hat{\alpha}r)-ir^{-2}(\hat{\sigma}\hat{l})(\hat{\alpha}\vec{r})=(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+\;</MATH><BR><MATH>-{{1}\over{2}}r^{-1}\hat{\alpha}\times\hat{\alpha}r(\vec{e}_r\times\hat{p})(\hat{\alpha}\vec{e}_r)=(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)-{{1}\over{2}}\epsilon_{ijk}\hat{\alpha}_j\hat{\alpha}_k\epsilon_{ilm}e_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)=(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+\;</MATH><BR><MATH>+{{1}\over{2}}\epsilon_{kji}\epsilon_{ilm}\hat{\alpha}_j\hat{\alpha}_ke_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)=(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+{{1}\over{2}}\left(\delta_{kl}\delta_{jm}-\delta_{km}\delta_{jl}\right)\hat{\alpha}_j\hat{\alpha}_ke_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)=(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)+\;</MATH><BR><MATH>-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+{{1}\over{2}}\left(\hat{\alpha}_m\hat{\alpha}_l-\hat{\alpha}_l\hat{\alpha}_m\right)e_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)=(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+{{1}\over{2}}\left(2\hat{\alpha}_m\hat{\alpha}_l-2\delta_{lm}\right)e_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)=\;</MATH><BR><MATH>=(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+\hat{\alpha}_m\hat{\alpha}_le_{rl}\hat{p}_m(\hat{\alpha}\vec{r})-(\vec{e}_r\hat{p})(\hat{\alpha}\vec{r})=-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+\hat{\alpha}_m\hat{\alpha}_le_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)=-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+\;</MATH><BR><MATH>+r^{-1}\hat{\alpha}_m\hat{\alpha}_lx_l\hat{p}_m(\hat{\alpha}\vec{r})=-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+r^{-1}\hat{\alpha}_m\hat{\alpha}_l[\hat{p}_mx_l+i\hbar\delta_{lm}](\hat{\alpha}\vec{r})=-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+r^{-1}\hat{\alpha}_m\hat{\alpha}_l\hat{p}_mx_l(\hat{\alpha}\vec{r})+\;</MATH><BR><MATH>+i\hbar r^{-1}\hat{\alpha}_m\hat{\alpha}_l\delta_{lm}(\hat{\alpha}\vec{r})=-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+r^{-1}\hat{\alpha}_m\hat{\alpha}_l\hat{p}_mre_{rl}(\hat{\alpha}\vec{r})+i\hbar r^{-1}\sum_m\hat{\alpha}_m^2(\hat{\alpha}\vec{r})=-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+\;</MATH><BR><MATH>+r^{-1}\hat{\alpha}_m\hat{\alpha}_l\left(r\hat{p}_m+(\hat{p}_mr)\right)e_{rl}(\hat{\alpha}\vec{r})+i\hbar r^{-1}\sum_m(\hat{\alpha}\vec{r})=-2i\hbar r^{-1}(\hat{\alpha}\vec{e}_r)+(\hat{\alpha}\hat{p})(\hat{\alpha}\vec{e}_l)^2-i\hbar r^{-1}\hat{\alpha}_m\hat{\alpha}_l{{x_m}\over{r}}e_{rl}(\hat{\alpha}\vec{r})+\;</MATH><BR><MATH>+3i\hbar r^{-1}(\hat{\alpha}\vec{r})=(\hat{\alpha}\hat{p})\sum_{ml}\hat{\alpha}_l\hat{\alpha}_me_{rl}e_{rm}-i\hbar r^{-1}\hat{\alpha}_m\hat{\alpha}_le_{rm}e_{rl}(\hat{\alpha}\vec{r})+i\hbar r^{-1}(\hat{\alpha}\vec{r})=(\hat{\alpha}\hat{p})\sum_m\hat{\alpha}_m^2e_{rm}^2-i\hbar r^{-1}\sum_m\hat{\alpha}_m^2e_{rm}^2(\hat{\alpha}\vec{r})+\;</MATH><BR>
<MaTH>+i\hbar r^{-1}(\hat{\alpha}\vec{r})=(\hat{\alpha}\hat{p})\sum_m e_{rm}^2-i\hbar r^{-1}\sum_m e_{rm}^2(\hat{\alpha}\vec{r})+i\hbar r^{-1}(\hat{\alpha}\vec{r})=(\hat{\alpha}\hat{p})-i\hbar r^{-1}(\hat{\alpha}\vec{r})+i\hbar r^{-1}(\hat{\alpha}\vec{r})=(\hat{\alpha}\hat{p})\;</MATH>|25.71}}
Co kończy dowód wyrażenia {{LinkWzór|25.70}}.
Równanie Diraca {{LinkWzór|25.61}} na podstawie {{LinkWzór|25.70}} przyjmuje zatem postać poniżej. Widzimy, że to równanie zależy od operatorów, tzn.: od {{LinkWzór|25.62}}, {{LinkWzór|25.63}} oraz {{LinkWzór|25.64}}. Oczywiste jest, że to równanie Diraca jest równaniem niezależnym od czasu i jest równaniem własnym operatora energii:
{{CentrujWzór|<MATH>
\left( c\hat{p}_r\hat{\epsilon}+i\hbar c r^{-1}\hat{k}\hat{\epsilon}\hat{\beta}+m_0c^2\hat{\beta}-{{e^2}\over{4\pi\epsilon_0 r}}\right)\psi=E\psi\;</MATH>|25.72}}
Sprawdźmy czy wszystkie operatory występujące w równaniu własnym operatora energii {{LinkWzór|25.72}} komutują ze sobą, zatem sprawdźmy cztery poniższe komutacje:
1° Sprawdżmy, czy komutator {{Formuła|<maTH>\hat{\epsilon}_\;</MATH>}} komutuje z {{Formuła|<MATH>\hat{p}_r\;</MATH>}}:
{{CentrujWzór|<MATH>[\hat{\epsilon},\hat{p}_r]=\hat{\epsilon}\hat{p}_r-\hat{p}_r\hat{\epsilon}=
(\hat{\alpha}\vec{e}_e)(-i\hbar)\left({{\partial}\over{\partial r}}+{{1}\over{r}}\right)+i\hbar\left({{\partial}\over{\partial r}}+{{1}\over{r}}\right)(\hat{\alpha}\vec{e}_e)=\;</MATH><BR>
<MATH>=-i\hbar\left[
\left((\hat{\alpha}\vec{e}_e){{\partial}\over{\partial r}}-{{\partial}\over{\partial r}}(\hat{\alpha}\vec{e}_e)\right)+\left((\hat{\alpha}\vec{e}_e){{1}\over{r}}-{{1}\over{r}}(\hat{\alpha}\vec{e}_e)\right)\right]=0
\;</MATH>|25.73}}
2° Sprawdźmy, czy {{Formuła|<MATH>\hat{\epsilon}\;</MATH>}} komutuje z {{Formuła|<MATH>\hat{k}\;</MAth>}}:
{{CentrujWzór|<MATH>[\hat{\epsilon},\hat{k}]=\hat{\epsilon}\hat{k}-\hat{k}\hat{\epsilon}=
r^{-1}(\hat{\alpha}\vec{r})\hbar^{-1}\hat{\beta}(\hat{\sigma}\hat{l}+\hbar)-\hbar^{-1}\hat{\beta}(\hat{\sigma}\hat{l}+\hbar) r^{-1}(\hat{\alpha}\vec{r})=(\hat{\alpha}\vec{e}_r)\hbar^{-1}\hat{\beta}(\hat{\sigma}\hat{l}+\hbar)-\hbar^{-1}\hat{\beta}(\hat{\sigma}\hat{l}+\hbar) (\hat{\alpha}\vec{e}_r)=\;</MATH><BR>
<MATH>=
(\hat{\alpha}\vec{e}_r)\hbar^{-1}\hat{\beta}\hat{\sigma}\hat{l}+(\hat{\alpha}\vec{e}_r)\hbar^{-1}\hat{\beta}\hbar-\hbar^{-1}\hat{\beta}\hat{\sigma}\hat{l} (\hat{\alpha}\vec{e}_r)-\hbar^{-1}\hat{\beta}\hbar (\hat{\alpha}\vec{e}_r)=2(\hat{\alpha}\vec{e}_r)\hat{\beta}+(\hat{\alpha}\vec{e}_r)\hbar^{-1}\hat{\beta}\hat{\sigma}\hat{l}-\hbar^{-1}\hat{\beta}\hat{\sigma}\hat{l} (\hat{\alpha}\vec{e}_r)=\;</MATH><BR>
<MATH>=
2(\hat{\alpha}\vec{e}_r)\hat{\beta}-i{{1}\over{2}}r\hbar^{-1}(\hat{\alpha}\vec{e}_r)\hat{\beta}(\hat{\alpha}\times\hat{\alpha})(\vec{e}_r\times\hat{p})+i{{1}\over{2}}r\hbar^{-1}\hat{\beta}(\hat{\alpha}\times\hat{\alpha})(\vec{e}_r\times\hat{p})(\hat{\alpha}\vec{e}_r)=2(\hat{\alpha}\vec{e}_r)\hat{\beta}+\;</MATH><BR><MATH>-i{{1}\over{2}}r\hbar^{-1}(\hat{\alpha}\vec{e}_r)(\hat{\alpha}\times\hat{\alpha})(\vec{e}_r\times\hat{p})\hat{\beta}-i{{1}\over{2}}r\hbar^{-1}\hat{\beta}(\hat{\alpha}\times\hat{\alpha})(\vec{e}_r\times\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}=2(\hat{\alpha}\vec{e}_r)\hat{\beta}-i{{1}\over{2}}r\hbar^{-1}(\hat{\alpha}\vec{e}_r)\epsilon_{ijk}\hat{\alpha}_j\hat{\alpha}_k\epsilon_{ilm}e_{rl}\hat{p}_m\hat{\beta}+\;</MATH><BR><MATH>-i{{1}\over{2}}r\hbar^{-1}\epsilon_{ijk}\hat{\alpha}_j\hat{\alpha}_k\epsilon_{ilm}e_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)\hat{\beta}=2(\hat{\alpha}\vec{e}_r)\hat{\beta}+i{{1}\over{2}}r\hbar^{-1}(\hat{\alpha}\vec{e}_r)\epsilon_{kji}\epsilon_{ilm}\hat{\alpha}_j\hat{\alpha}_ke_{rl}\hat{p}_m\hat{\beta}+i{{1}\over{2}}r\hbar^{-1}\epsilon_{kji}\epsilon_{ilm}\hat{\alpha}_j\hat{\alpha}_ke_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)\hat{\beta}=\;</MATH><BR>
<MATH>=2(\hat{\alpha}\vec{e}_r)\hat{\beta}+i{{1}\over{2}}r\hbar^{-1}(\hat{\alpha}\vec{e}_r)
\left[\delta_{kl}\delta_{jm}-\delta_{km}\delta_{jl}\right]\hat{\alpha}_j\hat{\alpha}_ke_{rl}\hat{p}_m\hat{\beta}+i{{1}\over{2}}r\hbar^{-1}\left[\delta_{kl}\delta_{jm}-\delta_{km}\delta_{jl}\right]\hat{\alpha}_j\hat{\alpha}_ke_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)\hat{\beta}=\;</MATH><BR><MATH>=2(\hat{\alpha}\vec{e}_r)\hat{\beta}+i{{1}\over{2}}r\hbar^{-1}(\hat{\alpha}\vec{e}_r)
\left[\hat{\alpha}_m\hat{\alpha}_l-\hat{\alpha}_l\hat{\alpha}_m\right]e_{rl}\hat{p}_m\hat{\beta}
+i{{1}\over{2}}r\hbar^{-1}\left[\hat{\alpha}_m\hat{\alpha}_l-\hat{\alpha}_l\hat{\alpha}_m\right]e_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)\hat{\beta}=\;</MATH><BR><MATH>=2(\hat{\alpha}\vec{e}_r)\hat{\beta}+i{{1}\over{2}}r\hbar^{-1}(\hat{\alpha}\vec{e}_r)
\left[2\hat{\alpha}_m\hat{\alpha}_l-2\delta_{lm}\right]e_{rl}\hat{p}_m\hat{\beta}
+i{{1}\over{2}}r\hbar^{-1}\left[2\hat{\alpha}_m\hat{\alpha}_l-2\delta_{lm}\right]e_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)\hat{\beta}=\;</MATH><BR>
<MATH>=2(\hat{\alpha}\vec{e}_r)\hat{\beta}+ir\hbar^{-1}(\hat{\alpha}\vec{e}_r)\hat{\alpha}_m\hat{\alpha}_le_{rl}\hat{p}_m\hat{\beta}-ir\hbar^{-1}(\hat{\alpha}\vec{e}_r)(\vec{e}_r\hat{p})\hat{\beta}+ir\hbar^{-1}\hat{\alpha}_m\hat{\alpha}_le_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}=\;</MATH><BR><MATH>=2(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}+ir\hbar^{-1}(\hat{\alpha}\vec{e}_r)\hat{\alpha}_m\hat{\alpha}_le_{rl}\hat{p}_m\hat{\beta}+ir\hbar^{-1}\hat{\alpha}_m\hat{\alpha}_le_{rl}\hat{p}_m(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}=\;</MATH><BR><MATH>=2(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}+i\hbar^{-1}(\hat{\alpha}\vec{e}_r)\hat{\alpha}_m\hat{\alpha}_lx_l\hat{p}_m\hat{\beta}+i\hbar^{-1}\hat{\alpha}_m\hat{\alpha}_lx_l\hat{p}_m(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}=\;</MATH><BR>
<MATH>=2(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}+i\hbar^{-1}(\hat{\alpha}\vec{e}_r)[-\hat{\alpha}_l\hat{\alpha}_m+2\delta_{lm}]x_l\hat{p}_m\hat{\beta}+i\hbar^{-1}\hat{\alpha}_m\hat{\alpha}_l[\hat{p}_mx_l+i\hbar\delta_{lm}](\hat{\alpha}\vec{e}_r)\hat{\beta}+\;</MATH><BR><MATH>-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}=2(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\hat{\alpha}\vec{e}_r)(\hat{\alpha}\vec{e}_r)(\hat{\alpha}\hat{p})\hat{\beta}+2ri\hbar^{-1}(\hat{\alpha}\vec{e}_r)(\vec{e}_r\hat{p})\hat{\beta}\;</MATH><BR><MATH>+i\hbar^{-1}\hat{\alpha}_m\hat{\alpha}_l(\hat{p}_m re_{rl})(\hat{\alpha}\vec{e}_r)\hat{\beta}-\sum_m\hat{\alpha}_m^2(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}=2(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}+\;</MATH><BR><MATH>-ir\hbar^{-1}(\hat{\alpha}\vec{e}_r)(\hat{\alpha}\vec{e}_r)(\hat{\alpha}\hat{p})\hat{\beta}+ri\hbar^{-1}(\hat{\alpha}\vec{e}_r)(\vec{e}_r\hat{p})\hat{\beta}+
i\hbar^{-1}\hat{\alpha}_m\hat{\alpha}_l(r\hat{p}_m -i\hbar{{x_m}\over{r}})e_{rl}(\hat{\alpha}\vec{e}_r)\hat{\beta}-\sum_m(\hat{\alpha}\vec{e}_r)\hat{\beta}=2(\hat{\alpha}\vec{e}_r)\hat{\beta}+\;</MATH><BR><MATH>-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\hat{\alpha}\vec{e}_r)(\hat{\alpha}\vec{e}_r)(\hat{\alpha}\hat{p})\hat{\beta}+ri\hbar^{-1}(\hat{\alpha}\vec{e}_r)(\vec{e}_r\hat{p})\hat{\beta}+
ir\hbar^{-1}(\hat{\alpha}\hat{p})(\hat{\alpha}\vec{e}_r)^2\hat{\beta}+\hat{\alpha}_m\hat{\alpha}_le_{rm}e_{rl}(\hat{\alpha}\vec{e}_r)\hat{\beta}+\;</MATH><BR><MATH>-3(\hat{\alpha}\vec{e}_r)\hat{\beta}=
2(\hat{\alpha}\vec{e}_r)\hat{\beta}-ir\hbar^{-1}(\vec{e}_r\hat{p})(\hat{\alpha}\vec{e}_r)\hat{\beta}
-ir\hbar^{-1}(\hat{\alpha}\hat{p})\hat{\beta}+ri\hbar^{-1}(\hat{\alpha}\vec{e}_r)(\vec{e}_r\hat{p})\hat{\beta}+ir\hbar^{-1}(\hat{\alpha}\hat{p})\hat{\beta}+(\hat{\alpha}\vec{e}_r)\hat{\beta}-3(\hat{\alpha}\vec{e}_r)\hat{\beta}=0\;</MATH>|25.74}}
3° Sprawdźmy, czy komutator <MATH>\hat{p}_r\;</MATH> komutuje z <MATH>\hat{k}\;</MATH>, zatem:
{{CentrujWzór|<MATH>[\hat{p}_r,\hat{k}]=\hat{p}_r\hat{k}-\hat{k}\hat{p}_r=0\;</MATH>|25.75}}
Komutator {{LinkWzór|25.75}} jest równy zero na podstawie, że operator {{Formuła|<math>\hat{p}_r\;</MATH>}}, zależy od współrzędnych radialnych, a {{Formuła|<MATH>\hat{k}\;</MATH>}} od współrzędnych kątowych.
4° Sprawdźmy czy operator {{Formuła|<MATH>\hat{k}\;</MATH>}} komutuje z {{Formuła|<MATH>\hat{\beta}\;</MATh>}}:
{{CentrujWzór|<MATH>[\hat{k},\hat{\beta}]=\hbar^{-1}\hat{\beta}(\hat{\sigma}\hat{l}+\hbar)\hat{\beta}-
\hat{\beta}\hbar^{-1}\hat{\beta}(\hat{\sigma}\hat{l}+\hbar)=
\hbar^{-1}(\hat{\sigma}\hat{l}+\hbar)\hat{\beta}^2-\hat{\beta}^2\hbar^{-1}(\hat{\sigma}\hat{l}+\hbar)=\hbar^{-1}(\hat{\sigma}\hat{l}+\hbar)-\hbar^{-1}(\hat{\sigma}\hat{l}+\hbar)=0\;</MATH>|25.76}}
Zdefiniujmy operatory {{Formuła|<MATH>\hat{\beta}\;</MATH>}} i {{Formuła|<MATH>\hat{\epsilon}\;</MATH>}} jako zwykłe macierze wedle sposobu:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\hat{\beta}=\begin{pmatrix}
1&0\\
0&-1
\end{pmatrix}\;</MATH>|25.77}}
| 2 = {{CentrujWzór|<MATH>\hat{\epsilon}=\begin{pmatrix}
0&-i\\
i&0
\end{pmatrix}\;</MATH>|25.78}}
}}
Sprawdźmy, czy zachodzi {{LinkWzór|25.10|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} na operatorze {{Formuła|<MATH>\hat{\beta}\;</MATH>}}, czyli czy kwadrat tego operatora jest macierzą jednostkową, którego operator zdefiniowany jest wedle {{LinkWzór|25.77}}, a dowód tej własności przebiega:
{{CentrujWzór|<MATH>\hat{\beta}^2=\hat{\beta}\hat{\beta}=
\begin{pmatrix}
1&0\\
0&-1
\end{pmatrix}\begin{pmatrix}
1&0\\
0&-1
\end{pmatrix}=\begin{pmatrix}
1&0\\
0&1\end{pmatrix}=\hat{1}\;</MATh>|25.79}}
a także zachodzi {{LinkWzór|25.68}} na operatorze {{Formuła|<MATH>\hat{\epsilon}\;</MATH>}}, czyli czy kwadrat tegoż operatora jest macierzą jednostkową dla operatora zdefiniowanej wedle {{LinkWzór|25.78}}, zatem udowodnijmy tą własność:
{{CentrujWzór|<MATH>\hat{\epsilon}^2=\hat{\epsilon}\hat{\epsilon}=\begin{pmatrix}
0&-i\\
i&0
\end{pmatrix}\begin{pmatrix}
0&-i\\
i&0
\end{pmatrix}=\begin{pmatrix}
1&0\\
0&1
\end{pmatrix}=\hat{1}\;</MATH>|25.80}}
Sprawdźmy, czy na operatorach {{LinkWzór|25.77}} ({{Formuła|<MATH>\hat{\beta}\;</MATH>}}) i {{LinkWzór|25.78}} ({{Formuła|<MATH>\hat{\epsilon}\;</MATH>}}) zachodzi antykomutacja {{LinkWzór|25.69}}, stąd:
{{CentrujWzór|<MATH>\{\hat{\epsilon},\hat{\beta}\}=\hat{\epsilon}\hat{\beta}+\hat{\beta}\hat{\epsilon}=\begin{pmatrix}
0&-i\\
i&0
\end{pmatrix}\begin{pmatrix}
1&0\\
0&-1
\end{pmatrix}+\begin{pmatrix}
1&0\\
0&-1
\end{pmatrix}\begin{pmatrix}
0&-i\\
i&0
\end{pmatrix}=
\begin{pmatrix}
0&i\\
i&0\\
\end{pmatrix}+\begin{pmatrix}
0&-i\\
-i&0\\
\end{pmatrix}=0
\;</MATH>|25.81}}
Na podstawie {{LinkWzór|25.81}} oraz {{LinkWzór|25.79}} i {{LinkWzór|25.80}} udowodniliśmy, że operatory {{Formuła|<MaTh>\hat{\beta}\;</MATH>}} i {{Formuła|<MATH>\hat{\epsilon}\;</MATH>}} mają postać {{LinkWzór|25.77}} i {{LinkWzór|25.78}}.
Udowodniliśmy, że operator {{Formuła|<MATH>\hat{k}\;</MATH>}} komutuje z {{Formuła|<MATH>\hat{p}_r\;</MATH>}} {{LinkWzór|25.75}}, a następnie z operatorem {{Formuła|<MATH>\hat{\epsilon}\;</MATH>}} {{LinkWzór|25.74}}, dalej z {{Formuła|<MATH>\hat{\beta}\;</MATH>}} {{LinkWzór|25.76}}, na tej podstawie dochodzimy do wniosku, że równanie własne operatora hamiltonianu w {{LinkWzór|25.72}}, w którym występuje hamiltonian komutatujący z operatorem {{Formuła|<MATH>\hat{k}\;</MATH>}} {{LinkWzór|25.62}}:
{{CentrujWzór|<MATH>[\hat{k},\hat{H}]=0\;</MATH>|25.82}}
Pozwala to rozwiązywać równanie w bazie jednoczesnych funkcji własnych {{Formuła|<MATH>\hat{H}\;</MATH>}} i {{Formuła|<MATH>\hat{k}\;</MATH>}}. Równanie własne operatora {{Formuła|<MATH>\hat{k}\;</MATH>}} jest w postaci {{LinkWzór|25.62}}:
{{CentrujWzór|<MATH>\hat{k}\psi=k\psi\;</MATH>|25.83}}
* gdzie {{Formuła|<MATH>k\;</MATH>}} jest wartościa własną operatora {{Formuła|<MATH>\hat{k}\;</MATH>}}.
Teraz zajmijmy się operatorem {{Formuła|<MATH>\hat{k}\;</MATH>}} podstawiając za {{Formuła|<MATH>\hat{\sigma}\;</MATH>}}, który można wyliczyć z {{LinkWzór|25.57}} wyrażenie na {{Formuła|<MATH>\hat{\sigma}\;</MATH>}} w zależności od operatora spinu cząstki kwantowej:
{{CentrujWzór|<MATH>\hat{\sigma}={{2}\over{\hbar}}\hat{s}\;</MATH>|25.84}}
Iloczyn operatora {{Formuła|<MATH>\hat{\sigma}\;</MAtH>}} i operatora momentu pędu na podstawie wzoru {{LinkWzór|25.84}} można podstawić do poniższego wyrażenia otrzymując wyrażenie proporcjonalne do iloczynu operatora momentu pędu spinowego przez orbitalny:
{{CentrujWzór|<MATH>\hat{\sigma}\hat{l}={{2}\over{\hbar}}\hat{s}\hat{l}\;</MATH>|25.85}}
Wiemy, że operator całkowitego momentu pędu jest sumą operatora momentu pędu orbitalnego i spinowego momentu pędu badanej cząstki:
{{CentrujWzór|<MATH>\hat{j}=\hat{l}+\hat{s}\;</MATH>|25.86}}
Można podnieść do kwadratu wyrażenie operatorowe {{LinkWzór|25.86}}, to otrzymujemy inny wzór wynikowy, w którym występują kwadraty różnych operatorów momentu pęd oraz wyraz mieszany będącej iloczynem momentu pędu orbitalnego i spinowego elektronu:
{{CentrujWzór|<MATH>\hat{j}^2=\hat{l}^2+\hat{s}^2+2\hat{l}\hat{s}\;</MATH>|25.87}}
Z {{LinkWzór|25.87}} wyznaczamy wyrażenie {{Formuła|<MATH>2\hat{l}\hat{s}\;</MATH>}}, w tym celu przenieśmy wyraz mieszany na lewą stronę równania {{LinkWzór|25.87}} z jego prawej strony, a pozostałe wyraży występujące po lewej stronie ostatniego wyrażenia na jego prawo stronę, dostajemy:
{{CentrujWzór|<MATH>2\hat{l}\hat{s}=\hat{j}^2-\hat{l}^2-\hat{s}^2\;</MATH>|25.88}}
Podstawiamy za {{Formuła|<MATH>\hat{\sigma} \hat{l}\;</MATH>}} wyrażenie {{LinkWzór|25.88}} do wzoru operatorowego {{LinkWzór|25.85}}, wtedy dostajemy równoważne równanie do tego ostatniego równanie:
{{CentrujWzór|<MATH>\hbar\hat{\sigma} \hat{l}=\left[\hat{j}^2-\hat{l}^2-\hat{s}^2\right]\Rightarrow\hat{\sigma} \hat{l}=\hbar^{-1} \left[\hat{j}^2-\hat{l}^2-\hat{s}^2\right]\;</MATH>|25.89}}
Operator {{LinkWzór|25.62}} na podstawie własności operatorowej {{LinkWzór|25.89}} możemy przestawić podstawiając do niego wyrażenie na {{Formuła|<MATH>\hat{\sigma} \hat{l}\;</MATH>}} wedle wzoru tego ostatniego, to dostaniemy inny równoważny wzór na operator {{Formuła|<MATH>\hat{k}\;</MATH>}} w stosunku do pierwotnej definicji {{LinkWzór|25.62}}:
{{CentrujWzór|<MATH>\hat{k}=\hbar^{-1}\hat{\beta}\left[\hbar^{-1}\left(\hat{j}^2-\hat{l}^2-\hat{s}^2\right)+\hbar\right]=\hbar^{-1}\hat{\beta}\hbar\left[\hbar^{-2}\left(\hat{j}^2-\hat{l}^2-\hat{s}^2\right)+1\right]=\hat{\beta}\left[\hbar^{-2}\left(\hat{j}^2-\hat{l}^2-\hat{s}^2\right)+1\right]\;</Math>|25.90}}
Mając wartości własne kwadratu operatora całkowitego momentu pędu {{Formuła|<maTh>\hat{j}^2\;</MATH>}} kwadratu operatora orbitalnego momentu pędu {{Formuła|<MATH>\hat{l}^2\;</MATH>}} i ostatecznie kwadratu operatora spinowego {{Formuła|<MATH>\hat{s}^2\;</MATH>}} i ze względu na elementy operatora {{Formuła|<MATH>\hat{\beta}\;</MATH>}}, które mają wartość 1 lub -1 na podstawie wyrażenia {{LinkWzór|25.21|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, mamy:
{{CentrujWzór|<MATh>k=\pm\left\{\hbar^{-2}\left[j(j+1)\hbar^2-l(l+1)\hbar^2-s(s+1)\hbar^2\right]+1\right\}=\pm\left[j(j+1)-l(l+1)-s(s+1)+1\right]\;</MAth>|25.91}}
* gdzie:{{Formuła|<MATH>s={{1}\over{2}}\;</MATH>}}.
Mając liczbę kwantową całkowitego momentu pędu "j" dla cząstki o spinie równą połowie jedynki, to wyznaczymy z niego wzór na liczbę kwantową orbitalnego momentu pędu w zależności od liczby kwantowej całkowitego momentu pędu:
{{CentrujWzór|<MATH>j=l\mp {{1}\over{2}}\Rightarrow l=j\pm{{1}\over{2}}\;</MATH>|25.92}}
A więc dla {{Formuła|<MATH>l=j-{{1}\over{2}}\;</MATH>}} według {{LinkWzór|25.92}} wartość własna równania własnego {{LinkWzór|25.83}}, na podstawie {{LinkWzór|25.91}}, przestawiamy:
{{CentrujWzór|<MATH>k=\pm\left[j(j+1)-(j-{{1}\over{2}})(j+{{1}\over{2}})+{{1}\over{4}}\right]=
\pm\left[j^2+j-j^2-{{1}\over{2}}j+{{1}\over{2}}j+{{1}\over{4}}+{{1}\over{4}}\right]=\pm\left[j+{{1}\over{2}}\right]\;</MATH>|25.93}}
oraz dla {{Formuła|<MATH>l=j+{{1}\over{2}}\;</MATH>}} według {{LinkWzór|25.92}}, wtedy wartość własna równania własnego {{LinkWzór|25.83}}, na podstawie {{LinkWzór|25.91}}, przestawiamy:
{{CentrujWzór|<MATH>k=\pm\left[j^2+j-(j+{{1}\over{2}})(j+{{3}\over{2}})+{{1}\over{4}}\right]=
\pm\left[j^2+j-j^2-j{{3}\over{2}}-j{{1}\over{2}}-{{3}\over{4}}+{{1}\over{4}}\right]=\mp\left[j+{{1}\over{2}}\right]\;</MATH>|25.94}}
Ponieważ wartości własne {{Formuła|<MATH>\hat{j}\;</MATH>}} całkowitego momentu pędu mają wartości ułamkowe połówkowe, zatem na podstawie {{LinkWzór|25.93}} (dla {{LinkWzór|25.92}} z minusem) i {{LinkWzór|25.94}} (dla {{LinkWzór|25.92}} z plusem) dochodzimy więc do wniosku, że wartościami własnymi operatora {{LinkWzór|25.62}} są liczby całkowite bez zera:
{{CentrujWzór|<MATH>k=\pm1,\pm 2,\pm 3,...\;</MATH>|25.95}}
Mając na uwadze powyższe rozważania przedstawmy funkcję <MATH>\psi\;</MATH> jako wektor funkcji, jako dwuskładnikowsy wektor kolumnowy, czyli spinor:
{{CentrujWzór|<MATH>\psi=\begin{pmatrix}\psi_1\\ \psi_2\end{pmatrix}\;</MATH>|25.96}}
Biorąc spinor {{LinkWzór|25.96}} jako wektor własny, a także definicję macierzy {{LinkWzór|25.77}} i {{LinkWzór|25.78}}, to równanie Diraca {{LinkWzór|25.72}} przyjmuje kształt:
{{CentrujWzór|<MATH>\left\{c\hat{p}_r\begin{pmatrix}0&-i\\i&0\end{pmatrix}+{{i\hbar c\hat{k}}\over{r}}\begin{pmatrix} 0&-i\\i&0\end{pmatrix}\begin{pmatrix}1&0\\0&-1\end{pmatrix}+m_0c^2\begin{pmatrix} 1&0\\0&-1\end{pmatrix}-{{e^2}\over{4\pi\epsilon_0 r}}\begin{pmatrix}1&0\\0&1\end{pmatrix}\right\}\begin{pmatrix}\psi_1\\\psi_2\end{pmatrix}=E\begin{pmatrix}\psi_1\\\psi_2\end{pmatrix}\;</MATH>|25.97}}
Po dalszych przekształceniach powyższego równania {{LinkWzór|25.97}} dotyczące przemnożenia pewnych macierzy, otrzymujemy inne równoważne do poprzedniego macierzowe równanie Diraca dla elektronu:
{{CentrujWzór|<MATH>\left\{c\hat{p}_r\begin{pmatrix}0&-i\\i&0\end{pmatrix}+{{i\hbar c\hat{k}}\over{r}}\begin{pmatrix} 0&i\\i&0\end{pmatrix}+m_0c^2\begin{pmatrix} 1&0\\0&-1\end{pmatrix}-{{e^2}\over{4\pi\epsilon_0 r}}\begin{pmatrix}1&0\\0&1\end{pmatrix}\right\}\begin{pmatrix}\psi_1\\\psi_2\end{pmatrix}=E\begin{pmatrix}\psi_1\\\psi_2\end{pmatrix}\;</MATH>|25.98}}
Z równania macierzowego {{LinkWzór|25.98}} stanowiących jakoby układ dwóch równań, otrzymujemy dwa równania zależne od siebie:
{{CentrujWzór|<MATH>\begin{cases}
(m_0c^2-E-{{e^2}\over{4\pi\epsilon_0 r}})\psi_1-(ic\hat{p}_r+{{\hbar c\hat{k}}\over{r}})\psi_2=0\\
-(m_0c^2+E+{{e^2}\over{4\pi\epsilon_0 r}})\psi_2+(ic\hat{p}_r-{{\hbar c\hat{k}}\over{r}})\psi_1=0\end{cases}</MATH>|25.99}}
Następnym naszym krokiem jest podstawienie za operator {{Formuła|<MATH>\hat{p}_r\;</MATH>}} {{LinkWzór|25.63}} jego definicji w układzie równań {{LinkWzór|25.99}}:
{{CentrujWzór|<MATH>\begin{cases}
\left(m_0c^2-E-{{e^2}\over{4\pi\epsilon_0 r}}\right)\psi_1-\hbar c\left({{\hat{k}}\over{r}}+{{\partial}\over{\partial r}}+{{1}\over{r}}\right)\psi_2=0\\
-hc\left({{\hat{k}}\over{r}}-{{\partial}\over{\partial r}}-{{1}\over{r}}\right)\psi_1-\left(m_0c^2+E+{{e^2}\over{4\pi\epsilon_0 r}}\right)\psi_2=0\end{cases}\;</MATH>|25.100}}
Ponieważ operator {{Formuła|<MATH>\hat{k}\;</MATH>}} zależy od współrzędnych kątowych, a nie radialnym, stąd wynika, że funkcje {{Formuła|<MATH>\psi_1\;</MATH>}} i {{Formuła|<MATH>\psi_2\;</MATH>}} mają jednakową funkcję kątową, co wynika, że dla obu równań {{LinkWzór|25.100}} wartość własna operatora {{Formuła|<MATH>\hat{k}\;</MATH>}} powinna być taka sama, z definiujmy w takim wypadku te opisywane funkcje:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\psi_1={{f_1(r)}\over{r}}\phi\;</MATH>|25.101}}
| 2 = {{CentrujWzór|<MATH>\psi_2={{f_2(r)}\over{r}}\phi\;</MATH>|25.102}}
}}
Zajmijmy się teraz pierwszym równaniem układu równań {{LinkWzór|25.100}}, do niego możemy wstawić funkcje, tzn.:{{Formuła|<MATH>\psi_1\;</MATH>}} {{LinkWzór|25.101}} i {{Formuła|<MATH>\psi_2\;</MATH>}} {{LinkWzór|25.102}} oraz za {{Formuła|<MATH>\hat{k}\;</MATH>}} należy wstawić wartość własną tego operatora, co wynika z definicji jego wartości własnej:
{{CentrujWzór|<MATH>\left(m_0c^2-E-{{e^2}\over{4\pi\epsilon_0r}}\right){{f_1(r)}\over{r}}\phi-\hbar c\left({{\hat{k}}\over{r}}+{{\partial}\over{\partial r}}+{{1}\over{r}}\right){{f_2(r)}\over{r}}\phi=0\;</MATH>|25.103}}
Pomnóżmy teraz lewostronnie {{LinkWzór|25.103}} przez odległość radialną r:
{{CentrujWzór|<MATH>\left(m_0c^2-E-{{e^2}\over{4\pi\epsilon_0 r}}\right)f_1(r)-\hbar c\left({{k}\over{r}}f_2(r)+r{{\partial}\over{\partial r}}{{f_2(r)}\over{r}}+{{1}\over{r}}f_2(r)\right)=0\;</MATH>|25.104}}
Rozpiszmy tożsamość poniżej korzystając z twierdzenia o pochodnej ilorazu:
{{CentrujWzór|<MATH>r{{d}\over{dr}}{{f_2}\over{r}}=
r{{{{{df_2}\over{dr}}r-f_2}}\over{r^2}}=({{d}\over{dr}}-{{1}\over{r}})f_2(r)\;</MATH>|25.105}}
A zatem nasze '''pierwsze równanie''' uzyskujemy z {{LinkWzór|25.104}}, po dokonaniu w nim obliczeń pomocniczych wedle schematu {{LinkWzór|25.105}}, przyjmuje ona wtedy postać:
{{CentrujWzór|<MATH>\left(m_0c^2-E-{{e^2}\over{4\pi\epsilon_0 r}}\right)f_1(r)-\hbar c\left({{k}\over{r}}+{{d}\over{dr}}\right)f_2(r)=0\;</MATH>|25.106|Obramuj}}
W tej chwili zajmować się będziemy drugim równaniem {{LinkWzór|25.100}} podstawiając do niego za {{Formuła|<MATH>\psi_1\;</MATH>}} {{LinkWzór|25.101}} i za {{Formuła|<MATH>\psi_2\;</MATH>}} {{LinkWzór|25.102}}:
{{CentrujWzór|<MATH>-hc\left({{\hat{k}}\over{r}}-{{\partial}\over{\partial r}}-{{1}\over{r}}\right){{f_1(r)}\over{r}}\phi-\left(m_0c^2+E+{{e^2}\over{4\pi\epsilon_0 r}}\right){{f_2(r)}\over{r}}\phi=0\;</MATH>|25.107}}
Przekształćmy nasze aktualne równanie:
{{CentrujWzór|<MATH>-hc\left({{k}\over{r}}{{f_1(r)}\over{r}}-{{\partial}\over{\partial r}}{{f_1(r)}\over{r}}-{{1}\over{r}}{{f_1(r)}\over{r}}\right)-\left(m_0c^2+E+{{e^2}\over{4\pi\epsilon_0 r}}\right){{f_2(r)}\over{r}}=0\;</MATH>|25.108}}
Pomnóżmy lewostronnie równanie {{LinkWzór|25.108}} przez odległość radialną r, wtedy otrzymujemy równość napisaną w zależności od funkcji {{Formuła|<MATH>f_1(r)\;</MATH>}} i {{Formuła|<MATH>f_2(r)\;</MATH>}}:
{{CentrujWzór|<MATH>-hc\left({{k}\over{r}}f_1(r)-r{{\partial}\over{\partial r}}{{f_1(r)}\over{r}}-{{1}\over{r}}f_1(r)\right)-\left(m_0c^2+E+{{e^2}\over{4\pi\epsilon_0 r}}\right)f_2(r)=0\;</MATH>|25.109}}
Zatem ostatecznie '''drugie równanie''' wynikającego z {{LinkWzór|25.109}} i po dokonaniu w nim obliczeń pomocniczych, wykorzystując tożsamość {{LinkWzór|25.105}}, przyjmuje postać:
{{CentrujWzór|<MATH>\hbar c\left({{k}\over{r}}-{{d}\over{dr}}\right)f_1(r)+\left(m_0c^2+E+{{e^2}\over{4\pi\epsilon_0 r}}\right)f_2(r)=0\;</MATH>|25.110|Obramuj}}
Dokonajmy podstawień do równań {{LinkWzór|25.106}} (pierwsze równanie) i {{LinkWzór|25.110}} (drugie równanie) w postaci:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>c_1={{\hbar c}\over{m_0c^2+E}}\;</MATH>|25.111}}
| 2 = {{CentrujWzór|<MATH>c_2={{\hbar c}\over{m_0c^2-E}}\;</MATH>|25.112}}
| 3 = {{CentrujWzór|<MATH>\alpha={{e^2}\over{4\pi\epsilon_0\hbar c}}\;</MATH>|25.113}}
}}
Zatem równanie {{LinkWzór|25.106}} i {{LinkWzór|25.110}} na podstawie podstawień {{LinkWzór|25.111}}({{Formuła|<MATH>c_1\;</MATH>}}), {{LinkWzór|25.112}}({{Formuła|<MATH>c_2\;</MATH>}}) i {{LinkWzór|25.113}}({{Formuła|<MATH>\alpha\;</MATH>}}) przyjmują postacie zapisaną w układzie równań:
{{CentrujWzór|<MATH>\begin{cases}
\left({{1}\over{c_2}}-{{\alpha}\over{r}}\right)f_1-\left({{k}\over{r}}+{{d}\over{dr}}\right)f_2=0\\
\left({{k}\over{r}}-{{d}\over{dr}}\right)f_1+\left({{1}\over{c_1}}+{{\alpha}\over{r}}\right)f_2=0\end{cases}\;</MaTh>|25.114}}
Nastepnie wyodrębnijmy ten sam czynnik wykładniczy z funkcji {{Formuła|<MATH>f_1\;</MATH>}} i {{Formuła|<MATH>f_2\;</MATH>}}, tzn.:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>f_1=u_1(r)e^{-ar}\;</MATH>|25.115}}
| 2 = {{CentrujWzór|<MATH>f_2=u_2(r)e^{-ar}\;</MATH>|25.116}}
}}
W {{LinkWzór|25.115}} i {{LinkWzór|25.116}} stała "a" jest zależna od energii całkowitej elektronu i od jego masy spoczynkowej, jest zdefiniowane jako stała:
{{CentrujWzór|<MATH>a={{\sqrt{m_0c^2-E^2}}\over{\hbar c}}\;</MATH>|25.117}}
Podstawiając te funkcje {{LinkWzór|25.115}} i {{LinkWzór|25.116}} do dwóch rozważanych równań {{LinkWzór|25.114}}, mamy:
{{CentrujWzór|<MATH>\begin{cases}
\left({{1}\over{c_2}}-{{\alpha}\over{r}}\right)u_1-\left({{k}\over{r}}-a\right)u_2-{{du_2}\over{dr}}=0\\
\left({{k}\over{r}}+a\right)u_1+\left({{1}\over{c_1}}+{{\alpha}\over{r}}\right)u_2-{{du_1}\over{dr}}=0\end{cases}\;</MATH>|25.118}}
Dokonajmy podstawień za funkcje {{Formuła|<MATH>u_1(r)\;</MATH>}} i {{Formuła|<MATH>u_2(r)\;</MATH>}} pewnymi nieskończonymi szeregami potęgowymi zapisane jako kombinacja liniowa z pewnymi współczynnikami względem poszczególnych potęg odległości radialnych:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>u_1(r)=\sum^{\infty}_{m=1}b_mr^{\mu+m}\;</MATH>|25.119}}
| 2 = {{CentrujWzór|<MATh>u_2(r)=\sum^{\infty}_{m=1}d_mr^{\mu+m}\;</MATH>|25.120}}
}}
* gdzie {{Formuła|<MATH>\mu\geq 0\;</MATH>}}, co gwarantuje rozpoczęcia w szeregu potęgowym opisanym powyżej, których wykładnik potęgi jest większy niż "m" w szeregach powyżej zdefiniowanych.
Dokonajmy podstawień szeregów {{Formuła|<MATH>u_1(r)\;</MATH>}} {{LinkWzór|25.119}} i {{Formuła|<MATH>u_2(r)\;</MATH>}} {{LinkWzór|25.120}}, do pierwszego równania {{LinkWzór|25.118}}.
{{CentrujWzór|<MATH>{{1}\over{c_2}}\sum^{\infty}_{m=1}b_mr^{\mu+m}-\alpha\sum^{\infty}_{m=1}b_mr^{\mu+m-1}-k\sum^{\infty}_{m=1}d_mr^{\mu+m-1}+a\sum^{\infty}_{m=1}d_mr^{\mu+m}-\sum^{\infty}_{m=1}d_m(\mu+m)r^{\mu+m-1}=0\;</MATH>|25.121}}
Dokonajmy podstawień wedle schematu m'=m+1 dla pierwszego i czwartego wyrazu równania {{LinkWzór|25.121}} w ten sposób, by w tym równaniu mieć te same potęgi, by później współczynnik stojący przy tej potędze przyrównać do zera, jeśli wszystkie wyrazy występując po przegrupowaniu występują w czynniku przy tym obiekcie, a zatem dochodzimy do wniosku po odpowiedniej zamianie parametrów m:
{{CentrujWzór|<MATH>{{1}\over{c_2}}\sum^{\infty}_{m=2}b_{m-1}r^{\mu+m-1}-\alpha\sum^{\infty}_{m=1}b_mr^{\mu+m-1}-k\sum^{\infty}_{m=1}d_mr^{\mu+m-1}+a\sum^{\infty}_{m=2}d_{m-1}r^{\mu+m-1}-\sum^{\infty}_{m=1}d_m(\mu+m)r^{\mu+m-1}=0\;</MATH>|25.122}}
Grupując względem tych samych potęg w {{LinkWzór|25.122}}, zależność na współczynnikach (pierwsze równanie poniżej) i warunek brzegowy (drugie równanie) przedstawia się:
{{ElastycznyWiersz
| 1 = {{Center|'''Równanie iteracyjne pierwsze'''}}{{CentrujWzór|<MATH>{{1}\over{c_2}}b_{m-1}-\alpha b_m+ad_{m-1}-(\mu+m+k)d_m=0\;</MATH>|25.123|Obramuj}}
| 2 = {{Center|'''Równanie brzegowe pierwsze'''}}{{CentrujWzór|<MATH>-\alpha b_1-kd_1-d_1(\mu+1)=0\;</MATH>|25.124|Obramuj}}
}}
Dokonajmy teraz podstawień do drugiego równania {{LinkWzór|25.118}} w szeregach potęgowych {{LinkWzór|25.119}} i {{LinkWzór|25.120}}:
{{CentrujWzór|<MATH>k\sum^{\infty}_{m=1} b_mr^{\mu+m-1}+a\sum^{\infty}_{m=1}b_m r^{\mu+m}+{{1}\over{c_1}}\sum^{\infty}_{m=1}d_m r^{\mu+m}+\alpha\sum^{\infty}_{m=1}d_mr^{\mu+m-1}-\sum^{\infty}_{m=1}b_m(\mu+m)r^{\mu+m-1}=0\;</MATH>|25.125}}
Podstawmy do drugiego i trzeciego wyrazu przy pomocy schematu m=m'-1 do powyższego równania, by w tym równaniu mieć te same potęgi "r", by później współczynniki stojący przy tej potędze przyrównać do zera:
{{CentrujWzór|<MATH>k\sum^{\infty}_{m=1} b_mr^{\mu+m-1}+a\sum^{\infty}_{m=2}b_{m-1} r^{\mu+m-1}+{{1}\over{c_1}}\sum^{\infty}_{m=2}d_{m-1} r^{\mu+m-1}+\alpha\sum^{\infty}_{m=1}d_mr^{\mu+m-1}-\sum^{\infty}_{m=1}b_m(\mu+m)r^{\mu+m-1}=0\;</MATH>|25.126}}
Grupując względem tych samych potęg w {{LinkWzór|25.126}}, zatem równanie iteracyjne między współczynnikami (pierwsze równanie poniżej) i warunek brzegowy (drugie równanie) przedstawia się:
{{ElastycznyWiersz
| 1 = {{Center|'''Równanie iteracyjne drugie'''}}
{{CentrujWzór|<MATH>ab_{m-1}-(\mu+m-k)b_m+{{1}\over{c_1}}d_{m-1}+\alpha d_m=0\;</MATH>|25.127|Obramuj}}
| 2 = {{Center|'''Równanie brzegowe drugie'''}}
{{CentrujWzór|<MATH>kb_1+\alpha d_1-b_1(\mu+1)=0\;</MATH>|25.128|Obramuj}}
}}
Następnie możemy wyregułować wyrazy z m-1, jeśli {{LinkWzór|25.123}} pomnożymy przez "a" a {{LinkWzór|25.127}} przez {{Formuła|<MATH>{{1}\over{c_2}}\;</MATH>}}, pamiętając jednak, że zachodzi tożsamość: {{Formuła|<MATH>a^2={{1}\over{c_1c_2}}\;</MATH>}}, mamy:
{{CentrujWzór|<MATH>{{1}\over{c_1c_2}}={{(m_0c^2-E)(m_0c^2+E)}\over{\hbar^2 c^2}}={{mc^4-E^2}\over{h^2c^2}}=a^2\;</MATH>|25.129}}
Co kończy dowód powyższego lematu.
Po tych operacjach odejmujemy obustronnie tak otrzymane oba te równania, możemy napisać, że:
{{CentrujWzór|<MATH>-\alpha a b_m-(\mu+m+k)a d_m+(\mu+m-k){{1}\over{c_2}}b_m-\alpha{{1}\over{c_2}}d_m=0\;</MATH>|25.130}}
Grupujemy wyrazy względem {{Formuła|<MATH>b_m\;</MATH>}} i {{Formuła|<MATH>d_m\;</MATH>}} w {{LinkWzór|25.130}}, mamy:
{{CentrujWzór|<MATH>\left({{\mu+m-k}\over{c_2}}-\alpha a\right)b_m-\left((\mu+m+k)a+{{\alpha}\over{c_2}}\right)d_m=0\;</MATH>|25.131|Obramuj}}
Jest to '''ogólny związek wziążacy współczynniki''' {{Formuła|<MaTh>b_m\;</MATH>}} z {{Formuła|<MATH>d_m\;</MATH>}}.
Zbieżność szeregu dla dużych m według {{LinkWzór|25.131}} można tak zapisać, by we wspomnianym równaniu można pominąć wszystkie składniki za wyjątkiem wyrazów z m, bo wyrazy z m są o wiele większe niż bez niego, zatem dla dużego m ostatnie równanie możemy zapisać wedle schematu:
{{CentrujWzór|<MATH>{{m}\over{c_2}}b_m-mad_m=0\Rightarrow{{m}\over{c_2}}b_m=m a d_m\Rightarrow b_m=c_2 ad_m\;</MATH>|25.132}}
Tożsamość {{LinkWzór|25.123}} dla dużych m, podobnie jak przy pisaniu {{LinkWzór|25.132}}, przyjmuje postać:
{{CentrujWzór|<MATH>{{1}\over{c_2}}b_{m-1}-\alpha b_m+ad_{m-1}-md_m=0\;</MATH>|25.133}}
Podstawiamy zależność {{LinkWzór|25.132}} do ostatniego równania {{LinkWzór|25.133}} w celu wyznaczenia zależności iteracyjnej współczynników {{Formuła|<MATH>d_i\;</MATh>}} występujących w {{LinkWzór|25.120}}, otrzymujemy:
{{CentrujWzór|<MATH>ad_{m-1}-\alpha c_2 ad_m+ad_{m-1}-md_m=0\;</MATH>|25.134}}
Dla dużych "m" prawie nieskończonych, równanie {{LinkWzór|25.134}} przechodzi w równoważną równość:
{{CentrujWzór|<MATH>ad_{m-1}+ad_{m-1}=md_m\Rightarrow 2ad_{m-1}=md_m\;</MATH>|25.135}}
Ostatecznie otrzymujemy z równości {{LinkWzór|25.135}} stosunek dwóch współczynników d{{Sub|m}} występujących w szeregu {{LinkWzór|25.120}} jako stosunek czynnika o wskaźniku dolnym m przez współczynnik o wskaźniku m-1:
{{CentrujWzór|<MATH>{{d_m}\over{d_{m-1}}}={{2a}\over{m}}\;</MATH>|25.136}}
Tak samo jak w ilorazie {{LinkWzór|25.136}}, który zachodzi dla dużych m, które zachowują się jak współczynniki szeregu eksponencjalnego o wykładniku 2ar, że w ten sam w sposób, ale dla dużych m dokładnie to samo:
{{CentrujWzór|<MATH>e^{2ar}=1+{{2ar}\over{1!}}+{{(2ar)^2}\over{2!}}+...\;</MATH>|25.137}}
* gdzie:
{{CentrujWzór|<MATH>{{a_m}\over{a_{m-1}}}={{(2m)^2}\over{m!}}{{(m-1)!}\over{(2a)^{m-1}}}={{2a}\over{m}}\;</MATH>|25.138}}
Funkcja e{{Sup|2ar}} dąży w nieskończonościach do nieskończoności, zatem aby nasz szereg był zbieżny w nieskończoności musimy urwać nasz szereg u{{Sub|2}}(r) {{LinkWzór|25.120}} na pewnym wyrazie, by on był zbieżny w nieskończoności, podobnie wnioskujemy dla drugiego szeregu, czyli u{{Sub|1}}(r) {{LinkWzór|25.119}}.
Wiadomo,że jeśli b{{Sub|m}}=0, to d{{Sub|m}}=0 na podstawie {{LinkWzór|25.131}}.
Jeśli nasze szeregi, zarówno dla u{{Sub|1}}(r) lub dla u{{Sub|2}}(r), należy urwać na pewnym wskaźniku m=s+1. Zbierając wszystko z równania {{LinkWzór|25.123}}, podstawiamy za wyrazy ze wskażnikiem m+1 jako zero (bo urywamy), a wyrazy ze wskaźnikiem m pozostawiamy i dalej zamieniamy m na s, jeśli ostatnio w naszym równaniu {{LinkWzór|25.127}} dokonaliśmy podstawienia m=m'+1, tylko wtedy można tak źrobić, a drugie wyrażenie {{LinkWzór|25.131}} przepisujemy wstawiając za m wskaźnik s:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{1}\over{c_2}}b_s+ad_s=0\;</MATH>|25.139}}
| 2 = {{CentrujWzór|<MATH>\left({{\mu+s-k}\over{c_2}}-\alpha a\right)b_s-\left[(\mu+s+k)a+{{\alpha}\over{c_2}}\right]d_s=0\;</MATH>|25.140}}
}}
Ponieważ oba współczynniki rozwinięcia nie mogą być równe zero, podstawiamy równanie wynikające z {{LinkWzór|25.139}}, tzn. wyznaczamy z niego wyrażenie na b{{Sub|s}}, to wszystko podstawiamy za ten sam współczynnik do tożsamości {{LinkWzór|25.140}}, mamy:
{{CentrujWzór|<MATH>\left({{\mu+s-k}\over{c_2}}-\alpha a\right)(-c_2)ad_s-\left[(\mu+s+k)a+{{\alpha}\over{c_2}}\right]d_s=0\;</MATH>|25.141}}
Dzielimy obie strony {{LinkWzór|25.141}} przez wyrażenie w ogólności niezerowe c{{Sub|2}}d{{Sub|s}}, otrzymujemy:
{{CentrujWzór|<MATH>a\left({{\mu+s-k}\over{c_2}}-\alpha a\right)+{{1}\over{c_2}}\left((\mu+s+k)a+{{\alpha}\over{c_2}}\right)=0\;</MATH>|25.142}}
Dokonujemy dalszych przekształceń w tożsamości {{LinkWzór|25.142}}, wtedy:
{{CentrujWzór|<MATH>2(\mu+s)a{{1}\over{c_2}}=a^2\alpha-{{\alpha}\over{c^2_2}}\;</MATH>|25.143}}
Po podstawieniu za a{{Sup|2}} wzoru napisanego według {{LinkWzór|25.129}} do równania {{LinkWzór|25.143}} wyrażając je względem stałych c{{Sub|1}} i c{{Sub|2}}, narazie zapominając od definicji tychże stałych, mamy:
{{CentrujWzór|<MATH>2(\mu+s)a{{1}\over{c_2}}={{\alpha}\over{c_1c_2}}-{{\alpha}\over{c^2_2}}\;</MATH>|25.144}}
Równanie {{LinkWzór|25.144}} mnożymy przez c{{Sub|2}}, otrzymujemy:
{{CentrujWzór|<MATH>(\mu+s)a=\alpha\left({{1}\over{c_1}}-{{1}\over{c_2}}\right)\;</MATH>|25.145}}
Do równania {{LinkWzór|25.145}} wstawiając stałe za "a" {{LinkWzór|25.129}} (jego definicja zależy od energii całkowitej cząstki i zależności od jego masy spoczynkowej), c{{Sub|1}} {{LinkWzór|25.111}}(definicja) oraz c{{Sub|2}} {{LinkWzór|25.112}} (definicja)
{{CentrujWzór|<MATH>2(\mu+s){{\sqrt{m_0^2c^4-E^2}}\over{\hbar c}}={{2\alpha E}\over{\hbar c}}\;</MATH>|25.146}}
Pomnóżmy ostatnie równanie przez stałą zależną od stałej kreślonej Plancka i prędkości światła {{Formuła|<MATH>{{\hbar c}\over{2}}\;</MATH>}}, mamy:
{{CentrujWzór|<MATH>(\mu+s)\sqrt{m_0^2c^4-E^2}=\alpha E\;</MATH>|25.147}}
Podnieśmy równanie {{LinkWzór|25.147}} do kwadratu w celu usunięcia niewymierności we wspomnianym ostatnio równaniu, można powiedzieć:
{{CentrujWzór|<MATH>(\mu+s)^2(m_0^2c^4-E^2)=\alpha^2E^2\;</MATH>|25.148}}
Wyznaczmy z {{LinkWzór|25.148}} parametr E, który jest energią cząstki wynikająca z mechaniki kwantowej Diraca, która jest wartością własną operatorta energii całkowitej, zatem otrzymujemy ostatecznie:
{{CentrujWzór|
<MATH>(\mu+s)^2m_0^2c^4-(\mu+s)^2E^2=\alpha^2E^2\Rightarrow E^2(\alpha^2+(\mu+s)^2)=(\mu+s)^2m_0^2c^4\Rightarrow E^2={{m_0^2c^4(\mu+s)^2}\over{\alpha^2+(\mu+s)^2}}\Rightarrow \;</MATH><BR><MATH>\Rightarrow E^2={{m_0^2c^4}\over{1+{{\alpha^2}\over{(\mu+s)^2}}}}\Rightarrow E={{m_0c^2}\over{\sqrt{1+{{\alpha^2}\over{(\mu+s)^2}}}}}\;</MATH>|25.149}}
Teraz zajmniemy się dwoma warunkami brzegowymi dla m=1, tzn. {{LinkWzór|25.124}} i {{LinkWzór|25.128}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>-\alpha b_1-kd_1-d_1(\mu+1)=0\;\;</MATH>|25.150}}
| 2 = {{CentrujWzór|<MATH>kb_1+\alpha d_1-b_1(\mu+1)=0\;\;</MATH>|25.151}}
}}
Te dwa ostatnie równania możemy przekształcić, czyli {{LinkWzór|25.150}} i {{LinkWzór|25.151}}, do równoważnej bardziej uproszczonej postaci:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\alpha b_1=-(\mu+1+k)d_1\;\;</MATH>|25.152}}
| 2 = {{CentrujWzór|<MATH>b_1(\mu+1-k)=\alpha d_1\;\;</MATH>|25.153}}
}}
Dwa ostatnie dwa równania dzielimy obustronnie przez siebie, tzn. równości {{LinkWzór|25.152}} przez {{LinkWzór|25.153}}, wtedy mamy pojedynczy wzór na warunek brzegowy:
{{CentrujWzór|<MATH>{{\alpha}\over{\mu+1-k}}=-{{\mu+1+k}\over{\alpha}}\;\;</MATH>|25.154}}
Następnie w {{LinkWzór|25.153}} wyznaczmy wzór na stałą μ występujących w szeregach potęgowych w wykładnikach potęg, czyli w {{LinkWzór|25.119}} i {{LinkWzór|25.120}}:
{{CentrujWzór|
<MATH>(\mu+1-k)(\mu+1+k)=-\alpha^2\Rightarrow\alpha^2+(\mu+1-k)(\mu+1+k)=0\Rightarrow\alpha^2+(\mu+1)^2-k^2=0\Rightarrow k^2-\alpha^2=(\mu+1)^2\Rightarrow\;</MATH><BR><MATH>\Rightarrow\mu+1=\sqrt{k^2-\alpha^2}\Rightarrow \mu=\sqrt{k^2-\alpha^2}-1\;\;</MATH>|25.155}}
A zatem energia całkowita elektronu otrzymujemy, podstawiając stałą μ zdefiniowaną wedle {{LinkWzór|25.155}} do wzoru na całkowitą energię elektronu {{LinkWzór|25.149}}, wtedy mamy wniosek:
{{CentrujWzór|<MATH>E={{m_0c^2}\over{\sqrt{1+{{\alpha^2}\over{\left(\sqrt{k^2-\alpha^2}-1+s\right)^2}}}}}\;</MATH>|25.156}}
Dokonajmy przybliżeń w tym celu obierzmy stałą n^', która jest zależna od kwantowej liczby k zdefiniowanej wedle {{LinkWzór|25.95}}, stałej struktury subtelnej i elementu s, definiujemy ją wedle:
{{CentrujWzór|<MATH>n'=s-1+\sqrt{k^2-\alpha^2}\;</MATH>|25.157}}
Przedstawienie napisaną wedle tożsamości {{LinkWzór|25.157}} podstawiamy do wzoru na energię {{LinkWzór|25.156}}:
{{CentrujWzór|<MATH>E={{m_0c^2}\over{\sqrt{1+{{\alpha^2}\over{n'^2}}}}}\;</MATH>|25.158}}
Rozłóżmy wyrażenie {{LinkWzór|25.158}} w szereg Taylora względem parametru α{{Sup|2}}, czyli kwadratu stałej struktury subtelnej, który wygląda tak samo jak w punkcie {{LinkWzór|24.79|Relatywistyczna_teoria_kwantów_Kleina-Gordona}}, tylko mamy inną definicję n', w przeciwieństwie dla atomu wodoru według Kleina-Gordona, czyli {{LinkWzór|24.72|Relatywistyczna teoria kwantów Kleina-Gordona}}, a w teorii Diraca mamy definicję tego parametru w postaci {{LinkWzór|25.157}}:
{{CentrujWzór|<MATH>E=m_0c^2\left(1-{{\alpha^2}\over{2n'^2}}+{{1\cdot 3\alpha^4}\over{2\cdot 4 n'^4}}+...\right)\;</MATH>|25.159}}
Rachunki będziemy prowadzić do czwartej potęgi przy dokonaniu przybliżenia liczby n^' dla małego współczynnika kwadratu struktury subtelnej α{{Sup|2}}:
{{CentrujWzór|<MATH>n'=s-1+k\sqrt{1-{{\alpha^2}\over{k^2}}}=s-1+k\left(1-{{1\alpha^2}\over{2k^2}}-
{{\alpha^4}\over{2\cdot 4 k^4}}\right)=n-{{\alpha^2}\over{2k^2}}-{{\alpha^4}\over{8k^3}}=n\left(1-{{\alpha^2}\over{2nk}}-{{\alpha^4}\over{8nk^3}}\right)\;</MATH>|25.160}}
* gdzie
{{CentrujWzór|<MATH>n=s-1+k\;</MATH>|25.161}}
Ponieważ s≥1 i k jest takie, że {{LinkWzór|25.95}}, a żeby zachodziło {{LinkWzór|25.161}}, to dostajemy dalsze ograniczenia na liczbę kwantową k jako wartości własnej równania własnego dla operatora {{LinkWzór|25.62}}, zatem:
{{CentrujWzór|<MATH>k=1,2,3,...,n\;</MATH>|25.162}}
Określmy odwrotność parametru n' napisaną w sposób przybliżony wyrażenia {{LinkWzór|25.160}}, dokonując w nim dalszych przybliżeń dla małości wyrazów występujących w nawiasie wspomnianego wyrażenia występującego po jedynce:
{{CentrujWzór|<MATH>{{1}\over{n'}}\simeq{{1}\over{n}}{{1}\over{1-{{\alpha^2}\over{2nk}}-{{\alpha^4}\over{8nk^3}}}}\simeq
{{1}\over{n}}\left[\left(1+{{\alpha^2}\over{2nk}}+{{\alpha^4}\over{8nk^3}}\right)+\left({{\alpha^2}\over{2nk}}+{{\alpha^4}\over{8nk^3}}\right)^2\right]\simeq{{1}\over{n}}\left(1+{{\alpha^2}\over{2nk}}+{{\alpha^4}\over{8nk^3}}\right)\simeq
{{1}\over{n}}\left(1+{{\alpha^2}\over{2nk}}\right)\;</MATH>|25.163}}
Odwrotność kwadratu z liczby n' {{LinkWzór|25.160}} napiszemy wychodząc od {{LinkWzór|25.163}} z dokładnością do drugiej potęgi z liczby α:
{{CentrujWzór|<MATH>{{1}\over{n'^2}}\simeq{{1}\over{n^2}}\left(1+{{\alpha^2}\over{2nk}}\right)^2\simeq
{{1}\over{n^2}}\left(1+{{\alpha^2}\over{nk}}\right)\;</MATH>|25.164}}
Odwrotność czwartej potęgi z liczby n' {{LinkWzór|25.160}} napiszemy wychodząc od {{LinkWzór|25.164}} z dokładnością do zerowej potęgi liczby α:
{{CentrujWzór|<MATH>{{1}\over{n'^4}}\simeq{{1}\over{n^4}}\left(1+{{\alpha^2}\over{nk}}\right)^2\simeq{{1}\over{n^4}}\;</MATH>|25.165}}
Podstawiamy wzór {{LinkWzór|25.163}} (odwrotność zmiennej n'), {{LinkWzór|25.164}} (kwadrat odwrotności zmiennej n') do {{LinkWzór|25.159}} będących rozwinięciem w szereg Taylora względem omawianego tam parametru, który zapiszemy z dokładnością do trzech wyrazów w nawiasie, dostajemy:
{{CentrujWzór|<MATH>E\simeq m_0c^2\left[1-{{\alpha^2}\over{2n^2}}\left(1+{{\alpha^2}\over{nk}}\right)+{{3\alpha^4}\over{8n^4}}\right]=
m_0c^2\left[1-{{\alpha^2}\over{2n^2}}-{{\alpha^4}\over{2n^3}}\left({{1}\over{k}}-{{3}\over{4n}}\right)\right]\;</MATH>|25.166}}
Wyznaczmy energię E{{Sub|0}}, którą jak udowodnimy jest to energia obliczoną z nierelatywistycznej teorii kwantowej, wychodząc z wyrażenia:
{{CentrujWzór|<MATH>E_0=-m_0c^2{{\alpha^2}\over{2n^2}}=-m_0c^2{{e^4}\over{32\pi^2\epsilon_0^2\hbar^2 c^2}}=-{{m_0e^4}\over{8\epsilon_0^2h^2n^2}}\;</MATH>|25.167}}
Wyrażenie na całkowitą energię elektronu w polu jadra atomowego wodoru, uwzględniając efekty relatywistyczne, jest równa sumie energii spoczynkowej elektronu, energii obliczonej wedle mechaniki kwantowej nierelatywistycznej i z poprawką zależną od tej energii i od k-tej liczby kwantowej, ale też od głównej liczby kwantowej (jest ona również zależna od czynniku struktury subtelnej α, która jest względnie mała i dlatego w teorii nierelatywistycznej ten trzeci składnik jest często pomijany), zatem ta nasza energia elektronu w polu jądra atomowego atomu wodoru jest równa na podstawie {{LinkWzór|25.166}} i obliczeń pomocniczych {{LinkWzór|25.167}}:
{{CentrujWzór|<MATH>E=m_0c^2+E_0+E_0{{\alpha^2}\over{n}}\left({{1}\over{k}}-{{3}\over{4n}}\right)\;</MATH>|25.168}}
Policzmy skrajną różnicę poziomów dla ściśle określonego n między orbitalną liczbą kwantową k=1 a k=n, bo ta liczba przyjmuje wartości skwantowane wedle schematu {{LinkWzór|25.162}}:
{{CentrujWzór|<MATH>\Delta E_n=E_n(k=n)-E_n(k=1)=E_0{{\alpha^2}\over{n}}\left[\left({1\over n}-{{3}\over{4n}}\right)-\left(1-{{3}\over{4n}}\right)\right]=E_0{{\alpha^2}\over{n}}\left({{1}\over{n}}-1\right)\simeq-E_0{{\alpha^2}\over{n}}\;</MATH>|25.169}}
Co zgadza się z doświadczeniem, w porównaniu z teorią Kliena-Gordona mamy dwukrotną redukcję rozszczepienia poziomu n.
== Ruch swobodny elektronu według teorii Diraca ==
W trym rozdziale rozważmy ruch swobodny elektronu w teorii Diraca, napiszemy czemu jest równa energia cząstki znając jej wartość pędu, rozważmy najpierw macierze w postaci czteroskładnikowych bispinorów.
Mając reprezentację operatorów <MATH>\hat{\alpha}</MATH> przystąpijmy do dyskusji zagadnienia własnego elektronu według teorii Diraca {{LinkWzór|25.24|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} bez pola elektromagnetycznego:
{{CentrujWzór|<MATH>\left\{ c(\hat{\alpha} \hat{p})+m_0c^2\hat{\beta}\right\}\psi=E\psi</MATH>|25.176a}}
* gdzie: ψ jest bispinorem, którego współrzędne zależą od czasu i przestrzeni.
Zakładamy, że zależność czasowo-przestrzenną funkcji falowej jako rozwiązania zależnego od czasu, przedstawia się ona w postaci fali płaskiej, z dokładnością do amplitudy, która jest wektorem pionowym, gdy mamy cząstkę o pędzie {{Formuła|<MATH>\vec{p}\;</mAtH>}} i o energii E:
{{CentrujWzór|<MATH>\phi=e^{{{i}\over{\hbar}}(\vec{p}\vec{r}-Et)}</MATH>|25.177}}
Wówczas bispinor z amplitudą, która jest wektorem pionowym, jako całkowita funkcja falowa rozwiązania Diraca, będzie miało postać:
{{CentrujWzór|<MATH>\psi=e^{{{i}\over{\hbar}}(pr-Et)}\begin{pmatrix}u_1\\u_2\\u_3\\u_4\end{pmatrix}=e^{{{i}\over{\hbar}}(pr-Et)}\vec{u}</MATH>|25.178}}
Po wstawieniu do równania Diraca elektronu swobodnego {{LinkWzór|25.176a}} wyrażenia {{LinkWzór|25.178}}, dochodzimy do wniosku:
{{CentrujWzór|<MATH>\left\{c(\hat{\alpha}\hat{p})+m_0c^2\hat{\beta} \right\}\vec{u}=E\vec{u}</MATH>|25.179}}
Następnie wstawiamy, za macierze {{Formuła|<MATH>\hat{\alpha}_i</MATH>}}, gdzie i=x,y,z {{LinkWzór|25.171|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, {{LinkWzór|25.172|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} i {{LinkWzór|25.173|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} oraz {{Formuła|<MATH>\hat{\beta}</MATH>}} {{LinkWzór|25.170|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} do wzoru {{LinkWzór|25.179}}, który stanowi równanie niezależne od czasu mechaniki kwantowej Diraca, otrzymujemy ostatecznie:
{{CentrujWzór|<MATH>\left\{c\left[\begin{pmatrix}
0&0&0&1\\
0&0&1&0\\
0&1&0&0\\
1&0&0&0
\end{pmatrix}p_x+\begin{pmatrix}
0&0&0&-i\\
0&0&i&0\\
0&-i&0&0\\
i&0&0&0
\end{pmatrix}p_y+\begin{pmatrix}
0&0&1&0\\
0&0&0&-1\\
1&0&0&0\\
0&-1&0&0
\end{pmatrix}p_z\right]+m_0c^2\begin{pmatrix}
1&0&0&0\\
0&1&0&0\\
0&0&-1&0\\
0&0&0&-1
\end{pmatrix}\right\}\begin{pmatrix}u_1\\u_2\\u_3\\u_4\end{pmatrix}=\;</MATH><BR><MATH>\Rightarrow E\begin{pmatrix}u_1\\u_2\\u_3\\u_4\end{pmatrix}</MATH>|25.180}}
Dokonując niewielkich przekształceń w {{LinkWzór|25.180}}, tak by odpowiednie skalary i ich współrzędne pędu przenieść w granicę macierzy ściśle określonych:
{{CentrujWzór|<MATH>\left\{c\begin{pmatrix}
0&0&p_z&p_x-ip_y\\
0&0&p_x+ip_y&-p_z\\
p_z&p_x-ip_y&0&0\\
p_x+ip_y&-p_z&0&0
\end{pmatrix}+\begin{pmatrix}
m_0c^2-E&0&0&0\\
0&m_0c^2-E&0&0\\
0&0&-m_0c^2-E&0\\
0&0&0&-m_0c^2-E
\end{pmatrix}\right\}\begin{pmatrix}u_1\\u_2\\u_3\\u_4\end{pmatrix}=0</MATH>|25.181}}
I ostatecznie otrzymujemy układ równań różniczkowych, wychodząc od {{LinkWzór|25.181}}, w taki sposób by wszystko znajdowało się pod macierzą w pierwszym czynniku, a drugim czynnikiem jest wektor {{Formuła|<MATH>\vec{u}\;</MATH>}}, wtedy w ten sposób otrzymaliśmy układ równań jednorodnych zapisanej w postaci działań na macierzach:
{{CentrujWzór|<MATH>\begin{pmatrix}
m_0c^2-E&0&cp_z&c(p_x-ip_y)\\
0&m_0c^2-E&c(p_x+ip_y)&-cp_z\\
cp_z&c(p_x-ip_y)&-m_0c^2-E&0\\
c(p_x+ip_y)&-cp_z&0&-m_0c^2-E
\end{pmatrix}\begin{pmatrix}u_1\\u_2\\u_3\\u_4\end{pmatrix}=0
</math>|25.182}}
Warunkiem niezerowania się bispinorów (niezerowych rozwiązań) jest wyznacznik macierzy, występujący w {{LinkWzór|25.182}} przed bispinorem, który jest równy zero:
{{CentrujWzór|<MATH>0=\begin{vmatrix}
m_0c^2-E&0&cp_z&c(p_x-ip_y)\\
0&m_0c^2-E&c(p_x+ip_y)&-cp_z\\
cp_z&c(p_x-ip_y)&-m_0c^2-E&0\\
c(p_x+ip_y)&-cp_z&0&-m_0c^2-E
\end{vmatrix}=(m_0c^2-E)\begin{vmatrix}
m_0c^2-E&c(p_x+ip_y)&-cp_z\\
c(p_x-ip_y)&-m_0c^2-E&0\\
-cp_z&0&-m_0c^2-E
\end{vmatrix}+\;</MATH><BR><MATH>+cp_z\begin{vmatrix}
0&cp_z&c(p_x-ip_y)\\
m_0c^2-E&c(p_x+ip_y)&-cp_z\\
-cp_z&0&-m_0c^2-E
\end{vmatrix}-c(p_x+ip_y)\begin{vmatrix}
0&cp_z&c(p_x-ip_y)\\
m_0c^2-E&c(p_x+ip_y)&-cp_z\\
c(p_x-ip_y)&-m_0c^2-E&0
\end{vmatrix}=</MATH><BR>
<MATH>=(m_0c^2-E)(-cp_z)
\begin{vmatrix}
c (p_x-ip_y)&-m_0c^2-E\\
-cp_z&0
\end{vmatrix}-(m_0c^2-E)(m_0c^2+E)\begin{vmatrix}
m_0c^2-E&c(p_x+ip_y)\\
c(p_x-ip_y)&-m_0c^2-E
\end{vmatrix}+</MATH><BR>
:<MATH>-cp_z(m_0c^2-E)\begin{vmatrix}
cp_z&c(p_x-ip_y)\\
0&-m_0c^2-E
\end{vmatrix}-c^2p_z^2\begin{vmatrix}
cp_z&c(p_x-ip_y)\\
c(p_x+ip_y)&-cp_z
\end{vmatrix}+\;</MATH><BR><MATH>+(cp_x+ip_y)(m_0c^2-E)\begin{vmatrix}
cp_z&c(p_x-ip_y)\\
-m_0c^2-E&0
\end{vmatrix}-c^2(p_x+ip_y)(p_x-ip_y)\begin{vmatrix}
cp_z&c(p_x-ip_y)\\
c(p_x+ip_y)&-cp_z
\end{vmatrix}=\;</MATH><BR><MATH>=(m_0c^2-E)(m_0c^2+E)c^2p^2_z-(m_0^2c^4-E^2)(-(m_0^2c^4-E^2)-c^2(p_x^2+p_y^2))+cp_z(m_0c^2-E)cp_z(m_0c^2+E)+\;</MATH><BR><MATH>-c^2p_z^2(-c^2p_z^2-c^2(p_x^2+p_y^2))+c(p_x+ip_y)(m_0c^2-E)c(p_x-ip_y)(m_0c^2+E)-c^2(p_x^2+p_y^2)(-c^2p_z^2-c^2(p_x^2+p_y^2))=\;</MATH><BR><MATH>=(m_0^2c^4-E^2)c^2p_z^2+m_0^4c^8+E^4-2m_0^2c^4E^2+(m_0c^2c^4-E^2)c^2(p_x^2+p_y^2)+c^2p_z^2(m_0^2c^4-E^2)+c^4p_z^4+\;</MATH><BR><MATH>+c^4p^2_z(p_x^2+p_y^2)+c^2(p_x^2+p_y^2)(m_0^2c^4-E^2)+
c^4p_z^2(p^2_x+p_y^2)+c^4(p_x^2+p_y^2)^2=(E^2-m_0^2c^4)^2+\;</MATH><BR><MATH>+2c^2(m_0^2c^4-E^2)(p_x^2+p_y^2+p_z^2)+c^4p_z^4+2c^4p^2_z(p_x^2+p_y^2)+c^4(p_x^2+p_y^2)^2=(E^2-m_0^2c^4)^2+\;</MATH><BR><MATH>+2(m_0^2c^4-E^2)c^2(p_x^2+p_y^2+p_z^2)+c^4(p_x^2+p_y^2)^2+2c^4p_z^2(p_x^2+p_y^2)+c^4p_z^4=(E^2-m^2_0c^4-c^2(p_x^2+p_y^2+p_z^2))^2=\;</MATH><BR><MATH>=(E^2-m_0^2c^4-p^2c^2)^2</MATH>}}
Z zerowania się wyznacznika otrzymujemy zależność energii elektronu w zależności od jego wartości pędu i jego masy spoczynkowej:
{{CentrujWzór|<MATH>E^2-m_0^2c^4-p^2c^2=0\Rightarrow E^2=p^2c^2+m_0^2c^4</MATH>|25.183}}
Co daje nam z {{LinkWzór|25.183}} wyrażenie na całkowitą energię elektronu tejże cząstki, jako wartość własna równania własnego operatora energii elektronu swobodnego {{LinkWzór|25.179}}:
{{CentrujWzór|<MATH>E=\pm\sqrt{p^2c^2+m_0^2c^4}</MATH>|25.184}}
Widzimy z {{LinkWzór|25.184}}, że energia całkowita elektronu przyjmuje zarówno energię dodatnie jak i ujemne przy tym samym jego wartości pędu, którego interpretację podamy w następnym rozdziale.
== Stany elektronu o ujemnej energii, a istnienie pozytonu ==
W dyskusji swobodnego elektronu mamy energię dodatnią i energię ujemną według {{LinkWzór|25.184}}.
Jeśli każdy stan według szczególnej teorii względności można przedstawić:
{{CentrujWzór|<math>E=mc^2\;</MATH>}}
Co by odpowiadało ujemnej masie dla ujemnych energii.
Różnica energii pomiędzy dwoma stanami jest:
{{CentrujWzór|<MATH>\Delta E=2m_ec^2=1.02MeV\;</MATH>}}
W mechanice kwantowej są możliwe przeskoki energetyczne, ze stanu o energii ujemnej do dodatniej i odwrotnie. Oczywiste przejście od energii ujemnej do dadatniej jest możliwe poprzez dostarczenie pewnej energii.
Przeskok elektronu pomiędzy stanami o tych energiach może odbywać się zgodnie z zakazem Pauliego. W powyższej interpretacji jest to po prostu, gdy mamy stan zerowy, co odpowiada powstawaniu pary elektron-pozyton.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
ms6ic4jlh1llmald2az5sc3vkym0q5v
Ogólna teoria względności/Zasada wariacyjna a grawitacja i pole elektromagnetyczne
0
60071
558859
548294
2026-10-07T14:08:23Z
Persino
2851
558859
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
== Wyznaczanie całkowitego tensora gęstości energii-pędu z uwzględnieniem pola elektromagnetycznego ==
Wyprowadzimy tutaj czemu jest równa gęstość lagrangianu pola elektromagnetycznego i jego tensor gęstości energii-pędu, a także całkowita gęstość lagrangianu masowego w obecności pola elektromagnetycznego i jego tensor gęstości energii-pędu, a także gęstość lagrangianu będziemy pisać uwzględniając zakrzywienie czasoprzestrzeni uwzględniając jego człony przestrzenne.
==== Gęstość lagrangianu i tensor gęstości energii-pędu ====
Lagrangian pola elektromagnetycznego, który jest zależny od tensora pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika_relatywistyczna|Elektrodynamika_klasyczna|EK}} i to przepiszemy używając definicji tensora metrycznego, a także z postulatu, że lagrangian pola elektromagnetycznego {{LinkWzór|27.1|Zasada_wariacyjna_w_elektromagnetyzmie|Elektrodynamika_klasyczna|EK}} jest słuszna również dla zakrzywionej czasoprzestrzeni, i zakładając, że w przestrzeni istnieje ogólnie niestałe pole elektromagnetyczne, zatem na podstawie tego możemy powiedzieć:
{{CentrujWzór|<MATH>\mathfrak{L}=-{{1}\over{4\mu_0}}F_{\omega\gamma}F^{\omega\gamma}\mp J^{\mu}A_{\mu}=-{{1}\over{4\mu_0}}F^{\omega\gamma}g_{\omega\alpha}g_{\gamma\beta}F^{\alpha\beta}\mp A^{\mu}g_{\mu\nu}J^{\nu}\;</MATH>|14.1}}
Gęstość lagrangianu {{LinkWzór|14.1}} jest słuszna, bo udowodniliśmy, że {{Formuła|<MATH>r=0\;</MATH>}} w {{LinkWzór|T11|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, a jeżeli {{Formuła|<MATH>g\neq 0\;</MATH>}}, to {{LinkWzór|H12|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} przyjmuje wartość nieskończoną z dokładnością do znaku w mechanice Newtona (jest ona spełniona przy {{Formuła|<MATH>g^{\mu\nu}\simeq\eta^{\mu\nu}\;</MATH>}}, bo układy słabozakrzywione) przy przejściu {{Formuła|<MATH>c\rightarrow \infty\;</MATH>}}, a więc wtedy {{LinkWzór|T20|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} jest niespełnione, stąd {{Formuła|<MATH>r=0\;</MATH>}} w gęstości lagrangianu {{LinkWzór|T1|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, zatem postać gęstości lagrangianu rozważana w tym punkcie jest spełniona, a ona posłuży do wyliczenia jednego tylko tensora gęstości energii-pędu odpowiedzialnej tylko za oddziaływanie elektromagnetyczne.
Następnym krokiem jest wyznaczenie tensora energii-pędu wykorzystując przy tym wzór {{LinkWzór|4.36|Zasada_wariacyjna_w_ogólnej_teorii_względności}}, zatem w takim razie możemy powiedzieć, że licząc najpierw pierwszy wyraz tego tensora gęstości energii-pędu:
{{CentrujWzór|<MATH>\mp 2{{\partial\mathfrak{L}_o}\over{\partial g_{\mu\nu}}}=\pm 2{{\partial}\over{\partial g_{\mu\nu}}}\left[{{1}\over{4\mu_0}}F^{\omega\gamma}g_{\omega\alpha}g_{\gamma\beta}F^{\alpha\beta}\right]+2A^{\mu}J^{\nu}=
\pm 2{{1}\over{4\mu_0}}\left[F^{\mu\gamma}g_{\gamma\beta}F^{\nu\beta}+F^{\omega\mu}g_{\omega\alpha}F^{\alpha\nu}\right]+2A^{\mu}J^{\nu}
=\;</MATH>{{Br}}<MATH>=\pm {{1}\over{2\mu_0}}\left[{F^{\mu}}_{\beta}F^{\nu\beta}+{F_{\alpha}}^{\mu}F^{\alpha\nu}\right]+2A^{\mu}J^{\nu}=\pm{{1}\over{\mu_0}}{F^{\mu}}_{\beta}F^{\nu\beta}+2A^{\mu}J^{\nu}
</MATH>|14.2}}
Wtedy całe wyrażenie na tensor energii-pędu przyjmuje następującą postać matematyczną na podstawie wzoru {{LinkWzór|4.36|Zasada wariacyjna w ogólnej teorii względności}} wykorzystując wyliczony fakt {{LinkWzór|14.2}}, zatem wtedy dochodzimy do wniosku:
{{CentrujWzór|<MATH>T^{(p)\mu\nu}=\pm{{1}\over{\mu_0}}{F^{\mu}}_{\beta}F^{\nu\beta}+2A^{\mu}J^{\nu}\mp g^{\mu\nu}\left({{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\pm J^{\alpha}A_{\alpha}\right)\;</MATH>|14.3}}
Tensor energii-pędu {{LinkWzór|14.3}}, jest z oczywistych powodów symetryczny na przestawienie czynników. Policzmy ślad tensora gęstości energii pędu:
{{CentrujWzór|<MATH>{T^{(p)\mu}}_{\mu}=T\!^{(p)}\!_{\mu}\!^{\mu}=\pm {{1}\over{\mu_0}}F^{\mu\beta}F_{\mu\beta}+2A^{\mu}J_{\mu}\mp{\delta^{\mu}}_{\mu}\left({{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\pm J^{\alpha}A_{\alpha}\right)=\pm {{1}\over{\mu_0}}\left[F^{\mu\beta}F_{\mu\beta}-{{n+1}\over{4}}F_{\alpha\beta}F^{\alpha\beta}\right]+2J^{\mu}A_{\mu}+\;</MATH>{{Br}}<MATH>-(n+1)J^{\mu}J_{\mu}=\mp{{n-3}\over{4\mu_0}}F^{\mu\beta}F_{\mu\beta}-(n-1)J^{\mu}A_{\mu}\;</MATH>|14.4}}
A jeżeli w danym punkcie nie płyną prądy to według {{LinkWzór|14.4}} ślad tensora gęstości energii pędu {{LinkWzór|14.3}} jest równy zero w czasoprzestrzeni czterowymiarowej, bo wtedy {{Formuła|<MATH>n=3\;</MATH>}}.
==== Zachowawczość tensora gęstości energii-pędu w układach lokalnie płaskich według szczególnej teorii względności ====
Napiszmy zachowawczość tensora gęstości energii-pędu w układzie lokalnie płaskim.
Tensor napięć-energii w postaci kontrawariantno-kowariantnego piszemy w postaci matematycznej wychodząc od końcowego wzoru {{LinkWzór|14.3}} wedle następującego sposobu:
{{CentrujWzór|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}={{1}\over{\mu_0}}\left[\pm F^{\nu\beta}F_{\mu\beta}\mp{{1}\over{4}}{\delta_{\mu}}^{\nu}F_{\alpha\beta}F^{\alpha\beta}\right]+2A_{\mu}J^{\nu}-{\delta_{\mu}}^{\nu}A^{\alpha}J_{\alpha}\;</MATH>|14.5}}
Zróżniczkujmy wyrażenie napisane wzorem {{LinkWzór|14.5}} względem współrzędnej kowariantnej, i korzystając z twierdzenia o pochodnej iloczynu, zatem wtedy dochodzimy do następującego wniosku:
{{CentrujWzór|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}\!_{,\nu}={{1}\over{\mu_0}}\left[\mp{{1}\over{2}}F^{\alpha\beta}F_{\alpha\beta,\mu}\pm{F^{\nu\beta}}_{,\nu}F_{\mu\beta}\pm F^{\nu\beta}F_{\mu\beta,\nu}\right]+2A_{\mu,\nu}J^{\nu}+2A_{\mu}{J^{\nu}}_{,\nu}-{\delta_{\mu}}^{\nu}{J^{\alpha}}_{,\nu}A_{\alpha}-{\delta_{\mu}}^{\nu}J^{\alpha}A_{\alpha,\nu}=\;</MATH>{{Br}}<MATH>={{1}\over{\mu_0}}\left[\mp{{1}\over{2}}F^{\alpha\beta}F_{\alpha\beta,\mu}\pm{F^{\nu\beta}}_{,\nu}F_{\mu\beta}\pm F^{\nu\beta}F_{\mu\beta,\nu}\right]+2A_{\mu,\nu}J^{\nu}-{\delta_{\mu}}^{\nu}{J^{\alpha}}_{,\nu}A_{\alpha}-{\delta_{\mu}}^{\nu}J^{\alpha}A_{\alpha,\nu}=</MATH>{{Br}}<MATH>={{1}\over{\mu_0}}\left[\mp{{1}\over{2}}F^{\alpha\beta}F_{\alpha\beta,\mu}\pm{F^{\nu\beta}}_{,\nu}F_{\mu\beta}\pm F^{\nu\beta}F_{\mu\beta,\nu}\right]+2A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}-J^{\alpha}A_{\alpha,\mu}\;</MATH>|14.6}}
Następnie należy skorzystać ze wzoru {{LinkWzór|26.94|Elektrodynamika_relatywistyczna|Elektrodynamika_klasyczna|EK}} i ze wzoru {{LinkWzór|26.14|Elektrodynamika_relatywistyczna|Elektrodynamika_klasyczna|EK}}, czyli są to związki zapisane wzorami wedle poniższych schematów:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{F^{\beta\nu}}_{,\nu}=\pm\mu_0J^{\beta}\;</MATH>|14.7}}
| 2 = {{CentrujWzór|<MATH>F_{\alpha\beta,\mu}=-F_{\mu\alpha,\beta}-F_{\beta\mu,\alpha}\;</MATH>|14.8}}
}}
Możemy wykorzystać związki na tensorowe równanie Maxwella {{LinkWzór|14.7}} i tożsamości {{LinkWzór|14.8}} i w ten sposób korzystając ze wzoru {{LinkWzór|14.6}} i wykorzystując te związki dochodzimy do następującego wniosku matematycznego:
{{CentrujWzór|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}\!_{,\nu}={{1}\over{\mu_0}}\left[\pm {{1}\over{2}}\left(F^{\alpha\beta}F_{\mu\alpha,\beta}+F^{\alpha\beta}F_{\beta\mu,\alpha}\right)-\mu_0J^{\beta}F_{\mu\beta}\pm F^{\nu\beta}F_{\mu\beta,\nu}\right]+2A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\gamma}A_{\alpha}-J^{\alpha}A_{\alpha,\gamma}\;</MATH>|14.9}}
Można udowodnić, że zmieniając rolami wskaźniki we wzorze {{LinkWzór|14.9}}, że pierwszy, drugi i czwarty wyraz się ze sobą redukują do zera, wtedy na podstawie tego możemy napisać, że wspomniana tożsamość:
{{CentrujWzór|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}\!_{,\nu}=-F_{\mu\beta}J^{\beta}+2A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}-J^{\alpha}A_{\alpha,\mu}=-F_{\mu\beta}J^{\beta}+A_{\mu,\nu}J^{\nu}+A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}-J^{\alpha}A_{\alpha,\mu}=\;</MATH>{{Br}}<MATH>=-F_{\mu\beta}J^{\beta}+A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}+J^{\beta}(A_{\mu,\beta}-A_{\beta,\mu})=-F_{\gamma\beta}J^{\beta}+A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}+F_{\mu\beta}J^{\beta}=A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}=0\;</MATH>|14.10}}
Dlatego {{Formuła|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}\!_{,\nu}=0\;</MATH>}}, bo mamy układ lokalnie płaski o glokalnie stałym tensorze prędkości, w którym gęstość prądu jest wielkością lokalnie stałą, a potencjał tensorowy elektromagnetyczny jest lokalnie stały, czyli zachodzi: {{Formuła|<MATH>A_{\gamma,\omega}=0\;</MATH>}} i {{Formuła|<MATH>{J^{\omega}}_{,\gamma}=0\;</MATH>}}, stąd zachowawczość tensora gęstości energii-pędu na podstawie {{LinkWzór|14.10}} jest w tych układach spełniona i zachodzi:
{{CentrujWzór|<MATH>T\!^{(p)}\!_{\mu}\!^{\nu}\!_{,\nu}=0</MATH>|14.11}}
Ale ponieważ z definicji tensora gęstości siły dla ładunku w polu elektromagnetycznym przedstawiamy wzorem {{LinkWzór|26.61|Elektrodynamika_relatywistyczna|Elektrodynamika_klasyczna|EK}}, stąd zachowawczość tensora energii-pędu tego pola jest równa:
{{CentrujWzór|<MATH>dK^{\mu}=-dqF^{\mu\nu}u_{\nu}=-{{\gamma}\over{c}}F^{\mu\nu}J_{\nu}dV\Rightarrow {{dK^{\mu}}\over{dV}}=-{{\gamma}\over{c}}{T^{\mu\nu}}_{,\nu}\Rightarrow{T^{\mu\nu}}_{,\nu}=F^{\mu\nu}J_{\nu}\;</MATH>|14.11a}}
Łącząc wzory {{LinkWzór|14.11a}} i {{LinkWzór|14.10}} oraz przechodząc od układów lokalnie płaskich do zakrzywionych mamy:
{{CentrujWzór|<MATH>A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}=F_{\mu\nu}J^{\nu}\Rightarrow -F_{\mu\nu}J^{\nu}+A_{\mu,\nu}J^{\nu}-{J^{\alpha}}_{,\mu}A_{\alpha}=0\Rightarrow-F_{\mu\nu}J^{\nu}+A_{\mu;\nu}J^{\nu}-{J^{\alpha}}_{;\mu}A_{\alpha}=0\;</MATH>|14.11b}}
Ostatnie równanie w {{LinkWzór|14.11b}} jest równaniem na cechowanie w polu elektromagnetycznym w układach zakrzywionych. To cechowanie dla układów zakrzywionych jest bardzo podobne do cechowania {{LinkWzór|M014|Oddziaływanie elektromagnetyczne ogólnie zmienne i statyczne (pole elektromagnetyczne) z teorii gęstości lagrangianu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} dla układów słabozakrzywionych, tylko zamiast średnika tam są przecinki.
==== Całkowita gęstość lagrangianu i pędu ====
Wyznaczymy tutaj całkowitą gęstość lagrangianu i pędu znając gęstość lagrangianu mechanicznego i elektromagnetycznego.
===== Całkowita gęstość lagrangianu masowego =====
Całkowity lagrangian masowy jest sumą lagrangianu mechanicznego {{LinkWzór|4.360b|Zasada wariacyjna w ogólnej teorii względności}} i elektromagnetycznego {{LinkWzór|14.1}}:
{{CentrujWzór|<MATH>\mathfrak{L}_{m}=\mathfrak{L}_{mech}+\mathfrak{L}_{em}=\mp\rho_0 c^2u^{\alpha}u_{\alpha}-{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\mp J^{\alpha}A_{\alpha}\;</MATH>|14.12}}
===== Całkowita gęstość lagrangianu =====
Całkowita gęstość lagrangianu jest sumą lagrangianu przestrzennego i masowego, stąd:
{{CentrujWzór|<MATH>\mathfrak{L}=\mathfrak{L}_{m}+\mathfrak{L}_g=\mp\rho_0c^2u^{\alpha}u_{\alpha}-{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\mp J^{\alpha}A_{\alpha}+{{1}\over{2\kappa}}(R-2\Lambda)\;</MATH>|14.12a}}
===== Całkowita gęstość pędu =====
Wyznaczmy gęstość tensora pędu uogólnionego, wiedząc, że mamy {{LinkWzór|8.1|Kanoniczne metody mechaniki klasycznej|Mechanika teoretyczna|MT}}, znając wzór na całkowitą gęstość lagrangianu {{LinkWzór|14.12}}:
{{CentrujWzór|<MATH>\mathfrak{p}^{i}={{1}\over{dV^'}}{{\partial(\mathfrak{L}dV^')}\over{\partial v_{i}}}=\rho v^{i}+\mathfrak{q}A^{i}\;</math>|14.12ba}}
==== Całkowity lagrangian i pęd ====
Wyznaczymy tutaj całkowity lagrangian i pęd z ich odpowiedników, które są całkowitymi gęstościami lagrangianu i pędu.
===== Całkowity lagrangian masowy =====
We wzorze {{LinkWzór|14.12}} aby otrzymać całkowity lagrangian z całkowitej gęstości lagrangianu należy go scałkować w sposób:
{{CentrujWzór|<MATH>L_m=\int\mathfrak{L}_md^3x^'=\int d^3x^'\left(\mp\rho_0c^2u^{\alpha}u_{\alpha}-{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\mp J^{\alpha}A_{\alpha}\right)</MATH>|14.12b}}
===== Całkowity lagrangian =====
We wzorze {{LinkWzór|14.12b}} aby otrzymać całkowity lagrangian z całkowitej gęstości lagrangianu masowego należy dodać tam człon związany z gęstością lagrangianu przestrzennego w sposób:
{{CentrujWzór|<MATH>L=\int\mathfrak{L}d^3x^'=\int(\mathfrak{L}_m+\mathfrak{L}_g)d^3x^'=\int d^3x^'\left(\mp\rho_0c^2u^{\alpha}u_{\alpha}-{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\mp J^{\alpha}A_{\alpha}+{{1}\over{2\kappa}}(R-2\Lambda)\right)\;</MATH>|14.12c}}
===== Pęd uogólniony ładunku punktowego =====
A pęd uogólniony można otrzymać całkując gęstość pędu uogólnionego {{LinkWzór|14.12ba}} zakładając, że ładunek jest punktowy:
{{CentrujWzór|<MATH>p^{i}=\int\mathfrak{p}^{i}d^3x^'=m_0cu^{i}+qA^{i}\;</math>|14.12c1}}
==== Gęstość hamiltonianu masowego ====
Wyznaczmy gęstość hamiltonianu, wiedząc że definicja hamiltonianu jest w punkcie {{LinkWzór|8.4|Kanoniczne metody mechaniki klasycznej|Mechanika teoretyczna|MT}}, znając gęstość lagrangianu {{LinkWzór|14.12}} i gęstość pędu {{LinkWzór|14.12ba}}, zatem:
{{CentrujWzór|<MATH>\mathfrak{H}_m=v_{i}\mathfrak{p}^{i}-\mathfrak{L}=\rho v^iv^i+\mathfrak{\rho}_qA^{i}v^{i}+\left(\rho v^{\alpha}v_{\alpha}+{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}+J^{\alpha}A_{\alpha}\right)=\rho c^2+{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}+\mathfrak{\rho}_q\varphi\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\mathfrak{H}_m=\rho c^2+{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}+\mathfrak{\rho}_q\varphi</MATH>|14.12a2}}
Hamiltonian {{LinkWzór|14.12}} jest to hamiltonian masowy w elektromagnetyzmie.
==== Całkowita gęstość hamiltonianu ====
Widzimy, gdy we wzorze {{LinkWzór|14.12}} na gęstość lagrangianu masowego uwzględnimy gęstość lagrangianu przestrzennego to gęstość pędu się nie zmienia, a więc zgodnie z definicją gęstości hamiltonianu {{LinkWzór|14.12a}} piszemy w formie:
{{CentrujWzór|<MATH>\mathfrak{H}=\rho c^2+{{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}+\mathfrak{\rho}_q\varphi-{{1}\over{2\kappa}}(R-2\Lambda)\;</MATH>|14.12b3}}
Widzimy, że w {{LinkWzór|14.12b3}} hamiltonian zależy od skalarów krzywizny Ricciego {{Formuła|<MATH>R\;</MATH>}} {{LinkWzór|2.130|Rachunek tensorowy|Metody matematyczne fizyki|MMF}}.
====Całkowity tensor gęstości energii-pędu====
Całkowity tensor gęstości energii-pędu jest sumą tensora gęstości energii-pędu kinematycznego {{LinkWzór|4.36b|Zasada wariacyjna w ogólnej teorii względności}} i tensora gęstości gęstości energii-pędu elektromagnetycznego {{LinkWzór|14.3}}, wtedy:
{{CentrujWzór|<MATH>T^{\mu\nu}=T^{(k)\mu\nu}+T^{(p)\mu\nu}=(\rho_0c^2+p)u^{\mu}u^{\nu}\mp pg^{\mu\nu}+\left[\pm{{1}\over{\mu_0}}F^{\mu\beta}{F^{\nu}}_{\beta}+2A^{\mu}J^{\nu}\mp g^{\mu\nu}\left({{1}\over{4\mu_0}}F_{\alpha\beta}F^{\alpha\beta}\pm A^{\alpha}J_{\alpha}\right)\right]\;</MATH>|14.13}}
Zachowawczość lokalną tensora gęstości energii-pędu {{LinkWzór|14.13}} piszemy w skrócie w układach lokalnie płaskich:
{{CentrujWzór|<MATH>{T^{\omega\gamma}}_{,\gamma}=0\;</MATH>|14.14}}
W równaniu {{LinkWzór|14.14}} zawarte jest zachowanie energii i pędu w elektrodynamice dla układów lokalnie płaskich, które jest słuszne również dla układów zakrzywionych po zamienieniu przecinka średnikiem.
==== Równania dla elektromagnetyzmu dla ciał rozciągłych dla układów zakrzywionych ====
Jeżeli jest spełniona własność {{LinkWzór|14.14}} (zachowawczość tensora gęstości energii-pędu) przy tensorze gęstości energii-pędu {{LinkWzór|14.13}} dla układów lokalnie płaskich, to dla układów zakrzywionych:
{{CentrujWzór|<MATH>{T^{\mu\nu}}_{;\gamma}=0\;</MATH>|O10}}
jest spełniona własność dla czasoprzestrzeni zakrzywionej na tensor pola elektromagnetycznego:
{{CentrujWzór|<MATH>F_{\mu\nu}=A_{\mu;\nu}-A_{\nu;\mu}=A_{\mu,\nu}-A_{\alpha}{\Gamma^{\alpha}}_{\mu\nu}-A_{\nu,\mu}+A_{\alpha}{\Gamma^{\alpha}}_{\nu\mu}=A_{\mu,\nu}-A_{\nu,\mu}\Rightarrow F_{\mu\nu}=A_{\mu,\nu}-A_{\nu,\mu}\;</MATH>|O1a}}
Równania pola przy tensorze pola elektromagnetycznego {{LinkWzór|26.9|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} i tensorze dualnym {{LinkWzór|26.11|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} według spełnionych równań w układach lokalnie płaskich {{LinkWzór|26.12|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} i {{LinkWzór|26.13|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} są:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{F^{\mu\nu}}_{;\nu}=\pm \mu_0J^{\mu}\;</MATH>|O1b}}
| 2 = {{CentrujWzór|<MATH>{G^{\mu\nu}}_{;\nu}=0\;</MATH>|O1c}}
}}
Jest również spełnione cechowanie Lorentza na podstawie cechowania Lorentza {{LinkWzór|26.58|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} w układach lokalnie płaskich:
{{CentrujWzór|<MATH>{A^{\mu}}_{;\mu}=0\;</MATH>|O1d}}
A także uwzględniając równanie ciągłości na podstawie równania ciągłości {{LinkWzór|26.8|Elektrodynamika relatywistyczna|Elektrodynamika klasyczna|EK}} w układach lokalnie płaskich:
{{CentrujWzór|<MATH>{J^{\mu}}_{;\mu}=0\;</MATH>|O1e}}
Na tym skończyliśmy wykład podstawowych równań elektrodynamiki dla czasoprzestrzeni zakrzywionych.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
i7bc75s0ir6pv4snoitb00si2waiwnp
Ogólna teoria względności/Nadmiarowe równania elementarne teorii grawitacji Einsteina z siłami niegrawitacyjnymi
0
60090
558855
548302
2026-10-07T13:46:52Z
Persino
2851
558855
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
== Równania ruchu, a linie geodezyjne w ogólnej teorii względności ==
Mając już policzona metrykę czasoprzestrzeni poprzez równania Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} lub mając niezerową stałą kosmologiczną, to wtedy liczymy z równania {{LinkWzór|1.58|Wprowadzenie do ogólnej teorii względności}}, zatem na podstawie tegoż równania liczymy już wspomnianą metrykę poprzez policzone już elementy tensora metrycznego. Na podstawie tego liczymy elementy tensora Christoffela i w ten sposób wyznaczamy następne położenie cząstki masowej w ogólnej teorii względności. Już mając następne położenie wyznaczamy znów metrykę przy nowym położeniu cząstek masowych i te kroki powtarzamy w nieskończoność do chwili, do której interesuje nas badanie układu relatywistycznego.
W przestrzeni euklidesowej linia prosta jest to krzywa, której przenosi swój własny wektor prędkości w sposób równoległy do tej krzywej w danym jej punkcie, w przestrzeni nieuklidesowej mamy jakąś krzywą, która jest prostą w tym naszym układzie, i aby nasz wektor był przenoszony równolegle to musi być styczna do tej prostej, czyli wielkość zdefiniowana {{Formuła|<MaTH>U^{\mu}={{dx^{\mu}}\over{d\lambda}}\;</MATH>}} musi spełniać warunek:
{{CentrujWzór|<MATH>{U^{\mu}}_{;{\beta}}=0\;\;</MATH>|1.70}}
aby cały czas wektor U{{Sup|μ}} był styczny do naszej prostej w tej naszej przestrzeni absolutnej. Oczywiste jest, że wektor U{{Sup|μ}}, aby był czterowektorem prędkości {{LinkWzór|1.6|Wprowadzenie do ogólnej teorii względności}}, tzn. U{{Sup|μ}}=u{{Sup|μ}}, to musi zachodzić λ=s, czyli nasz parametr byłby wtedy interwałem czasoprzestrzennym. Ale dla ogólności rozważań lepiej przyjąć dowolny parametr λ, bo zmiana interwału czasoprzestrzennego dla bezmasowych cząstek (m{{Sub|0}}) jest równy zero wedle {{LinkWzór|1.3|Wprowadzenie do ogólnej teorii względności}}, wtedy czterowektor prędkości jest nieokreślony. Jeśli λ=s, ale lepiej jest, gdy to jest dowolny parametr, ze względu na fotony pędzące z prędkościa światła {{Formuła|<MATH>c\;</MATH>}}, wtedy {{Formuła|<MATH>ds=0\;</MATH>}}, ale nie ogólnie {{Formuła|<MATH>d\lambda=0\;</MATH>}}, to równanie {{LinkWzór|1.70}} jest spełnione, gdy w układzie badanym nie występują siły niegrawitacyjne, występuje tylko grawitacja z zaniedbywalnym ciśnieniem, którego od niej gęstość siły jest bardzo mała, lub według zasady niezależności działania tensorów sił, jeśli rozpratrujemy tylko ruch pochodzący od grawitacji, wtedy równanie {{LinkWzór|1.70}} jest dokładnie spełnione. Normalnie dla całkowitego tensora sił dla ciała punktowego z uwzględniem innych tensorów sił równanie {{LinkWzór|1.70}} przy tej definicji λ uogólniamy do:
{{CentrujWzór|<MATH>m_0c{U^{\mu}}_{;\nu}U^{\nu}=K^{\mu}\;</MATH>|1.70a}}
Gdy {{Formuła|<MATH>K^{\mu}_c=0\;</MATH>}}, to równość {{LinkWzór|1.70a}} przechodzi w {{LinkWzór|1.70}}.
W czasoprzestrzeni lokalnie płaskiej wzór {{LinkWzór|1.70a}}, wtedy możemy zamienić przecinek średnikiem, bo symbole Christoffela są tam równe zero, przechodzi w:
{{CentrujWzór|<MATH>m_0c {U^{\mu}}_{,\nu}U^{\nu}=K^{\mu}_c=K^{\mu}\Rightarrow m_0c{{dU^{\mu}}\over{d\lambda}}=K^{\mu}_c\Rightarrow {{dP^{\mu}}\over{d\lambda}}=K^{\mu}_c\wedge P^{\mu}=m_0cU^{\mu}\;</MATH>|1.70b}}
Równanie {{LinkWzór|1.70b}} jest to tensorowe równanie dynamiki Einsteina szczególnej teorii względności, napisane w {{LinkWzór|2.18|Tensory w czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, przy {{Formuła|<MATH>\lambda=s\;</MATH>}}, wtedy {{Formuła|<MATH>U^{\mu}=u^{\mu}\;</MATH>}}, czyli jest spełniona na pewno silna zasada równoważności.
Równanie {{LinkWzór|1.70a}} dla układów rozciągłych wygląda następująco:
{{CentrujWzór|<MATH>dm_0c{U^{\mu}}_{;\nu}U^{\nu}=dK^{\mu}\Rightarrow\rho_0c{U^{\mu}}_{;\nu}U^{\nu}={{dK^{\mu}}\over{dV_0}}\Rightarrow\sqrt{-g}\rho_0\gamma c{U^{\mu}}_{;\nu}U^{\nu}={{dK^{\mu}}\over{dV}}\;</MATH>|1.70ab}}
* Twierdzenia dla układów rozciągłych przedstawiamy zastępując w twierdzeniach dla układów dyskretnych w obliczeniach według {{Formuła|<MATH>m_0\rightarrow dm_0\;</MATH>}} i {{Formuła|<MATH>K^{\mu}\rightarrow dK^{\mu}\;</MATH>}}, jak np. przechodząc od {{LinkWzór|1.70a}} do {{LinkWzór|1.70ab}}, i wiedząc, że czas jako współrzędna jest taki sam jak w układzie inercjalnym, wtedy: {{Formuła|<MATH>\sqrt{-g}d^4x=d^4x^'\Rightarrow\sqrt{-g}dVdct=dV_pdct\Rightarrow\sqrt{-g}dV=dV_p\;</MATH>}}{{Patrz|FF1}} i {{Formuła|<MATH>dV_p=\gamma^{-1} dV_0\;</MATH>}}{{Patrz|FF2}}, gdzie {{Formuła|<MATH>dV\;</MATH>}}, {{Formuła|<MATH>dV_p\;</MATH>}} i {{Formuła|<MATH>dV_0\;</MATH>}} są to kolejno infinitezymalne objętości w układach: zakrzywionym, płaskim inercjalnym i spoczynkowym inercjalnym, a {{Formuła|<MATH>g\;</MATH>}} jest to wyznacznik tensora metrycznego prostego, a {{Formuła|<MATH>\gamma\;</MATH>}} jest zdefiniowane w punkcie {{LinkWzór|1.41|Transformacje różniczek czasu i położenia|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}} (tam wybieramy ze znakiem plus). Gdzie tam pierwsza zależność wynika z {{LinkWzór|3.8|Właściwości skalaru tensora metrycznego}}, a druga z {{LinkWzór|4.6a|Własności czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}.
=== Linie geodezyjne, a druga pochodna czterowektora kontrawariantnego położenia ===
Będziemy badać wzory na linie geodezyjne, gdy siły niegrawitacyjne występują lub one nie występują, a poza tym siły grawitacyjne w nich zawsze występują.
==== Gdy występują tylko siły grawitacyjne ====
Z definicji pochodnej kontrawariantnej i własności styczności wektora do prostej {{LinkWzór|1.70}}, a także z definicji pochodnej tensorowej można zapisać równanie geodezyjne w postaci pierwotnej:
{{CentrujWzór|<MATH>0={U^{\mu}}_{;{\beta}}={U^{{\mu}}}_{;{\beta}}={U^{\mu}}_{,{\beta}}+U^{\alpha}{\Gamma^{\mu}}_{{\alpha}{\beta}}\;\;</MATH>|1.71}}
Pomnóżmy obustronnie równość tensorową {{LinkWzór|1.71}} przez kontrawariantny tensor czterowektora prędkości U{{Sup|β}}, wtedy otrzymujemy inne równoważne do poprzedniego równanie:
{{CentrujWzór|<MATH>0=U^{\beta}{U^{\mu}}_{,{\beta}}+U^{\alpha}U^{\beta}{\Gamma^{\mu}}_{{\alpha}{\beta}}\;\;</MATH>|1.72}}
Z definicji czterowektora prędkości i twierdzenie o pochodnej złożonej wyznaczmy wyrażenie występujące jako pierwszy składnik we wzorze {{LinkWzór|1.72}}, zatem możemy napisać:
{{CentrujWzór|<MATH>U^{\beta}{U^{\mu}}_{,{\beta}}={{dx^{\beta}}\over{d\lambda}}{{\partial}\over{\partial x^{\beta}}}\left({{dx^{\mu}}\over{d\lambda}}\right)={{d}\over{d\lambda}}\left({{d x^{\mu}}\over{d\lambda}}\right)={{dU^{\mu}}\over{d\lambda}}\;\;</MATH>|1.73}}
Na podstawie obliczeń {{LinkWzór|1.73}} na liczbach ogólnych, które to wniosek podstawiamy do równania tensorowego {{LinkWzór|1.71}} za pierwszy składnik, zatem udowodniliśmy że zachodzi:
{{CentrujWzór|<MATH>0={{dU^{\mu}}\over{d\lambda}}+{\Gamma^{\mu}}_{{\alpha}{\beta}}U^{\alpha}U^{\beta}\;\;</MATH>|1.74|Obramuj}}
Podstawiając, za współrzędne czterowektora wektora prędkości U{{Sup|β}} jego definicję, jako pochodna czteropołożenia względem interwału czasoprzestrzennego, dostajemy równoważne równanie tensorowe do {{LinkWzór|1.74}}:
{{CentrujWzór|<MATH>0={{d}\over{d\lambda}}\left({{dx^{\mu}}\over{d\lambda}}\right)+{\Gamma^{\mu}}_{{\alpha}{\beta}}{{dx^{\alpha}}\over{d\lambda}}{{dx^{\beta}}\over{d\lambda}}\;\;</MATH>|1.75}}
Wyrażenie {{LinkWzór|1.74}} możemy zapisać w postaci bezwskaźnikowej, bez uwzględnienia z jakimi rodzaju tensorami mamy do czynienia:
{{CentrujWzór|<MATH>0={{d\mathbf{U}}\over{d\lambda}}+\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\;\;</MATH>|1.76}}
Otrzymaliśmy równanie, dzięki któremu czterowektor U{{Sup|β}} jest przenoszony równolegle, stycznie wzdłuż naszej prostej i jest to równanie ruchu cząstki masowej lub bezmasowej w ogólnej teorii względności, jeśli {{Formuła|<MATH>K^{\mu}=0\;</MATH>}} w {{LinkWzór|1.76a}} dla układów dyskretnych i {{Formuła|<MATH>{{dK^{\mu}}\over{dV}}\;</MATH>}} w {{LinkWzór|1.77ca}} dla układów rozciągłych.
Jeśli w prowadzimy definicję parametru λ, który może być interwałem czasoprzestrzennym "s", poprzez inny parametr ξ w sposób: s=aξ+b, to można udowodnić w sposób łatwy, korzystając z poprzedniego równania, że line geodezyjne wedle {{LinkWzór|1.74}} przy zerowych siłach niegrawitacyjnych zapisujemy jako:
{{CentrujWzór|<MATH>0={{d}\over{d\xi}}\left({{dx^{\mu}}\over{d\xi}}\right)+{\Gamma^{\mu}}_{{\alpha}{\beta}}{{dx^{\alpha}}\over{d\xi}}{{dx^{\beta}}\over{d\xi}}\;\;</MATH>|1.77}}
W przestrzeni euklidesowej płaskiej, gdy mamy zerowe siły niegrawitacyjne, mamy na pewno, że poszczególne elementy tensora metrycznego spełniają związek: Γ{{Sup|μ}}{{Sub|αβ}}=0, stąd dostajemy:
{{CentrujWzór|<MATH>{{d}\over{d\xi}}\left({{dx^{\mu}}\over{d\xi}}\right)=0\Rightarrow x^{\mu}=a^{\mu}\xi+b^{\mu}\;\;</MATH>|1.78}}
Po rozwiązaniu równania {{LinkWzór|1.74}} dowiadujemy się, że rozwiązaniem jego jest równaniem prostej w naszej przestrzeni przy naszej definicji tensora Christoffela.
==== Gdy również występują siły niegrawitacyjne ====
Będziemy rozważać tu układy dyskretne i rozciągłe.
===== Układy dyskretne =====
A gdy występują inne tensory sił, to wtedy równanie {{LinkWzór|1.76}} podobnie przekształcamy jak {{LinkWzór|1.76}} z {{LinkWzór|1.70}}, wtedy:
{{CentrujWzór|<MATH>m_0c\left({{d\mathbf{U}}\over{d\lambda}}+\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\right)=\mathbf K\Rightarrow m_0c{{d\mathbf{U}}\over{d\lambda}}=-m_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+\mathbf K\Rightarrow m_0c{{dU^{\mu}}\over{d\lambda}}=-m_0c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+K^{\mu}\;</MATH>|1.76a}}
Gdy tensor sił niegrawitacyjnych jest równy zero, wtedy równość {{LinkWzór|1.76a}} przechodzi w równanie geodezyjne {{LinkWzór|1.75}}, gdy na układ nie działają żadne siły niegrawitacyjne.
Druga zasada dynamiki Einsteina według równości końcowej {{LinkWzór|1.76a}} i wzór na tensor siły pochodzący od grawitacji, piszemy wzorami:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>\mathbf K_c=m_0c{{d\mathbf{U}}\over{d\lambda}}={{d\mathbf{P}}\over{d\lambda}}\Rightarrow K_c^{\mu}=m_0c{{dU^{\mu}}\over{d\lambda}}={{dP^{\mu}}\over{d\lambda}}\;</MATH>|1.77b}}
| 2 = {{CentrujWzór|<MATH>\mathbf K_g=-m_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\Rightarrow K_g^{\mu}=-m_0c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}\;</MATH>|1.77c}}
}}
A tensor siły w {{LinkWzór|1.76a}}, czyli {{Formuła|<MATH>\mathbf K\;</MATH>}}, jest tensorem siły od oddziaływań niegrawitacyjnych.
====== Kilka żródeł grawitacyjnych ======
Załóżmy, że mamy kilka mas, każda ona zakrzywia czasoprzestrzeń, weźmy zasadę niezależności działania tensorów sił szczególnej teorii względności spełnioną też w ogólnej teorii względności, wtedy korzystając z równości na tensor siły grawitacyjnej mamy na podstawie {{LinkWzór|1.77c}}:
{{CentrujWzór|<MATH>K_g^{\mu}=\sum_i K_{gi}^{\mu}=-\sum_im_{0}c{\Gamma^{\mu}_i}_{\alpha\beta}U^{\alpha}_iU^{\beta}_i=-m_0c\sum_i{\Gamma^{\mu}_i}_{\alpha\beta}U^{\alpha}_iU^{\beta}_i=-m_0c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}\;</MATH>|1.77ca11}}
Widzimy, że w {{LinkWzór|1.77ca11}} poszczególne masy dostarczają swoje własne symbole Christoffela {{Formuła|<MATH>{\Gamma^{\mu}_i}_{\alpha\beta}\;</MATH>}} do poruszającej się masy względem niego, a wszystkie pola grawitacyjne od tych mas tworzą razem inne symbole {{Formuła|<MATH>{\Gamma^{\mu}}_{\alpha\beta}\;</MATH>}}, które opisuje całkowite zakrzywienie czasoprzestrzeni od tych mas.
===== Układy rozciągłe =====
Równanie geodezyjne {{LinkWzór|1.76a}} dla układów rozciągłych zastępując w {{LinkWzór|1.77c}} wielkości: {{Formuła|<MATH>m_0\;</MATH>}} i {{Formuła|<MATH>K^{\mu}\;</MATH>}}, kolejno przez: {{Formuła|<MATH>dm_0\;</MATH>}} i {{Formuła|<MATH>dK^{\mu}\;</MATH>}}, napiszmy, wiedząc, że czas jako współrzędna jest taki sam jak w układzie inercjalnym:
{{CentrujWzór|<MATH>dm_0c\left({{d\mathbf{U}}\over{d\lambda}}+\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}\right)=d\mathbf K\Rightarrow dm_0c{{d\mathbf{U}}\over{d\lambda}}=-dm_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+d\mathbf K\Rightarrow\rho_0c{{d\mathbf{U}}\over{d\lambda}}=-\rho_0c\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+{{d\mathbf K}\over{dV_0}}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow \sqrt{-g}\rho_0c\gamma{{d\mathbf{U}}\over{d\lambda}}=-\sqrt{-g}\rho_0c\gamma\mathbf{U}^T\mathbf{\Gamma}\mathbf{U}+{{d\mathbf K}\over{dV}}\Rightarrow\sqrt{-g}\rho_0\gamma c{{dU^{\mu}}\over{d\lambda}}=-\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+{{dK^{\mu}}\over{dV}}\;</MATH>|1.77ca}}
Gęstość tensora siły całkowitej stanowiącej drugą zasadę dynamiki Einsteina szczególnej teorii względności dla układów rozciągłych, też i gęstość tensora siły od sił grawitacyjnych, napiszmy kolejno na podstawie {{LinkWzór|1.77ca}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{dK^{\mu}_c}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU^{\mu}}\over{d\lambda}}={{dm_0}\over{dV}}c{{dU^{\mu}}\over{d\lambda}}\;</MATH>|LLL1}}
| 2 = {{CentrujWzór|<MATH>{{dK^{\mu}_g}\over{dV}}=-\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}=-{{dm_0}\over{dV}}c{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}\;</MATH>|LLL2}}
}}
=== Linie geodezyjne, a druga pochodna czterowektora kowariantnego położenia ===
Będziemy badać wzory na linie geodezyjne, gdy siły niegrawitacyjne występują lub one nie występują, a poza tym siły grawitacyjne w nich zawsze występują.
==== Gdy występują tylko siły grawitacyjne ====
Przedstawimy teraz inne podejście do ruchu cząstki materialnej czyli piszemy linie geodezyjne w sposób kowariantny, czyli proste w przestrzeni czterowymiarowej spełniający warunek, który jest pochodną kowariantną U{{Sup|μ}}{{Sub|;β}}=0, ale z definicji pochodnej kowariantnej możemy napisać:
{{CentrujWzór|<MATH>0=U_{{\mu};\beta}=U_{{\mu},{\beta}}-{\Gamma^{{\alpha}}}_{{\mu}\beta}U_{{\alpha}}\;</MATH>|1.79}}
Pomnóżmy teraz obie strony równania tensorowego {{LinkWzór|1.79}} przez elementy czterowektora prędkości U{{Sup|β}}, otrzymując wynikowe równanie:
{{CentrujWzór|<MATH>0=U^{\beta}U_{{\mu},{\beta}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.80}}
Rozwińmy wyrażenie występujące w równaniu tensorowym {{LinkWzór|1.80}} występujący jako odjemna wykorzystując definicję pochodnej zupełnej, i przestawmy ją jako pochodna kowariantnego tensora czteroprędkości względem parametru λ.
{{CentrujWzór|<MATH>U^{\beta}U_{{\mu},{\beta}}={{dx^{\beta}}\over{d\lambda}}{{\partial U_{\mu}}\over{\partial x^{\beta}}}={{dU_{\mu}}\over{d\lambda}}\;</MATH>}}
wykorzystując udowodnioną powyższą tożsamość i podstawiając do równości {{LinkWzór|1.80}}, wtedy dochodzimy do wniosku, że zachodzi na pewno tożsamość poniżej, które to poniższe równanie jest równaniem linii geodezyjnej.
{{CentrujWzór|<MATH>0={{dU_{\mu}}\over{d\lambda}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.81|Obramuj}}
Możemy wykorzystać definicję czterowektora prędkości, wtedy wzór na równość tensorową {{LinkWzór|1.81}} zapisujemy wedle:
{{CentrujWzór|<MATH>0={{d^2x_{\mu}}\over{d\lambda^2}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}{{dx_{\alpha}}\over{d\lambda}}{{dx^{\beta}}\over{d\lambda}}\;</MATH>|1.82}}
Jeśli oznaczymy jako definicję parametru λ, który może być interwałem czasoprzestrzennym "s", poprzez parametr ξ w sposób s=aξ+c, to równanie na linie geodezyjne {{LinkWzór|1.82}} można przedstawić w postaci:
{{CentrujWzór|<MATH>0={{d^2x_{\mu}}\over{d\xi^2}}-{\Gamma^{\alpha}}_{{\mu}{\beta}}{{dx_{\alpha}}\over{d\xi}}{{dx^{\beta}}\over{d\xi}}\;</MATH>|1.83}}
Równania {{LinkWzór|1.74}} i {{LinkWzór|1.80}} stanowią równania ruchu cząstki w czterowymiarowej czasoprzestrzeni Einsteina i jak udowodnimy później, te dwa równania są ze sobą równoważne.
Dla układów płaskich rozwiązaniem {{LinkWzór|1.83}} jest równanie {{LinkWzór|1.78}} tylko, że ze wskaźnikami do dołu.
==== Gdy w równaniach na linie geodezyjne uwzględnimy siły niegrawitacyjne ====
Będziemy rozważać tu układy dyskretne i rozciągłe.
===== Układy dyskretne =====
A gdy występują inne tensory sił, to wtedy równanie {{LinkWzór|1.70a}} podobnie przekształcamy jak {{LinkWzór|1.82}} z {{LinkWzór|1.70}}, wtedy:
{{CentrujWzór|<MATH>{{d^2x_{\mu}}\over{d\lambda^2}}={\Gamma^{\alpha}}_{{\mu}{\beta}}{{dx_{\alpha}}\over{d\lambda}}{{dx^{\beta}}\over{d\lambda}}+{{1}\over{m_0c}}K_{\mu}\Rightarrow {{dU_{\mu}}\over{d\lambda}}={\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}+{{1}\over{m_0c}}K_{\mu}\Rightarrow m_0c{{dU_{\mu}}\over{d\lambda}}=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}+K_{\mu}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow {{dP_{\mu}}\over{d\lambda}}=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}+K_{\mu}\;</MATH>|1.82a}}
Gdy tensor sił niegrawitacyjnych jest równy zero, wtedy równość {{LinkWzór|1.82a}} przechodzi w równanie geodezyjne {{LinkWzór|1.82}}, gdy na układ nie działają żadne siły niegrawitacyjne.
Równanie ruchu dynamiki Einsteina i równanie na tensor sił grawitacji działający na ciało według {{LinkWzór|1.82a}} są równe:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>K_{c\mu}=m_0c{{dU_{\mu}}\over{d\lambda}}={{dP_{\mu}}\over{d\lambda}}\;</MATH>|1.82b}}
| 2 = {{CentrujWzór|<MATH>K_{g\mu}=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.82c}}
}}
====== Kilka żródeł grawitacyjnych ======
Załóżmy, że mamy kilka mas, każda ona zakrzywia czasoprzestrzeń, weźmy zasadę niezalezności działania tensorów sił szczególnej teorii względności spełniona też w ogólnej teorii względności, wtedy korzystając z równości na tensor siły grawitacyjnej mamy na podstawie {{LinkWzór|1.82c}}:
{{CentrujWzór|<MATH>K_{g\mu}=\sum_i K_{gi\mu}=\sum_im_0c{\Gamma^{\alpha}_i}_{{\mu}{\beta}}U_{i\alpha}U^{\beta}_i=m_0c\sum_i{\Gamma^{\alpha}_i}_{{\mu}{\beta}}U_{i\alpha}U^{\beta}_i=m_0c{\Gamma^{\alpha}}_{{\mu}{\beta}}U_{\alpha}U^{\beta}\;</MATH>|1.77ca111}}
Widzimy, że w {{LinkWzór|1.77ca111}} poszczególne masy dostarczają swoje własne symbole Christoffela {{Formuła|<MATH>{\Gamma^{\alpha}_i}_{{\mu}{\beta}}\;</MATH>}} do poruszającej się masy względem niego, a wszystkie pola grawitacyyjne od tych mas tworzą razem inne symbole {{Formuła|<MATH>{\Gamma^{\mu}}_{\alpha\beta}\;</MATH>}}, które opisuje całkowite zakrzywienie czasoprzestrzeni od tych mas.
===== Układy rozciągłe =====
Równanie geodezyjne {{LinkWzór|1.82a}} dla układów rozciągłych zastępując w nim wielkości: {{Formuła|<MATH>m_0\;</MATH>}} i {{Formuła|<MATH>K^{\mu}\;</MATH>}}, kolejno przez: {{Formuła|<MATH>dm_0\;</MATH>}} i {{Formuła|<MATH>dK^{\mu}\;</MATH>}}, napiszmy, wiedząc, że czas jako współrzędna jest taki sam jak w układzie inercjalnym:
{{CentrujWzór|<MATH>dm_0c{{dU_{\alpha}}\over{d\lambda}}=dm_0 c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}+dK^{\mu}\Rightarrow\rho_0c{{dU_{\alpha}}\over{d\lambda}}=\rho_0c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}+{{dK_{\alpha}}\over{dV_0}} \Rightarrow\sqrt{-g}\rho_0\gamma c{{dU_{\alpha}}\over{d\lambda}}=\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}+{{dK_{\alpha}}\over{dV}}\;</MATH>|1.77ca1}}
Gęstość tensora siły całkowitej stanowiącej drugą zasadę dynamiki Einsteina szczególnej teorii względności dla układów rozciągłych, też i gęstość tensora siły od sił grawitacyjnych, napiszmy kolejno na podstawie {{LinkWzór|1.77ca1}}:
{{ElastycznyWiersz
| 1 = {{CentrujWzór|<MATH>{{dK_{c\alpha}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU_{\alpha}}\over{d\lambda}}\;</MATH>|LLL1a}}
| 2 = {{CentrujWzór|<MATH>{{dK_{g\alpha}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{\Gamma^{\mu}}_{\alpha\beta}U_{\mu}U^{\beta}\;</MATH>|LLL2a}}
}}
=== Równoważność wzorów na linie geodezyjne w przedstawieniu kowariantnym i kontrawariantnym ===
Będziemy tu udowadniać zgodność wzorów na linie geodezyjne w przedstawieniu kowariantnym i kontrawariantnym, co udowodnimy, że te dwa wzory są ze sobą równoważne.
==== Układy dyskretne ====
Wzór na linię geodezyjną w przedstawieniu kontrawariantnym pomnóżmy przez tensor metryczny podwójnie kowariantny, oraz wykorzystując fakt, że pochodna tensora względem pewnego parametru jest tensorem oraz z własności tensorów metrycznych, otrzymujemy:
{{CentrujWzór|<MATH>{{1}\over{m_0c}}K^{\nu}={{dU^{\nu}}\over{d\lambda}}+{\Gamma^{\nu}}_{\alpha\beta}U^{\alpha}U^{\beta}\Rightarrow
{{1}\over{m_0c}}K^{\mu}g_{\mu\nu}={{dU^{\mu}}\over{d\lambda}}g_{\mu\nu}+g_{\mu\nu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}
\;</MATH>|1.84}}
Wykorzystajmy własność taką, że ogólnie tensor czteroprędkości kontrawariantny U{{Sup|α}} przedstawmy z zależności od kowariantnego tensora U{{Sub|γ}}, co tensorowo możemy zapisać:
{{CentrujWzór|<MATH>U^{\alpha}=g^{\alpha\gamma}U_{\gamma}\;</MATH>|1.85}}
Wykorzystując tożsamość tensorową {{LinkWzór|1.85}} do równości tensorowej {{LinkWzór|1.84}}:
{{CentrujWzór|<MATH>{{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-U^{\alpha}g_{\alpha\nu,\beta}U^{\beta}+\Gamma_{\nu\alpha\beta}U^{\alpha}U^{\beta}\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-2g_{\alpha\nu,\beta}+g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\;</MATH>{{Br}}<MATH>\Rightarrow
{{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\Rightarrow
{{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-U^{\alpha}U^{\beta}{{1}\over{2}}\left(g_{\alpha\nu,\beta}+g_{\alpha\beta,\nu}-g_{\beta\nu,\alpha}\right)\;</MATH>{{Br}}<MATH>\Rightarrow
{{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-\Gamma_{\alpha\beta\nu}U^{\alpha}U^{\beta}\Rightarrow {{1}\over{m_0c}}K_{\nu}={{dU_{\nu}}\over{d\lambda}}-{\Gamma^{\alpha}}_{\nu\beta}U_{\alpha}U^{\beta}
</MATH>|1.86}}
Co na podstawie dowodu {{LinkWzór|1.86}} udowodniliśmy równoważność wzorów przedstawiający równości na linię geodezyjną, czyli tożsamości {{LinkWzór|1.76a}} i {{LinkWzór|1.82a}}, które oznaczają to samo.
==== Układy rozciągłe ====
Wzór na linię geodezyjną w przedstawieniu kontrawariantnym pomnóżmy przez tensor metryczny podwójnie kowariantny, oraz wykorzystując fakt, że pochodna tensora względem pewnego parametru jest tensorem oraz z własności tensorów metrycznych, otrzymujemy:
{{CentrujWzór|<MATH>{{dK^{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU^{\nu}}\over{d\lambda}}+\sqrt{-g}\rho_0\gamma c{\Gamma^{\nu}}_{\alpha\beta}U^{\alpha}U^{\beta}\Rightarrow
{{dK^{\nu}}\over{dV}}g_{\mu\nu}=\sqrt{-g}\rho_0\gamma c{{dU^{\mu}}\over{d\lambda}}g_{\mu\nu}+\sqrt{-g}\rho_0\gamma cg_{\mu\nu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}
\;</MATH>|1.84a}}
Wykorzystując tożsamość tensorową {{LinkWzór|1.85}} do równości tensorowej {{LinkWzór|1.84a}}:
{{CentrujWzór|<MATH>{{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left({{dU_{\nu}}\over{d\lambda}}-U^{\alpha}g_{\alpha\nu,\beta}U^{\beta}+\Gamma_{\nu\alpha\beta}U^{\alpha}U^{\beta}\right)\Rightarrow \;</MATH>{{Br}}<MATH>\Rightarrow{{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-2g_{\alpha\nu,\beta}+g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\right]\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow
{{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}+U^{\alpha}U^{\beta}{{1}\over{2}}\left(-g_{\alpha\nu,\beta}+g_{\beta\nu,\alpha}-g_{\alpha\beta,\nu}\right)\right]\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow
{{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}-U^{\alpha}U^{\beta}{{1}\over{2}}\left(g_{\alpha\nu,\beta}+g_{\alpha\beta,\nu}-g_{\beta\nu,\alpha}\right)\right]\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow
{{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c\left[{{dU_{\nu}}\over{d\lambda}}-\Gamma_{\alpha\beta\nu}U^{\alpha}U^{\beta}\right]\Rightarrow {{dK_{\nu}}\over{dV}}=\sqrt{-g}\rho_0\gamma c{{dU_{\nu}}\over{d\lambda}}-\sqrt{-g}\rho_0\gamma c{\Gamma^{\alpha}}_{\nu\beta}U_{\alpha}U^{\beta}
</MATH>|1.86aa}}
Co na podstawie dowodu {{LinkWzór|1.86aa}} udowodniliśmy równoważność wzorów przedstawiający równości na linię geodezyjną, czyli tożsamości {{LinkWzór|1.76a}} i {{LinkWzór|1.82a}}, które oznaczają to samo.
=== Tensor siły grawitacji i inne tensory siły (w tym całkowity tensor siły w drugiej zasadzie dynamiki Einsteina), jako tensory z definicji tensora matematycznego ===
Tensor siły grawitacyjnej, jak można poniżej udowodnić jest tensorem, bo bierzemy tutaj, zbiór stałych transformacji, wtedy nie tylko ten tensor, ale również tensor siły całkowitej drugiej zasady dynamiki Einsteina jest tensorem, jak i inne tensory siły, przy stałych transformacjach symbole Christoffera są tensorami (i dlatego tak jest) - dlatego te symbole są tensorami, bo stałe transformacje można włożyć pod pochodną cząstkową tensora metrycznego w definicji tych symboli, i po transformacji otrzymujemy inne tensory metryczne, ale nie jest już tak dla funkcji transformacji niestałych, stałe transformacji rozdzielają wszechświat na podprzestrzenie, w których panują inne funkcje transformacji stałe. Jeżeli w jednym układzie (lub punkcie) nie ma grawitacji, to w innym też nie ma, czyli można rozważać przestrzeń bez grawitacji z trzema podstałymi oddziaływaniami (model standardowy dla trzech podstawowych oddziaływań - elektromagnetyczne, silne i słabe), czyli są przestrzenie, w której grawitacji nie ma lub jest.
=== Druga zasada dynamiki Einsteina w wersji wektorowej ===
Napiszmy równania w postaci podobnej, jak w drugiej zasadzie dynamiki Einsteina-Newtona, dla szczególnej teorii względności, czy w mechanice Newtona, ale też spełnioną w ogólnej teorii względności, w postaci:
{{CentrujWzór|<MATH>\vec F={{d\vec p}\over{dt}}\;</MATH>{{Tekst|, gdzie:}} <MATH>\vec p=p^i=m_0c u^i\;</MATH>|hd1}}
W nim {{Formuła|<MATH>u^i\;</MATH>}} jest współrzędną przestrzenną tensora prędkości, zatem jeśli {{Formuła|<MATH>p^{\mu}\;</MATH>}} jest tensorem pędu, to {{Formuła|<MATH>p^i\;</MATH>}} jest współrzędną przestrzenną tensora prędkości, też spełniona w ogólnej teorii względności, tak samo jak w szczególnej teorii względności.
Niezależność działania sił, i że addytywność wektorów sił, w ogólnej teorii względności, udowadnia się podobnie, jak dla mechaniki Einsteina-Newtona (jak w szczególnej teorii względności i mechanice Newtona).
Przedstawia się addytywność wektorów sił:
{{CentrujWzór|<MATH>\vec F_c=\sum_{i}\vec F_i\;</MATH>|hd0}}
Zależność pomiędzy wektorem tensora prędkości, a wektorem siły przedstawia się wzorem:
{{CentrujWzór|<MATH>\vec K={{d\vec p}\over{ds}}={{\gamma}\over{c}}{{d\vec p}\over{dt}}={{\gamma}\over{c}}\vec F\;</MATH>{{Tekst|, gdzie:}} <MATH>\gamma ds=cdt\Rightarrow\gamma=\left({{ds}\over{cdt}}\right)^{-1}\;</MATH>|hd2}}
Dla szczególnej teorii względności jest spełnione równanie na tensor siły, które przedstawimy dla układów lokalnie płaskich ogólnej teorii względności, który napisaliśmy w wykładzie szczególnej teorii względności w punkcie {{LinkWzór|2.27|Tensory w czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}:
{{CentrujWzór|<MATH>K^{\mu}={{\gamma}\over{c}}\left[\left({{\vec v}\over{c}},\vec F\right),\vec F\right]^T\;</MATH>|hd3}}
Podobny wzór możemy również otrzymać w ogólnej teorii względności, tylko w iloczynie są wskaźniki dolne i górne, nie górne, zapisaną w sposób, biorąc dla dwóch sygnatur:
{{CentrujWzór|<MATH>K^{\mu}={{\gamma}\over{c}}\left[-\left({{v_i}\over{c}}F^i\right),F^i\right]^T=\left[-{{p_iK^i}\over{p_0}},K^i\right]^T\wedge p_0=m_0c u_0=\pm m_0c\gamma=\pm {{E_r}\over{c}}</MATH> {{Tekst|(wersja zwykła)}}{{Br}}<MATH>K^{\mu}=\left[-{{P_iK^i}\over{P_0}},K^i\right]^T\wedge P_0=m_0c U_0=\pm m_0c\gamma=\pm {{E_r}\over{c}}\;</MATH> {{Tekst|(wersja uogólniona)}}|hd4}}
Zapisując wniosek {{LinkWzór|hd4}}, biorąc iloczyn skalarny przestrzeni zwykłej {{Formuła|<MATH>A=A^T=[a_{ij}]=[a_{ji}]=[a_{ij}]^T\;</MATH>}}, to wtedy ta równość przechodzi w {{LinkWzór|hd3}}, tylko przy innej definicji {{Formuła|<MATH>\gamma\;</MATH>}} z jego definicją dla ogólnej teorii względności, ale nie już dla szczególnej teorii względności.
Uogólnijmy wzór {{LinkWzór|hd1}}, by w nim było {{Formuła|<MATH>\vec P=m_0c U^{i}\;</MATH>}}, a nie {{Formuła|<MATH>\vec p=m_0c u^{i}\;</MATH>}}, wtedy wektor siły przedstawia się w formie:
{{CentrujWzór|<MATH>\vec F={{d\vec P}\over{dt}}\;</MATH>{{Tekst|, gdzie:}} <MATH>\vec P=P^i=m_0c U^i\;</MATH>|hd10}}
Dla wzoru {{LinkWzór|hd10}} niezależność działania sił i addytywność udowadnia się podobnie, jak dla wersji z wektorami zwykłymi tensora prędkości. A wtedy wzór {{LinkWzór|hd3}} uogólniamy do tej wersji (ten wzór pod względem zapisu jest taki sam), a wartość {{Formuła|<MATH>\gamma\;</MATH>}} piszemy:
{{CentrujWzór|<MATH>\gamma d\lambda=cdt\Rightarrow\gamma=\left({{d\lambda}\over{cdt}}\right)^{-1}\;</MATH>|hd11}}
Też jest spełnione przy takim uogólnieniu wzór na tensor wektora siły, w tym przypadku równość {{LinkWzór|hd2}}, przy definicji {{Formuła|<MATH>\gamma\;</MATH>}} {{LinkWzór|hd11}}, i z niego wynikającej definicji wektora siły, innej niż, ale równoważnej, do {{LinkWzór|hd10}}.
== Zgodność wzoru na linie geodezyjne z metryką przy ogólnie niezerowych siłach niegrawitacyjnych ==
Formułę {{LinkWzór|1.9|Wprowadzenie do ogólnej teorii względności}} zrózniczkujmy obustronnie, gdzie parametrem różniczkowym względem, którego różniczkujemy, jest interwał czasoprzestrzeny do:
{{CentrujWzór|<MATH>0={{d\left(u^{\mu}u_{\mu}\right)}\over{ds}}\Leftrightarrow 0={{du^{\mu}}\over{ds}}u_{\mu}+{{du_{\mu}}\over{ds}}u^{\mu}\;</MATH>|1.87}}
Jeżeli w równaniu {{LinkWzór|1.87}} zamienimy {{Formuła|<MATH>s\;</MATH>}} na {{Formuła|<MATH>\lambda\;</MATH>}}, wtedy zamieniamy {{Formuła|<MATH>u^{\mu}\;</MATH>}} w {{Formuła|<MATH>U^{\mu}\;</MATH>}} dla formalności, to ono jest dalej spełnione i jest w postaci:
{{CentrujWzór|<MATH>0={{d\left(U^{\mu}U_{\mu}\right)}\over{d\lambda}}\Leftrightarrow 0={{dU^{\mu}}\over{d\lambda}}U_{\mu}+{{dU_{\mu}}\over{d\lambda}}U^{\mu}\;</MATH>|1.871}}
Równanie {{LinkWzór|1.871}} jest równoważne równaniu {{LinkWzór|1.87}}, nie tylko dla {{Formuła|<MATH>\lambda=s\;</MATH>}} (gdy zmienna {{Formuła|<MATH>\lambda\;</MATH>}} jest równa interwałowi czasoprzestrzennemu), bo to wynika z rachunku różnicowego dla kroku {{Formuła|<MATH>\Delta s\;</MATH>}} nieskończenie małego, ale stałego, więc w {{LinkWzór|1.87}} można zastąpić {{Formuła|<MATH>ds\;</MATH>}} przez {{Formuła|<MATH>d\lambda\;</MATH>}}, i tak powstaje równanie różniczkowe {{LinkWzór|1.871}}.
=== Układy dyskretne ===
Skorzystajmy ze wzoru na linie geodezyjne, gdy liczymy pochodne kowariantne tensorów prędkości w przedstawieniu kontrawriantym {{LinkWzór|1.74}} i kowariantnym {{LinkWzór|1.81}}, co pomnózmy go obustronnie przez kolejno przez {{Formuła|<MATH>U_{\mu}\;</MATH>}} i {{Formuła|<MATH>U^{\mu}\;</MATH>}}, co potem skorzystamy ze wzoru {{LinkWzór|1.871}}, wtedy:
{{CentrujWzór|<MATH>0=-U_{\mu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+U^{\mu}{\Gamma^{\alpha}}_{\mu\beta}U_{\alpha}U^{\beta}+{{1}\over{m_0c}}\left(K^{\mu}U_{\mu}+K_{\mu}U^{\mu}\right)\Rightarrow 0=K^{\mu}U_{\mu}+K_{\mu}U^{\mu}\Rightarrow K^{\mu}U_{\mu}=0\;</MATH>|1.88}}
Końcowe równanie w {{LinkWzór|1.88}} przekształćmy do układów lokalnie płaskich, wtedy {{Formuła|<MATH>K^{\mu}\;</MATH>}} jest tensorem siły równej całkowitemu tensorowi siły według drugiej zasady dynamiki Einsteina według {{LinkWzór|1.70a}}, zatem w tym układzie po zamienieniu {{Formuła|<MATH>\lambda\;</MATH>}} na {{Formuła|<MATH>s\;</MATH>}} (interwał czasoprzestrzenny):
{{CentrujWzór|<MATH>K^{\mu}u_{\nu}=0\Rightarrow K^{\mu}u_{\mu}=m_0c{{du^{\mu}}\over{ds}}u_{\mu}=m_0c{{1}\over{2}}{{d(u^{\mu}u_{\mu})}\over{ds}}=m_0c{{1}\over{2}}{{d (\pm 1)}\over{ds}}=0\Rightarrow K^{\mu}u_{\mu}=0\;</MATH>|1.88a}}
Równanie {{LinkWzór|1.88a}} jest również spełnione dla dowolnej definicji {{Formuła|<MATH>\lambda\;</MATH>}}, nie tylko dla {{Formuła|<MATH>\lambda=s\;</MATH>}}, bo zachodzi wytłumaczone {{LinkWzór|1.871}}.
Stąd tożsamość {{LinkWzór|1.88}} jest na pewno spełniona na podstawie {{LinkWzór|1.88a}} (dla dowolnego {{Formuła|<MATH>\lambda\;</MATH>}}), a więc wzór na linie geodezyjne jest zgodny z metryką.
=== Układy rozciągłe ===
Równanie {{LinkWzór|1.87}} pomnóżmy przez {{Formuła|<MATH>\sqrt{-g}\rho_0c\gamma\;</MATH>}}, wtedy otrzymamy:
{{CentrujWzór|<MATH>0=\sqrt{-g}\rho_0c\gamma{{dU^{\mu}}\over{d\lambda}}U_{\mu}+{{dU_{\mu}}\over{d\lambda}}U^{\mu}\;</MATH>|1.87w1}}
Wykorzystajmy równości {{LinkWzór|1.77ca}} (przedstawienie kontrawariantne równania geodezyjnego) i {{LinkWzór|1.77ca1}} (przedstawienie kowariantnego równania geodezyjnego), wtedy:
{{CentrujWzór|<MATH>0=-\sqrt{-g}\rho_0c\gamma U_{\mu}{\Gamma^{\mu}}_{\alpha\beta}U^{\alpha}U^{\beta}+\sqrt{-g}\rho_0c\gamma U^{\mu}{\Gamma^{\alpha}}_{\mu\beta}U_{\alpha}U^{\beta}+\left({{dK^{\mu}}\over{dV}}U_{\mu}+{{dK_{\mu}}\over{dV}}U^{\mu}\right)\Rightarrow 0={{dK^{\mu}}\over{dV}}U_{\mu}+{{dK_{\mu}}\over{dV}}U^{\mu}\Rightarrow {{dK^{\mu}}\over{dV}}U_{\mu}=0\;</MATH>|llll1}}
Końcowe równanie w {{LinkWzór|llll1}} przekształćmy do układów lokalnie płaskich, wtedy {{Formuła|<MATH>{{dK^{\mu}}\over{dV}}\;</MATH>}} jest tensorem siły równej całkowitej gęstości tensora siły według drugiej zasady dynamiki Einsteina według {{LinkWzór|1.70a}}, zatem w tym układzie dla {{Formuła|<MATH>\lambda=s\;</MATH>}}:
{{CentrujWzór|<MATH>{{dK^{\mu}}\over{dV}}u_{\mu}=0\Rightarrow {{dK^{\mu}}\over{dV}}u_{\mu}=\sqrt{-g}\rho_0c\gamma{{du^{\mu}}\over{ds}}u_{\mu}=\sqrt{-g}\rho_0c\gamma{{1}\over{2}}{{d(u^{\mu}u_{\mu})}\over{ds}}=\sqrt{-g}\rho_0c\gamma{{1}\over{2}}{{d (\pm 1)}\over{ds}}=0\Rightarrow {{dK^{\mu}}\over{dV}}u_{\mu}=0\;</MATH>|1.88aaa}}
Jeżeli równanie {{LinkWzór|1.88aaa}} jest spełnione dla {{Formuła|<MATH>\lambda=s\;</MATH>}}, to jest również spełnione dla dowolnej definicji {{Formuła|<MATH>\lambda\;</MATH>}}, bo zachodzi wytłumaczone {{LinkWzór|1.871}}, zatem dla układów rozciągłych metryka jest zgodnę z równaniem na linie geodezyjne na podstawie {{LinkWzór|llll1}} według udowodnionego wniosku {{LinkWzór|1.88aaa}}.
== Zasada zachowania energii-pędu dla układów lokalnie płaskich przy zerowaniu się tensorów sił niegrawitacyjnych ==
W układzie lokalnie płaskim tensory Christoffela są równe zero z uwagi, że tensor metryczny jest równy tensorowi Minkowskiego i pochodne cząstkowe tego tensora są równe zero. Wtedy z uwagi na {{LinkWzór|1.74}} rozwiązaniem równania tego jest {{LinkWzór|1.78}}, zatem tensor prędkości cząstki w układzie lokalnie płaskim, jeżeli przymniemy {{Formuła|<MATH>\xi=s\;</MATH>}}, jest równy:
{{CentrujWzór|<MATH>u^{\mu}=a^{\mu}\;</MATH>|1.90}}
Czyli dla układów lokalnie płaskich na podstawie {{LinkWzór|2.42|Tensory w czasoprzestrzeni|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, w którym prędkości są stałe dowiadujemy się, że:
{{CentrujWzór|<MATH>{{dK^{\mu}}\over{dV}}=\rho_0\gamma c{{d}\over{d s}}u^{\mu}=\rho_0\gamma c{{d}\over{d s}}a^{\mu}=0\;</math>|1.91}}
I dalej stąd dowiadujemy się, że na podstawie {{LinkWzór|1.91}} energia i pęd w układzie lokalnie płaskim są zachowane. Też ten sam wniosek możemy otrzymać z {{LinkWzór|1.74}} przy zerowaniu się symboli Christoffela.
== Równanie dewiacyjne i dewiacja geodezyjna, według zasady niezalezności działania tensorów sił ==
Będziemy tutaj wyprowadzali dewiacyjne równanie uwzględniające tylko siły grawitacji albo siły niegrawitacyjne lub oba.
=== Równanie dewiacyjne, a tylko siły grawitacji ===
Weźmy sobie dwie krzywe geodezyjna, odległość pomiędzy cząstkami poruszających się na tych liniach określamy według definicji {{Formuła|<MATH>\xi^{\alpha}=x_1^{\alpha}-x_2^{\alpha}\;</MATH>}}, zatem różnica wzorów na linie geodezyjne {{LinkWzór|1.75}} dla {{Formuła|<MATH>x_1^{\alpha}\;</MATH>}} i {{Formuła|<MATH>x_2^{\alpha}\;</MATH>}} dla układów lokalnie płaskich, tu wykorzystajmy zasadę namniejszego działania tensorów sił, wtedy znika tensor sił niegrawitacyjnych, określamy jako:
{{CentrujWzór|<MATH>{{d^2\xi^{\alpha}}\over{d\lambda^2}}+{\Gamma^{\alpha}}_{\omega\eta,\gamma}\xi^{\gamma}U^{\omega}U^{\eta}=0\;</MATH>|1.92}}
Napiszmy teraz drugą pochodną wielkości absolutnej ξ wykorzystując {{LinkWzór|2.33|Rachunek_tensorowy|Metody_matematyczne_fizyki|MMF}}, a także {{LinkWzór|2.35|Rachunek_tensorowy|Metody_matematyczne_fizyki|MMF}} wykorzystując przy okazji udowodnioną tożsamość {{LinkWzór|1.92}} dla układu współrzędnych lokalnie płaskiego, w której w punktach płaskości tensor Christoffela jest równy zero:
{{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={{d}\over{d\lambda}}\left({{d\xi^{\alpha}}\over{d\lambda}}e_{\alpha}+\xi^{\alpha}{{de_{\alpha}}\over{d\lambda}}\right)=
{{d}\over{d\lambda}}\left[\left({{d\xi^{\gamma}}\over{d\lambda}}+\xi^{\eta}{\Gamma^{\gamma}}_{\eta\beta}U^{\beta}\right)e_{\gamma}\right]=\left({{d^2\xi^{\alpha}}\over{d\lambda^2}}+{\Gamma^{\alpha}}_{\eta\beta,\omega}\xi^{\eta}U^{\omega}U^{\beta}\right)e_{\alpha}+\;</MATH>{{Br}}<MATH>+\left({{d\xi^{\gamma}}\over{d\lambda}}+\xi^{\eta}{\Gamma^{\gamma}}_{\eta\beta}U^{\beta}\right){\Gamma^{\alpha}}_{\gamma\omega}U^{\omega}e_{\alpha}=
\left(-{\Gamma^{\alpha}}_{\beta\omega,\eta}\xi^{\eta}U^{\beta}U^{\omega}+{\Gamma^{\alpha}}_{\eta\beta,\omega}\xi^{\eta}U^{\omega}U^{\beta}\right)e_{\alpha}=\left({\Gamma^{\alpha}}_{\eta\beta,\omega}-{\Gamma^{\alpha}}_{\beta\omega,\eta}\right)\xi^{\eta}U^{\omega}U^{\beta}e_{\alpha}=\;</MATH>{{Br}}<MATH>={{R^{\alpha}}_{\beta\omega\eta}}\xi^{\eta}U^{\omega}U^{\beta}e_{\alpha}</MATH>|1.93}}
Końcowy wniosek wynikający z obliczeń {{LinkWzór|1.93}} jest słuszny tylko w układzie współrzędnych lokalnie płaskich, w której to w punktach płaskości tensor Christoffela jest równy zero. Udowodnijmy jego słuszność w dowolnym układzie współrzędnych:
{{CentrujWzór|<MATH>{{\overline R}^{\alpha}}_{\beta\omega\eta}{\overline \xi}^{\eta}{\overline U}^{\omega}{\overline U}^{\beta}{\overline e}_{\alpha}={{{\overline R}^{\alpha}}_{\beta\omega\eta}}{\overline{\Lambda^{\eta}}}_{\eta^'}\xi^{\eta^'}{\overline{\Lambda}^{\omega}}_{\omega^'}U^{\omega^'}{\overline{\Lambda}^{\beta}}_{\beta^'}U^{\beta^'}{\Lambda^{\alpha^'}}_{\alpha}e_{\alpha^'}={{{\overline R}^{\alpha}}_{\beta\omega\eta}}{\overline{\Lambda^{\eta}}}_{\eta^'}{\overline{\Lambda}^{\omega}}_{\omega^'}{\overline{\Lambda}^{\beta}}_{\beta^'}{\Lambda^{\alpha^'}}_{\alpha}\xi^{\eta^'}U^{\omega^'}U^{\beta^'} e_{\alpha^'}=\;</MATH>{{Br}}<MATH>={{R^{\alpha^'}}_{\beta^'\omega^'\eta^'}}\xi^{\eta^'}U^{\omega^'}U^{\beta^'}e_{\alpha^'}\;</MATH>|1.94}}
Na podstawie obliczeń {{LinkWzór|1.94}} wynikających z {{LinkWzór|1.93}} wnioskujemy, że w dowolnym układzie współrzędnych jest spełnione prawo zwane równaniem dewiacyjnym:
{{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}\xi^{\eta}e_{\alpha}\;</MATH>|1.95}}
=== Układy dyskretne ===
Według zasady niezależności działania tensorów sił, podobne równanie do {{LinkWzór|1.95}}, napiszmy równanie dewiacyjne, gdy nie ma grawitacji, tylko są siły niegrawitacyjne, wtedy ono piszemy, zapisując w nim przecinek średnikiem w układach lokalnie płaskich, co w takich układach można tak robić:
{{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={{1}\over{m_0c}}\xi^{\eta}{K^{\alpha}}_{;\eta}e_{\alpha}\;</MATH>|1.95a}}
Wykorzystując tą naszą zasadę połączmy równania {{LinkWzór|1.95}} i {{LinkWzór|1.95a}}, wtedy:
{{CentrujWzór|<MATH>{{d^2\xi}\over{d\lambda^2}}={R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}\xi^{\eta}e_{\alpha}+{{1}\over{m_0c}}\xi^{\eta}{K^{\alpha}}_{;\eta}e_{\alpha}\Rightarrow{{d^2\xi}\over{d\lambda^2}}=\left({R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}+{{1}\over{m_0c}}{K^{\alpha}}_{;\eta}\right)\xi^{\eta}e_{\alpha}\;</MATH>|1.95b}}
Równanie {{LinkWzór|1.95b}} jest udowodnione w układach lokalnie płaskich, co na podstawie teorii transformacji jest ono również spełnione w układach zakrzywionych. Równanie {{LinkWzór|1.95b1}} jest udowodnione w układach lokalnie płaskich, co na podstawie teorii transformacji jest ono również spełnione w układach zakrzywionych. To równanie jest równaniem dewiacyjnym uwzględniającym siły grawitacji i niegrawitacyjne.
Równanie {{LinkWzór|1.95a}} nazywamy równaniem dewiacyjnym układów zakrzywionych odległości pomiędzy dmoma ciałami bardzo bliskimi względem siebie przy uwzględnieniu tensorów sił pochodzący od oddziaływań niegrawitacyjnych.
=== Układy rozciągłe ===
Według zasady niezależności działania tensorów sił, podobne równanie do {{LinkWzór|1.95}}, napiszmy równanie dewiacyjne, gdy nie ma grawitacji, tylko są siły niegrawitacyjne, wtedy ono piszemy, zapisując w nim przecinek średnikiem w układach lokalnie płaskich, co w takich układach można tak robić:
{{CentrujWzór|<MATH>\sqrt{-g}\rho_0\gamma c{{d^2\xi}\over{d\lambda^2}}+\left(\sqrt{-g}\rho_0\gamma c\right)_{,\eta}\xi^{\eta}{{dU^{\alpha}}\over{d\lambda}}e_{\alpha}=\xi^{\eta}{\left({{dK^{\alpha}}\over{dV}}\right)}_{;\eta}e_{\alpha}\;</MATH>|1.95a1}}
Wykorzystując tą naszą zasadę połączmy równania {{LinkWzór|1.95}} i {{LinkWzór|1.95a1}}, wtedy:
{{CentrujWzór|<MATH>\sqrt{-g}\rho_0\gamma c{{d^2\xi}\over{d\lambda^2}}+\left(\sqrt{-g}\rho_0\gamma c\right)_{,\eta}\xi^{\eta}{{dU^{\alpha}}\over{d\lambda}}e_{\alpha}=\sqrt{-g}\rho_0\gamma c{R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}\xi^{\eta}e_{\alpha}+\xi^{\eta}{\left({{dK^{\alpha}}\over{dV}}\right)}_{;\eta}e_{\alpha}\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\sqrt{-g}\rho_0\gamma c{{d^2\xi}\over{d\lambda^2}}=\left(\sqrt{-g}\rho_0\gamma c{R^{\alpha}}_{\beta\omega\eta}U^{\omega}U^{\beta}-\left(\sqrt{-g}\rho_0\gamma c\right)_{,\eta}{{dU^{\alpha}}\over{d\lambda}}+{\left({{dK^{\alpha}}\over{dV}}\right)}_{;\eta}\right)\xi^{\eta}e_{\alpha}\;</MATH>|1.95b1}}
Równanie {{LinkWzór|1.95b1}} jest udowodnione w układach lokalnie płaskich, co na podstawie teorii transformacji jest ono również spełnione w układach zakrzywionych. To równanie jest równaniem dewiacyjnym uwzględniającym siły grawitacji i niegrawitacyjne.
Równanie {{LinkWzór|1.95a1}} nazywamy równaniem dewiacyjnym układów zakrzywionych odległości pomiędzy dmoma ciałami bardzo bliskimi względem siebie przy uwzględnieniu tensorów sił pochodzący od oddziaływań niegrawitacyjnych.
== Lokalna zasada zachowania energii-pędu ==
Weźmy lokalną zasadę zachowania energii-pędu szczególnej teorii względności {{LinkWzór|Vb|Lokalna zasada zachowania energii(masy)-pędu z zasady zachowania energii(masy)-pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, wtedy to możemy zapisać jako:
{{CentrujWzór|<MATH>{{1}\over{c}}{j^{\mu\nu}}_{,\nu}={{dK^{\mu}}\over{dV_0}}\;</MATH>|LKJ1}}
Równanie {{LinkWzór|LKJ1}} w układach zakrzywionych przyjmuje postać zamieniając przecinek średnikiem i wykorzystując {{LinkPatrz|FF1}} i {{linkPatrz|FF2}}, wtedy:
{{CentrujWzór|<MATH>{{1}\over{c}}{j^{\mu\nu}}_{;\nu}={{dK^{\mu}}\over{dV_0}}\Rightarrow{{\gamma}\over{c}}\sqrt{-g}{j^{\mu\nu}}_{;\nu}={{dK^{\mu}}\over{dV}}\;</MATH>|LKJ2}}
Równanie {{LinkWzór|LKJ2}} jest równaniem lokalnej zasady zachowania energii-pędu wynikającej z praw szczególnej teorii względności z zasady zachowania energii-pędu lub lokalnej zachowawczości tensora gęstości energii-pędu.
== Lokalna zasada zachowania tensora gęstości pędu ==
Weźmy lokalną zasadę zachowania tensora gęstości pędu szczególnej teorii względności według {{LinkWzór|3.19aaaaaa2|Lokalna zasada zachowania tensora pędu|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, wtedy możemy napisać wynikająco:
{{CentrujWzór|<MATH>\gamma{{\partial}\over{c\partial t}}\left(\rho v^{\mu}\right)=-{{\gamma}\over{c}}{T^{\mu j}_k}_{,j}+{{dK^{\mu}_z}\over{dV}}\;</MATH>|JH1}}
Przetransformuwujmy równanie {{LinkWzór|JH1}}, które jest dla układów lokalnie płaskich, zamieniając w nim przecinek na średnik, wiedząc, że macierz transformacji jest w postaci:
{{CentrujWzór|<MATH>\Lambda=\begin{bmatrix}1&0\\0&\Lambda_p\end{bmatrix}\;</MATH>|JH2}}
Wtedy na podstawie transformacji z macierzą transformacji {{LinkWzór|JH2}} w {{LinkWzór|JH1}} możemy dokonać tą wspomnianą operację przechodząc z układu lokalnie płaskiego do zakrzywionego:
{{CentrujWzór|<MATH>\gamma\left(\rho v^{\mu}\right)_{;0}=-{{\gamma}\over{c}}{T^{\mu j}_k}_{;j}+{{dK^{\mu}_z}\over{dV}}\Rightarrow \gamma\sqrt{-g}\left(\rho v^{\mu}\right)_{;0}=-{{\gamma}\over{c}}\sqrt{-g}{T^{\mu j}_k}_{;j}+{{dK^{\mu}_z}\over{dV}}\;</MATH>|JH3}}
Równość {{LinkWzór|JH3}} jest równaniem lokalnej zasady zachowania tensora gęstości pędu dla układów zakrzywionych.
== Rozwiązywanie układu równań ogólnej teorii względności ==
Ogólna teoria względności przedstawia swój zestaw równań ze sobą sprzecznych: równanie Hilberta-Einsteina {{LinkWzór|1.51|Wprowadzenie do ogólnej teorii względności}} (dla przyciągania grawitacyjnego) i {{LinkWzór|1.51a|Wprowadzenie do ogólnej teorii względności}} (dla odpychania grawitacyjnego) - należy tutaj tensor gęstości energii-pędu rozłożyć na ten podstawowy i inny zewnętrzny, lokalna zachowawczość tensora gęstości energii-pędu {{LinkWzór|ccv|Wprowadzenie do ogólnej teorii względności}}, równanie geodezyjne {{LinkWzór|1.70ab}} (układy rozciągłe), lokalna zasada zachowania energii-pędu {{LinkWzór|LKJ2}}, lokalna zasada zachowania tensora gęstości pędu {{LinkWzór|JH3}} i równanie wynikające z definicji jedynki z definicji różniczki interwału czasoprzestrzennego {{LinkWzór|KJH1|Wprowadzenie do ogólnej teorii względności}}, równania cechowania wynikłe z teorii lagrangianowych równania geodezyjnego dla układów rozciągłych i dalej należy uwzględnić w gęstościach sił (nawet w zewnętrznych) tensory sił od pola elektromagnetycznego i w dwóch prawach Hilberta-Einsteina grawitacji (równania opisujące odpychanie i przyciąganie grawitacyjne), dodatkowy człon, który jest tensorem gęstości energii-pędu od tego pola (gdy uwzględnimy pole elektromagnetyczne), oraz równania elektrodynamiki klasycznej dla układów zakrzywionych, te równania rozwiązuje się jak równania szczególnej teorii względności, tylko zamiast przestrzeni słabozakrzywionych, uważanych za ogólnie nieprostokątne ze współrzędnymi ogólnie nieprostokątnymi albo krzywoliniowymi lub uogólnionymi, mamy przestrzenie zakrzywione, zbudowane na przestrzeni słabozakrzywionej według szczególnej teorii względności, i zamiast szczególnej teorii względności jest ogólna teoria względności. Te równania możemy ogólnie zapisać tensorowo i rozwiązywać je, jak równania szczególnej teorii względności, według twierdzenia {{LinkTwierdzenie|GG1|Anormalne układy, tylko matematyczne, a nie fizyczne|Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności|WPTW}}, tylko zamiast równań szczególnej teorii względności są równania ogólnej teorii względności.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
e1nk84omd1460u1qqpu2n6qfl80djfo
Mechanika kwantowa/Dowód niepełny i pełny relatywistycznej teorii kwantów Diraca
0
60609
558846
487124
2026-10-07T12:31:03Z
Persino
2851
558846
wikitext
text/x-wiki
<noinclude><!--
-->{{SkomplikowanaStronaStart<!--
-->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!--
-->}}</noinclude>
Udowodnijmy równania własne zależnego i niezależnego od czasu równań mechaniki kwantowej relatywistycznej Diraca.
W równaniach mechaniki kwantowej Diraca podobnie jak w mechanice kwantowej nierelatywistycznej, wtedy funkcja falowa wektorowa jest napisane w sposób bardzo podobny do {{LinkWzór|10.4a|Postulat czwarty mechaniki kwantowej}} lub {{LinkWzór|10.4b|Postulat czwarty mechaniki kwantowej}}, albo według {{LinkWzór|10.4c|Postulat czwarty mechaniki kwantowej}}, tylko, że zamiast funkcji falowych skalarnych są wektory funkcji falowych.
Prawa mechaniki relatywistycznej kwantowej Diraca rozważane są słuszne jedynie dla pól elektromagnetostatycznych, czyli dla pól elektrycznych i magnetycznych, stałych w czasie.
== Równanie własne pewnego operatora występującego w definicji operatora energii relatywistycznej ==
Napiszmy i udowodnijmy równanie własne operatora energii relatywistycznej {{LinkWzór|25.5b|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} wykorzystując udowodnioną tożsamość {{LinkWzór|10.10a|Postulat czwarty mechaniki kwantowej}}, którą dla dowolnej jego potęgi możemy przepisać wzorem, co nie trudno udowodnić na podstawie indukcji matematycznej:
{{CentrujWzór|<MATH>\left[(\hat {\vec p}_i-q_i\vec A_i)^{2}\right]^{s}\psi(\vec r,t,\vec p, E)=\left[(\vec p_i-q_i\vec A_i)^{2}\right]^s\psi(\vec r,t,\vec p, E)\;</MATH>|W-1}}
bo dla s=1 równość {{LinkWzór|W-1}} przechodzi w {{LinkWzór|10.10a|Postulat czwarty mechaniki kwantowej}}, a dla s=0 ona jest tożsamością, udowodnijmy twierdzenie dla s+1, wtedy podziałajmy obie strony {{LinkWzór|W-1}} operatorem {{Formuła|<MATH>(\hat {\vec p}_i-q_i\vec A_i)^2\;</MATH>}}, wtedy mamy:
{{CentrujWzór|<MATH>(\hat {\vec p}_i-q_i\vec A_i)^2\left[(\hat {\vec p}_i-q_i\vec A_i)^{2}\right]^{s}\psi(\vec r,t,\vec p, E)=(\hat {\vec p}_i-q_i\vec A_i)^2\left[(\vec p_i-q_i\vec A_i)^{2}\right]^{s}\psi(\vec r,t,\vec p, E)\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow
\left[(\hat {\vec p}_i-q_i\vec A_i)^{2}\right]^{s+1}\psi(\vec r,t,\vec p, E)=\left[(\vec p_i-q_i\vec A_i)^{2}\right]^{s}(\hat {\vec p}_i-q_i\vec A_i)^2\psi(\vec r,t,\vec p, E)\Rightarrow \;</MATH>{{Br}}<MATH>\Rightarrow\left[(\hat {\vec p}_i-q_i\vec A_i)^{2}\right]^{s+1}\psi(\vec r,t,\vec p, E)=\left[(\vec p_i-q_i\vec A_i)^{2}\right]^{s+1}\psi(\vec r,t,\vec p, E)\;</MATH>|W-2}}
Powyższe dowody są prawdziwe jedynie w elektromagnetostatyce, w której zachodzi cechowanie dla pola magnetycznego stałego: {{Formuła|<MATH>\nabla\vec A=0\;</MATH>}} (cechowanie Coulomba), i niezależność potencjału tensorowego elektromagnetycznego względem czasu.
Udowodnijmy twierdzenie potrzebne do dowodu {{LinkWzór|W-2}} dla pola elektromagnetostatycznego:
{{CentrujWzór|<MATH>(\hat \vec{p}_i-q_i\vec A_{i})(\vec {p}_i-q_i\vec A_i)^{2}=(\hat \vec{p}_i-q_i\vec A_i)(\vec {p}^2_i+q^2_i\vec A_i^2-2q_i\vec p_i\vec A_i)=\hat \vec p_i\vec p^2_i+q_i^2\hat \vec p_i\vec A_i^2-2q_i\hat \vec p_i(\vec p\vec A_i)-(\vec {p}_i-q_i\vec A_i)^{2}q_i\vec A_i=\;</MATH>{{Br}}<MATH>=\vec p^2_i\hat \vec p_i+q_i^2\vec A_i^2\hat\vec p_i+2q_i^2A_{ij}(\hat \vec p_iA_{ij})-2q_ip_{ij}(\hat \vec p_iA_{ij})-2q_i(\vec p_iA_{ij})\hat p_{ij}-(\vec {p}_i-q_i\vec A_i)^{2}q_i\vec A_i=</MATH>{{Br}}<MATH>=2q_i^2A_{ij}(\hat \vec p_iA_{ij})-2q_ip_{ij}(\hat \vec p_iA_{ij})+(\vec {p}_i-q_i\vec A_i)^{2}(\hat \vec{p}_i-q_i\vec A_{i})</MATH>|W-2a}}
* bo we dowodzie {{LinkWzór|W-2a}} występuje wyrażenie, które dla pola elektromagnetostatycznego jest równe zero.
{{CentrujWzór|<MATH>2q_i^2A_{ij}(\hat \vec p_iA_{ij})-2q_ip_{ij}(\hat \vec p_iA_{ij})=-2q_i(\vec p-q_i \vec A)_{ij}(\hat \vec p_iA_{ij})=-2q_iv_{ij}(\hat p_iA_{ij})\;</MATH>}}
Weźmy taki układ odniesienia, w którym jest stały w danym punkcie {{Formuła|<MATH>A_{ij>1}</MATH>}} potencjał wektorowy pola elektromagnetostatycznego, czyli {{Formuła|<MATH>{{\partial A_{ij}}\over{\partial t}}=0\;</MATH>}}, wtedy zastosujmy cechowanie Coulomba {{LinkWzór|10.4|Magnetyczny potencjał wektorowy|Elektrodynamika klasyczna|EK}}, co po przetransformowaniu do układu dowolnego, też dla tego samego rodzaju pola:
{{CentrujWzór|<MATH>v_{ij}(\hat p_iA_{ij})=-2q_iv_{i1}(\vec k_1\hat p_{i1}A_{i1})=0\Rightarrow-2q_i\overline v_{ij}(\overline \hat p_{i}\overline A_{ij})=0\;</MATH>}}
To wyrażenie jest równe zero na podstawie cechowania Coulomba i niezależności potencjału tensorowego od czasu, podanego powyżej. Zatem na podstawie tego równość {{LinkWzór|W-2a}} piszemy w formie:
{{CentrujWzór|<MATH>(\hat \vec{p}_i-q_i\vec A_{i})(\vec {p}_i-q_i\vec A_i)^{2}=(\vec {p}_i-q_i\vec A_i)^{2}(\hat \vec{p}_i-q_i\vec A_{i})\;</MATH>|ok}}
== Dowód niepełny wyprowadzenia operatora energii relatywistycznej ==
Równość {{LinkWzór|W-2}} jest taka sama jak {{LinkWzór|W-1}} dla s+1 zamiast s. Zatem wzór {{LinkWzór|W-1}} jest zawsze spełniony na podstawie indukcji matematycznej.
Wiedząc, że {{Formuła|<MATH>\vec r\;</MATH>}} i {{Formuła|<MATH>\vec p\;</MATH>}} jest to koleino położenie i pęd uogólniony po 3N współrzędnych dla N cząstek, a {{Formuła|<MATH>\hat {\vec p}_i\;</MATH>}} i {{Formuła|<MATH>\vec p_i\;</MATH>}} jest to koleino wektor operatora pędu i wektor pędu uogólnionego, dla i-tej cząstki, wtedy na podstawie {{LinkWzór|W-1}} i wzoru na operator energii relatywistycznej {{LinkWzór|25.5b|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} ({{Formuła|<MATH>\hat E_r\;</math>}}) i skalar energii relatywistycznej {{LinkWzór|25.5a|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} ({{Formuła|<MATH>E_r\;</MATH>}}):
{{CentrujWzór|<MATH>\hat E_{ri}\psi(\vec r,t,\vec p, E_r)=\pm\sqrt{c^2(\hat {\vec p}_i-q_i\vec A_i)^2+m_{0i}^2c^4}\psi(\vec r,t,\vec p, E_r)=\pm m_{0i}c^2\sqrt{1+{{(\hat {\vec p}_i-q_i\vec A_i)^2}\over{m_{0i}^2c^2}}}\psi(\vec r,t,\vec p, E_r)=\;</MATH>{{Br}}<MATH>=\pm m_{0i}c^2\left[\sum_k{{{1}\over{2}} \choose k}\left({{(\hat {\vec p}_i-q_i\vec A_i)^2}\over{m_{0i}^2c^2}}\right)^k\right]\psi(\vec r,t,\vec p, E_r)=\pm m_{0i}c^2\left[\sum_k{{{1}\over{2}} \choose k}\left({{(\vec p_i-q_i\vec A_i)^2}\over{m_{0i}^2c^2}}\right)^k\right]\psi(\vec r,t,\vec p, E_r)=\;</MATH>{{Br}}<MATH>=
\pm m_{0i}c^2\sqrt{1+{{(\vec p_i-q_i\vec A_i)^2}\over{m_0^2c^2}}}=\pm \sqrt{c^2(\vec p_i-q_i\vec A_i)^2+m_{0i}^2c^4}\psi(\vec r,t,\vec p, E_r)=E_{ri}\psi(\vec r,t,\vec p, E_r)\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\hat E_{ri}\psi(\vec r,t,\vec p, E_r)=E_{ri}\psi(\vec r,t,\vec p, E_r)
</MATH>|W0}}
Sumujmy funkcje {{Formuła|<math>\psi(\vec r,t,\vec p, E_r)\;</math>}} ze współczynnikami dla różnych pędów {{Formuła|<MATH>\vec p\;</MATH>}} i takich samych energii {{Formuła|<math>E\;</MATH>}} (energii układu cząstek), wtedy równość {{LinkWzór|W0}} przyjmuje postać:
{{CentrujWzór|<MATH>\hat E_{ri}\psi(\vec r,t,\vec p,E_r)=E_{ri}\psi(\vec r,t,\vec p,E_r)</MATH>|W01}}
Sumujemy ze współczynnikami dla różnych pędach {{Formuła|<MATH>\vec p\;</MATH>}} równanie {{LinkWzór|W01}}, wtedy:
{{CentrujWzór|<MATH>\hat E_{ri}\psi(\vec r,t,E_r)=E_{ri}\psi(\vec r,t,E_r)</MATH>|W02}}
Równość {{LinkWzór|W02}} jest to równanie własne operatora energii relatywistycznej {{Formuła|<MATH>\hat E_r\;</MATH>}} {{LinkWzór|25.5c|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} z funkcjami własnymi {{Formuła|<MATH>\psi(\vec r,t,E_r)\;</MATH>}} zależącymi od położenia {{Formuła|<MATH>\vec r\;</MATH>}}, czasu {{Formuła|<MATH>t\;</MATH>}} i energii całkowitej układu {{Formuła|<MATH>E\;</MATH>}}.
== Dowód pełny wyprowadzenia operatora energii relatywistycznej ==
Weźmy wzór na energię relatywistyczną ciała w zależności od jego pędu i masy spoczynkowej, wtedy tam występujące strony możemy zastąpić średnimi.
{{CentrujWzór|<MATH>\overline E_{ri}=\pm\overline \sqrt{c^2(\vec p_i-q_i\vec A_i)^2+m_{0i}^2c^4}</MATH>|KH1}}
Ale z drugiej strony rozkład energii relatywistycznej piszemy z definicji wartości średniej {{LinkWzór|9.1|Postulat trzeci mechaniki kwantowej}} w mechanice kwantowej:
{{CentrujWzór|<MATH>\overline E_{ri}={{(\psi|E_{ri}|\psi)}\over{(\psi|\psi)}}=\sum_k E_{rik}|c_{ik}|^2+\int E_{ri}|c(E_{ri})|^2dE_{ri}\;</MATH>|KH2}}
Napiszmy z definicji wartości średniej energii relatywistycznej przy znajomości wzoru {{LinkWzór|KH1}}:
{{CentrujWzór|<MATH>{{(\psi|E_r|\psi)}\over{(\psi|\psi)}}={{(\psi|\pm\sqrt{c^2(\vec p_i-q_i\vec A_i)^2+m_{0i}^2c^4}|\psi)}\over{(\psi|\psi)}}</MATH>|KH3}}
Równość {{LinkWzór|KH3}} mnożymy poprzez iloczyn skalarny dwóch takich samych funkcji {{Formuła|<MATH>(\psi|\psi)\;</MATH>}}:
{{CentrujWzór|<MATH>(\psi|E_{ri}|\psi)=(\psi|\pm\sqrt{c^2(\vec p_i-q_i\vec A_i)^2+m_{0i}^2c^4}|\psi)\;</MATH>|KH4}}
Dalej rozpiszmy prawą stronę {{LinkWzór|KH4}} rozwijając w szereg Taylora wyraz w tym pierwiastku, wykorzystując przy okazji udowodniony wzór {{LinkWzór|W-1}}:
{{CentrujWzór|<MATH>(\psi|E_{ri}|\psi)=(\psi|\pm m_{0i}c^2\sqrt{1+{{(\vec p_i-q_i\vec A_i)^2}\over{m_{0i}^2c^2}}}|\psi)=(\psi|\pm m_{0i}c^2\left[\sum_k{{{1}\over{2}} \choose k}\left({{({\vec p}_i-q_i\vec A_i)^2}\over{m_{0i}^2c^2}}\right)^k\right]|\psi)=\;</MATH>{{Br}}<MATH>=(\psi|\pm m_{0i}c^2\left[\sum_k{{{1}\over{2}} \choose k}\left({{(\hat {\vec p}_i-q_i\vec A_i)^2}\over{m_{0i}^2c^2}}\right)^k\right]|\psi)=(\psi|\pm \sqrt{c^2(\hat \vec p_i-q_i\vec A_i)^2+m_{0i}^2c^4}|\psi)=(\psi|\hat E_{ri}|\psi)\Rightarrow (\psi|\hat E_{ri}-E_{ri}|\psi)=0</MATH>|KH5}}
Na podstawie metod matematyczny fizyki możemy napisać iloczyn skalarny w końcowym wywodzie {{LinkWzór|KH5}} jako iloczyn dwóch funkcji falowych, czyli według twierdzenia {{LinkTwierdzenie|HH1|Postulat czwarty mechaniki kwantowej}}:
{{CentrujWzór|<MATH>(\phi|\hat E_{ri}-E_{ri}|\psi(\vec r,t,E_r))=0\;</MATH>|KH6}}
Też nożna powiedzieć naz podstawie {{LinkTwierdzenie|HH1|Postulat czwarty mechaniki kwantowej}} elementy macierzowe względem dwóch dowolnych funkcji:
{{CentrujWzór|<MATH>\left(\phi|\hat E_{ri}-E_{ri}|\psi\right)=0\;</MATH>|Lr31}}
Ale dla dowolnej funkcji {{Formuła|<MATH>\phi\;</MATH>}} przy ściśle określonej bazie funkcji {{Formuła|<MATH>\psi(\vec r,t,E_r)</MATH>}}, we przedstawieniu {{LinkWzór|KH6}}, możemy napisać zawsze słuszne wyrażenie:
{{CentrujWzór|<MATH>\hat E_{ri}\psi(\vec r,t,E_r)=E_{ri}\psi(\vec r,t,E_r)\;</MATH>|KH7}}
Średnie jakiś wielkości (operatora) w równaniu na średnich są spełnione dla dowolnych funkcji własnych na podstawie twierdzenia {{LinkTwierdzenie|NN0|Postulat czwarty mechaniki kwantowej}}, jeżeli wiadomo, że jego jedna średnia tych wielkości, dla jednej funkcji własnych, jest spełniona w nim dla operatora energii relatywistycznej w mechanice relatywistycznej kwantowej Diraca.
== Równanie własne operatora energii (hamiltonianu Diraca) dla słabych i małych zmian pola magnetycznego ==
=== Dowód niepełny ===
Skorzystajmy z równania {{LinkWzór|W01}}, zakładając, że występująca funkcja falowa jest wektorem i zobaczmy, czy wyjdzie równanie własne operatora energii {{LinkWzór|25.3|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, wykorzystując definicję operatora energii {{LinkWzór|25.24a|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}, co stąd:
{{CentrujWzór|<MATH>\hat H\psi(\vec r,t,\vec p,E)=\left\{\sum_i\left[c\hat\alpha\left(\hat p_i-q_i\vec A_i\right)+m_{0i}c^2\hat\beta\right]+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right\}\psi(\vec r,t,\vec p,E)=\;</MATH>{{Br}}<MATH>=
\Bigg\{\sum_i\left[c\hat\alpha\left(\hat p_i-q_i\vec A_i\right)+m_{0i}c^2\left(\hat\beta+{{q\hbar}\over{2m_{0i}^2c^2}}\hat\sigma\vec B_i\right)\right]-\sum_i{{q\hbar}\over{2m_{0i}}}\hat\sigma\vec B_i+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\Bigg\}\cdot\;</MATH>{{Br}}<MATH>\cdot\psi(\vec r,t,\vec p,E)=\Bigg\{\sum_i\left[c\hat\alpha\left(\hat p_i-q_i\vec A_i\right)+m_{0i}c^2\hat\beta^'\right]-\sum_i{{q\hbar}\over{2m_{0i}}}\hat\sigma\vec B_i+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\Bigg\}\cdot\;</MATH>{{Br}}<MATH>\cdot\psi(\vec r,t,\vec p,E)=\Bigg(\sum_i\pm\sqrt{c^2\left(\hat p_i-q_i\vec A_i\right)^2+m_{0i}^2c^4}-\sum_i\hat\mu_i\vec B_i+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\Bigg)\psi(\vec r,t,\vec p,E)=</MATH>{{Br}}<MATH>=\Bigg(\sum_iE_{ri}-\sum_i\vec\mu_i\vec B_i+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\Bigg)\psi(\vec r,t,\vec p,E)=E\psi(\vec r,t,\vec p,E)\Rightarrow\;</MATH>{{Br}}<MATH>\Rightarrow\hat H\psi(\vec r,t,\vec p,E)=E\psi(\vec r,t,\vec p,E)\;</MATH>|W1}}
Równanie własne końcowe w {{LinkWzór|W1}} sumujemy ze współczynnikami względem {{Formuła|<MATH>\vec p\;</MATH>}} w sposób:
{{CentrujWzór|<MATH>\hat H\psi(\vec r,t,E)=E\psi(\vec r,t,E)\;</MATH>|W2}}
Otrzymany wzór {{LinkWzór|W2}} jest spełniony dla słabych i małych zmian pola magnetycznego.
=== Dowód pełny ===
Napiszmy wzór na średnią energię całkowitą cząstki, w różnych polach:
{{CentrujWzór|<MATH>\overline E=\overline {\sum_iE_{ri}-\sum_i\vec\mu_i\vec B_i+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i}\;</MATH>|GG1}}
Napiszmy wzór na średnią energię relatywistyczną z definicji wartości średniej w mechanice kwantowej:
{{CentrujWzór|<MATH>\overline E={{(\psi|E|\psi)}\over{(\psi|\psi)}}=\sum_k E_k|c(E_k)|^2+\int E|c(E)|^2dE\;</MATH>|GG2}}
Policzmy {{LinkWzór|GG1}} w obu jego stronach wyrażenia na podstawie wartości średniej parametru i operatora:
{{CentrujWzór|<MATH>{{(\psi|E|\psi)}\over{(\psi|\psi)}}={{\left(\psi\left|\sum_iE_{ri}-\sum_i\vec\mu_i\vec B_i+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right|\psi\right)}\over{(\psi|\psi}}</MATH>|GG3}}
Pomnóżmy obie strony równości {{LinkWzór|GG3}} przez iloczyn dwóch takich samych funkcji {{Formuła|<MATH>(\psi|\psi</MATH>}}:
{{CentrujWzór|<MATH>(\psi|E|\psi)=\left(\psi\left|\sum_iE_{ri}-\sum_i\vec\mu_i\vec B_i+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right|\psi\right)</MATH>|GG4}}
Dalej wykonujmy obliczenia na formule przedstawionej w {{LinkWzór|GG4}}, rozdzielając iloczyn skalarny po prawej jego stronie na sumy:
{{CentrujWzór|<MATH>(\psi|E|\psi)=\sum_i\left(\psi\left|E_{ri}\right|\psi\right)-\sum_i\left(\psi\left|\vec\mu_i\vec B_i\psi+(\psi|(\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right|\psi\right)=</MATH>{{Br}}<MATH>
=\sum_i\left(\psi\left|\hat E_{ri}\right|\psi\right)-\sum_i\left(\psi\left|\hat\vec\mu_i\vec B_i\right|\psi\right)+\left(\psi\left|(\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right|\psi\right)=</MATH>{{Br}}<MATH>
=\sum_i\left(\psi\left|\hat E_{ri}-\hat\vec\mu_i\vec B_i\right|\psi\right)+\left(\psi\left|\left(\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right)\right|\psi\right)=\;</MATH>{{Br}}<MATH>=\sum_i\left(\psi\left|\left[c\hat\alpha\left(\hat p_i-q_i\vec A_i\right)+m_{0i}c^2\hat\beta^'\right]-{{q\hbar}\over{2m_{0i}}}\hat\sigma\vec B_i\right|\psi\right)+\left(\psi\left|\left(\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right)\right|\psi\right)=\;</MATH>{{Br}}<MATH>
=\sum_i\left(\psi\left|\left[c\hat\alpha\left(\hat p_i-q_i\vec A_i\right)+m_{0i}c^2\left(\hat\beta+{{q\hbar}\over{2m_{0i}^2c^2}}\hat\sigma\vec B_i\right)\right]-{{q\hbar}\over{2m_{0i}}}\hat\sigma\vec B_i\right|\psi\right)+\;</MATH>{{Br}}<MATH>+\left(\psi\left|\left(\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right)\right|\psi\right)=\;</MATH>{{Br}}<MATH>=\sum_i\left(\psi\left|\left[c\hat\alpha\left(\hat p_i-q_i\vec A_i\right)+m_{0i}c^2\hat\beta\right]\right|\psi\right)+\left(\psi\left|\left(\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right)\right|\psi\right)=\;</MATH>{{Br}}<MATH>=
\left(\psi\left|\sum_i\left(\left[c\hat\alpha\left(\hat p_i-q_i\vec A_i\right)+m_{0i}c^2\hat\beta\right]+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right)\right|\psi\right)=\left(\psi\left|\hat H\right|\psi\right)\Rightarrow\left(\psi\left|\hat H-E\right|\psi\right)=0
</MATH>|GG5}}
Ostatnie równanie na dwie takie same funkcje przekształcamy na dwa różne funkcje z praw iloczynu skalarnego z pierwszą funkcją będącą dowolną funkcją {{Formuła|<MATH>\phi\;</MATH>}} przy ściśle określonej bazie funkcji {{Formuła|<MATH>\psi(\vec r,t,E)</MATH>}}, czyli według twierdzenia {{LinkTwierdzenie|HH1|Postulat czwarty mechaniki kwantowej}}:
{{CentrujWzór|<MATH>(\phi|\hat H-E)|\psi(\vec r,t,E))=0\Rightarrow \hat H\psi(\vec r,t,E)=E\psi(\vec r,t,E)\;</MATH>|GG6}}
Też nożna powiedzieć naz podstawie {{LinkTwierdzenie|HH1|Postulat czwarty mechaniki kwantowej}} elementy macierzowe względem dwóch dowolnych funkcji:
{{CentrujWzór|<MATH>\left(\phi|\hat H-E|\psi\right)=0\;</MATH>|Lr311}}
Średnie jakiś wielkości (operatora) w równaniu na średnich są spełnione dla dowolnych funkcji własnych na podstawie twierdzenia {{LinkTwierdzenie|NN0|Postulat czwarty mechaniki kwantowej}}, jeżeli wiadomo, że jego jedna średnia tych wielkości, dla jednej funkcji własnej tego operatora, jest spełniona w nim w mechanice kwantowej relatywistycznej Diraca.
Gdzie definicja hamiltonianu występująca we wzorze {{LinkWzór|GG6}} piszemy w formie:
{{CentrujWzór|<MATH>\hat H=\sum_i\left(\left[c\hat\alpha\left(\hat p_i-q_i\vec A_i\right)+m_{0i}c^2\hat\beta\right]+\sum_{ij,i<j}q_i\varphi_{ij}+\sum_{i}q_i\varphi_i+\sum_{ij,i<j}U_{ij}+\sum_{i}U_i\right)\;</MATH>|GG7}}
Można udowodnić, że według równania własnego {{LinkWzór|25.3|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} energia własna jest niezależna od czasu na podstawie dowodu podobnego jak w mechanice falowej klasycznej, czyli według przedstawienia {{LinkWzór|Lr4a|Postulat czwarty mechaniki kwantowej}} na podstawie definicji hamiltonianu {{LinkWzór|GG7}}.
== Dowód operatora energii relatywistycznej Diraca, że jego przedstawienie jest dokładne z układu dla punktu, w którym dla pola magnetycznego jego indukcja i jego zmiany są małe ==
Równość (równanie własne operatora energii całkowitej) {{LinkWzór|25.5c|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} jest spełniona dla słabych i małych zmian pól magnetycznych dla jakiegoś punktu w układzie i pól elektrycznych dowolnych, ale udowodnijmy, że jest spełniony również dla dowolnych pól magnetycznych, zatem dla pól magnetycznych i ich zmian dążących do zera w jakimś punkcie, oznaczmy w takim układzie operator energii całkowitej przez {{Formuła|<MATH>\hat E^'_{c0}\;</MATH>}} dla tego punktu. A dokładny operator energii całkowitej Diraca oznaczmy przez {{Formuła|<MATH>\hat E_c\;</MATH>}} w ogólnie dowolnym punkcie w tym układzie, zatem zależność między dwoma operatorami przedstawia się na podstawie {{LinkWzór|23.5|Symetrie, a prawa zachowania wartości średniej}} w układach, w którymś w jakimś punkcie pole i jego zmiany są zerowe, a oba operatory energii są sformułowane dla jednej cząstki, wtedy z punktu, w którym tak nie jest, do punktu, w którym tak już jest:
{{CentrujWzór|<MATH>\hat E^'_{c0}=T\hat E_{c0}T^+\;</MATH>|W1aa}}
Wtedy dla równości w układzie, w danym punkcie przy zerowych polach magnetycznych i jej zmianach {{LinkWzór|W1}}, i na podstawie {{LinkWzór|W1aa}}, możemy przejść w układzie do innego punktu, w którym to pole i jej zmiany, w danym punkcie, nie są ogólnie zerowe, a w jakimś punkcie tak jest, wtedy:
{{CentrujWzór|<MATH>\hat E^'_{c0}\psi^'_0(\vec r,t,E)=E^'_{c0}\psi^'_0(\vec r,t,E)\Rightarrow T\hat E_{c0} T^+T\psi_0(\vec r,t,E)=E_{c0}T\psi_0(\vec r,t,E)\Rightarrow\hat E_{c0}\psi_0(\vec r,t,E)=E_{c0}\psi_0(\vec r,t,E)\wedge E_{c0}=E^'_{c0}\;</MATH>|W1a}}
Transformacja z układu A, w którym w danym punkcie pola magnetycznego nie ma i jego zmiany są zerowe, do dowolnego układu odniesienia:
{{CentrujWzór|<MATH>\hat E_c=\alpha\hat E_{c0}+\beta\hat E_{cu}</MATH>|RT1}}
* Wzór {{LinkWzór|RT1}} wynika z transformacji układu końcowego względem układu odniesienia.
Równanie własne układu A, którego to piszemy, jest równaniem własnym jego operatora energii relatywistycznej układu:
{{CentrujWzór|<MATH>\hat E_{cu}\psi_u=E_{cu}\psi_u\;</MATH>|RT1a}}
Napiszmy równanie własne na operator energii całkowitej w układzie początkowym, w którym w jakimś punkcję pole magnetostatyczne i jego zmiany w przestrzeni są bardzo małe z dowolnym polem elektrostatycznym, z przejściem do dowolnego układu odniesienia, w którym już tak nie jest, czyli dla dowolnego pola elektromagnetostatycznego:
{{CentrujWzór|<MATH>\hat E_{c0}\psi_0=E_{c0}\psi_0\Rightarrow (\alpha\hat E_{c0}+\beta\hat E_{cu})\psi_0\psi_u=(\alpha E_{c0}+\beta E_{cu})\psi_0\psi_u\wedge E_c=\alpha E_{c0}+\beta E_{cu}\wedge \psi=\psi_0\psi_u\Rightarrow \hat E_c\psi=E_c\psi\;</MATH>|RT2}}
W dowolnym układzie tutaj {{Formuła|<MATH>E_c=E\;</MATH>}} i {{Formuła|<MATH>\hat E_c=\hat H\;</MATH>}}, czyli po przejściu do dowolnego układu odniesienia są Diraca, z układu, w którym było w jakim punkcie {{Formuła|<MATH>E=E_r\;</MATH>}} i {{Formuła|<MATH>\hat H=\hat E_r\;</MATH>}}. Czyli na podstawie równości {{LinkWzór|RT2}} w dowolnym układzie równanie własne energii całkowitej przedstawia się w formie {{LinkWzór|RT2}} dla dowolnego punktu dla dowolnego pola elektromagnetostatycznego, czyli wzór na hamiltonian energii całkowitej układu Diraca przedstawia się w formie {{LinkWzór|25.24a|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}. A tam ten hamiltonian, jak udowodniliśmy tutaj, jest dokładny.
== Równanie zależne od czasu mechaniki kwantowej Diraca ==
Z rozważań nad średnimi otrzymaliśmy taką samą równość w {{LinkWzór|GG6}} jak równanie mechaniki kwantowej niezależne od czasu {{LinkWzór|25.3|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}} jak w punkcie {{LinkWzór|10.14b|Postulat_czwarty_mechaniki_kwantowej}}, a równanie zależne od czasu wyprowadza się następująco:
możemy napisać tożsamość, którą można wyprowadzić jak w punkcie {{LinkWzór|10.15c|Postulat_czwarty_mechaniki_kwantowej}}:
{{CentrujWzór|<MATH>E\psi(\vec r,t,E)=i\hbar {{\partial }\over{\partial t}}\psi(\vec r,t,E)\;</MATH>|W1b}}
wtedy lewą stronę tej równości przyrównujemy z prawą stroną równości równania własnego hamiltonianu relatywistycznego Diraca niezależnego od czasu, otrzymując równanie operatora energii zależne od czasu, położenia i energii.
{{CentrujWzór|<MATH>\hat H\psi(\vec r,t,E)=i\hbar {{\partial }\over{\partial t}}\psi(\vec r,t,E)\;</MATH>|W1c}}
Sumujmy funkcje {{Formuła|<MATH>\psi(\vec r,t,E)\;</MATH>}} ze współczynnikami dla różnych energii, wtedy otrzymamy równość {{LinkWzór|Lr10|Postulat czwarty mechaniki kwantowej}} taką samą jak tutaj {{LinkWzór|25.4|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}:
{{CentrujWzór|<MATH>\hat H\psi(\vec r,t)=i\hbar {{\partial }\over{\partial t}}\psi(\vec r,t)\;</MATH>|W1d}}
* gdzie hamiltonian {{Formuła|<MATH>\hat H\;</MATH>}} jest to dokładny hamiltonian Diraca {{LinkWzór|25.24a|Wyprowadzenie operatora hamiltonianu relatywistycznej teorii kwantów Diraca}}.
<noinclude>{{SkomplikowanaStronaKoniec}}</noinclude>
758spaeu80msscae16wc7l5a5ehmrt7
Wikibooks:Moduły/Ramka
4
63231
558911
556561
2026-10-08T08:11:44Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558911
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów,
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 = Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną podaje się w parametrze {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję, tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy automatycznie ten niepusty parametr, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości prametrów w budowanych w tą funkcję.
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 = Zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą). Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica).
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 = Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 = Jeśli wartość jego jest niepusta, wtedy parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 = Zmienna mówiąca, czy ma być tworzony parametr ramki, który jest nieprawidłowy lub nie powinien być podany, a jeśli jednak jest, to sprawdzanie jest przez walidację błędów w: {{m|Sprawdź|Parametry}}, powinno to zgłosić problem, bo wtedy te parametry rodzica są odejmowane z podanej tablicy argmentów, jeśli była taka, lub tworzona jest nowa taka tablicy, którą jest: {{Code|bez argumentów szablonu}}, określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować. Format tej tablicy jest podany w punkcie {{LinkPatrz|bez argumentów szablonu}}.
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 = Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, albo gdy nie jest niepusty {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka. W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka, nie tak, jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
f200r77lv0tvhoiswb794mah615xvtq
558912
558911
2026-10-08T08:36:18Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558912
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów,
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 = Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną podaje się w parametrze {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, jeżeli nie jest podany parametr {{Code|nie potomek}} - dodane przez tę funkcję, tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy automatycznie ten niepusty parametr, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości prametrów w budowanych w tą funkcję.
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 = Zmienna mówiąca, że to nie jest potomek szablonu, używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie są przekazywane parametry: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}), {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} i {{LinkPatrz|potomek}} (ustawiany na stałą wartość niepustą). Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica).
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 = Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 = Jeśli wartość jego jest niepusta, wtedy parametr mówiący, czy ma tworzyć zmienne z parametrami rodzica {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 = Zmienna mówiąca, czy ma być względem parametrów ramki, które są nieprawidłowe lub nie powinienny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów weddług funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}, jeśli była taka, lub tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 = Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, albo gdy nie jest niepusty {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka. W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka, nie tak, jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qiwrao87qc51nwgm6ds88es44kzalh7
558913
558912
2026-10-08T09:21:22Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558913
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów,
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 = Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sam jest on tworzony automatycznie lub jeżeli nie jest podany parametr {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona. Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepusta, a w innym wyadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 = Zmienna, określona, podswana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}). Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą. Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka ramki.
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 = Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 = Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 = Zmienna mówiąca, czy ma być względem parametrów ramki, które są nieprawidłowe lub nie powinienny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów weddług funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}, jeśli była taka, lub tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 = Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, albo gdy nie jest niepusty {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka. W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka, nie tak, jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qhtw9gl5g2jkfl08asjp1snmjpg1fd6
558914
558913
2026-10-08T09:27:46Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558914
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, niezawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów,
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 = Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sam jest on tworzony automatycznie lub jeżeli nie jest podany parametr {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona. Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepusta, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 = Zmienna, określona, podswana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}). Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą. Jeżeli zmienna ogólnie {{Code|nie potomek}} {{LinkPatrz|nie potomek}} tam została podana, lub nie, wtedy zawsze {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka ramki.
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 = Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 = Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 = Zmienna mówiąca, czy ma być względem parametrów ramki, które są nieprawidłowe lub nie powinienny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów weddług funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}, jeśli była taka, lub tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 = Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, albo gdy nie jest niepusty {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka. W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka, nie tak, jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję {{LinkŚródtytuł|p["Moduł"]}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9dqff901i8myx3120kl91164rtfi2l2
558915
558914
2026-10-08T09:54:09Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558915
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są. Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów,
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 = Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona. Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 = Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}). Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą. Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 = Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}, a jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 = Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z zwartościami przez funkcję, w przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 = Zmienna mówiąca, czy ma być względem parametrów ramki, które są nieprawidłowe lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}. Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 = Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka. W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka, nie tak, jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4xkrn90h5vhrfp6wtwydurbb974acpi
558916
558915
2026-10-08T10:09:02Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558916
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są. Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów,
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą. Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, które są nieprawidłowe lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Nie tak, jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
mdncanx9actcd3pae12tk9dspgfchwo
558917
558916
2026-10-08T10:10:29Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558917
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są. Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów,
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą. Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, które są nieprawidłowe lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
mmmyqwvzam77iuajxhaacynl03a3cpt
558918
558917
2026-10-08T10:16:17Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558918
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są. Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą. Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, które są nieprawidłowe lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r741usuq5rfre3bjojzn1s50abccoix
558919
558918
2026-10-08T10:22:18Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558919
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są. Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą. Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, parametry rodzica, które są nieprawidłowe, lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9n21yo8rqscygf4v8qgx1f4f0mvjjlo
558920
558919
2026-10-08T10:26:01Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558920
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są. Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą. Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, parametry rodzica, które są nieprawidłowe, lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
b0ew87tw5e337kpq6ljtt9o2dve4kjq
558921
558920
2026-10-08T10:28:47Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558921
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są. Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą. Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, parametry rodzica, które są nieprawidłowe, lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2jyhku07pyvx8xdohp3tn3dutmbvgvo
558922
558921
2026-10-08T10:30:18Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558922
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są. Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 = Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków, wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, parametry rodzica, które są nieprawidłowe, lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gc1ha6hlgqiug6dtp7qn5h89ndmgm0s
558923
558922
2026-10-08T10:38:20Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558923
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 = Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są. Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 = Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków. Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, parametry rodzica, które są nieprawidłowe, lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
eewqdsnuoajw4pczhmc5l4s0qvkvhoq
558924
558923
2026-10-08T10:41:52Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558924
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są. Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, parametry rodzica, które są nieprawidłowe, lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
214ce3zhm3lf0sqa2f6vtsntwd3eht6
558925
558924
2026-10-08T10:43:08Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558925
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.}}
{{P|Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie lub jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, parametry rodzica, które są nieprawidłowe, lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hx3bhs4hwvnmmvbq26rhitlm6us5o4f
558926
558925
2026-10-08T10:47:33Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558926
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.}}
{{P|Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie.}}
{{P|Jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, parametry rodzica, które są nieprawidłowe, lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{m|Sprawdź|Parametry}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1p7wv7wki5cklyurazy4as2p8run469
558927
558926
2026-10-08T10:51:57Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558927
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.}}
{{P|Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie.}}
{{P|Jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 = Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana zmienna, ale za to ten parametr jest powtarzany w parametrach dziecka.
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, parametry rodzica, które są nieprawidłowe, lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
d64tqfrpwy0arhcijrlqdnawf3l78wt
558928
558927
2026-10-08T10:57:42Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558928
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.}}
{{P|Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie.}}
{{P|Jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 =
{{P|Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana ta zmienna.}}
{{P|Ten parametr jest powtarzany w parametrach dziecka od rodzica, czy nawet od przodka.}}
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, czy ma być względem parametrów ramki, parametry rodzica, które są nieprawidłowe, lub nie powinny być podane, a jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fa0cc35xz5evk2jbcq386cp6t0m5qbw
558929
558928
2026-10-08T11:01:20Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558929
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to pełna nazwa szablonu, modułu, czy parsera.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.}}
{{P|Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie.}}
{{P|Jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 =
{{P|Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana ta zmienna.}}
{{P|Ten parametr jest powtarzany w parametrach dziecka od rodzica, czy nawet od przodka.}}
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, co ma być względem parametrów ramki, czyli parametry rodzica, które poszczególne, są nieprawidłowe lub nie powinny być podane.}}
{{P|A jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
puu5uv4bqk3zudp23m5pyr94jhete73
558930
558929
2026-10-08T11:04:56Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558930
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to nazwa szablonu, modułu, czy parsera, ale nie pełna (bez nazwy przestrzeni nazw), względem parametru: {{Code|co_ma_wywolac}} {{LinkPatrz|co_ma_wywolac}}.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.}}
{{P|Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie.}}
{{P|Jeżeli jest podany parametr: {{Code|nie potomek}} w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w {{m|Sprawdź|Parametry}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 =
{{P|Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} i nie jest ustawiana ta zmienna.}}
{{P|Ten parametr jest powtarzany w parametrach dziecka od rodzica, czy nawet od przodka.}}
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, co ma być względem parametrów ramki, czyli parametry rodzica, które poszczególne, są nieprawidłowe lub nie powinny być podane.}}
{{P|A jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
j5rtlzcuebbsjofkznnes2qjegvzqyq
558931
558930
2026-10-08T11:15:18Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558931
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli {{Tt|0}} - to uruchamiany jest szablon, jeżeli {{Tt|1}} - moduł, jeżeli {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a {{Tt|3}} i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to nazwa szablonu, modułu, czy parsera, ale nie pełna (bez nazwy przestrzeni nazw), względem parametru: {{Code|co_ma_wywolac}} {{LinkPatrz|co_ma_wywolac}}.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.}}
{{P|Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie.}}
{{P|Jeżeli jest podany parametr: {{Code|nie potomek}}, w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w: {{Code|{{m|Sprawdź|Parametry}}}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej: {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 =
{{P|Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, i nie jest ustawiana ta zmienna.}}
{{P|Ten parametr jest powtarzany w parametrach dziecka od rodzica, czy nawet od przodka.}}
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, co ma być względem parametrów ramki, czyli parametry rodzica, które poszczególne, są nieprawidłowe lub nie powinny być podane.}}
{{P|A jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty: {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
t8ocivsws05m120exhqwwmyzaqkfuxx
558932
558931
2026-10-08T11:18:19Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558932
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli: {{Tt|0}} - to uruchamiany jest szablon, jeżeli: {{Tt|1}} - moduł, jeżeli: {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a: {{Tt|3}}, i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to nazwa szablonu, modułu, czy parsera, ale nie pełna (bez nazwy przestrzeni nazw), względem parametru: {{Code|co_ma_wywolac}} {{LinkPatrz|co_ma_wywolac}}.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.}}
{{P|Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie.}}
{{P|Jeżeli jest podany parametr: {{Code|nie potomek}}, w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w: {{Code|{{m|Sprawdź|Parametry}}}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej: {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 =
{{P|Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, i nie jest ustawiana ta zmienna.}}
{{P|Ten parametr jest powtarzany w parametrach dziecka od rodzica, czy nawet od przodka.}}
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, co ma być względem parametrów ramki, czyli parametry rodzica, które poszczególne, są nieprawidłowe lub nie powinny być podane.}}
{{P|A jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{LinkPatrz|nazwa szablonu rodzica}}, gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty: {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest tworzona, na życzenie, zmienna: {{Code|nazwa szablonu rodzica}}, którą jest nazwa szablonu rodzica nie przodka.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3lhq4g5ufm9vestqq3n6jaw0bpsg44g
558933
558932
2026-10-08T11:27:58Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558933
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli: {{Tt|0}} - to uruchamiany jest szablon, jeżeli: {{Tt|1}} - moduł, jeżeli: {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a: {{Tt|3}}, i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to nazwa szablonu, modułu, czy parsera, ale nie pełna (bez nazwy przestrzeni nazw), względem parametru: {{Code|co_ma_wywolac}} {{LinkPatrz|co_ma_wywolac}}.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.}}
{{P|Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie.}}
{{P|Jeżeli jest podany parametr: {{Code|nie potomek}}, w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w: {{Code|{{m|Sprawdź|Parametry}}}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej: {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 =
{{P|Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, i nie jest ustawiana ta zmienna.}}
{{P|Ten parametr jest powtarzany w parametrach dziecka od rodzica, czy nawet od przodka.}}
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{m|Sprawdź|Parametry}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, co ma być względem parametrów ramki, czyli parametry rodzica, które poszczególne, są nieprawidłowe lub nie powinny być podane.}}
{{P|A jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}.}}
{{P|Gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty: {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest ona tworzona, na życzenie.}}
{{P|Parametr: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, jest nazwą szablonu przekazywaną od rodzica, ale nie od nie przodka, ale jest nazwą szablonu, któregoś z przodków, a w szczególności rodzica.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
05ao6484xtyxomedxjc4oun35ln13wl
558934
558933
2026-10-08T11:29:54Z
Persino
2851
/* {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} */
558934
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Ramka}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local ramka_modul=require("Module:Ramka");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Funkcje, w tym module, uruchamia się tylko w ramce w szablonie, bo są tylko do tego przygotowane. One służą do powtarzania parametrów rodzica, czy przodka, iteracji pojedynczego kroku wikikodu, jakiś sprawdzeń, do liczenia odpowiedników i związanych z tym parametrami, itp..
== Funcje lokalne modułu ==
=== {{Śródtytuł|ParserBlokowy}}{{Code|ParserBlokowy}} ===
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, tylko w module {{Code|{{ld2|Ramka}}}}, szablonów, modułów i parserów w ramce. Uruchamiana jest przez funkcje: {{LinkŚródtytuł|p.Szablon}} - funkcja do uruchamiania szablonów, {{LinkŚródtytuł|p["Moduł"]}} - funkcja do uruchamiania modułów, i {{LinkŚródtytuł|p.Parser}} - funkcja do uruchamiania parserów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParserBlokowy(frame, co_ma_wywolac)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} {{Patrz|frame}} | _1 = Funkcja ramki funkcji tablica transportu modułu.
| 2 = {{Code|co_ma_wywolac}} {{Patrz|co_ma_wywolac}} | _2 = Ten parametr przyjmuje wartość liczbową, która jeżeli: {{Tt|0}} - to uruchamiany jest szablon, jeżeli: {{Tt|1}} - moduł, jeżeli: {{Code|2}} - to parser, jeżeli on ma inne wartości, tzn.: {{Tt|2}}, a: {{Tt|3}}, i dalej, to już dany szablon.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = Parametry podstawowe - parametry ramki, nie zawsze parametry przekazywane obiektowi w ramce, czasami od rodzica:|nagłówek1=tak
| 2 = {{Code|Nazwa}} {{Patrz|Nazwa}} | _2 = Jest to nazwa szablonu, modułu, czy parsera, ale nie pełna (bez nazwy przestrzeni nazw), względem parametru: {{Code|co_ma_wywolac}} {{LinkPatrz|co_ma_wywolac}}.
| 3 = {{Code|bez argumentów rodzica}} {{Patrz|bez argumentów rodzica}} | _3 =
{{P|Tablica parametrów oddzielonych średnikami, których obiekt uruchamiany nie może przyjmować, nawet jeżeli one są.}}
{{P|Tutaj chodzi o parametry, które nie są przekazywane do ramki obiektu uruchamianego, a pozostałe są.}}
{{P|Te parametry wcielane w obiekt są ogólnie inne niż walidowane, ale nie zawsze.}}
| 4 = {{Code|nazwa szablonu rodzica}} {{Patrz|nazwa szablonu rodzica}} | _4 =
{{P|Jest to zmienna przechowująca nazwę szablonu rodzica ramki dziecka, a nawet któreś z jego przodków.}}
{{P|Jeśli, nie podano parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, to ona jest tworzona na życzenie: {{Code|zmienna z nazwą szablonu rodzica}} {{LinkPatrz|zmienna z nazwą szablonu rodzica}}, przeciwnie, jest tworzona właśnie wtedy.}}
| 5 = {{Code|nazwa szablonu przodka}} {{Patrz|nazwa szablonu przodka}} | _5 =
{{P|Nie jest tworzona na życzenie żadnego parametru, jak to było z: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, tylko jest tworzona u pierwszego najwyższego przodka, którego parametry są dziedziczone, do jej potomków.}}
{{P|Wtedy jest to nazwa szablonu, w najwyższego przodka, względem jego dzieci wywoływanych przez funkcję: {{Code|{{m|Ramka|Szablon}}}}, czy przez jego kolegów.}}
| 6 = {{Code|bez argumentów nienazwanych rodzica}} {{Patrz|bez argumentów nienazwanych rodzica}} | _6 = Szablon w ramce nie przyjmuje parametrów nienazwanych, określonych liczbą, podanych w rodzicu ramki.
| 7= {{Code|potomek}} {{Patrz|potomek}} | _7 =
{{P|Zmienna mówiąca, że to jest potomek rodzica ramki, tą zmienną nigdzie się nie podaje, tylko sama jest ona tworzona automatycznie.}}
{{P|Jeżeli jest podany parametr: {{Code|nie potomek}}, w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, przy niepodanym niepustym parametrze: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}, wtedy ta zmienna nie jest tworzona.}}
{{P|Tej zmiennej nie używa się bezpośrednio w kodzie ramki, sama ta ramka tworzy ta zmienną jako tylko niepustą, a w innym wypadku nieistniejącą, jedynie go można użyć przy wielopoziomowym przekazywaniu parametrów rodzica, do ustawiania pewnych wartości parametrów wbudowanych w tą funkcję.}}
| 8 = {{Code|nie potomek}} {{Patrz|nie potomek}} | _8 =
{{P|Zmienna, określona, podawana w: {{Code|bez argumentów rodzica}} {{LinkPatrz|bez argumentów rodzica}}, mówiąca, że to nie jest potomek szablonu rodzica (przodka), używana, gdy nie jest określona istniejąca zmienna ramki: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
{{P|W tym przypadku taka ramka jest traktowana jak normalna ramka, której jedynie trzeba przekazać parametry rodzica, nie przodka, wtedy do niej nie jest tworzony parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}} (ta zmienna jest wtedy ustawiana, gdy nie jest niepusty parametr: {{Code|bez dodatkowych sprawdzeń}} {{LinkPatrz|bez dodatkowych sprawdzeń}}).}}
{{P|Przy nieustawionym niepustym parametrze tym, zmienne: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}}, i {{Code|potomek}} {{LinkPatrz|potomek}}, ta pierwsza jest ustawiana ogólnie na stałą wartość niepustą, a druga na tylko niepustą.}}
{{P|Jeżeli zmienna ogólnie: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, tam została podana, lub nie, wtedy zawsze: {{Code|nazwa szablonu rodzic}} {{LinkPatrz|nazwa szablonu rodzica}} (jeśli ta wartość rodzica nie istnieje, to nadawana jest jej aktualna nazwa szablonu rodzica, a nie przodka, normalnie jest to przodka, a w szczególności rodzica), a parametr: {{Code|nazwa szablonu przodka}} {{LinkPatrz|nazwa szablonu przodka}}, jest zawsze przekazywany z rodzica na dziecko od najwyższego przodka z wielopoziomowych ramek.}}
| 9 = {{Code|bez argumentów szablonu}} {{Patrz|bez argumentów szablonu}} | _9 =
{{P|Zmienna oddzielonych średnikami parametrów, których nie wolno uwzględniać w walidacji błędów w: {{Code|{{m|Sprawdź|Parametry}}}}, ta tablica jest wkładana do parametrów ramki, gdy nie podany jest niepusty parametr w niej: {{Code|zmienna z argumentami ramki}} {{LinkPatrz|zmienna z argumentami ramki}}.}}
{{P|A jeżeli ten argument jednak jest niepusty, wtedy do tej zmiennej są wliczane parametry ramki, które nie są argumentami wbudowanymi w tą funkcję.}}
| 10 = {{Code|bez dodatkowych sprawdzeń}} {{Patrz|bez dodatkowych sprawdzeń}} | _10 =
{{P|Nie jest uruchamiana walidacja parametrów szablonu rodzica, czyli wtedy do dziecka nie jest przekazywany parametr: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, i nie jest ustawiana ta zmienna.}}
{{P|Ten parametr jest powtarzany w parametrach dziecka od rodzica, czy nawet od przodka.}}
| 11 = {{Code|parametry rodzica}} {{Patrz|parametry rodzica}} | _11 = Zmienna przedstawiająca parametry rodzica, czy któreś ze przodków, przekazane do ramki: {{Code|{{m|Sprawdź|Parametry}}}} - dodane przez tę funkcję.
| 12 = {{Code|zmienna z parametrami rodzica}} {{Patrz|zmienna z parametrami rodzica}} | _12 =
{{P|Jeśli wartość jego jest niepusta, wtedy parametr, mówiący, czy ma tworzyć zmienne z parametrami rodzica: {{Code|parametry rodzica}} {{LinkPatrz|parametry rodzica}}, jest przekazywana do dziecka w postaci wygenerowanej listy parametrów rodzica wraz z wartościami przez funkcję.}}
{{P|W przypadku innej jego wartości, to ten parametr rodzica jest przekazywany normalnie, jeżeli ta ramka byłaby potomkiem, czyli parametry byłyby przekazywane od przodka, i nie byłby wtedy ustawiony parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}.}}
| 13 = {{Code|zmienna z argumentami ramki}} {{Patrz|zmienna z argumentami ramki}} | _13 =
{{P|Zmienna mówiąca, co ma być względem parametrów ramki, czyli parametry rodzica, które poszczególne, są nieprawidłowe lub nie powinny być podane.}}
{{P|A jeśli jednak są, to sprawdzanie jest to przez walidację błędów według funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, wywołanej w ramce języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powinno to zgłosić problem, bo wtedy w parametrach sprawdzacza błędów, od wszystkich parametrów rodzica, są odejmowane te niedozwolone, niepowodujące błędów, podanej tablicy argumentów ramki: {{Code|{{m|Ramka}}}}.}}
{{P|Jeśli były by takie argumenty ramki, to tworzona jest nowa, ewentualnie zaktualizowana, taka tablicy, którą jest: {{Code|bez argumentów szablonu}} {{LinkPatrz|bez argumentów szablonu}} (Format tej tablicy jest podany tutaj, pod tym linkiem), określający parametry, które szablon, czy ramka, a nawet parser, nie powinien przyjmować.}}
| 14 = {{Code|zmienna z nazwą szablonu rodzica}} {{Patrz|zmienna z nazwą szablonu rodzica}} | _14 =
{{P|Parametr, gdy niepusty, wtedy jest tworzona zmienna: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}.}}
{{P|Gdy nie jest niepusty parametr: {{Code|nie potomek}} {{LinkPatrz|nie potomek}}, lub nie jest niepusty: {{Code|potomek}} {{LinkPatrz|potomek}}, wtedy jest ona tworzona, na życzenie.}}
{{P|Parametr: {{Code|nazwa szablonu rodzica}} {{LinkPatrz|nazwa szablonu rodzica}}, jest nazwą szablonu przekazywaną od rodzica, ale nie od nie przodka, ale jest nazwą szablonu, któregoś z przodków, a w szczególności rodzica.}}
{{P|W przeciwnym wypadku jest tworzona na życzenie parametru: {{Code|zmienna z parametrami rodzica}} {{LinkPatrz|zmienna z parametrami rodzica}}.}}
| 15 = {{Code|parametry funkcji modułu pudełek}} {{Patrz|parametry funkcji modułu pudełek}} | _15 = Czy do funkcji mają wchodzić tylko parametry modułu pudełek, które są ponumerowane, jak i nie, dodatkowym numerkiem.
| 16 = {{Code|parametry podstawowe funkcji modułu pudełek}} {{Patrz|parametry podstawowe funkcji modułu pudełek}} | _16 =
{{P|Czy do funkcji mają wchodzić tylko parametry modułu pudełek, te które nie mają tego dodatkowego numerka.}}
{{P|Inaczej niż jak to było w: {{Code|parametry funkcji modułu pudełek}} {{LinkPatrz|parametry funkcji modułu pudełek}}, dzięki któremu temu, były wkładane do ramki z rodzica oby dwa te rodzaje argumentów z ich wartościami.}}
| 17 = {{Code|usuń z parametrów ramki}} {{Patrz|usuń z parametrów ramki}} | _17 = Parametry ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, przedstawiający zmienne oddzielone średnikami, które nie mają być uwzględnione przy uruchamianiu danego obiektu.
| 18 = Parametry ramek, modułu {{lpg|Lua}} {{lpr|Lua|Scribunto}}, dla funkcji: | nagłówek18 = tak
| 19 = {{Code|Funkcja}} {{Patrz|Funkcja}} | _19 = Nazwa funkcji w module, który ma wywołać w ramce ta funkcja, w przypadku, gdy parametr {{LinkPatrz|co_ma_wywolac}} ma wartość {{Tt|1}}, czyli wywołujemy funkcję: {{LinkŚródtytuł|p["Moduł"]}}, modułu ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Funkcja uruchamia szablon, moduł, czy ramkę, w zależności od drugiego parametru funkcji, z parametrami rodzica ramki bez parametrów opisanych zmienną: {{LinkPatrz|bez argumentów szablonu}}, i bez parametrów ramki wskazanych przez: {{Code|usuń z parametrów ramki}}.
Za pomocą tej funkcji możemy wielopoziomowo wywoływać funkcje przekazując parametry od najwyższego poziomu do najniższego.
Ta funkcja służy przede wszystkim do budowy szablonów, definiując też w jednym miejscu walidację błędów, dla przykładu wykorzystano ją w: {{s|Wzór}}, {{s|Wzór2}}, {{s|CentrujWzór}}, {{s|CentrujWzór2}}, i inne, czyli do uruchamiania szablonów, a uruchamianie funkcji modułu, w tym funkcji {{m|Cytuj|custom}} (przyjmująca jedynie parametry ramki, nie rodzica, to nie jest funkcja {{m|Cytuj|auto}}, by potrzebowała ona elementów rodzica) w szablonie {{s|PrzypisStrona}}.
Przykładem wywołania szablonu, która jest w szablonie: {{s|Wzór}}, w którym jest wywoływany inny szablon, tym razem silnik, tzn. {{s|Wzór/silnik}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=Wzór/silnik|pozycja numeracji=po prawej|wyrównanie={{{wyrównanie|lewy}}}|bez argumentów szablonu=pozycja numeracji|zmienna z parametrami rodzica=tak}}
</syntaxhighlight>
A przykład wywołania funkcji modułu, która jest w: {{s|PrzypisStrona}}, w którym jest wywoływany funkcja modułu {{m|Cytuj|custom}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
}}
</syntaxhighlight>
=== {{Śródtytuł|BudowaSzereguZDanych}}{{Code|BudowaSzereguZDanych}} ===
Funkcja do uruchamiania się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} tylko w module {{Code|{{ld2|Ramka}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
| 2 = {{Code|tab_lancuch}} {{Patrz|tab_lancuch}} | _2 = Pewna tablica transportu funkcji.
| 3 = Zmienne do mikroszablonów:|nagłówek3=tak
| 4 = {{Code|minimum}} {{Patrz|minimum}} | _4 = Liczba mówiąca o minimum.
| 5 = {{Code|maksimum}} {{Patrz|maksimum}} | _5 = Liczba mówiąca o maksimum.
}}
Parametry ramki funkcji tablicy transportu modułu:
{{OpisParametrów
| 1 = {{Code|akapit}} {{Patrz|akapit}} | _1 = Jeśli niepusta, to ona definiuje akapit ze znaków {{Code|\n\n}}, przeciwnym wypadku elementy łańcucha nie są łączone w akapity.
| 2 = {{Code|przecinek}} {{Patrz|przecinek}} | _2 = Jeśli niepuste, to mówi, że pomiędzy elementami powiniem być przecinek: {{Code|", "}}, został on specjalnie objęty w cudzysłowy, aby zilustrować, że po przecinku znajduje się spacja.
| 3 = {{Code|nowa linia}} {{Patrz|nowa linia}} | _3 = W przeciwieństwo do zmiennej {{LinkPatrz|akapit}}, używany zamiast niej, pisze jedną nową linię, a nie dwie, jako: {{Code|\n}}.
| 4 = {{Code|wyliczanka}} {{Patrz|wyliczanka}} | _4 = Wylicza elementy z przecinkami, stawiając przed ostatnim elementem zamiast jego wyraz wyliczania {{Code|i}}.
| 5 = {{Code|początek}} {{Patrz|początek}} | _5 = Mówi, że na początku musi znajdować się przecinek.
| 6 = {{Code|myślnik}} {{Patrz|myślnik}} | _6 = Mówi, że jeśli nie ma początku przecinka, to stawiany jest myślnik, używany zamiast {{LinkPatrz|początek}}.
| 7 = Funkcja w tym warunku zwraca ciąg znaków rozwiniętego warunku: | nagłówek7 = tak
| 8 = {{Code|warunkowe}} {{Patrz|warunkowe}} | _8 = Instrukcje wikikodu, takie jak: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}, zostaną w kodzie rozwinięte, a później ciągłe właściwe elementy wikikodu otoczone dwoma dolnymi myślnikami zostaną rozwinięte do pewnej postaci, funkcja używa do tego {{LinkŚródtytuł|p.InstrukcjeWarunkowe}}.
| 9 = {{Code|parametr}} {{Patrz|parametr}} | _9 = Używany w towarzystwie z {{LinkPatrz|warunkowe}}, mówiący że, derektywy znakowe ciągłe otoczone dwoma dolnymi myślnikami, zostaną zastąpione odpowiedmimi szablonami, w przeciwnym wypadku niepodania tej wartości lub jego pustej, wtedy te derektywy zostaną zastąpione w postaci rozwiniętej tych szablonów.
}}
Funkcja posiada też mikroszablony, które są zdefiniowane w kodzie łańcuchów {{LinkPatrz|tab_lancuch}}:
{{OpisParametrów
| 1 = {{Code|<nowiki>{{min}}</nowiki>}} | _1 = Minimalna wartość szeregu zmiennych, określana przez {{LinkPatrz|minimum}}.
| 2 = {{Code|<nowiki>{{max}}</nowiki>}} | _2 = A tutaj ich maksymalna, określana przez {{LinkPatrz|maksimum}}.
}}
Te dwie zmienne są podstawiane do uzyskanego ciągu.
Funkcja zwraca te części rozwiniętego tekstu wikikodu, jeśli podano {{LinkPatrz|warunkowe}}, co do instrukcji warunkowych, i też te bez wewnętrznych klamerek, czyli specjalne kody, czyli te otoczone z dwóch stron dolnumi myślnikami, a pozostałe część tak uzyskana jest za to nierozwinięta.
== {{Śródtytuł|p.InstrukcjeWarunkowe}}{{Code|p.InstrukcjeWarunkowe}} ==
Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
{{Tabela|klasa=wikitable tekst-centruj-td|pozycja=prawo|liczba wierszy=12|liczba kolumn=3
| nagłówek 1 = Derektywa | nagłówek 2 = Odpowiednik znakowych | nagłówek 3 = Pseudoszablon
| komórka 1_1 = __!__ | komórka 1_2 = | | komórka 1_3 = {{s|!}}
| komórka 2_1 = __!!__ | komórka 2_2 = || | komórka 2_3 = {{s|!!}}
| komórka 3_1 = __(__ | komórka 3_2 = { | komórka 3_3 = {{s|(}}
| komórka 4_1 = __((__ | komórka 4_2 = {{ | komórka 4_3 = {{s|((}}
| komórka 5_1 = __(((__ | komórka 5_2 = {{{ | komórka 5_3 = {{s|(((}}
| komórka 6_1 = __)__ | komórka 6_2 = } | komórka 6_3 = {{s|)}}
| komórka 7_1 = __))__ | komórka 7_2 = }} | komórka 7_3 = {{s|))}}
| komórka 8_1 = __)))__ | komórka 8_2 = }}} | komórka 8_3 = {{s|)))}}
| komórka 9_1 = __!(__ | komórka 9_2 = [ | komórka 9_3 = {{s|!(}}
| komórka 10_1 = __!((__ | komórka 10_2 = [[ | komórka 10_3 = {{s|!((}}
| komórka 11_1 = __)!__ | komórka 11_2 = ] | komórka 11_3 = {{s|)!}}
| komórka 12_1 = __))!__ | komórka 12_2 = ]] | komórka 12_3 = {{s|))!}}
}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|ciag}} {{Patrz|ciag}} | _1 = Podany ciąg do rozwinięcia z instrukcji warunkowych wewnątrz nie posiadający klamerek.
| 2 = {{Code|derektywy_specjalne}} {{Patrz|derektywy_specjalne}} | _2 = Używa do zastępowania specjalnych derektyw, podane po prawej stronie w ramce pływającej.
| 3 = {{Code|derektywy_parametrowe}} {{Patrz|derektywy_parametrowe}} | _3 = Czy używać pseudoszablonów zamiast ich odpowiedników znakowych.
}}
Obsługiwane instrukcje warunkowe: {{Code|{{s|#if:[^{}]*}}}}, {{Code|{{s|#ifeq:[^{}]*}}}}, {{Code|{{s|#switch:[^{}]*}}}}, {{Code|{{s|#ifexpr:[^{}]*}}}}, {{Code|{{s|#expr:[^{}]*}}}}, {{Code|{{s|#iferror:[^{}]*}}}} i {{Code|{{s|#iferror:[^{}]*}}}}.
Ta funkcja jest używana przez: {{LinkŚródtytuł|BudowaSzereguZDanych}}, poprzez: {{LinkŚródtytuł|p.Powtarzaj}}.
Przykłady użycia pośrednio przez tą ostatnią funkcję: ona jest użyta w walidacji błędów {{m|Sprawdź|Parametry}} poprzez: {{m|Ramka|Powtarzaj|...|warunkowe{{=}}tak|...}}, uruchamianą przez: {{m|Ramka|Rozwiń|...}}, na przykładzie w kodzie derektywy:
; Gdzie jest pokazane w wikikodzie definiujących szablony{{dk}}
* {{Code|__!__}} - w: {{s|Kategorie}}, ponieważ ten szablon generuje, dla tego coś w rodzaju {{s|!}}, jest wtedy nie w sposób odróźnić tego od innego tego samego elementu w instrukcjach warunkowych, czyli bezpośrednio wstawienie tego do wikikodu, normalnie powoduje to błędne działanie jego generatora, dlatego trzeba użyć właśnie to.
== Funkcje parametrów i argumentów ==
=== {{Śródtytuł|p.RozpakujArgumenty}}{{Code|p.RozpakujArgumenty}} ===
Ta funkcja jest do rozpakowywania zmiennych z podanego parametru, których zmienne są oddzieloe średnikami.
* Funkcja uruchamia się w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujArgumenty = function(zmienna_z_argumentami)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_argumentami}} | _1 = Parametr ze zmiennymi do rozpakowwania.
}}
Funkcja przyjmuje jeden parametr ze zmiennymi oddzielonych średnikami, je rozpakowuje, wyjmując z pól pomiędzy średnikami zmienne, i układa je w tablicy, która jest zwaracana jako parametr, te parametry mogą mięć mikroszablony, które sa zastępowane odpowiednikami znakowymi. Jedynym tego przykładem jest mikrofunkcja {{Code|<nowiki>{{+}}</nowiki>}}, ktora jest zamieniana na średnik.
=== {{Śródtytuł|p.PakujParametry}}{{Code|p.PakujParametry}} ===
Ta funkcja jest do pakowania tablicy, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w tablicę {{lpg|JSON}}.
* Funkcja się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja pakuje parametry tablicy {{lpg|Lua}} do tablicy: {{lpg|JSON}}, przy pomocy funkcji, którego wynik jest zwracany do tej funkcji:
<syntaxhighlight lang="lua">
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|args}} {{Patrz|args}} | _1 = Tablica {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
}}
Ten szablon nazywa parametry, jakby nienazwane w tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera) z tablicy {{lpg|Lua}} (tutaj od jedynki), do tablicy nazwanej, jak to robi się w {{lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonEncode}}, z drugim parametrem: {{Code|mw.text.JSON_PRESERVE_KEYS}} {{Patrz|mw.text.JSON_PRESERVE_KEYS}}.
=== {{Śródtytuł|p.RozpakujParametry}}{{Code|p.RozpakujParametry}} ===
Ta funkcja jest do rozpakowywania tablicy {{lpg|JSON}} w tablicę języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}
* Funkcje się uruchamia w zwykłej funkcji w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozpakowuje parametry z tablicy: {{Code|JSON}}, do tablicy {{lpg|Lua}}, przy pomocy funkcji, którego wynik jest w niej zwracany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna_z_parametrami}} {{Patrz|zmienna_z_parametrami}} | _1 = Tablica {{lpg|JSON}}.
}}
Ten szablon nazywa parametry nienazwane w tablicy {{lpg|Lua}} (tutaj od jedynki) z tablicy {{lpg|JSON}} (tutaj numerowanie jest od zera), do tablicy nienazwanej z nazwanej, jak to robi się w {{Lpr|Lua|Scribunto}}, z użyciem funkcji: {{LzLua|mw.text.jsonDecode}}, z użyciem drugiego parametru: {{LinkPatrz|mw.text.JSON_PRESERVE_KEYS}}.
== {{Śródtytuł|p["Rozwiń"]}}{{Code|p["Rozwiń"]}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon rozwija wikikod podany w zmiennej {{Code|1}}, w parametrach szablonu rodzica.
* Szablon jest użyty w szablonie: {{s|Wybrane grupy książek}}, która generuje układ wielokolumnowy układ bloków ramkowych przy pomocy funkcji: {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}},
* Szablon również jest użyty w szablonach: {{s|Osobny artykuł/silnik}}, {{s|Kategoria główna/silnik}}, {{s|Spójrz też/silnik}}, itd..
Przykład wywołania funkcji:
* {{Code|{{m|Ramka|Rozwiń|1{{=}}<wikikod>}}}} - funkcja rozwija podany wikikod podany w zmiennej {{Code|1}}.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
</syntaxhighlight>
== {{Śródtytuł|p.Log}}{{Code|p.Log}} ==
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Log = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon wysyła logi do konsoli {{Code|MediaWiki}} w postaci tekstu: ukryty pod zmienna: {{Code|log}}, i ewentualnie zwraca ten tekst, jeżeli zmienna: {{Code|wikitext}}, przyjmuje wartość niepustą, lub jest niepodana.
Przykłady użycia funkcji:
* {{Code|{{m|Ramka|Log|log{{=}}<tekst>|wikitext{{=}}tak}}}}- tutaj funkcja (ramka) wysyła do konsoli tekst ukryty pod zmienną: {{Parametr|log|<tekst>}}, i jednocześnie zwraca jej wartość.
Kod tej funkcji bibliotecznej w tym module, tzn.: {{Ld2|Ramka}}:
<syntaxhighlight lang="lua">
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
</syntaxhighlight>
== Funkcje ramki tablicy transportu ==
=== {{Śródtytuł|p.Szablon}}{{Code|p.Szablon}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|0}}, symbolizującego rozwijanie szablonu.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Szablon|Nazwa=<nazwa szablonu>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p["Moduł"]}}{{Code|p["Moduł"]}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|1}}, symbolizującego rozwijanie funkcji modułu ramki.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p["Moduł"] = function(frame)
return ParserBlokowy(frame,1);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Moduł|Nazwa=<nazwa modułu>|Funkcja=<nazwa funkcji>|...}}
</syntaxhighlight>
=== {{Śródtytuł|p.Parser}}{{Code|p.Parser}} ===
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Funkcja wywołuje inną funkcję, ale lokalną w postaci zwracanej wartości dla drugiego parametru zerowego {{Code|2}} symbolizującego rozwijanie funkcji parsera.
Definicja pełna funkcji:
<syntaxhighlight lang="lua">
p.Parser = function(frame)
return ParserBlokowy(frame,2);
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon przyjmuje te same parametry tablicy ramki {{Code|frame}}, co: {{Code|ParserBlokowy}}.
Funkcję uruchamia się w ramce szablonu, przykład:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Parser|Nazwa=<nazwa parsera>|...}}
</syntaxhighlight>
== Funkcje książkowe ==
=== {{Śródtytuł|p.Q}}{{Code|p.Q}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|Q}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
* Jego specjalne odpowiedniki to {{s|T}} i {{s|T2}}.
Funkcja uruchamia szablon o podanej nazwie w pierwszym parametrze z dodanym przedrostkiem {{Code|Książka:}} przed nazwą szablonu.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Q =function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|Q}} przyjmuje nie tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii. Szablon ten, czy też: {{s|T}}, podobnie jak poprzedni szablon, dopuszcza parametry szablonu, które uruchamiają się z nimi owy szablon (funkcja) o nazwie uzyskanej z funkcji {{m|Ramka|N}}.
Szablon {{s|Q}} parametry nienazwane większe od jeden, ale nie pierwszy parametr, jego numer zmniejsza o jeden, a inne pozostawia je w takiej formie, jakim są (parametry nazwane, które są wliczane do parametrów szablonu). W ten sposób wywołujemy szablon podany jako pierwszy parametr tego szablonu z tymi tak uzyskanymi parametrami.
==== Przykłady użycia funkcji {{s|Ramka|Q}}, a zarazem szablonu {{s|Q}} ====
* {{Code|{{s|Q|Unicode-c|wstecz{{=}}13|dalej{{=}}15}}}} →
{{OverflowWiersz|{{T|Unicode-c|wstecz=13|dalej=15}}}}
=== {{Śródtytuł|p.N}}{{Code|p.N}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|N}}, która przyjmuje jego parametry bez {{Parametr|wyspecjalizowana}}, i tak samo działa, jak on.
Funkcja przed nazwą szablonu, czy modułu, czy kategorii, zostawia wpis w postaci przedrostka: {{Code|Książka:}}. Czy zostanie dodana przed tym nazwa przestrzeni nazw, to zależy od niepodania niepustej zmiennej {{Parametr|n}}, a zmienna {{Parametr|p|1}} - to przed nim jest dodawana przestrzeń nazw szablonu {{Np|Template|link=tak}}, {{Parametr|p|2}} - modułu {{Np|Module|link=tak}} i {{Parametr|p|3}} - kategorii.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.N=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|N}}, a zarazem funkcja {{s|Ramka|N}} ze strony parametrów ramki, przyjmuje tylko jeden parametr {{Parametr|1}}, którą jest nazwa niepełna szablonu, modułu, czy kategorii.
Szablon {{Code|{{s|N|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}|n{{=}}tak}}}} przyjmuje parametry oznaczające:
* {{Code|p}}, tzn. {{Parametr|p|0}} lub niepodana, oznacza przestrzeń szablonu, {{Parametr|p|1}} przestrzeń modułu i {{Parametr|p|2}} przestrzeń kategorii.
* {{Code|n}}, gdy pusta lub niepodana oznacza pełną nazwę strony, a gdy jest niepusta, tylko nazwę strony.
==== Przykłady użycia funkcji {{m|Ramka|N}} i szablonu {{s|N}} ====
* {{Code|{{s|N|Unicode-c}}}} → {{Code|{{N|Unicode-c}}}}, {{Code|{{s|N|Unicode-c|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|n=tak}}}}
* {{Code|{{s|N|Unicode-c|p{{=}}0}}}} → {{Code|{{N|Unicode-c|p=0}}}}, {{Code|{{s|N|Unicode-c|p{{=}}0|n{{=}}tak}}}} → {{Code|{{N|Unicode-c|p=0|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1}}}}, {{Code|{{s|N|Zbiór zadań maturalnych|p{{=}}1|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych|p=1|n=tak}}}}
* {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2}}}}, {{Code|{{s|N|Zbiór zadań maturalnych/Szablony|p{{=}}2|n{{=}}tak}}}} → {{Code|{{N|Zbiór zadań maturalnych/Szablony|p=2|n=tak}}}}
=== {{Śródtytuł|p.A}}{{Code|p.A}} ===
Funkcja uruchamiana we wnętrzu szablonu {{s|A}}, która przyjmuje jego parametry, i tak samo działa, jak on.
Funkcja usuwa przedrostek {{Code|Książka:}} w nazwie szablonu, czy modułu. Gdy jest podany parametr: {{Parametr|p|tak}}, to dla przestrzeni niebędących: {{Np|Template|link=tak}}, {{Np|Module|link=tak}} i {{Np|Category|link=tak}}, jest zwracany wtedy przez nią parametr pierwszy funkcji. Dla tych wartości właśnie wyliczonych przestrzeni usuwany jest przedrostek {{Code|Książka:}}. Funkcja generuje nazwę z prestrzenią nazw.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.A=function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Szablon {{s|A}}, a zarazem funkcja: {{m|Ramka|A}}, z nazwy szablony (bez przestrzeni nazw) usuwa przedrostek {{Code|Książka:}}.
Szablon {{Code|{{s|Q|<nazwa strony>|p{{=}}{{!(}}0{{!}}1{{!}}2{{)!}}}}}} przyjmuje parametry oznaczające:
* {{Code|p}} - oznacza, którą przestrzeń ma rozwazać, dostępne są trzy wariany, jak w funkcji: {{Code|p.N}} {{LinkŚródtytuł|p.N}},
* {{Code|n}} - gdy pusta lub niepodana, to oznacza pełną nazwę strony, a gdy jest pusta, tylko nazwę strony.
==== Przykład wykorzystania szablonu {{s|A}}, a zarazem funkcji funkcji {{m|Ramka|A}} ====
* {{Code|{{s|A|{{N|Unicode-c|n=tak}}}}}} → {{Code|{{A|{{N|Unicode-c|n=tak}}}}}}, {{Code|{{s|A|{{N|Unicode-c}}|p{{=}}0}}}} → {{Code|{{A|{{N|Unicode-c}}|p=0}}}}
== Funkcje powtarzania ==
=== {{Śródtytuł|p.Powtarzaj}}{{Code|p.Powtarzaj}} ===
Funkcja służy do powtarzalnego generowania wikikodu ze składników jego kroku przy pomocy określonych zmiennych rodzica.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.Powtarzaj = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Jak w: {{LinkPatrz|frame}}.
}}
Funkcja może przyjmować tylko parametry nienazwane albo tylko nazwane, albo nienazwane i nazwane (gdy jest ustawiony parametr {{Code|różne}} {{Patrz|różne}}).
Funkcja jako podany parametr pierwszy:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|Powtarzaj|1=<wikikod>}}
</syntaxhighlight>
iteruje po podanych parametrach, jako parametry szablonu w zależności od parametrów ramki, zastępując pewne wielkości. Te wielkości to:
* {{Code|{{((}}_{{))}}}} (w nawiasach klamrowych podwójnych jest jeden dolny myślnik) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} lub {{Code|1}},
* {{Code|{{((}}__{{))}}}} (w nawiasach klamrowych podwójnych są dwa dolne myślniki) - parametr numerowany przyjmujący wartość numerowaną od więcej od {{Code|1}} albo {{Code|1}} lub ciąg pusty (wtedy tutaj dla jedynki, jeżeli zmienna: {{Code|<zmienna> 1}} lub {{Code|<zmienna>1}}, istnieje, a teraz dla ciągu pustego, jeżeli zmienna {{Code|<zmienna>}} istnieje), one są podane w zmiennych parametrach szablonach, jeżeli w nich wywołana jest ta ramka wywołującą tę funkcję.
Parametrem określającym, że brane są pod lupę parametry nazwane i nienazwane, jest zmienna {{Code|różne}} {{LinkPatrz|różne}}, która wtedy ma wskazywać na wartość niepustą.
; Najważniejsze parametry, które są to opcjonalne, to są{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} {{Patrz|start}} | _1 = Liczba, która wskazuje początek liczenia - domyślna wartość to {{Code|1}}.
| 2= {{Code|koniec}} {{Patrz|koniec}} | _2 = Liczba, która wskazuje koniec liczenia.
}}
; Parametr {{Code|dodatkowe}} {{Patrz|dodatkowe}}{{dk}}
* Te parametry nie są wliczane do maksimum parametrów nazwanych, dla jakieś podstawy razem wszystkich parametrów, są określone przez: {{Code|dodatkowe}}, która jest zestawem podstaw parametrów oddzielonych średnikami. Przykładem jego jest:
* {{Parametr|dodatkowe|<zmienna 1>;<zmienna 2>;<zmienna 3>}}
: Gdzie zamiast zmiennych {{Code|<zmienna 1>,...}} są pewne nazwy baz parametrów nazwowych bez numerka na samym końcu i ewentualnie spacji.
; Numer końca liczenia parametrów nienazwanych lub nazwanych, czy nazwanychi nienazwanych{{dk}}
* Elementy w {{Code|parametry}} {{Patrz|parametry}} mogą modyfikować odpowiednio parametry: {{Code|start}} {{LinkPatrz|start}} i {{Code|koniec}} {{LinkPatrz|koniec}}.
* Ze zmiennej {{Code|parametry}} {{LinkPatrz|parametry}} jest liczona odpowiednia zmienna {{Code|tabela}} {{LinkPatrz|tabela}} dopuzczalnych zmiennych do liczenia.
* {{P|Funkcja {{Code|Wylicz_skoncz_na_koncu}}, którego algorytm podany jest w tej funkcji, ona liczy odpowiedni koniec parametrów '''nienazwanych''' albo '''nazwanych - odpowiednich''' (bez parametrów {{Code|dodatkowe}} {{LinkPatrz|dodatkowe}}), albo maksimum parametrów '''nienazwanych''' i '''nazwanych - właściwych'''.}} {{P|W tej funkcji jest liczony koniec parametrów nienazwanych, jeżeli nie ma parametrów nazwanych w tabeli {{Code|tabela}} {{Patrz|tabela}}. A przeciwnie, jeżeli nie jest ustawiony parametr {{Code|różne}} {{LinkPatrz|różne}} nie na wartość niepustą, wtedy jest liczony parametr maksimum parametrów nazwanych, przeciwnie wtedy liczy się parametr maksimum numeracyjne parametrów numerowanych, czyli zmienną: {{Code|maksimum numeracyjne}} {{Patrz|maksimum numeracyjne}}, jeśli on ma wartość niepustą, wtedy liczy się maksimum parametrów nienazwanych, a jeżeli ona ma przeciwną wartość, to się liczy maksimum parametrów nazwanych, jak nienazwanych. Na podstawie tego mamy policzony odpowiednio taki koniec liczenia modyfikacji zwracany i policzony przez tą funkcję.}}
; Format parametru {{Parametr|parametry}}{{dk}}
* Funkcja przyjmuje ważny parametr {{Code|parametry}} dla parametrów specjalnie nazwanych. Elementy w nim są oddzielone średnikami dla każdej zmiennej z osobna, a dla danej zmiennej zmienne są przedzielone przecinkami.
* Na początku tego jest opcjonalny element naturalny wspólny dla wszystkich zmiennych oddzielonych od pozostałych elementów średnikiem, jeżeli istnieją.
* Nie licząc wspólnego elementu dla wszystkich parametrów, to dla danej zmiennej liczba maksymalna elementów podanych po kolei jest równa liczbie {{Code|5}}, oddzielonych przecinkami, dla takiego samego parametru, już natomiast średnikami dla różnych.
; Opis parametru {{Parametr|parametry}}{{dk}}
Dla danej zmiennej elementy oddzielone przecinkami piszemy w formie:
* element pierwszy, to jest parametr, jeżeli niepusty, określający, że pomiędzy podstawą elementu, a liczbą, ma być zero spacji,
* element drugi, to jest parametr, jeżeli niepusty, określający, że dla pierwszego elementu ma pisać jedynkę zamiast jedynki lub wartości pustej w zależności od istnienia takiej pierwszej zmiennej,
* element trzeci, to jest parametr, jest to liczba przesunięcia, od której ma liczyć parametr nazwany,
* element czwarty, to jest parametr określający, od jakiej liczby ma zaczynać na początku od dodatniego wskaźnika (zmiennej), brana jest liczba minimalna dodatnia, ze wszystkich takich liczb, uwzględniając element, od którego startuje liczenie,
* element piąty, to jest parametr określający, do jakiej liczby ma kończyć iterację dla danego wskaźnika (zmiennej), jako koniec liczenia brana jest liczba maksymalna dodatnia, ze wszystkich takich liczb, uwzględniając na początku policzony powyżej koniec liczenia.
Przykładem tego parametru dla danej zmiennej jest: {{Code|tak,tak,5,3,4}}, a z dodatkiem globalnego przesunięcia dla wszystkich zmiennych: {{Parametr|parametry|5;<zmienna>{{=}}tak,tak,5,3,4}}, a dla wielu zmiennych:
{{Pre|{{Parametr|parametry|5;<zmienna 1>{{=}}tak,tak,5,3,4;<zmienna 2>{{=}}tak,,10,7,9;<zmienna 3>{{=}},tak,8,9,11}}}}
: Zamiast w wartościach: {{Code|zmienna 1>}}, {{Code|<zmienna 2>}} i {{Code|<zmienna 3>}}, w których są pewne nazwy bazowe parametrów bez numerka na jej końcu, w zmiennej {{Code|parametry}} można nie podawać dalszych elementów po przecinku, jeżeli są puste lub nieważne (nic nie zmieniają) lub można nie podać nic po znaku {{Code|{{=}}}} (a w tym przypadku nawet można nie podawać nawet tego znaku, gdy nic nie ma po równa się) dla danego problemu funkcji.
; Wikikod pojedynczego kroku liczenia całości wygenerowanego wikikodu dla wszystkich zmiennych{{dk}}
* Parametrem {{Parametr|1|<wikikod>}}, którego wartość, jest wikikodem do iteracji, gdy ten parametr nie jest podany, to funkcja zwraca wartość {{Code|(brak parametru do analizy)}}, a gdy ten parametr jednak jest podany, ale jest ciągiem pustym, wtedy wartość zwracana jest {{Code|(parametr do analizy pusty)}}.
; Parametr {{Parametr|start}}, wartość początkowa{{dk}}
* Gdy parametr {{Code|tonumber(frame.args["start"]) or 1}}, jest równy zero, funkcja zwraca błąd: {{Code|(początek jest ustawiony na zero)}}.
; Brak parametrów szablonu{{dk}}
* A jeżeli zatem żaden parametr nie jest podany, to można użyć argumentu {{Code|niepodane}}, która wygeneruje jeden krok, tylko jeden, iteracji.
; Parametr {{Parametr|nic}}{{dk}}
* Gdy {{Code|nic}} przyjmuje wartość, i gdy pomijamy parametr, lub on przyjmuje wartość pustą, wtedy a funkcja nie może wygenerować żadnego kroku iteracji, to wtedy jest zwracana wartość parametru {{Code|nic}} lub ciąg pusty.
; Inne parametry{{dk}}
* Parametr {{Code|po kolei}} {{Patrz|po kolei}} niepusty powoduje, że zbieranie parametrów odbywa się od pewnego miejsca i idzie w sposób ciągły do góry, co jeden, aż do pewnej granicy.
* Parametr {{Code|zaznacz}} {{Patrz|zaznacz}} liczby oddzielone średnikami, które przy parametrach nazwanych o pewnych numerach i numerkach nie mają być uwzględnione przy niepustym parametrze {{Code|po kolei}} {{LinkPatrz|po kolei}}, a przy jego przeciwnej wartości za to mają być użyte.
* Parametr {{Code|wytnij}} wycina parametry puste i niepodane, a {{Code|wytnij puste}} tylko puste, ale {{Code|nie wytnij nazwane}} nie wycina parametrów nazwanych.
* Znacznik {{Code|_i}} {{Patrz|_i}} określa symbol, jak ona może być używana do zastępowania zmiennych typu {{Code|<nowiki>{{((}}_i{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}_i_i{{))}}</nowiki>}}, wtedy ich się używa zamiast: {{Code|<nowiki>{{((}}_{{))}}</nowiki>}} i {{Code|<nowiki>{{((}}__{{))}}</nowiki>}}. Domyślną wartością {{Code|_i}} jest {{Code|_}}.
; W wyniku iteracji otrzymamy tablicę ciągów łańcuchów z wikikodami, wtedy ta funkcja używa do tego liczenia{{dk}}
* Jest to funkcja {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* Wywołanie funkcji jest takie:
{{Pre|lancuch_znakow {{=}} BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);}}
; Parametry funkcji {{LinkŚródtytuł|BudowaSzereguZDanych}}.
* One są wraz z jego parametrami podane w postaci jego parametrów ramki {{Code|frame}}, które jednocześnie są parametrami {{LinkŚródtytuł|p.Powtarzaj}}, używa się je do łączenia w pewien określony zbiór uporządkowanych ciągów do jednego łańcucha, który jest zwracany bezpośrednio przez tę funkcję bez rozwijania przy parametrze {{Parametr|nie rozwiń|tak}}, a gdy on nie przyjmuje wartości niepustej, w takim razie on jest rozwijany funkcją {{LzLua|frame:preprocess}}, i jest zwracany jako wartość omawianej funkcji.
; Przykłady{{dk}}
* Funkcja jest używana np. w silnikach szablonów, np.: {{s|Osobny artykuł/silnik}} silnik szablonu {{s|Osobny artykuł}}, jak i do niego podobnych szablonów, wykorzystujących ten właśnie silnik. Również przykładem jest: {{s|Kategoria główna/silnik}} szablonu {{s|Kategoria główna}} i innych, którego jest on silnikiem. A nawet podobnie jest z: {{s|Spójrz też/silnik}} szablonu {{s|Spójrz też}}. Podobnie się definiuje inny szablon, który drukuje nierozwinięty wikikod ze składników przy pomocy parametrów, który po włączeniu do większego kodu, dopiero wtedy jest rozwijany, przykładem tego jest: {{s|Wybrane grupy książek}}.
=== {{Śródtytuł|p.PowtarzajOdDo}}{{Code|p.PowtarzajOdDo}} ===
Funkcja służy do iteracji, od jakieś liczby do jakieś innej, podanego wikikodu dla danego kroku {{Code|1}}, iterując to, co krok określony zmienną: {{Code|krok}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.PowtarzajOdDo=function(frame)...end;
</syntaxhighlight>
; Funkcja tworzy wikikod do rozwinięcia, np. przez funkcję{{dk}} {{nobold|{{Code|{{m|Ramka|Rozwiń}}}}}}, lub go rozwija na końcu, na podstawie kolejnych kroków iteracji{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Początek iteracji dokonywany przez ta funkcję.
| 2 = {{Code|koniec}} | _2 = Koniec iteracji dokonywany przez ta funkcję.
| 3 = {{Code|krok}} | _3 = Krok iteracji, co który numer ma iterować.
| 4 = {{Code|łącznik}} |_4 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 5 = {{Code|nowa linia}} |_5 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 6 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek6=tak
| 7 = {{Code|przeskok}} | _7 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 8 = Inne:| nagłówek8=tak
| 9 = {{Code|nie rozwiń}} | _9 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 10 = {{Code|1}} | _10 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
}}
; Przykładowym kodem jest kod, którego wikikod znajduje się szablonie w silniku{{dk}} {{nobold|{{s|Chem/silnik}}}}, w tym nadrzędnym{{dk}} {{nobold|{{s|Chem}}}}, przykłady jego działania{{dk}}
* {{Code|{{s|Chem|C|n|H|2n + 2}}}} → {{Tt|{{Chem|C|n|H|2n + 2}}}}
* {{Code|{{s|Chem|H|3|O|+}}}} → {{Tt|{{Chem|H|3|O|+}}}}
* {{Code|{{s|Chem|SO|4|2-}}}} → {{Tt|{{Chem|SO|4|2-}}}}
* {{Code|{{s|Chem|4|He}}}} → {{Tt|{{Chem|4|He}}}}
* {{Code|{{s|Chem|4|2|He}}}} → {{Tt|{{Chem|4|2|He}}}}
Na podstawie tej funkcji dokonano w szablonie {{s|Chem}}, że ona może przyjmować dowolną liczbę parametrów numerowanych.
=== {{Śródtytuł|p["PrzetwarzajIterującCiąg"]}}{{Code|p["PrzetwarzajIterującCiąg"]}} ===
Funkcja do iteracji wikikodu po parametrach oddzielonych średniami w parametrze ramki {{Code|ciąg}}.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PrzetwarzajIterującCiąg"]=function(frame)...end;
</syntaxhighlight>
; Funkcja do iteracji ciągu z wikikodem i pewnymi zmiennymi{{dk}}
{{OpisParametrów
| 1 = {{Code|ciąg}} | _1 = Lista parametrów oddzielonych średnikami, z którego jest tworzona tablica z elementów pomiędzy srednikami.
| 2 = {{Code|łącznik}} | _2 = Szereg łączących elementy z wikikodem, a jak nie ma tego elementu podanego, to czy ma być oddzielony nową linią na podstawie zmiennej {{Code|nowa linia}}, a jeżeli to nawet nie jest podane, to podany ciąg jest łączony poprzez szereg pusty.
| 3 = {{Code|nowa linia}} | _3 = Szereg mówiący, czy ma łączyć szeregi kodem nową linią, jeżeli {{Code|łącznik}} nie jest podany.
| 4 = Ta zmienna w każdym kroku iteracji zależna jest od: {{Code|<nowiki>{{_}}</nowiki>}} i {{Code|<nowiki>{{ciąg}}</nowiki>}}, mówiąca o numerze jego kroku:|nagłówek4=tak
| 5 = {{Code|przeskok}} | _5 = Dodatkowy krok, nie licząc jedynki, jak ma iterować ciąg.
| 6 = Inne: |nagłówek6=tak
| 7 = {{Code|nie rozwiń}} | _7 = Niepusta wartość, wtedy kod nie jest rozwijany, jeśli uzyskany kod nie jest rozwijany, w końcowym etapie można go rozwinąć przy pomocy funkcji {{m|Ramka|Rozwiń}}.
| 8 = {{Code|1}} | _8 = Aktualny wikikod ze zmiennymi poniżej przedstawiający aktualny krok iteracji, z którego dla każdego elementu te ciągi są łaczone za pomocą łącznika.
}}
; Zmienne w kodzie{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}} (jeżeli podana), podstawiane w nich pewne zmienne, które zamiast nich pewne liczby coś symbolizujące{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{start}}</nowiki>}} | _1 = Przyjmuje wartość {{Tt|1}}.
| 2 = {{Code|<nowiki>{{koniec}}</nowiki>}} | _2 = Przyjmuje wartość, który jest liczbą elementów w ciągu oddzielonych średnikami w zmiennej {{Code|ciąg}}.
| 3 = {{Code|<nowiki>{{krok}}</nowiki>}} | _3 = Przyjmuje wartość {{Tt|1}}.
}}
; Zmienne inne za każdym krokiem iteracji, z których korzystają{{dk}} {{nobold|{{Code|1}}}} i {{nobold|{{Code|przeskok}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|<nowiki>{{_}}</nowiki>}} | _1 = Symbol, za którą jest podstawiana liczba przyjmująca aktualną wartość numeru iteracji.
| 2 = {{Code|<nowiki>{{ciąg}}</nowiki>}} | _2 = Jest to wartość pojedynczego elementu w {{Code|ciąg}}.
}}
Przykładowym kodem jest kod, którego część znajduje się tutaj, z szablonu {{s|Status}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Ramka|PrzetwarzajIterującCiąg
| ciąg = {{{junior}}}
| przeskok = 0
| 1 = {{((}}#if:{{((}}ciąg{{))}}
{{!}}{{((}}#invoke:Ramka{{!}}Szablon
{{!}}parametry funkcji modułu pudełek{{=}}tak
{{!}}Nazwa{{=}}Kategoria{{!}}Wikijunior:{{((}}ucfirst:{{((}}ciąg{{))}}{{))}}
{{))}}
{{))}}
}}
</syntaxhighlight>
Wartością w tym przypadku zmiennej szablonowej {{Code|<nowiki>{{{junior}}}</nowiki>}} jest kolejny parametr, oddzielonych od pozastałych średniami, z: {{Parametr|junior|Owoce;Warzywa}}. Ta funkcja najpierw iteruje po wartości {{Code|Owoce}}, a później po {{Code|Warzywa}}.
Powyższy kod, uzyskany w ten sposób wikikod jest rozwijany za pomocą funkcji systemowej {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{LzLua|frame:preprocess}}, jeśli: {{Code|nie rozwiń}}, nie przybiera wartości niepustej.
=== {{Śródtytuł|p["PowtarzajWedług"]}}{{Code|p["PowtarzajWedług"]}} ===
Funkcja wyszukująca elementy według wzoru począwszy od numeru, określonego przez {{Code|start}}, aż do zakończenia danych kolenych sprawdzania od tej liczby, czy taka strona istnieje, numerek jest określony przez pewien wikikod, określony przez {{Code|<nowiki>{{_}}</nowiki>}}, który musi być podany we wzorze {{Code|wzor}}. Ona w ten sposób dla istniejących stron ustawia pewne łańcuchy, które są łączone znakami {{Code|", "}}, a na końcu samym {{Code|" i "}}.
Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PowtarzajWedług"] = function(frame)...end;
</syntaxhighlight>
; Funkcja wyszukuje, ile jest stron o danym wzorze, np.dla stron o podstawie strony{{dk}} {{nobold|„{{Ns:Template}}{{dk}}Polecane książki/”}}, a oto przykład{{dk}}{{nobold|{{Parametr|wzór|{{Ns:Template}}{{dk}}Polecane książki/{{((}}_{{))}}}}}}{{dk}}
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero:|nagłówek2=tak
| 3 = {{Code|wzór}} | _3 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Lista wybranych książek}}, która po wywołaniu wypluwa wynik:
* Szablon wypluwający listę stron według wzoru w postaci tekstu:
** {{Code|{{s|Lista wybranych książek|Polecane książki}}}} → {{Tt|{{Lista wybranych książek|Polecane książki}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca}}}}
* Szablon wypluwający listę stron według wzoru w postaci linków:
** {{Code|{{s|Lista wybranych książek|Polecane książki|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Polecane książki|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Nowe podręczniki miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Nowe podręczniki miesiąca|link=tak}}}}
** {{Code|{{s|Lista wybranych książek|Wyróżnienia książek miesiąca|link{{=}}tak}}}} → {{Tt|{{Lista wybranych książek|Wyróżnienia książek miesiąca|link=tak}}}}
== {{Śródtytuł|p["LiczbaPrawychUkośników"]}}{{Code|p["LiczbaPrawychUkośników"]}} ==
Funkcja liczy, ile jest prawych ukośników w adresie strony podany jako pierwszy parametr ramki.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaPrawychUkośników"] = function(frame)...end;
</syntaxhighlight>
Szablon wyszukuje liczbę prawych ukośników w wielopoziomowym adresie strony.
Parametry funkcji:
{{OpisParametrów
| 1 = Jeżeli ten adres nie zawiera tych ukośników, to funkcja zwraca wartość {{Tt|0}}:|nagłówek1=tak
| 2 = {{Code|1}} | _2 = Wielopoziomowy adres z ewentualnie prawymi ukośnikami.
}}
=== Przykład użycia ===
* {{Code|{{m|Ramka|LiczbaPrawychUkośników|1{{=}}Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}} → {{Tt|{{#invoke:Ramka|LiczbaPrawychUkośników|1=Podstawia/Poziom_1/Poziom_2/Poziom_3/Poziom_4/Poziom_5}}}}
== {{Śródtytuł|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}}{{Code|p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]}} ==
Funkcja liczy maksymalny numer kolejnej strony liczonej według wzoru {{Code|wzor}}, musi być we wzorze podany element {{Code|<nowiki>{{_}}</nowiki>}}, aby mógł to robić.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)...end;
</syntaxhighlight>
Funkcja wyszukuje, ile jest stron o danym wzorze, np. dla stron o podstawie „{{Ns:Template}}:Polecane książki/”, czyli dla stron o ogólnym wzorze: {{Parametr|wzór|{{Ns:Template}}:Polecane książki/{{((}}_{{))}}}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|start}} | _1 = Od jakiej liczby ma liczyć strony (domyślną wartością jest {{Code|1}}, od której zaczyna się liczenie stron o podany wzorze numeracyjnym).
| 2 = {{Code|wzór}} | _2 = Wzór według tego, co ma sprawdzając, czy one pasują do niego.
}}
Parametr {{Code|wzór}} ma w sobie {{font|color=blue|<nowiki>{{_}}</nowiki>}}, za którą podstawiany jest numer w postaci liczby naturalnej innej niż zero.
=== Przykłady użycia ===
Przykład z tą funkcją znajduje się w kodzie w szablonie: {{s|Liczba list wybranych książek}}, która po wywołaniu wypluwa wynik:
* {{Code|{{s|Liczba list wybranych książek|Polecane książki}}}} → {{Tt|{{Liczba list wybranych książek|Polecane książki}}}}
* {{Code|{{s|Liczba list wybranych książek|Nowe podręczniki miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Nowe podręczniki miesiąca}}}}
* {{Code|{{s|Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}} → {{Tt|{{Liczba list wybranych książek|Wyróżnienia książek miesiąca}}}}
== Parametry odpowiednikowych zmiennych ==
=== {{Śródtytuł|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}}{{Code|p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy minimalny numer takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)...end;
</syntaxhighlight>
Szablon szuka minimalny numer wśród zmiennych szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa parametru numerowanego liczbami lub ciągiem pustym.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tego numeru.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych}}.
=== {{Śródtytuł|p.IleJestTakichOdpowiednikowychZmiennych}}{{Code|p.IleJestTakichOdpowiednikowychZmiennych}} ===
Zmienna może być napisana w postaci zmiennej nienazwanej lub nazwanej, zmienną {{Code|zmienna}} (to musi być bez numerka) z numerkiem na końcu. Funkcja liczy ile jest takich zmiennych.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)...end;
</syntaxhighlight>
Funkcja szuka wśród parametrów szablonu, o pewnej podstawie, tego numerowanego, o schemacie: {{Code|<zmienna>(%d*)}}, ile jest takich zmiennych, o tych numerkach, w parametrach szablonu.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zmienna}} | _1 = Podstawa nazwowa parametru numerowanego.
| 2 = {{Code|numerowane}} | _2 = Czy ma wliczać parametry numerowane do tej liczby.
}}
Szablon przekształca wartość parametru {{Code|zmienna}} do czystego tekstu, względem wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Parametry: {{Code|zmienna}} i {{Code|numerowane}}, to parametry ramki.
==== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ====
* Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych}}.
== {{Śródtytuł|p["Parametr w tablicy nazw"]}}{{Code|p["Parametr w tablicy nazw"]}} ==
Funkcja bada, czy jest taki parametr {{Code|pozycja}} w tablicy nazw określonej zmienną {{Code|parametry}}, której elementy są oddzielone średnikami.
* Funkcję uruchamia się w ramce jako dziecko w jakimś szablonie rodzicu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Parametr w tablicy nazw"]=function(frame)...end;
</syntaxhighlight>
Funkcja wywoływana w postaci ramki szuka parametru w tablicy podanych parametrów.
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametry}} | _1 = Lista parametrów oddzielonych średnikiem.
| 2 = {{Code|pozycja}} | _2 = Szukany parametr w tablicy argumentów.
| 3 = {{Code|od dużej}} | _3 = Czy parametr: {{Code|pozycja}}, i elementy listy: {{Code|parametry}}, mają być zamieniane od dużej litery.
}}
Funkcja, jeżeli wyszukała w tej tablicy parametr (pozycję) zwraca wartość {{Code|tak}}, w przeciwnym wypadku zwraca {{Code|nil}}, a to ostatnie jest to wartość języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, która po transformacji na wikikod jest zamieniana na ciąg pusty, więc ona nadaje się do instrukcji warunkowych.
==== Przykład wywołania ramki z tą funkcją na stronie opisu szablonu ====
* Popatrz na wywołania tej funkcji w ramce, {{lpg|Lua}} w {{lpr|Scribunto}}, czyli: {{s|Wikibooks/Przykład/Ramka/Parametr w tablicy nazw}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6gcb2bicbjiocy3jim2egf3z954a888
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I
4
63918
558935
556252
2026-10-08T11:43:49Z
Persino
2851
/* {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} */
558935
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.SzukanieNaPodstawieWzoru}}{{Code|p.SzukanieNaPodstawieWzoru}} ==
Funkcja do przeszukiwania ciągu: {{Code|tekst}} {{LinkPatrz|tekst}}, od znaku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, według wzoru {{Code|wzor}} {{LinkPatrz|wzor}}.
Funkcja umożliwa ustawienie trybu znajdowania ciągów: {{Code|jak}} {{LinkPatrz|jak}}, który przyjmuje wartości logiczne lub wartość nilową albo tej wartości można nie podawać, bo ostatni parametr. Można przeszukiwać ciąg tekstowy od tyłu przy wartości odpowiadającej prawdziwej, czyli parametr: {{Code|czy_od_tylu}} {{LinkPatrz|czy_od_tylu}}, przy przeciwnej wartości ono przeszukuje podciąg od natomiast do przodu.
Funkcja zwraca dwie pierwsze liczby oznaczające początek i koniec dopasowania według wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, i co najwyżej dziewięć dalszych elementów przychwytywanych przez niego.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = Tekst do przeszukania według wzoru.
| 2 = {{Code|wzor}} {{Patrz|wzor}} | _2 = Wzor do przeszukiwania tekstu.
| 3 = Zmienne oznaczające numer znaku, w tekście {{LinkPatrz|tekst}}:|nagłówek3=tak
| 4 = {{Code|liczba_od}} {{Patrz|liczba_od}} | _4 = Od którego ma być przeszukiwany ciąg.
| 5 = {{Code|liczba_do}} {{Patrz|liczba_do}} | _5 = Do którego ma być przeszukiwany ciąg.
| 6 = Pozostałe zmienne: | nagłówek6=tak
| 7 = {{Code|czy_od_tylu}} {{Patrz|czy_od_tylu}} | _7 = Czy przeszukiwanie ma się odbyć od tyłu, gdy to przyjmuje odpowiadającej prawdziwości, to wyszukiwanie ciągu tekstowego: {{Code|tekst}} {{LinkPatrz|tekst}}, ma się mieścić najbliżej odstatniego znaku: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a jeśli przyjmuje on wartość przeciwną, to najbliżej początku: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, ale musi mieścić się we wskazanym przedziale, bo przeciwnie funkcja zrzuca wartość nilową, jeśli wyszukany ciąg nie składa się z jednego znaku, a jeśli tak, to wyszukiwanie odbywa się znak po znaku, ale też w tym zakresie, ale też musi być to spełnione, jak dla wwielu znaku.
| 8 = {{Code|jak}} {{Patrz|jak}} | _8 = Gdy to odpowiada prawdziwości, to wyszukiwanie, co najmniej ma się odbywać znak po znaku, gdy posiada przeciwną wartość, to dla wyszukiwanych tekstów niejednoznakowych, następne wyszukanie jest od ostatniego znaku poprzedniego wyszukania, a gdy jest jednoznakowy, to od następnego.
}}
Jest to ogólna funkcja do znajdowania podciągów znaków, używa funkcji: {{LzLua|mw.ustring.find}} (zwracająca wartości, tzn. początek i koniec dopasowania, dalej wartości przechwytywane, lub {{Code|nil}}, według podanego wzoru).
Przypadku wyszukiwania od przodu musi zachodzi wniosek: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|≤}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, a od tyłu: {{Code|liczba_od}} {{LinkPatrz|liczba_od}} {{Code|≥}} {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, w innych przypadkach, gdyby ten warunek nie był spełniony, to ta funkcja zwraca wartość nilową.
Dopasowanie do przodu, nie jest uruchamiane w żadnej petli, jeżeli to dopasowanie nie znalazło się w dozwolonych granicach dopasowania, to funkcja zwraca wartość {{Code|nil}}, w przypadku przeciwnym to ona zrzuca wartości przez nią zwrócone, tzn. przez funkcję używaną.
W przypadku wyszukiwania od tyłu funkcja znajduje najbliższe dopasowanie najbliższe znaku o numerze: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, czyli równe ostatniemu takiemu dopasowaniu. To dopasowania jest uruchamiane w pętli nieskończonej, która jest przerywana, gdy funkcja nie znalazła zadnego dalszego znaku, lub uzyskano dopasowanie, którego numer znaku końcowego ciągu w podciągu, jest większy niż {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Funkcja zwraca ostatnie dopasowanie, to znaczy wartości zwrócone przez funkcję korzystaną, spełniającą nasz przedział, jeżeli byłaby taka, a jeśli nie znalazła takiego, to ona zwraca wynik {{Code|nil}}.
== {{Śródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii}}{{Code|p.SzukanieNaPodstawieWzoruElementuLinii}} ==
Ta funkcja robi dokładnie to samo, co: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru}} {{Patrz|p.SzukanieNaPodstawieWzoru}}, która dotyczy przeszukiwanego tekstu, tylko z tym wyjątkiem, że funkcja w nagłówku służy do przeszukiwania każdej linii, niezależnie jak została umiejscowiona, czyli ta funkcja zwraca podobne parametry, co: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}.
Do wzoru: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, na końce niego, dla linii charakteryzujcych właśnie nią, zostają dodane elementu początku i końca linii, czyli znaki ze zbioru: {{Code|<nowiki>[^$\n]</nowiki>}} {{Patrz|elementy końca linii}}, w ten sposób jest tworzony wzor: {{Code|wzor}} {{LinkPatrz|wzor}}, na podstawie: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, w odniesieniu do dowolnej linii, by później można było go wykorzystać we funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. Wzor: {{Code|wzor_linia}} {{LinkPatrz|wzor_linia}}, nie powinien zawierać w sobie znaków: {{LinkPatrz|elementy końca linii}}, bo inaczej byśmy przeszukiwali wiele kolejnych linii, ale też tak można.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Są takie same parametry jak w: {{LinkZobaczTeż|Parametry-SzukanieNaPodstawieWzoru}}, oprócz parametru: {{Code|jak}} {{LinkPatrz|jak}}, a zamiast wzoru: {{Code|wzor}} {{LinkPatrz|wzor}}, jest: {{Code|wzor_linia}} {{Patrz|wzor_linia}}, dla wnętrza (zawartości) linii.| komórka1=tak
}}
Zwracane parametry:
{{OpisParametrów
| 1 = Funkcja zwraca parametry uzyskane z funkcji: {{LinkPatrz|p.SzukanieNaPodstawieWzoru}}. | komórka1 = tak
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
11yggh1o9x55waxtubsi7ch2rcr5gx9
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy
4
63923
558898
558520
2026-10-08T04:11:30Z
Persino
2851
/* Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu */
558898
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki'''.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry tabele potrzebne przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej ksiązki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
h2e5pfnb6jcghneepqdyq9ucbom2b2z
558899
558898
2026-10-08T04:13:39Z
Persino
2851
/* Spis treści */
558899
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki'''.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry tabele potrzebne przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej książki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligentnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
j1jqqkzrcbh6w72yhvfacug4ujupzal
558900
558899
2026-10-08T04:21:01Z
Persino
2851
/* Spis treści */
558900
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki'''.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry tabele potrzebne przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej książki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania (spisowych), czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligentnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4f0o0smp86lxgkwtulrmuphacq14iof
558901
558900
2026-10-08T04:54:55Z
Persino
2851
/* Parametry zakodowanego spisu */
558901
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', artykułu spisu treści.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręczniku, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry tabele potrzebne przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej książki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania (spisowych), czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligentnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
d4515gdc76zttghd0i8x6aj002gbik8
558902
558901
2026-10-08T05:16:05Z
Persino
2851
/* Elementy złożone z rodzaju kodu i jego numeru */
558902
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', artykułu spisu treści.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręczniku, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry tabele potrzebne przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej książki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania (spisowych), czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligentnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rmc0rk5iqb40pviu0nokjxsld1jn24t
558903
558902
2026-10-08T05:18:06Z
Persino
2851
/* Parametry tekstu */
558903
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego. Jest ona uzyskana z: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', artykułu spisu treści.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręczniku, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry tabele potrzebne przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej książki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania (spisowych), czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligentnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
iyw7lhnvzssjufhtrexmrlg46muisbt
558904
558903
2026-10-08T05:19:01Z
Persino
2851
/* Parametry tekstu */
558904
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego. Jest ona uzyskana z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', artykułu spisu treści.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręczniku, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry tabele potrzebne przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej książki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania (spisowych), czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligentnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
c906oxa9568kpa22pm8dvluv273zpdw
558905
558904
2026-10-08T05:34:53Z
Persino
2851
/* Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu */
558905
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego. Jest ona uzyskana z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', artykułu spisu treści.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręczniku, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry tabele potrzebne przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe, a gdy transformacja już wcześniej została ta dokonana, to korzystamy z tłumaczenia zawartego w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej książki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania (spisowych), czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligentnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
aqwwixl2ipvx852i8gxswroqq27ke4x
558908
558905
2026-10-08T07:30:57Z
Persino
2851
/* Parametry zakodowanego spisu */
558908
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego. Jest ona uzyskana z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', artykułu spisu treści.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręczniku, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry, czyli tabele potrzebne, używane, przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, do szybszego analizowania linków, nie licząc: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe, a gdy transformacja już wcześniej została ta dokonana, to korzystamy z tłumaczenia zawartego w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej książki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania (spisowych), czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligentnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
drmvco3d1i1k6na8tx0epynla9v8jmz
558909
558908
2026-10-08T07:35:33Z
Persino
2851
/* Parametry zakodowanego spisu */
558909
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego. Jest ona uzyskana z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', artykułu spisu treści.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręczniku, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry, czyli tabele potrzebne, używane, przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, do szybszego analizowania linków, nie licząc: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, który natomiast jest użyty do tych samych linków, bez ponownego jego liczenia, co przyszybsza pracę tej funkcji, a ta poniżej ona jest użyta do pierwszego liczenia linkowego, ale w pewnym stopniu też jest to powtarzalne, ale nie do końca: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe, a gdy transformacja już wcześniej została ta dokonana, to korzystamy z tłumaczenia zawartego w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej książki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania (spisowych), czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligentnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4nvdlaxlzziac4swifvj7npv38ij2p9
558910
558909
2026-10-08T07:37:14Z
Persino
2851
/* Parametry zakodowanego spisu */
558910
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące sciśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
Niektóre funkcje w tym module: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, mają ogólne zastosowanie, a jeszcze inne, żadnego, a te można jedynie stosować w funkcji: {{Code|{{sr|#p.AnalizaSpisuRzeczy|p=StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}}}, tam te mają tylko jedynie one sens.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
{{OpisParametrów
| 1 = {{Code|linia}} {{Patrz|linia}} | _1 = Linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego. Jest ona uzyskana z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
| 2 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _2 = Przeszukiwany tekst, całości zakodowanego artykułu.
}}
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Rodzaj kodu w bazie danych zakodowanego tekstu.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer kodu w danego rodzaju.
}}
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
{{OpisParametrów
| 1 = {{Code|szablon}} {{Patrz|szablon}} | _1 = Element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = Kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', artykułu spisu treści.
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści w podręczniku, jego wartością może być wartość pusta.
| 3 = {{Code|pelna_nazwa_spisu_tresci}} {{Patrz|pelna_nazwa_spisu_tresci}} | _3 = Uchwyt do bazy kodowania zakodowanego tekstu, jeśli: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, nie istnieje.
| 4 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} | _4 = Nazwa spisu treści w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}. Dla przestrzeni nazw: {{Np|(main)|link=tak}}, jest ona z dwukropkiem na początku. Tak jak się pisze wywołania szablonowe, do uruchomienia, dla elementów w różnych przestrzeniach nazw, aby po wywołaniu było to, co chcemy.
| 5 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _5 = Tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}.
| 6 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _6 = Tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji.
| 7 = Parametry, czyli tabele potrzebne, używane, przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, do szybszego analizowania linków, nie licząc: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, który natomiast jest użyty do tych samych linków, bez ponownego jego liczenia, co przyszybsza pracę tej funkcji, a ta poniżej ona jest użyta do pierwszego liczenia linkowego, ale w pewnym stopniu też jest to powtarzalne, ale nie do końca, bo to nie jest do końca to samo, co poprzednie policzone odsyłacze: | nagłówek7 = tak
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _8 = Tablica nazw spisu przekierowaniowego.
}}
==== Kiedy stosować tabele bazy i parametrów kodowania zakodowanego tekstu ====
{{Śródtekst|uchwyt=parametry-baza_danych_kodowania_artykułu|tekst=
Zmienna: {{Code|pelna_nazwa_spisu_tresci}} {{LinkPatrz|pelna_nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy}}, jest to uchwyt do bazy danych kodowania tekstu, gdyby nie podano parametru: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a argument: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia adresu względnego na bezwzględny nazwy szablonu w postaci szablonowej, tak jak się pisze wywołania szablonowe, a gdy transformacja już wcześniej została ta dokonana, to korzystamy z tłumaczenia zawartego w: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
}}
== Spis treści ==
Poszczególne moduły opisują, dla przejrzystości podzielone na nie, funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony w poszczególnych tomach, to są dokumentacje ich.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - Szukania według wzoru ===
Funkcje do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzorze wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - Czy dany element obiekt jest linkiem do artykułu danej książki ===
Funkcje do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami linkowymi spisu treści podręcznika, czy nie, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania (spisowych), czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligentnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - Parsowanie spisu treści, czy rzeczy, rozdziału ===
Funkcje do wyszukiwania napisów wprowadzenia tekstu, przede wszystkim zerowych, ale też można sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - Znajdowanie najbliższego rozdziału ===
Funkcje wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - Analiza poszczególnych sekcji ===
Funkcje dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, określa warunki znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - Funkcje korygowania spisu rzeczy ===
Funkcje do korygowania pozycji końca spisu treści wydzielonej z tekstu zakodowanego treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), jeśli on istnieje, lub usuwania pewnych elementów z wydzielonego z właściwego spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane.
=== {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} - Funkcja do wydzielania z tekstu artykułu przetworzonego, właściwej jej części spisu ===
Funkcje do wydzielania z zakodowanego spisu treści, jego właściwego, aby dało się dalej łatwo go podzielić na nagłówki i ich teksty rozdziałów (bez nagłówka). Robimy to dla każdego spisu danej książki.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
33tm5ryyb84ma3ra14a7rq86e9xd3ne