Obligatorisk oppgave Oppgave a) Vi kan finne divergens og virvling av det todimensjonale hastighetsfeltet ved å finne v og v. Gitt at v = ui + vj, hvor u = cos x sin y og v = sin x cos y, får vi følgende: Divergens Divv = v = δu + δv δu δv = δ cos x sin y = δ sin x cos y = sin x sin y = sin x sin y Divv = sin x sin y + sin x sin y Divv = Virvling Curlv = v = i j k δ δ u v = δ v i δ u j + δ u δ v δv k = δu k δv δu = δ sin x cos y = δ cos x sin y = cos x cos y = cos x cos y Curlv = δv δu k = cos x cos y cos x cos y k Curlv = cos x cos y k Med dette har vi at Divv = og Curlv = cos x cos y k. b) Vi kan tegne strømvektorer langs x- og y-aksen ved å finne verdier gitt at u = cos x sin y og v = sin x cos y. Vi kan for eksempel velge verdier som.,.,.,.3 og.4 og anta at strømvektorene vil forandre seg uniformt som på et stivt legeme. Ved å velge disse verdiene ser vi på strømvektorer rundt origo. Strømvektorer langs y-aksen er gitt ved cos sin y : y =.4, x = cos sin y =.3894834 y =.3, x = cos sin y =.9557 y =., x = cos sin y =.9866933 y =., x = cos sin y =.9983347 y =., x = cos sin y =. y =., x = cos sin y =.9983347 y =., x = cos sin y =.9866933 y =.3, x = cos sin y =.9557 y =.4, x = cos sin y =.3894834
Strømvektorer langs x-aksen er gitt ved cos sin x : x =.4, y = cos sin x =.3894834 x =.3, y = cos sin x =.9557 x =., y = cos sin x =.9866933 x =., y = cos sin x =.9983347 x =., y = cos sin x =. x =., y = cos sin x =.9983347 x =., y = cos sin x =.9866933 x =.3, y = cos sin x =.9557 x =.4, y = cos sin x =.3894834 Setter vi inn disse verdiene i et koordinatsystem, vil vi få følgende figur som representerer strømvektorene:
c) Vi kan finne sirkulasjonen om randa til kvadratet definert ved x og y ved å bruke s linjeintegral på området. Linjeintegralet er gitt ved: v = v dr = I + II + III + IV hvor I i = II j = v( v(x, ) dx, y) dy III i = v(x, ) dx IV j = v(, y) dy Vi kan med dette løse disse fire integralene hver for seg: I i = I i = I i = v(x, ) dx = cos x sin cos x dx = sin x dx = sin sin = + II j = II j = v(, y) dy = = sin II j = III i = cos y dy = sin y v(x, ) dx III i = III i = = cos x sin cos x dx = sin x cos y dy = sin sin dx = sin sin = = IV j = IV j = IV j = v(, y) dy = = sin cos y dy = sin y cos y dy = sin sin = + v = v dr = I + II + III + IV v = = 8 3
d) Da Divv = eksisterer en strømfunksjon, og siden v er et todimensjonelt felt vil en strømfunksjon ψ eksistere slik at u = δψ δψ = cos x sin y v = = sin x cos(y) δψ = cos x sin y δψ = sin x cos(y) ψ = cos x sin y ψ = sin x cos(y) ψ = cos x cos y + c ψ = cos x cos(y) + c ψ = cos x cos y + c = cos x cos(y) + c, hvor c = c = slik at ψ = cos x cos y Vi har med dette vist at ψ = cos x cos y. e) Vi kan bruke Taylorutvikling av andre orden til å finne tilnærmede strømlinjer nær origo,,. Dette er gjort på følgende måte: ψ x, y = ψ x, y, x = y = ψ x, y = ψ x, y + δ ψ x,y + δ ψ x,y x x + δ ψ x,y x x y y + y y + δ ψ x,y y y δ ψ x,y x x ψ x, y = cos cos = δ ψ x,y δ ψ x,y δ ψ x,y δ ψ x,y δ y x x = sin x cos y x = x y y = sin x cos y y = x x x = cos x cos y x = x x x y y = δ cos x sin y = δ ψ x,y y y = cos x cos y y = y sin x sin y xy = ψ x, y = + + x + y ψ x, y = x y Strømlinjene nær origo er med dette gitt ved ψ x, y = x y. 4
Oppgave a) Vi kan bruke funksjonen streamfun.m i et skript strlin.m som plotter konturlinjer for ψ når (i) n = 5 og (ii) n = 3. Dette skriptet, strlin.m, vil se slik ut: % Oppgave a.i figure(); n=5; [x,y,psi]=streamfun(n); contour(x,y,psi); colorbar; xlabel('x-akse, [-.5\pi,.5\pi]'); ylabel('y-akse, [-.5\pi,.5\pi]','FontSize',); tit=sprintf('%s%d','oppgave a.i, n=',n);title(tit,'fontsize',); % Oppgave a.ii figure(); n=3; [x,y,psi]=streamfun(3); contour(x,y,psi); colorbar; xlabel('x-akse, [-.5\pi,.5\pi]'); ylabel('y-akse, [-.5\pi,.5\pi]','FontSize',); tit=sprintf('%s%d','oppgave a.ii, n=',n);title(tit,'fontsize',); Dersom vi nå kjører dette skriptet får vi to figurer et for n = 5 og et for n = 3. >> run('c:\users\nicolai Solheim\Desktop\Obliger\MEK\strlin.m') 5
Dersom vi nå sammenligner med ψ x, y = x y, vil vi se at de tilnærmede strømlinjene nær origo er mer nøyaktige figurene med en høyere n. Vi kan se at plottet med en høyere n-verdi er gir mer nøyaktige konturer enn det vi vil få ved å bruke en lavere n-verdi. b) Vi kan deretter skrive en funksjon velfield.m som beregner hastigheter utfra u = cos x sin y og v = sin x cos y, og som skal brukes i et skript vek.m som som tegner et vektorplott av hastighetsfeltet. Kode for velfield.m: % Beregner hastigheter function[x,y,u,v] = velfield(n) if nargin < ; n=5; end x=linspace(-.5*pi,.5*pi,n); [X,Y] = meshgrid(x,x); U=cos(X).*sin(Y); V=-sin(X).*cos(Y); Kode for vek.m: % Tegner vektorplott av hastighetsfeltet [x,y,u,v]=velfield(5); quiver(x,y,u,v); xlabel('x-akse, [-.5\pi,.5\pi]'); ylabel('y-akse, [-.5\pi,.5\pi]','FontSize',); title('oppgave b, vektorplott av hastighetsfeltet v','fontsize',); Hvis vi nå kjører programmet med n = 5 vil vi få et vektorfelt. >> run('c:\users\nicolai Solheim\Desktop\Obliger\MEK\vek.m') 6
Oppgave 3 a) Vi kan finne linjeintegralet I = v dr λ og en kurve λ. ved regning da vi er gitt v = x + 3y i + 3 + y j Linjeintegralet er funnet ved I = v r dr = A + B = v r λ t r t dt + λ v r t r t dt, hvor r t er det parametriske uttrykket. Vi finner de parametriske λ utrykkene ved hjelp av det vi har fått oppgitt slik at: r t = ti + j t, r t = i + j r t = ti + t j t, r t = i + j Vi kan med dette regne ut linjeintegralet I. I = v r dr λ A = A = A = A = λ = A + B = v r t r t dt λ + v r t r t dt λ v r t r t dt x + 3y i + 3 + y j r t dt t + 3 i + 3 + j r t dt ti + 3j i + j dt A = t dt A = t = A = B = B = B = B = B = λ v r t r t dt x + 3y i + 3 + y j r t dt t + 3 t i + 3 + t j r t dt 4t 3 i + + t j i + j dt 4t 3 + + t dt 7
B = I = A + B I = + 3 I = 7 5t dt B = 5 t 5 t = 5 = 5 + B = 3 Vi har med dette funnet at I = 7. b) Vi kan vise at linjestykket mellom punkt i og punkt i + blir bidraget til I. Det første vi da gjør er å anta integralet kan skrives som en sum for en sekvens rette linjer slik at: I = v dr = v dr I i = v C i+ dr = v dr i = v dr Med dette får vi et uttrykk som vil være anvendt på området mellom punkt i og punkt i + for en rett linje. Videre kan vi løse for v r i og dr. I i = v dr = v r i dr I i = v r i dr I i = u i++u i I i = u i++u i r t = r i + t r i+ r i = r i + t dr, slik at dr = r i+ r i hvor komponentene er dx = x i+ x i dy = y i+ y i dr = dxi + dyj v r i = ui + vj, og da trapesmetoden bruker et midtpunkt vil v være gitt ved v = u i + v j = u i++u i i + v i++v i j i + v i++v i I i = u i++u i x i+ x i j dr = u i++u i x i+ x i + v i++v i (y i+ y i ) + v i++v i (y i+ y i ) 8 i + v i++v i I i = u i+ + u i x i+ x i + v i+ + v i (y i+ y i ) j x i+ x i i + (y i+ y i )j Vi har med dette vist at I i = u i+ + u i x i+ x i + v i+ + v i (y i+ y i ) for et linjestykke mellom punkt i og punkt i +. c) Vi kan nå skrive et program trapes.m som finner I i ved kallet >>[I]=trapes(x,y,u,v);. % Regner ut I function[i] = trapes(x,y,u,v) % Lager en array for I*-verdier n=length(x);i=zeros(,n-); % Finner I*-verdier for i=:(n-); dx=x(i+)-x(i); dy=y(i+)-y(i); up=u(i+)+u(i); vp=v(i+)+v(i);
end Ip =.5*up*dx+.5*vp*dy; I(i)=Ip; d) I i vil være nøyaktig i oppgave (3a) fordi vi kun anvender uttrykket på rette linjer, og vi vil derfor ikke få feil annet enn avrundingsfeil. Dersom vi hadde brukt dette på kurver istedenfor rette linjer ville I i vært en tilnærming av integralet. Vi kan med dette lage et skript, Itest.m, som bruker trapesfunksjonen for å finne I. % Punkter p=[,]; p=[,]; p3=[,]; % Dele punktene i x- og y-verdier x=[p(),p(),p3()]; y=[p(),p(),p3()]; % Regne ut ui og vj u=x+3.*y; v=3+y; % Kjøre trapesfunskjonen list = trapes(x,y,u,v); % Resultat I = sum(list) Hvis vi kjører Itest.m får vi I = 7. Dette kan vises ved: >> Itest.m I = 7 e) Vi kan vise at sirkulasjonen av v rundt enhetssirkelen gitt at v = yi + xj og de parametriske funksjonene for enhetssirkelen er: r t = cos t i + sin t j x t = cos t y t = sin t Dersom vi nå setter regner ut integralet fra til får vi følgende: v = v r t dr = v r t r t dt v = v = sin t i + cos t j sin t i + cos t j dt sin (t) + cos (t) dt v = dt = t = v = Vi har med dette vist at sirkulasjonen av v rundt enhetssirkelen. 9
Programmer og figurer Kode for strlin.m: % Oppgave a.i figure(); n=5; [x,y,psi]=streamfun(n); contour(x,y,psi); colorbar; xlabel('x-akse, [-.5\pi,.5\pi]'); ylabel('y-akse, [-.5\pi,.5\pi]','FontSize',); tit=sprintf('%s%d','oppgave a.i, n=',n);title(tit,'fontsize',); % Oppgave a.ii figure(); n=3; [x,y,psi]=streamfun(3); contour(x,y,psi); colorbar; xlabel('x-akse, [-.5\pi,.5\pi]'); ylabel('y-akse, [-.5\pi,.5\pi]','FontSize',); tit=sprintf('%s%d','oppgave a.ii, n=',n);title(tit,'fontsize',); Kode for velfield.m: % Beregner hastigheter function[x,y,u,v] = velfield(n) if nargin < ; n=5; end x=linspace(-.5*pi,.5*pi,n); [X,Y] = meshgrid(x,x); U=cos(X).*sin(Y); V=-sin(X).*cos(Y); Kode for vek.m: % Tegner vektorplott av hastighetsfeltet [x,y,u,v]=velfield(5); quiver(x,y,u,v); xlabel('x-akse, [-.5\pi,.5\pi]'); ylabel('y-akse, [-.5\pi,.5\pi]','FontSize',); title('oppgave b, vektorplott av hastighetsfeltet v','fontsize',); Kode for trapes.m: % Regner ut I function[i] = trapes(x,y,u,v) % Lager en array for I*-verdier n=length(x);i=zeros(,n-); % Finner I*-verdier for i=:(n-); dx=x(i+)-x(i); dy=y(i+)-y(i); up=u(i+)+u(i); vp=v(i+)+v(i); Ip =.5*up*dx+.5*vp*dy; I(i)=Ip; end
Kode for Itest.m: % Punkter p=[,]; p=[,]; p3=[,]; % Dele punktene i x- og y-verdier x=[p(),p(),p3()]; y=[p(),p(),p3()]; % Regne ut ui og vj u=x+3.*y; v=3+y; % Kjøre trapesfunskjonen list = trapes(x,y,u,v); % Resultat I = sum(list)
3