Funktionsteori Funktionsteori Datorlaboration 1 Rekursionsekvationer och komplex analys Syftet med datorövningen Övningens ändamål är att ge ett smakprov på hur ett datoralgebrasystem kan användas för att att lösa problem med summation, rekursionsekvationer samt med komplex räkning. Programmet för övningen innehåller många moment, och det kan vara svårt att hinna med allt. Gör du inte det, så försök att slutföra övningen på egen hand vid annat tillfälle. Det kan vara till hjälp bl a då du löser inlämningsuppgifterna. Det är viktigt att du tar dig tid och begrundar vad du ser. För att få en viss kontroll av att du uppfattat rätt saker finns på många ställen tomma rader, där du förväntas skriva ner dina resultat eller svar. Under laborationens gång kommer handledaren - i mån av tid - att kontrollera dina svar. Handledningen till Maple från flerdim Introduktion till Maple finns på kursens hemsida om du skulle behöva friska upp dina Maplefärdigheter. Summation Maple kan användas för att beräkna summor. Syntaxen för summation är naturlig, a k fås genom Maplekommandot sum(a(k),k=m..n). k=m 1.1 Beräkna potenssummorna k och k=0 med hjälp av kommandona sum(k,k=0..n), sum(kˆ2,k=0..n). Förenkla med simplify eller factor och jämför med läroboken. Svar: k=0 1.2 Lös uppgift 1.19 med Maple. Glöm inte att förenkla. Maple är också ganska bra på teleskopsummor. 1.3 Försök att lösa uppgifterna 1.15, 16, 17 med Maple. Dubbelsummor är inte heller omöjliga. Dubbelsumman i uppgift 1.23, fås i Maple med kommandot sum(sum(j,k=j..n),j=1..n). 1.4 Lös uppgift 1.24 med Maple. Snygga till svaret med simplify(%). k 2 j, j=1 k=j 1
Funktioner Maple kan hantera inte bara uttryck som ovan utan även funktioner. Dessa kan definieras på flera olika sätt. Det för våra ändamål enklaste påminner om beteckningen x f(x), vilken ju används i matematiken som synonym till y = f(x). 1.5 Ge kommandot f:= x-> exp(x)-sin(x); Beräkna först f(0), f(1) och f(2) genom att ge kommandona f(0);,f(1); och f(2);. Försök sedan med f(a); och f(y+z);. 1.6 Lägg här märke till en viktig skillnad. Om vi ger ett värde till f genom tilldelningen f:=exp(x)-sin(x); så är värdet av f ett uttryck med variabeln x inbyggt. Gör detta och beräkna diff(f,x); respektive diff(f,y);. Om vi i stället ger f ett värde genom f:=x->exp(x)- sin(x); så är värdet en funktion. Försök nu med diff(f(x),x); och diff(f(y),y); samt diff(f,x);. Se även vad diff(f,y) nu ger för resultat. Funktioner är mycket mer flexibla, men ibland något mer svårhanterliga än enkla uttryck. Det finns lyckligtvis ett enkelt sätt att göra om ett uttryck till en funktion, nämligen genom att använda unapply. 1.7 Antag till exempel att vi vill ha en funktion som beräknar potenssumman S (3) k 3. Det kan vi få genom k=1 potsum3 := sum(kˆ3,k=1..n); potsum3 := simplify(potsum3); potsum3 := unapply(potsum3,n); n = (Blir det protester, så beror det förmodligen på att variabeln k fått ett värde vid någon tidigare operation. Ge i så fall kommandot k:= k ; för att ta bort detta värde.) Det går nu att skriva potsum3(7), men vi kan även sätta in symboliska variabler, potsum3(j) eller potsum3(n+m). Vad blir factor(potsum3(n))? Svar: Jämför med svaret till övning 1.39 b. Lägg märke till att potsum3 byter typ från uttryck till funktion utan några som helst protester. Rekursionsekvationer Maple har en inbyggd lösare för rekursionsekvationer, nämligen proceduren rsolve. Den klarar nästan alla de ekvationer vi sett i kursen och kan också lösa begynnelsevärdesproblem. Dock kommer inte alltid de explicita svaren ut på en form som vi direkt förstår. 1.8 Fibonaccitalen (med F 0 = 1, F 1 = 1) får man genom kommandot rsolve({f(n)=f(n-1)+f(n-2),f(0)=1,f(1)=1},f(n)); Tillverka en funktion Fibonacci med hjälp av ovanstående och unapply. Skriv t ex Fibonacci:=unapply(%,n);. Beräkna och förenkla Fibonacci(15). Svar:. 2
Maple kan klara många rekursionsekvationer, men inte alla. 1.9 Försök att lösa några av problemen 2.5, 2.7, 2.11, 2.14, 2.15cde med Maple. Den som försöker med 2.11 får ett svar som innehåller en funktion Γ (i Maple GAMMA) som för våra behov är en variant av fakultetsfunktionen, k! = Γ(k + 1). Vad är det för väsentlig skillnad mellan högerleden i 2.15 d och e? Svar: 1.10 (I mån av tid.) Lös 2.13 och 2.19. Förvandla i 2.13 lösningen till en funktion binkoeff av variablerna n och k. Vad blir binkoeff(10,2)? Svar:. Gör ett nytt försök att lösa 2.13 men skriv först assume(n>0,n,integer);. Vad blir nu binkoeff(10,2)? Svar:. Jämför med svaret i övningssamlingen. Likvärdiga? Maple klarar också lätt andra ordningens lineära ekvationer med konstanta koefficienter. 1.11 (I mån av tid.) Lös problemen 2.26bdfg, 2.32abe med Maple. Bilder av den komplexa exponential-, sinus- och logaritmfunktionen 1.12 (I mån av tid.) Definiera funktionen genom f := t -> exp(s*t); s := sigma + I*omega; evalc(f(t)); Re(f(t)); assume(sigma, real); assume(omega, real); assume(t,real); Re(f(t)); Im(f(t)); Här är I den imaginära enheten, dvs Iˆ2 = -1. Funktionen evalc (evaluate complex) försöker dela upp sitt argument i real- och imaginärdel, varvid den antar att alla variabler som inte har ett värde är reella. Det framgår hur man tar fram realdel och imaginärdel. Andra operationer kan inte veta om t ex σ, ω och t är reella eller ej, men man kan tala om det med assume. (Notera ovan att ingen beräkning av realdelen Re(f(t)) ägde rum innan assume.) Variabler om vilka man gjort en förutsättning med assume visas av Maple upp med ett tilde. Studera också additionally genom kommandot?additionally. Om man glömt vilka antaganden man gjort för en viss variabel går det att bli uppdaterad via about, t ex about(sigma);. För att kunna rita måste vi ge σ och ω numeriska värden. Med kommandot plot kan man rita såväl parameterkurvor som funktionskurvor. 1.13 (I mån av tid.) Slå in kommandona sigma := -0.3; omega := 5; plot([re(f(t)),im(f(t)),t=0..10],scaling=constrained); plot(re(f(t)),t=0..10,scaling=constrained); plot(im(f(t)),t=0..10,scaling=constrained); 3
(scaling=constrained medför att Maple använder samma skala på horisontell och vertikal axel. Utelämnar man det kan kurvan bli felskalad. Man kan också ändra detta i menyn i bildfönstret under Projection.) För att kunna rita vissa tredimensionella figurer måste man ladda in en grafikmodul i Maple. 1.14 (I mån av tid.) Rita en rymdkurva med kommandona with(plots); spacecurve([t,re(f(t)),im(f(t)),t=0..10],scaling=constrained); spacecurve([t,re(f(t)),im(f(t)),t=0..10],scaling=constrained, orientation=[0,90],axes=normal); Lägg märke till att man kan vrida de tredimensionella figurerna i bildfönstret. Håll vänsterknappen nedtryckt i bildfönstret och flytta musen. Bilden ritas om då man trycker på mittknappen. Vill ni ha en mindre kantig kurva så lägg till numpoints=100, innan scaling. Jämför den sist ritade kurvan med den först ritade i förra övningen. Vad skiljer? Svar: Vi ska nu studera real- och imaginärdelen samt absolutbeloppet av sinusfunktionen. Notera att sinusfunktionen inte längre är uppåt begränsad av 1. Är den begränsad av någon annan konstant? Svar:. 1.15 Knappa in kommandona assume(x,real,y,real); z:=x+i*y; plot3d(re(sin(z)),x=0..13,y=0..2,orientation=[-112,68],axes=normal); plot3d(im(sin(z)),x=0..13,y=0..2,orientation=[-112,68],axes=normal); plot3d(abs(sin(z)),x=0..13,y=0..2,orientation=[-112,68],axes=normal, grid=[30,30]); Verkar sin z begränsad? Peka gärna på bilderna med musen. Håll vänster musknapp nedtryckt och rör på musen. Med höger musknapp nedtryckt kommer du åt flera inställningar. Vi ska nu studera logaritmfunktionen och försöka se vilken gren som Maple använder. 1.16 Skriv följande kommandon assume(r,real,t,real); x:=r*cos(t);y:=r*sin(t); z:=x+i*y; plot3d([x,y,re(log(z))],r=0..1,t=-pi..pi,axes=normal); plot3d([x,y,im(log(z))],r=0..1,t=-pi+0.001..pi-0.001,axes=normal, orientation=[-52,55],shading=zhue); plot3d([x,y,argument(z)],r=0..1,t=-pi+0.001..pi-0.001,axes=normal, orientation=[-52,55],shading=zhue); Vilken gren använder Maple? Svar:. Rita Im(log(z)) om log betyder naturliga grenen (0 < arg z < 2π). Använd funktionen argument. Maplekommando: 4
Komplexa funktioner Vi skall låta Maple kontrollera om ett antal funktioner är analytiska. Metoden är att använda Cauchy-Riemanns differentialekvationer. Vi skall nu definiera funktioner av z = x+iy, där x och y är reella, och kontrollera Cauchy-Riemann. 1.17 Sätt f(z) = z 3 2z och beräkna u = Re f och v = Im f. Vi kan nu upprepa proceduren med ett antal funktioner av z. 1.18 Kontrollera om f(z) = sin(z), f(z) = 1/(z 2 2z + 3), f(z) = z (med conjugate) och f(z) = z 3 är analytiska. Se efter vilka u och v blir. Funktionerna visade sig vara analytiska medan funktionerna inte var analytiska. Två slumpvis valda funktioner u(x, y) och v(x, y) ger praktiskt taget aldrig en analytisk funktion u + iv. 1.19 (I mån av tid.) Välj några funktionspar u(x, y), v(x, y) och låt Maple testa om de uppfyller Cauchy-Riemanns ekvationer. Enligt teorin är en funktion u(x, y) på ett enkelt sammanhängande område realdel (eller imaginärdel) till en analytisk funktion precis då den är en harmonisk funktion. I så fall kan man genom att lösa Cauchy-Riemanns ekvationer för v bestämma motsvarande analytiska funktion. 1.20 Låt u(x, y) = x 3 3xy 2. Kontrollera med Maple att u xx + u yy = 0. Bestäm sedan v genom att lösa { vx = u y v y = u x genom att integrera den första ekvationen med avseende på x och sätta in i den andra. Vid denna integration skall man få en integrationskonstant (här kallad h(y)) som beror på y. 1.21 Sätt sedan f = u + iv och bestäm f som funktion av z. 1.22 Antag att en oändligt lång laddad ledare ligger längs z-axeln. Laddningen antas vara likadan överallt. Det elektrostatiska fältet runt ledaren är då detsamma i varje plan vinkelrät mot z-axeln. Vi kan därför studera kraftfältet i xy-planet. Från 1 Coulombs lag fås via en generaliserad enkelintegral att kraftfältet ges av x 2 (x, y). + y2 Här saknas en proportionalitetsfaktor, som vi avsiktligt utelämnar i detta fall. Om en likadan men motsatt laddad ledare skär xy-planet i (2, 0) så ges det sammanlagda fältet av Som potential duger (P, Q) = 1 x 2 + y 2 (x, y) 1 (x 2) 2 (x 2, y) + y2 U = 1 2 ln(x2 + y 2 ) 1 2 ln((x 2)2 + y 2 ) 5
Kontrollera att U x = P och U y = Q. Rita med hjälp av Maple 20 nivåkurvor till U då 1 x 3, 3 y 3. Lämpligt kommando kan vara contourplot med optionerna contours, grid, color och scaling=constrained. I en punkt på en ekvipotentialkurva till U, dvs i en punkt på en nivåkurva till U, är grad U vinkelrät mot nivåkurvan. Men grad U = (P, Q). Därför skär kraftlinjerna nivåkurvorna under rät vinkel. Rita ut 20 kraftlinjer i den figur du redan ritat. Via with(plots) och display kan två separata bilder ritas samtidigt. 6