DIM x(1000), y(1000), e(1000) inizio: tempoiniz = TIMER ' ******** a e' la costante di accrescimento ' ******** (vedi sotto l'equazione della logistica). ' ******** Facciamo aumentare questa costante da 0 ' ******** in avanti, con "passo" .002 'FOR a = 0 TO 5 STEP .002 ' ******** per vedere la "buona posizione": FOR a = 0 TO 5 STEP .01 ' ******** per vedere rapidamente il caos: 'FOR a = 2 TO 5 STEP .05 ' ******** per vedere in dettaglio il caos: 'FOR a = 2.4 TO 5 STEP .01 'PRINT "scrivi a,x0,numero passi "; : INPUT a, x0, n ' ******** x0 e' la popolazione al tempo 0: ' ******** n e' il numero di "generazioni" che ' ******** consideriamo ' ******** la prima "assegnazione" per x, cioe' per la ' ******** popolazione, e' ovviamente x0 n = 100 x0 = .1: x(0) = x0 y0 = .12: y(0) = y0 ' ******* inizializziamo e con -2 perche' il grafico ' ******* dell'errore assoluto sara' "plottato" piu' ' ******* in basso di 2 rispetto ad x ed y, per ' ******* maggiora visibilita' e(0) = -2 + ABS(y(0) - x(0)) ' ******** parte di grafica SCREEN 9: CLS 0 WINDOW (-1, -2)-(101, 2) LINE (0, 2)-(0, -2): LINE (0, 0)-(100, 0): LINE (0, -2)-(100, -2) PSET (0, x(0)) ' ******** calcoliamo la popolazione per n generazioni FOR i = 1 TO n ' ******** facciamo le iterazioni x(i) = x(i - 1) + a * x(i - 1) * (1 - x(i - 1)) y(i) = y(i - 1) + a * y(i - 1) * (1 - y(i - 1)) ' ******** calcoliamo l'errore assoluto e lo diminuiamo ' ******** di 2 per vederlo meglio graficamente e(i) = ABS(y(i) - x(i)) - 2 ' ******** se la popolazione diventa "troppo negativa", ' ******** tronchiamo IF x(i) < -3 THEN x(i) = -3 IF y(i) < -3 THEN y(i) = -3 NEXT i ' ******** "plottiamo" il valore della popolazioni ' ******** al variare delle generazioni da 1 ad n FOR i = 0 TO n - 1: LINE (i, x(i))-(i + 1, x(i + 1)): NEXT i ' ******** la y la "plottiamo" in giallo (colore 14) FOR i = 0 TO n - 1: LINE (i, y(i))-(i + 1, y(i + 1)), 14: NEXT i ' ******** "plottiamo" l'errore assoluto in azzurro (colore 3) FOR i = 0 TO n - 1: LINE (i, e(i))-(i + 1, e(i + 1)), 3: NEXT i PRINT "a = "; a INPUT pausa$ NEXT a PRINT "tempo = "; TIMER - tempoiniz INPUT pausa$ GOTO inizio