Domanda

Sto cercando di scrivere una funzione Matlab che calcola quanti termini, mude la frazione dorata per arrivare a n cifre di precisione.Ecco cosa ho finora, ma continuo a ottenere una produzione di 0.

phi = (1+sqrt(5))/2;
p=1;
p=[1+1/p];
LoopCounter = 0;
while (phi-p)>10^(-n)
    p=[1+1/p];
    LoopCounter = LoopCounter + 1;
end
m=LoopCounter;
m
.

Penso che questa sia una domanda comune per chi studia la teoria dei numeri o semplicemente iniziando a imparare Matlab.Qualche consiglio?Grazie!

È stato utile?

Soluzione

La condizione while manca un abs.Dovrebbe essere

while abs(phi-p)>10^(-n)
.

Con il tuo codice poiché si trova, il valore iniziale del p (ovvero 2) è maggiore del phi, quindi phi-p è negativo e il ciclo while non viene mai inserito.Ecco perché ottieni m uguale a 0.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top