SICM · Yr ail argraffiad
Atodiad: Ein nodiant
Dylai o leiaf ddau berson ddeall nodiant digonol, a gall un ohonynt fod yr awdur.
Abdus Salam (1950).
Mabwysiadwn nodiant mathemategol ffwythiannol sy'n agos at yr un a ddefnyddir gan Spivak yn ei Calculus on Manifolds [40]. Mae defnyddio nodiant ffwythiannol yn osgoi llawer o amwyseddau nodiant mathemategol traddodiadol; amwyseddau nodiant traddodiadol a all rwystro rhesymu eglur mewn mecaneg glasurol. Mae nodiant ffwythiannol yn gwahaniaethu'n ofalus rhwng y ffwythiant a gwerth y ffwythiant wrth ei gymhwyso i argiau penodol. Mewn nodiant ffwythiannol mae mynegiadau mathemategol yn ddiamwys ac yn hunangynhwysol.
Mabwysiadwn rifyddeg generig lle estynnir y gweithrediadau rhifyddol sylfaenol, megis adio a lluosi, i amrywiaeth eang o fathau mathemategol. Felly, er enghraifft, gellir cymhwyso'r gweithredydd adio + i rifau, twpledi o rifau, matricsau, ffwythiannau, ac ati. Mae rhifyddeg generig yn ffurfioli'r arfer anffurfiol cyffredin a ddefnyddir i drin gwrthrychau mathemategol.
Yn aml rydym am drin meintiau cyfanredol, megis casgliad holl gyfesurynnau petryal casgliad o ronynnau, heb drin y rhannau cydrannol yn eglur. Mae rhifyddeg tensorau yn darparu ffordd draddodiadol o drin gwrthrychau cyfanredol: mae mynegrifau yn labelu'r rhannau; cyflwynir confensiynau, megis y confensiwn symio, i drin y mynegrifau. Cyflwynwn rifyddeg twpledi fel ffordd amgen o drin meintiau cyfanredol sydd fel arfer yn caniatáu inni osgoi labelu'r rhannau â mynegrifau. Mae rhifyddeg twpledi wedi'i hysbrydoli gan rifyddeg tensorau ond mae'n fwy cyffredinol: nid oes rhaid i holl gydrannau twpled fod o'r un maint na'r un math.
Mae'r nodiant mathemategol mewn cyfatebiaeth un-i-un â mynegiadau'r iaith gyfrifiadurol Scheme [24]. Mae Scheme yn seiliedig ar galcwlws λ [13] ac yn cefnogi trin ffwythiannau yn uniongyrchol. Ychwanegwn nodweddion symbolaidd, rhifiadol, a generig at Scheme i gefnogi ein cymwysiadau. Am gyflwyniad syml i Scheme, gweler yr atodiad Scheme. Mae'r gyfatebiaeth rhwng y nodiant mathemategol a Scheme yn mynnu bod mynegiadau mathemategol yn ddiamwys ac yn hunangynhwysol. Mae Scheme yn darparu adborth ar unwaith wrth wirio diddwythiadau mathemategol ac yn hwyluso archwilio ymddygiad systemau.
Ffwythiannau
Ysgrifennir gwerth y ffwythiant f, o gael yr arg x, yn f(x). Mae'r mynegiad f(x) yn dynodi gwerth y ffwythiant yn yr arg a roddir; pan ddymunwn ddynodi'r ffwythiant ysgrifennwn f yn unig. Gall ffwythiannau gymryd sawl arg. Er enghraifft, gallwn gael y ffwythiant sy'n rhoi'r pellter Ewclidaidd rhwng dau bwynt yn y plân a roddir gan eu cyfesurynnau petryal:
Yn Scheme gallwn ysgrifennu hwn fel:
(define (d x1 y1 x2 y2)
(sqrt (+ (square (- x2 x1)) (square (- y2 y1)))))
Gellir cyfansoddi ffwythiannau os yw amrediad un yn gorgyffwrdd â pharth y llall. Llunnir cyfansoddiad ffwythiannau drwy drosglwyddo allbwn un i fewnbwn y llall. Ysgrifennwn gyfansoddiad dau ffwythiant gan ddefnyddio'r gweithrediad ∘:
Gellir diffinio gweithdrefn h sy'n cyfrifo ciwb sin ei harg drwy gyfansoddi'r gweithdrefnau cube a sin:
(define h (compose cube sin))
(h 2).7518269446689928
sydd yr un fath â
(cube (sin 2)).7518269446689928
Estynnir rhifyddeg i drin ffwythiannau: gellir cymhwyso'r gweithrediadau mathemategol arferol i ffwythiannau. Mae adio a lluosi yn enghreifftiau; gallwn adio neu luosi dau ffwythiant os ydynt yn cymryd yr un mathau o argiau ac os gellir adio neu luosi eu gwerthoedd:
Gweithdrefn g sy'n lluosi ciwb ei harg â sin ei harg yw
(define g (* cube sin))
(g 2)7.274379414605454(* (cube 2) (sin 2))7.274379414605454
Gwerthoedd symbolaidd
Fel mewn nodiant mathemategol arferol, estynnir rhifyddeg i ganiatáu defnyddio symbolau sy'n cynrychioli gwrthrychau mathemategol anhysbys neu anghyflawn eu pennu. Trinnir y symbolau hyn fel pe bai ganddynt werthoedd o fath hysbys. Yn ddiofyn, tybir bod symbol Scheme yn cynrychioli rhif real. Felly mae'r mynegiad 'a yn symbol llythrennol Scheme sy'n cynrychioli rhif real amhenodol:
((compose cube sin) 'a)
(expt (sin a) 3)
Mae'r argraffydd diofyn yn symleiddio'r mynegiad ac yn ei arddangos mewn ffurf ddarllenadwy.1 Gallwn ddefnyddio'r symleiddiwr i wirio unfathiant trigonometrig:
((- (+ (square sin) (square cos)) 1) 'a)0
Yn union fel y mae'n ddefnyddiol gallu trin rhifau symbolaidd, mae'n ddefnyddiol gallu trin ffwythiannau symbolaidd. Mae'r weithdrefn literal-function yn gwneud gweithdrefn sy'n gweithredu fel ffwythiant heb unrhyw briodweddau heblaw ei enw. Yn ddiofyn, diffinnir ffwythiant llythrennol i gymryd un arg real a chynhyrchu un gwerth real. Er enghraifft, efallai y byddwn am weithio â ffwythiant f : R → R:
((literal-function 'f) 'x)(f x)((compose (literal-function 'f) (literal-function 'g)) 'x)(f (g x))
Gallwn hefyd wneud ffwythiannau llythrennol â nifer o argiau, a all fod yn strwythuredig, sy'n dychwelyd gwerthoedd strwythuredig. Er enghraifft, i ddynodi ffwythiant llythrennol o'r enw g sy'n cymryd dau arg real ac yn dychwelyd gwerth real (g : R × R → R) gallwn ysgrifennu:
(define g (literal-function 'g (-> (X Real Real) Real)))
(g 'x 'y)(g x y)
Gallwn ddefnyddio ffwythiant llythrennol o'r fath lle bynnag y gellir defnyddio ffwythiant eglur o'r un math.
Ceir iaith gyfan ar gyfer disgrifio math ffwythiant llythrennol yn nhermau nifer yr argiau, mathau'r argiau, a mathau'r gwerthoedd. Yma disgrifiwn ffwythiant sy'n mapio parau o rifau real i rifau real â'r mynegiad (-> (X Real Real) Real). Yn ddiweddarach byddwn yn cyflwyno argiau a gwerthoedd strwythuredig ac yn dangos estyniadau i ffwythiannau llythrennol i drin y rhain.
Twpledi
Ceir dau fath o dwpled: twpledi i fyny a thwpledi i lawr. Ysgrifennwn dwpledi fel rhestrau trefnedig o'u cydrannau; amgaeir twpled mewn cromfachau crwn os yw'n dwpled i fyny ac mewn cromfachau sgwâr os yw'n dwpled i lawr. Er enghraifft, y twpled i fyny v o gydrannau cyflymder v0, v1, a v2 yw
Y twpled i lawr p o gydrannau momentwm p0, p1, a p2 yw
Fel arfer nodir cydran twpled i fyny gan uwchysgrif. Fel arfer nodir cydran twpled i lawr gan isysgrif. Defnyddiwn fynegeio sy'n dechrau o sero wrth gyfeirio at elfennau twpled. Mae'r nodiant hwn yn dilyn y confensiwn arferol mewn rhifyddeg tensorau.
Gwnawn dwpledi â'r adeiladwyr up a down:
(define v (up 'v^0 'v^1 'v^2))
v(up v^0 v^1 v^2)(define p (down 'p_0 'p_1 'p_2))
p(down p_0 p_1 p_2)
Mae rhifyddeg twpledi yn wahanol i rifyddeg tensorau arferol gan y gall cydrannau twpled hefyd fod yn dwpledi ac nid oes rhaid i wahanol gydrannau fod â'r un strwythur. Er enghraifft, strwythur twpled s o gyflyrau gofod gwedd yw
Mae'n dwpled i fyny o'r amser, y cyfesurynnau, a'r momenta. Nid oes gan yr amser t is-strwythur. Mae'r cyfesurynnau yn dwpled i fyny o'r cydrannau cyfesurynnau x ac y. Mae'r momentwm yn dwpled i lawr o'r cydrannau momentwm px a py. Ysgrifennir hwn:
(define s (up 't (up 'x 'y) (down 'p_x 'p_y)))
Er mwyn cyfeirio at gydrannau strwythurau twpled ceir ffwythiannau detholwr, er enghraifft:
Mae dilyniant yr isysgrifau cyfanrif ar y detholwr yn disgrifio'r gadwyn gyrchu i'r gydran a ddymunir.
Y weithdrefn component yw'r weithdrefn ddetholwr gyffredinol sy'n gweithredu'r ffwythiannau detholwr. Er enghraifft, gweithredir I0,1 gan (component 0 1):
((component 0 1) (up (up 'a 'b) (up 'c 'd)))b
I gyrchu cydran twpled gallwn hefyd ddefnyddio'r weithdrefn ddetholwr ref, sy'n cymryd twpled a mynegrif ac yn dychwelyd elfen ddynodedig y twpled:
(ref (up 'a 'b 'c) 1)b
Defnyddiwn fynegeio sy'n dechrau o sero ym mhobman. Gellir defnyddio'r weithdrefn ref i gyrchu unrhyw is-strwythur mewn coeden o dwpledi:
(ref (up (up 'a 'b) (up 'c 'd)) 0 1)b
Gellir adio neu dynnu dau dwpled i fyny o'r un hyd, elfen wrth elfen, i gynhyrchu twpled i fyny, os yw'r cydrannau yn gydnaws ar gyfer adio. Yn yr un modd, gellir adio neu dynnu dau dwpled i lawr o'r un hyd, elfen wrth elfen, i gynhyrchu twpled i lawr, os yw'r cydrannau yn gydnaws ar gyfer adio.
Gellir lluosi unrhyw dwpled â rhif drwy luosi pob cydran â'r rhif. Wrth gwrs, gellir lluosi rhifau. Mae twpledi sy'n gydnaws ar gyfer adio yn ffurfio gofod fector.
Er cyfleustra diffiniwn sgwâr twpled yn swm sgwariau cydrannau'r twpled. Gellir lluosi twpledi, fel y disgrifir isod, ond nid yw sgwâr twpled yn lluoswm y twpled ag ef ei hun.
Mae ystyr lluosi twpledi yn dibynnu ar strwythur y twpledi. Mae dau dwpled yn gydnaws ar gyfer cyfangu os ydynt o fathau dirgroes, os ydynt o'r un hyd, ac os oes gan elfennau cyfatebol y briodwedd ganlynol: naill ai maent ill dau yn dwpledi ac yn gydnaws ar gyfer cyfangu, neu nid yw un ohonynt yn dwpled. Os yw dau dwpled yn gydnaws ar gyfer cyfangu, yna dehonglir lluosi generig fel cyfangu: y canlyniad yw swm lluosymiau cydrannau cyfatebol y twpledi. Er enghraifft, mae p a v a gyflwynwyd yn hafaliadau (9.4) a (9.5) uchod yn gydnaws ar gyfer cyfangu; y lluoswm yw
Felly lluoswm mewnol yw lluoswm twpledi sy'n gydnaws ar gyfer cyfangu. Mae defnyddio'r twpledi p a v a ddiffiniwyd uchod yn rhoi inni
(* p v)(+ (* p_0 v^0) (* p_1 v^1) (* p_2 v^2))
Mae cyfangu twpledi yn gymudol: pv = vp. Rhybudd: nid yw lluosi twpledi sy'n gydnaws ar gyfer cyfangu, yn gyffredinol, yn gysylltiadol. Er enghraifft, boed u = (5, 2), v = (11, 13), a g = [[3, 5], [7, 9]]. Yna u(gv) = 964, ond (ug)v = 878. Mae'r mynegiad ugv yn amwys. Nid oes mynegiad â'r amwysedd hwn yn digwydd yn y llyfr hwn.
Mae'r rheol ar gyfer lluosi dau strwythur nad ydynt yn gydnaws ar gyfer cyfangu yn syml. Os nad yw A a B yn gydnaws ar gyfer cyfangu, mae'r lluoswm AB yn dwpled o fath B y mae ei gydrannau yn lluosymiau A a chydrannau B. Cymhwysir yr un rheol yn ddychweliadol wrth luosi'r cydrannau. Felly os yw B = (B0, B1, B2), lluoswm A a B yw
Os nad yw A a C yn gydnaws ar gyfer cyfangu ac os yw C = [C0, C1, C2], y lluoswm yw
Gellir gwneud i strwythurau twpled gynrychioli trawsffurfiadau llinol. Er enghraifft, y cylchdro a gynrychiolir yn gyffredin gan y matrics
gellir ei gynrychioli fel strwythur twpled:2
Mae twpled o'r fath yn gydnaws ar gyfer cyfangu â thwpled i fyny sy'n cynrychioli fector. Felly, er enghraifft:
Gellir hefyd gyfuno dau dwpled sy'n cynrychioli trawsffurfiadau llinol, er nad ydynt yn gydnaws ar gyfer cyfangu, drwy luosi. Yn yr achos hwn mae'r lluoswm yn cynrychioli cyfansoddiad y trawsffurfiadau llinol. Er enghraifft, lluoswm y twpledi sy'n cynrychioli dau gylchdro yw
Mae lluosi twpledi sy'n cynrychioli trawsffurfiadau llinol yn gysylltiadol ond nid yn gymudol fel arfer, yn union fel y mae cyfansoddi'r trawsffurfiadau yn gysylltiadol ond nid yn gymudol fel arfer.
Deilliadau
Mae deilliad ffwythiant f yn ffwythiant, a ddynodir gan Df. Ein confensiwn nodiannol yw bod D yn weithredydd â blaenoriaeth uchel. Felly mae D yn gweithredu ar y ffwythiant cyfagos cyn i unrhyw gymhwyso arall ddigwydd: mae Df(x) yr un fath â (Df)(x). Disgrifir deilliadau trefn uwch drwy godi'r gweithredydd deilliad i bŵer. Felly nodir deilliad rhif n ffwythiant f fel Dnf.
Enw'r weithdrefn sy'n cynhyrchu deilliad ffwythiant yw D. Mae deilliad y weithdrefn sin yn weithdrefn sy'n cyfrifo cos:
(define derivative-of-sine (D sin))
(derivative-of-sine 'x)(cos x)
Deilliad ffwythiant f yw'r ffwythiant Df y mae ei werth ar gyfer arg penodol yn rhywbeth y gellir ei luosi â chynyddiad Δx yn yr arg i gael brasamcan llinol o'r cynyddiad yng ngwerth f:
Er enghraifft, boed f yn ffwythiant sy'n ciwbio ei arg (f(x) = x3); yna Df yw'r ffwythiant sy'n rhoi tair gwaith sgwâr ei arg (Df(y) = 3y2). Felly f(5) = 125 a Df(5) = 75. Gwerth f ag arg x + Δx yw
a
Felly mae Df(x) wedi'i luosi â Δx yn rhoi inni'r term yn f(x + Δx) sy'n llinol yn Δx, gan ddarparu brasamcan da o f(x + Δx) − f(x) pan fo Δx yn fach.
Mae deilliadau cyfansoddiadau yn ufuddhau i reol y gadwyn:
Felly yn x,
Mae D yn enghraifft o weithredydd. Mae gweithredydd yn debyg i ffwythiant heblaw bod lluosi gweithredyddion yn cael ei ddehongli fel cyfansoddi, tra bod lluosi ffwythiannau yn lluosi'r gwerthoedd (gweler hafaliad 9.3). Pe bai D yn ffwythiant arferol, yna byddai'r rheol lluosi yn awgrymu mai dim ond lluoswm Df ag ef ei hun fyddai D2f, ac nid dyna'r bwriad. Mae lluoswm rhif a gweithredydd yn graddio'r gweithredydd. Felly, er enghraifft
(((* 5 D) cos) 'x)(* -5 (sin x))
Estynnir rhifyddeg i ganiatáu trin gweithredyddion. Gweithredydd nodweddiadol yw (D+I)(D−I) = D2−I, lle mae I yn weithredydd unfathiant; mae'r gweithredydd hwn yn tynnu ffwythiant o'i ail ddeilliad. Gellir llunio a defnyddio gweithredydd o'r fath fel a ganlyn:
(((* (+ D I) (- D I)) (literal-function 'f)) 'x)(+ (((expt D 2) f) x) (* -1 (f x)))
Deilliadau ffwythiannau â nifer o argiau
Mae'r deilliad yn cyffredinoli i ffwythiannau sy'n cymryd nifer o argiau. Mae deilliad ffwythiant â nifer o argiau a gwerthoedd real yn wrthrych y mae ei gyfangiad â thwpled y cynyddiadau yn yr argiau yn rhoi brasamcan llinol o'r cynyddiad yng ngwerth y ffwythiant.
Gellir meddwl am ffwythiant â nifer o argiau fel ffwythiant o dwpled i fyny o'r argiau hynny. Felly mae twpled cynyddiadau'r argiau yn dwpled i fyny o gydrannau, un ar gyfer pob safle arg. Mae deilliad ffwythiant o'r fath yn dwpled i lawr o ddeilliadau rhannol y ffwythiant mewn perthynas â phob safle arg.
Tybiwch fod gennym ffwythiant â gwerthoedd real g o ddau arg â gwerthoedd real, a'n bod am frasamcanu'r cynyddiad yng ngwerth g o'i werth yn x, y. Os cynyddir yr argiau gan y twpled (Δx, Δy) cyfrifwn:
Gan ddefnyddio'r ffwythiant llythrennol dau arg g a ddiffiniwyd ar dudalen 512, mae gennym:
((D g) 'x 'y)(down (((partial 0) g) x y) (((partial 1) g) x y))
Yn gyffredinol, dim ond cydrannau deilliad ffwythiant sy'n cymryd nifer o argiau (neu argiau strwythuredig neu'r ddau; gweler isod) yw deilliadau rhannol. Felly mae deilliad rhannol ffwythiant yn gyfansoddiad o ddetholwr cydran a deilliad y ffwythiant hwnnw.3 Yn wir:
Yn benodol, os
yna
a brasamcan trefn gyntaf y cynyddiad wrth newid yr argiau gan Δx a Δy yw
Mae deilliadau rhannol cyfansoddiadau hefyd yn ufuddhau i reol gadwyn:
Felly os yw x yn dwpled o argiau, yna
Fel arfer nid yw nodiant mathemategol yn gwahaniaethu rhwng ffwythiannau â nifer o argiau a ffwythiannau o dwpled yr argiau. Boed h((x, y)) = g(x, y). Ni wahaniaethir rhwng y ffwythiant h, sy'n cymryd twpled o'r argiau x ac y, a'r ffwythiant g sy'n cymryd yr argiau x ac y. Defnyddiwn y ddwy ffordd o ddiffinio ffwythiannau â nifer o argiau. Mae deilliadau'r ddau fath o ffwythiant yn gydnaws ar gyfer cyfangu â thwpled o gynyddiadau i'r argiau. Mae Scheme yn ddefnyddiol yma:
(define (h s)
(g (ref s 0) (ref s 1)))
(h (up 'x 'y))(g x y)((D g) 'x 'y)(down (((partial 0) g) x y) (((partial 1) g) x y))((D h) (up 'x 'y))(down (((partial 0) g) x y) (((partial 1) g) x y))
Mae ffwythiant cyflwr gofod gwedd yn ffwythiant o amser, cyfesurynnau, a momenta. Boed H yn ffwythiant o'r fath. Gwerth H yw H(t, (x, y), [px, py]) ar gyfer amser t, cyfesurynnau (x, y), a momenta [px, py]. Boed s yn dwpled cyflwr gofod gwedd fel yn (9.6):
Gwerth H ar gyfer twpled yr argiau s yw H(s). Defnyddiwn y ddwy ffordd o ysgrifennu gwerth H.
Yn aml dangoswn ffwythiant â nifer o argiau sy'n cynnwys twpledi drwy nodi ffiniau twpledi'r argiau ag atalnodau hanner a gwahanu eu cydrannau â chomas. Os yw H yn ffwythiant o gyflyrau gofod gwedd ag argiau t, (x, y), a [px, py], gallwn ysgrifennu H(t; x, y; px, py). Mae'r nodiant hwn yn colli'r gwahaniaeth rhwng i fyny ac i lawr, ond mae ein nodiant atalnodau hanner a chomas yn gyfleus ac yn weddol ddiamwys.
Mae deilliad H yn ffwythiant sy'n cynhyrchu gwrthrych y gellir ei gyfangu â chynyddiad yn strwythur yr argiau i gynhyrchu cynyddiad yng ngwerth y ffwythiant. Mae'r deilliad yn dwpled i lawr o dri deilliad rhannol. Y deilliad rhannol cyntaf yw'r deilliad rhannol mewn perthynas â'r arg rhifiadol. Mae'r ail ddeilliad rhannol yn dwpled i lawr o ddeilliadau rhannol mewn perthynas â phob cydran o'r arg sy'n dwpled i fyny. Mae'r trydydd deilliad rhannol yn dwpled i fyny o ddeilliadau rhannol mewn perthynas â phob cydran o'r arg sy'n dwpled i lawr:
lle mae ∂1,0 yn dynodi'r deilliad rhannol mewn perthynas â chydran gyntaf (mynegrif 0) ail arg (mynegrif 1) y ffwythiant, ac yn y blaen. Yn wir, ∂zF = Iz ∘ DF ar gyfer unrhyw ffwythiant F a chadwyn gyrchu z. Felly, os gadawn i Δs fod yn dwpled cynyddiadau cyflwr gofod gwedd,
yna
Rhybudd: yn gyffredinol nid yw gweithredyddion deilliad rhannol mewn perthynas â gwahanol argiau strwythuredig yn cymudo.
Yn Scheme rhaid inni wneud dewisiadau eglur. Fel arfer tybiwn fod ffwythiannau cyflwr gofod gwedd yn ffwythiannau o'r twpled. Er enghraifft,
(define H
(literal-function 'H
(-> (UP Real (UP Real Real) (DOWN Real Real)) Real)))
(H s)(H (up t (up x y) (down p_x p_y)))((D H) s)(down
(((partial 0) H) (up t (up x y) (down p_x p_y)))
(down (((partial 1 0) H) (up t (up x y) (down p_x p_y)))
(((partial 1 1) H) (up t (up x y) (down p_x p_y))))
(up (((partial 2 0) H) (up t (up x y) (down p_x p_y)))
(((partial 2 1) H) (up t (up x y) (down p_x p_y)))))
Canlyniadau strwythuredig
Mae rhai ffwythiannau yn cynhyrchu allbynnau strwythuredig. Mae ffwythiant y mae ei allbwn yn dwpled yn gyfwerth â thwpled o ffwythiannau cydrannol, pob un ohonynt yn cynhyrchu un gydran o'r twpled allbwn.
Er enghraifft, gellir defnyddio ffwythiant sy'n cymryd un arg rhifiadol ac yn cynhyrchu strwythur o allbynnau i ddisgrifio cromlin drwy ofod. Mae'r ffwythiant canlynol yn disgrifio llwybr helicsig o amgylch echelin z mewn gofod tri dimensiwn:
Y deilliad yn syml yw'r twpled i fyny o ddeilliadau pob cydran o'r ffwythiant:
Gallwn ysgrifennu
(define (helix t)
(up (cos t) (sin t) t))
neu'n syml
(define helix (up cos sin identity))
Ei ddeilliad yn syml yw'r twpled i fyny o ddeilliadau pob cydran o'r ffwythiant:
((D helix) 't)(up (* -1 (sin t)) (cos t) 1)
Yn gyffredinol, trinnir ffwythiant sy'n cynhyrchu allbynnau strwythuredig yn syml fel strwythur o ffwythiannau, un ar gyfer pob un o'r cydrannau. Mae deilliad ffwythiant o fewnbynnau strwythuredig sy'n cynhyrchu allbynnau strwythuredig yn wrthrych sydd, o'i gyfangu â strwythur cynyddiadau mewnbwn, yn cynhyrchu brasamcan llinol o'r cynyddiad allbwn. Felly, os diffiniwn ffwythiant g drwy
yna deilliad g yw
Yn Scheme:
(define (g x y)
(up (square (+ x y)) (cube (- y x)) (exp (+ x y))))
((D g) 'x 'y)(down
(up
(+ (* 2 x) (* 2 y))
(+ (* -3 (expt x 2)) (* 6 x y) (* -3 (expt y 2)))
(* (exp y) (exp x)))
(
(+ (* 2 x) (* 2 y))
(+ (* 3 (expt x 2)) (* -6 x y) (* 3 (expt y 2)))
(* (exp y) (exp x))))
Rhaid bod yn ofalus wrth gymryd deilliad lluoswm ffwythiannau y mae pob un ohonynt yn cynhyrchu canlyniadau strwythuredig. Y broblem yw nad yw'r rheol lluoswm arferol yn ddilys. Boed f a g yn ffwythiannau o x y mae eu canlyniadau yn gydnaws ar gyfer cyfangu i rif. Cynyddiad f ar gyfer cynyddiad Δx yn x yw Df(x)Δx, ac yn yr un modd ar gyfer g. Cynyddiad y lluoswm fg yw D(fg)(x)Δx, ond o'i ehangu yn nhermau deilliadau f a g, y cynyddiad yw (Df(x)Δx)g(x) + f(x)(Dg(x)Δx). Nid ((Df)(x)g(x) + f(x)(Dg(x)))Δx ydyw. Y rheswm yw bod siâp deilliad f yn golygu y dylid lluosi Df(x) â Δx yn hytrach na g(x).
Ymarfer 9.1: Rheol y gadwyn
Boed F (x, y) = x2y3, G(x, y) = (F (x, y), y), a H(x, y) = F (F (x, y), y), fel bod H = F ∘ G.
a. Cyfrifwch ∂0F (x, y) a ∂1F (x, y).
b. Cyfrifwch ∂0F (F (x, y), y) a ∂1F (F (x, y), y).
c. Cyfrifwch ∂0G(x, y) a ∂1G(x, y).
d. Cyfrifwch DF (a, b), DG(3, 5) a DH(3a2, 5b3).
Ymarfer 9.2: Cyfrifo deilliadau
Gallwn gynrychioli ffwythiannau â nifer o argiau fel gweithdrefnau mewn sawl ffordd, yn dibynnu ar sut y dymunwn eu defnyddio. Y syniad symlaf yw uniaethu argiau'r weithdrefn ag argiau'r ffwythiant.
Er enghraifft, gallem ysgrifennu gweithrediadau o'r ffwythiannau sy'n ymddangos yn ymarfer 9.1 fel a ganlyn:
(define (f x y)
(* (square x) (cube y)))
(define (g x y)
(up (f x y) y))
(define (h x y)
(f (f x y) y))
Gyda'r dewis hwn mae'n lletchwith cyfansoddi ffwythiant sy'n cymryd nifer o argiau, megis f, â ffwythiant sy'n cynhyrchu twpled o'r argiau hynny, megis g. Fel arall, gallwn gynrychioli argiau'r ffwythiant fel slotiau mewn strwythur data twpled, ac yna mae cyfansoddi â ffwythiant sy'n cynhyrchu strwythur data o'r fath yn hawdd. Fodd bynnag, mae'r dewis hwn yn gofyn i'r gweithdrefnau adeiladu a datgymalu strwythurau.
Er enghraifft, gallwn ddiffinio gweithdrefnau sy'n gweithredu'r ffwythiannau uchod fel a ganlyn:
(define (f v)
(let ((x (ref v 0))
(y (ref v 1)))
(* (square x) (cube y))))
(define (g v)
(let ((x (ref v 0))
(y (ref v 1)))
(up (f v) y)))
(define h (compose f g))
Ailadroddwch ymarfer 9.1 gan ddefnyddio'r cyfrifiadur. Archwiliwch y ddau weithrediad o ffwythiannau â nifer o argiau.
1Gellir defnyddio'r weithdrefn print-expression mewn rhaglen i brintio fersiwn wedi'i symleiddio o fynegiad. Mae'r argraffydd diofyn yn y rhyngwyneb defnyddiwr yn ymgorffori'r symleiddiwr.
2I bwysleisio perthynas strwythurau twpled syml â nodiant matricsau, rydym yn aml yn fformatio twpledi up fel trefniadau fertigol o gydrannau a thwpledi down fel trefniadau llorweddol o gydrannau. Fodd bynnag, gallem yr un mor hawdd fod wedi ysgrifennu'r twpled hwn fel [(cos θ, sin θ), (− sin θ, cos θ)].
3Mae gweithredyddion deilliad rhannol megis (partial 2) yn weithredyddion, felly mae (expt (partial 1) 2) yn ail ddeilliad rhannol.