0 svar
118 visningar
scrooge behöver inte mer hjälp
scrooge 2
Postad: 22 dec 2022 21:03 Redigerad: 22 dec 2022 21:09

Algebra Dator Lab 4, Problem 10

Även i denna uppgift använder vi samma rekursionsformel som finns i arbetsbladet (som ger attxn=xn-12 om  xn-1 är jämt och xn=3xn-1+1 om xn-1 är udda).

Hitta det minsta tal i för vilket xi INTE blir mindre än eller lika med 4 efter 300 iterationer.

 

Svar: 

 

Ledning: Läs arbetsbladet! och definiera en funktion av två variabler så här:

f[m_, n_] := f[m,n] = If[Divisible[f[m,n - 1], 2], f[m,n - 1]/2, 3*f[m,n - 1] + 1];

f[m_, 1] := m

f[m,n] ger nu resultatet av n-1 iterationer med startvärdet m. Låt n= 300 och skapa en lista av f:s värden då m=1,2,3...,M där M är ett stort heltal (experimentera!).

 

Jag har löst problemet, koden till mathematica är följande:

Clear[f]
f[m_, 1] = m;
f[m_, n_] := f[m, n] = If[Divisible[f[m, n - 1], 2], f[m, n - 1]/2, 3*f[m, n - 1] + 1];
Dyn = Table[f[m, n], {m, 1, 1000}, {n = 300}];
dd = Select[Dyn, (Last[#] != 4) && (Last[#] != 2) && (Last[#] != 1) &]

 

Svar som du vill hitta är den minsta m, som ger dig något annat lösning än siffror mindre eller lika med 4, INTE det minsta tal som du får efter beräkning.

dd = Select[Dyn, (Last[#] != 4) && (Last[#] != 2) && (Last[#] != 1) &] gör att mathematica tar bort alla siffror mindre eller lika med 4.

{m, 1, 1000} innebär alla tal m från 1 tills 1000, så vad du gör är att du TESTAR ALLA möjliga TAL tills du får ett svar,

om du inte får ett svar så tar du ett större tal, ex: {m, 1, 1000} {m, 1, 5000} .

om du får ett svar så försöka minska tal så små så möjligt, tills du får den minsta tal som ger dig ett svar, ex: {m, 1, 1000} → {m, 1, 381} .

Svara
Close