2. DifferentiationTil differentiation af algebraiske udtryk benyttes diff. Til differentiation af funktioner (procedurer) benyttes differentialoperatoren D.Differentialoperatoren diffVil man differentiere det algebraiske udtryk LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Jy1JJW1zdXBHRiQ2JS1GLDYlUSJ4RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW5HRiQ2JFEiMkYnL0Y7USdub3JtYWxGJy8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRictSSNtb0dGJDYtUTEmSW52aXNpYmxlVGltZXM7RidGQS8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGTC8lKXN0cmV0Y2h5R0ZMLyUqc3ltbWV0cmljR0ZMLyUobGFyZ2VvcEdGTC8lLm1vdmFibGVsaW1pdHNHRkwvJSdhY2NlbnRHRkwvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0Zlbi1GIzYmLUYsNiVRJHNpbkYnL0Y4RkxGQS1GRzYtUTAmQXBwbHlGdW5jdGlvbjtGJ0ZBRkpGTUZPRlFGU0ZVRldGWUZmbi1JKG1mZW5jZWRHRiQ2JC1GIzYmRistRiM2Ji1GLDYlUSJhRidGN0Y6RkZGNEZBRitGQUZBRkFGK0ZBRitGQQ== med hensyn til LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEieEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic=, g\303\270r man s\303\245ledesdiff(x^2*sin(a*x),x);Vi giver n\303\246ste udtryk et navn, s\303\245 vi kan se, om det er tastet rigtigt ind, inden det skal differentieres:udtryk:=x^7*sin(x)+3*x/(1+x);diff( udtryk, x); Skal udtrykket differentieres tre gange, skrivesdiff( udtryk, x,x,x);eller lidt kortere diff( udtryk, x$3);idet x$3 blot er en f\303\270lge af tre x'er: x, x, x:hurra$9;x'erne kan ogs\303\245, om man vil anbringes i listeklammer:diff(udtryk,[x,x,x]);Denne syntaks tillader den tomme liste, der giver den nul'te afledede, hvormed menes funktionen selv:diff(udtryk,[]);Proceduren diff tillader differentiation af et ubekendt udtryk y(x) i variablen x. Naturligvis f\303\245s ingen udregning, men Maple skriver udtrykket p\303\246nt:diff(y(x), x);Bem\303\246rk, at kommandoen diff( y, x); giver nul, n\303\245r y ikke er tilordnet noget, alts\303\245 blot er navnet y. Dette skyldes, at Maple ikke kan se noget x, hvorfor y antages ikke at afh\303\246nge heraf.Vi er nu i stand til at skrive en differentialligning i den ubekendte y(x):ligning1:=diff(y(x),x,x)-3*diff(y(x),x)+2*y(x)=x*exp(x);I kapitel 6 behandler vi l\303\270sning af differentialligninger.En inaktiv version af diff er Diff:Diff(x*sin(x),x);Bem\303\246rk, at d'erne er gr\303\245, n\303\245r der bruges Diff. Den inaktive Diff kan omdannes til den aktive diff ved brug af value:value(%); En elegant version f\303\245s som f\303\270lger. Bem\303\246rk, at der er to kommandoer p\303\245 samme linie. Resultatet fra den f\303\270rste vises ikke, men bruges i form af % i den n\303\246ste:Diff(sin(x*exp(x)),x): %=value(%);Differentialoperatoren DDifferentialoperatoren D benyttes ved differentiation af funktioner:
D(sin);D(ln);Maple kan ikke svare med et navn p\303\245 funktionen LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JVEiekYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RKCZzcmFycjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGTC1JJm1mcmFjR0YkNigtRiM2Ji1JI21uR0YkNiRRIjFGJ0Y5LyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GJy8lMGZvbnRfc3R5bGVfbmFtZUdRKzJEfkNvbW1lbnRGJ0Y5LUYjNiZGK0ZYRmVuRjkvJS5saW5ldGhpY2tuZXNzR0ZXLyUrZGVub21hbGlnbkdRJ2NlbnRlckYnLyUpbnVtYWxpZ25HRl5vLyUpYmV2ZWxsZWRHRj1GWEZlbkY5 , da et s\303\245dant ikke findes. Lad funktionen f v\303\246re defineret vedf:=x -> x^2*sin(3*x);s\303\245 f\303\245s den afledede af f, alts\303\245 f ' , ved kommandoenD( f );Som input accepterer D en funktion (eksempelvis f eller sin) og som output leverer D en funktion (f ' eller cos). Output fra D kan s\303\245 netop bruges som en funktion bruges:D(sin)(Pi/6);D(f)(Pi);Den 5. afledede af funktionen f f\303\245s som f\303\270lger, idet snabel a-tegnet @ bruges ved sammens\303\246tning af funktioner og operatorer:(D@D@D@D@D)(f); Det er dog lettere at skrive s\303\245ledes:(D@@5)(f); Den nul'te afledede (funktionen selv) kommer frem s\303\245ledes:(D@@0)(f);(D@@0)(f)(x);Udtrykket LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Jy1JJW1zdXBHRiQ2JS1GLDYlUSJ4RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW5HRiQ2JFEiMkYnL0Y7USdub3JtYWxGJy8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRictSSNtb0dGJDYtUTEmSW52aXNpYmxlVGltZXM7RidGQS8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGTC8lKXN0cmV0Y2h5R0ZMLyUqc3ltbWV0cmljR0ZMLyUobGFyZ2VvcEdGTC8lLm1vdmFibGVsaW1pdHNHRkwvJSdhY2NlbnRHRkwvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0Zlbi1GIzYmLUYsNiVRJHNpbkYnL0Y4RkxGQS1GRzYtUTAmQXBwbHlGdW5jdGlvbjtGJ0ZBRkpGTUZPRlFGU0ZVRldGWUZmbi1JKG1mZW5jZWRHRiQ2JC1GIzYmRistRiM2Ji1GPjYkUSIzRidGQUZGRjRGQUYrRkFGQUZBRitGQUYrRkE= skal vi ikke t\303\246nke p\303\245 som en funktion, men kun som et udtryk indeholdende variablen x eller som v\303\246rdien af funktionen f i x.Vi finder til sammenligning den femte afledede af udtrykketf(x);Dette g\303\270res ved hj\303\246lp af diff:diff(f(x),x$5);Samme resultat kunne opn\303\245s s\303\245ledes(D@@5)(f)(x);idet (D@@5)(f) giver os den femte afledede af f. Herefter anvendes den femte afledede s\303\245 p\303\245 x.Vi kan benytte operatoren D p\303\245 en ubekendt funktion som f.eks. y:D(y);Dette er nyttigt, n\303\245r differentialligninger med begyndelsesbetingelser skal l\303\270ses. Begyndelsesbetingelserne y(7) = 4, y'(7) = -2, skrives i Maple: y(7) = 4, D(y)(7) = -2. Se i\303\270vrigt kapitel 6 om differentialligninger.diff eller D ?Fors\303\270ger man at definere den afledede funktion fm\303\246rke af en funktion f ved brug af diff p\303\245 f\303\270lgende m\303\245de, f\303\245r man et problem. Lad eksempelvis funktionen have forskriften LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2KEYrLUYjNiYtRiw2JVEiZkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RMCZBcHBseUZ1bmN0aW9uO0YnL0Y6USdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGRC8lKXN0cmV0Y2h5R0ZELyUqc3ltbWV0cmljR0ZELyUobGFyZ2VvcEdGRC8lLm1vdmFibGVsaW1pdHNHRkQvJSdhY2NlbnRHRkQvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZTLUkobWZlbmNlZEdGJDYkLUYjNiQtRiw2JVEieEYnRjZGOUZARkBGQC1GPTYtUSI9RidGQEZCRkVGR0ZJRktGTUZPL0ZSUSwwLjI3Nzc3NzhlbUYnL0ZVRlxvLUYjNictSSVtc3VwR0YkNiVGZW4tSSNtbkdGJDYkUSIyRidGQC8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRictRj02LVExJkludmlzaWJsZVRpbWVzO0YnRkBGQkZFRkdGSUZLRk1GT0ZRRlQtRiM2Ji1GLDYlUSRzaW5GJy9GN0ZERkBGPC1GVzYkLUYjNiZGKy1GIzYmLUYsNiVRJSZwaTtGJ0ZicEZARmpvRmVuRkBGK0ZARkBGQEYrRkBGK0ZARitGQA==.Vi fors\303\270ger en definition af den afledede s\303\245ledes:fmaerke:= x -> diff( x^2*sin(Pi*x), x);Vi afpr\303\270ver definitionen:fmaerke(x); fmaerke(u);Alt er tilsyneladende i orden. Men se nu, hvad der sker:fmaerke(3);Den gik alts\303\245 ikke! Forklaringen skal s\303\270ges i den m\303\245de, hvorp\303\245 Maple opfatter proceduren fmaerke:lprint(eval(fmaerke));Hvis proceduren fmaerke f\303\245r et 3-tal vil den f\303\270rst overalt ombytte den formelle parameter x med den aktuelle v\303\246rdi, nemlig 3. Derefter vil den fors\303\270ge at udregne diff( 3^2*sin(Pi*3), 3). Men dette vil diff protestere over, idet det ingen mening giver at differentiere mht. 3. N\303\245r den afledede \303\270nskes som funktion, b\303\270r bruges D p\303\245 en funktion. Dette g\303\270res enten p\303\245 funktionens navn, hvis den har f\303\245et et, eller p\303\245 dens definition vha. en pil som i dette eksempel:D( x-> x^2*sin(Pi*x) );Alternativt kan man ved brug af unapply lave en funktion ud af diff( x^2*sin(Pi*x), x).fm:=unapply( diff( x^2*sin(Pi*x), x), x);fm(3);Partielle aflededeLad g v\303\246re f\303\270lgende funktion af to variable:g:= (x,y) -> x*y^2*exp(-x^2-3*y^2);Hvis vi vil differentiere udtrykket g(x,y) partielt mht. x, skriver vi:diff( g(x,y), x );Hvis vi i stedet vil differentiere g(x,y) partielt mht. y, skriver vi:diff( g(x,y), y );Hvis de partielle afledede skal findes som funktioner (ikke udtryk), g\303\270res s\303\245ledes, hvor 2-tallet betyder differentiation mht. variabel nummer 2:D[2](g); S\303\245ledes f\303\245s LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Ji1JJm1mcmFjR0YkNigtRiM2JC1JJW1zdXBHRiQ2JS1JI21vR0YkNi1RKyZQYXJ0aWFsRDtGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkIvJSlzdHJldGNoeUdGQi8lKnN5bW1ldHJpY0dGQi8lKGxhcmdlb3BHRkIvJS5tb3ZhYmxlbGltaXRzR0ZCLyUnYWNjZW50R0ZCLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGUS1JI21uR0YkNiRRIjJGJ0Y9LyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJ0Y9LUYjNihGKy1GIzYlRjktRiw2JVEieEYnLyUnaXRhbGljR1EldHJ1ZUYnL0Y+USdpdGFsaWNGJ0Y9LUY6Ni1RMSZJbnZpc2libGVUaW1lcztGJ0Y9RkBGQ0ZFRkdGSUZLRk1GT0ZSLUYjNiVGOS1GLDYlUSJ5RidGXG9GX29GPUYrRj0vJS5saW5ldGhpY2tuZXNzR1EiMUYnLyUrZGVub21hbGlnbkdRJ2NlbnRlckYnLyUpbnVtYWxpZ25HRl5wLyUpYmV2ZWxsZWRHRkJGYW8tRiw2JVEiZ0YnRlxvRl9vRj1GK0Y9 som funktion:D[2,1](g); Da D[2,1] blot betyder, at der f\303\270rst skal differentieres mht. variabel nr. 2, dern\303\246st mht. variabel nr. 1, kan samme resultat opn\303\245s ved(D[1]@D[2])(g); Maple antager for en ukendt funktion, at de blandede afledede er ens. Det er de jo ogs\303\245 n\303\246sten altid:D[2,1](F)-D[1,2](F);Bruges diff p\303\245 det ukendte funktionsudtryk F(x,y), s\303\245 kr\303\270lles d'erne i output, idet Maple jo kan se, at udtrykket afh\303\246nger af flere variable:diff(F(x,y),x);De variable, der skal differentieres mht. kan anbringes i listeklammer, om man vil:diff( x^2+7*x*y+cos(x),[x,y]);Denne syntaks tillader den tomme liste, hvorved man f\303\245r udtrykket tilbage:diff( x^2+7*x*y+cos(x),[] );Gradienten af en funktion af flere variable kan f.eks. findes s\303\245ledes (vi bruger g fra f\303\270r): diff~(g(x,y),<x,y>);Her er brugt den elementvise version af diff nemlig diff~ (elementvise operationer af denne slags kom med Maple 13).Alternativt kan man bruge map2:map2(diff,g(x,y),<x,y>);Her betyder <x, y> s\303\270jlevektoren med elementerne x og y. Resultatet kan laves til en funktion s\303\245ledesG:=unapply(%,x,y):G(1,2);I VectorCalculus-pakken findes desuden en Mapleprocedure for gradienten.Differentiation af stykkevist defineret funktionTil visse form\303\245l er D n\303\246sten uundv\303\246rlig, bl.a. virker D ogs\303\245 p\303\245 funktioner defineret ved en Tuborg:f:= x -> if x<1 then x^2 else x^4 end if;D(f);Derimod g\303\245r det ikke s\303\245 godt, hvis vi fors\303\270ger med diff:diff( f(x),x); Problemet med diff( f(x), x) ) er, at Maple f\303\270rst fors\303\270ger at evaluere f(x). Det kan den imidlertid ikke, da den ikke kan afg\303\270re, om x < 1 eller ej. f(x);Det kan i \303\270vrigt anbefales, at man ved definitionen af f bruger piecewise i stedet: w:=piecewise(x<-2,7,x<1,x^2,x^4);S\303\245 kan ogs\303\245 diff bruges:diff(w,x);Vi laver en funktion ud af w:f:=unapply(w,x);P\303\245 denne funktion kan D anvendes:D(f);D(f)(x);Implicit differentiationLigningenligning:=x^2*y-sin(x+y)=0;sammenknytter x og y p\303\245 en m\303\245de, der g\303\270r, at det er umuligt at finde et konkret formeludtryk for y udtrykt ved x og faktisk heller ikke omvendt:solve( ligning, y);solve(ligning, x);Her skal et RootOf-udtryk indeholdende variablen _Z forst\303\245s som l\303\270sningen for _Z n\303\245r udtrykkes s\303\246ttes lig nul. I realiteten har Maple alts\303\245 ikke kunnet finde et formeludtryk i de to tilf\303\246lde ovenfor.Kurven med den givne ligning kan tegnes vha. implicitplot fra plots-pakken.F\303\270rst g\303\270r vi pakken klar til brug med with:with(plots);Herefter er alle procedurerne i plots-pakken umiddelbart tilg\303\246ngelige, bl.a. implicitplot:implicitplot(ligning, x=-1..1,y=-3.5..3.5);F\303\270lgende kommando viser, at kurven g\303\245r gennem punktet (0, LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVElJnBpO0YnLyUnaXRhbGljR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRidGMg==):eval(ligning,{x=0,y=Pi});I omegnen af punktet (0, LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVElJnBpO0YnLyUnaXRhbGljR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRidGMg==) er kurven graf for en funktion, som det ses af figuren ovenfor. Denne funktions afledede kan findes ved brug af implicitdiff. Nedenfor findes y'(x):implicitdiff( ligning, y, x);eval(%, {x=0, y=Pi});Hermed har vi fundet, at tangenth\303\246ldningen i punktet (0, LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVElJnBpO0YnLyUnaXRhbGljR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRidGMg==) er -1. I kapitlet om differentialligninger er vist en kommando, der giver Taylorpolynomier for den implicit givne funktion. Numerisk differentiationEn funktion f kan v\303\246re givet udelukkende ved en numerisk procedure, hvilket betyder, at f(x) leverer et konkret tal ved input af et konkret tal x. Men der er ikke nogen formel for f(x).Vi kan t\303\246nke p\303\245 f som en sort kasse (black box), hvor ind vi sender det konkrete tal x. Som output leverer kassen et konkret tal f(x). Ofte er den numeriske procedure en approksimation til den rigtige funktion (den eksakte), som vi bare ikke kan finde noget formeludtryk for. Eksempelvist kunne den eksakte funktion v\303\246re l\303\270sningen til en differentialligning, som ingen kan l\303\270se, men som teoretisk set har en l\303\270sning. Se mere herom i kapitlet om differentialligninger, hvor der ogs\303\245 er et eksempel.Den procedure, der udf\303\270rer numerisk differentiation hedder fdiff.?fdiffKapiteloversigt1. Indledning.2. Differentiation3. Integration4. Gr\303\246nsev\303\246rdi, Taylorpolynomium, Sum, F\303\270lge og Produkt5. L\303\270sning af Ligninger6. Differentialligninger7. Line\303\246r Algebra8. Diverse Maplepakker9. Plotning10. Algebraisk Manipulation11. Tal i Maple12. Strenge, Variabelnavne, Evaluering13. Funktioner14. Tabeller og Arrays, Manipulation af Datastrukturer15. Programmering i Maple16. Egne Biblioteker og Pakker