5 svar
41 visningar
Arbetsmyran 416
Postad: Igår 19:36 Redigerad: Igår 19:41

Unik tentauppgift med egenvektorer

Hej! Jag har arbetat igenom alla rekommenderade uppgifter i boken, och här kommer en tentauppgift som för mig är helt främmande från det jag gjort i boken. En helt ny typ av uppgift, och som ni förstår så fanns inga räkneexempel på detta. Jag misstänker att det är en uppgift om egenvektorer (som jag nyligen gått igenom), men jag förstår inte hur jag ska applicera det här.

 

AlexMu 1372
Postad: Igår 20:52 Redigerad: Idag 00:19

Det blir någon sorts rekursion. Om ana_n är andelen människor som bor i storstad år nn och bnb_n är antalet som bor på landsbygden så säger texten alltså att

an+1=910an+310bn\displaystyle a_{n+1}=\frac{9}{10}a_n+\frac{3}{10}b_n

bn+1=110an+710bn\displaystyle b_{n+1} = \frac{1}{10}a_n + \frac{7}{10}b_n

Sedan ger den näst sista meningen initialvillkor. Troligvis kommer ana_n och bnb_n konvergera mot några tal, vilket vi ska finna. Det kan vara svårt att inse vad man ska göra med denna rekursion, det är ju trots allt två följder som interagerar med varandra. Nedan finns en ledtråd

Visa spoiler Skriv rekursionen på vektorformat vn+1=Avnv_{n+1} = Av_n där AA är en matris och vn=anbnv_n = \begin{bmatrix}a_n \\b_n\end{bmatrix}

Wrappade ekvationerna i \displaystyle för att göra dem större /naytte

Arbetsmyran 416
Postad: Igår 22:26

Okej, har hört ordet "rekursion" kanske en gång. Att sen kunna lösa den uppgiften, efter det lilla känns lite väl. Vet ni någon video eller så, där området gås igenom?

Trinity2 Online 4639
Postad: Igår 23:31

Markovkedja?

naytte Online 8388 – Moderator
Postad: Igår 23:58 Redigerad: Idag 00:21

Rekursion i det här fallet innebär helt enkelt att du använder förra årets värden på aa och bb för att räkna ut nästkommande års värden. Uppgiften antyder att det finns något slags stationärt tillstånd där befolkningsandelarna slutar förändras efter tid. Nedan följer ett snabbt script i Python som illustrerar principen:

Numerisk lösning för att illustrera principen
def next(a: float,b: float) -> tuple[float, float]:
    return 0.9 * a + 0.3 * b, 0.1 * a + 0.7 * b


def recursion(initial_v: tuple[float, float], n: int) -> tuple[float, float]:
    a, b = initial_v

    for _ in range(n):
        a, b = next(a, b)

    return a, b

Notera att ana_n och bnb_n ständigt används för att beräkna an+1a_{n+1} och bn+1b_{n+1} och hur initialvillkoret (a0,b0)=(0.4,0.6)(a_0,b_0) = (0.\! 4, 0.\! 6) användes för att påbörja rekursionen. Vi kan alltså se rekursionen som en funktion (an,bn)↦(an+1,bn+1)(a_n,b_n)\mapsto (a_{n+1},b_{n+1}). Andelarna efter lång tid hittas genom att köra rekursionen länge, (a0,b0)↦(a1,b1)↦(a2,b2)↦(a3,b3)…(a_0,b_0)\mapsto (a_{1},b_{1})\mapsto (a_{2},b_{2})\mapsto(a_{3},b_{3})\dots tills vi har de stationära värdena. 

Notera vad som händer om vi kör några exempel:

>>> af, bf = recursion(initial_v = (0.4, 0.6), n = 1)
>>> print(f"a = {af}, b = {bf}")
a = 0.54, b = 0.45999999999999996
...
>>> af, bf = recursion(initial_v = (0.4, 0.6), n = 2)
>>> print(f"a = {af}, b = {bf}")
a = 0.624, b = 0.37599999999999995
...
>>> af, bf = recursion(initial_v = (0.4, 0.6), n = 7)
>>> print(f"a = {af}, b = {bf}")
a = 0.7402022400000001, b = 0.25979775999999993
...
>>> af, bf = recursion(initial_v = (0.4, 0.6), n = 50)
>>> print(f"a = {af}, b = {bf}")
a = 0.7499999999971712, b = 0.2500000000028289
...
>>> af, bf = recursion(initial_v = (0.4, 0.6), n = 100)
>>> print(f"a = {af}, b = {bf}")
a = 0.75, b = 0.25

Som du ser kommer vi närmare och närmare andelarna a=0.75a = 0.\! 75 och b=0.25b=0.\! 25.

Trinity2 Online 4639
Postad: Idag 00:25

Jag borde lära mig Python en dag. Det ser trevligt ut.

MMA:

Emot slutet visas egenvärdet 1 med egenvektorn (3,1) vilket ger det önskade förhållandet.

Initialvektorn är ointressant.

Men, boken kanske har en annan tanke bakom det, så studera den metod som boken lär ut.

Svara
Close