lund behöver inte mer hjälp
lund 529
Postad: 7 maj 2020 02:27 Redigerad: 7 maj 2020 02:28

Gränsvärde mathematica

Hej jag ska lösa följande gränsvärde inom mathematica där

g0 = 1

g= 1

g= 4gn-1 + 2gn-1 

Gränsvärdet ska beräknas på g/gn-1 där n går mot oändligheten.

Jag har försökt att beräkna detta mha kommandot Limit men får endast upp ett felmeddelande, se nedan, och det blir samma sak varje gång som jag gör om det. Jag har testat att beräkna ett gränsvärde utan en rekursion och det fungerar utmärkt. Har det med mina benämningar att göra?

Laguna Online 30252
Postad: 7 maj 2020 07:31

Det ser ut som om Mathematica inte vill ha anropskedjor som är längre än 1024. Det är ganska vanligt i programmering att det finns en gräns, och 1024 är egentligen ganska generöst. Förutom det så växer antal anrop man måste göra exponentiellt, så det tar lång tid även med ganska små gränser. Prova att låta x gå till 1024.

Det kanske går att ändra definitionen av g så att den inte är rekursiv på det viset, men jag kan inte Mathematica. Ett sätt kan vara att spara det man har räknat ut så man kan använda det för nästa beräkning. Ett annat är att skriva om funktionen lite så att den använder en hjälpfunktion, för man behöver inte alla tidigare värden, bara de två senaste.

Fundera på hur du skulle räkna ut t.ex. g(5) för hand.

lund 529
Postad: 7 maj 2020 12:36
Laguna skrev:

Det ser ut som om Mathematica inte vill ha anropskedjor som är längre än 1024. Det är ganska vanligt i programmering att det finns en gräns, och 1024 är egentligen ganska generöst. Förutom det så växer antal anrop man måste göra exponentiellt, så det tar lång tid även med ganska små gränser. Prova att låta x gå till 1024.

Det kanske går att ändra definitionen av g så att den inte är rekursiv på det viset, men jag kan inte Mathematica. Ett sätt kan vara att spara det man har räknat ut så man kan använda det för nästa beräkning. Ett annat är att skriva om funktionen lite så att den använder en hjälpfunktion, för man behöver inte alla tidigare värden, bara de två senaste.

Fundera på hur du skulle räkna ut t.ex. g(5) för hand.

Tack för tipset Laguna, jag tog ditt tips och satte ett högt x istället för att låta det gå mot oändligheten och använde istället  Table[N[g[n]/g[n-1]], {n, 0, 1000}] vilket gav mig en lista med svar där jag kunde se att gränsvärdet gick mot 4.44949 för större x.

Svara
Close