Ecco una stranissima funzione ricorsiva,che ho battezzato "funzione salterello".
F(0)=1
e f(N)=f(N-1)°N
Il simbolino ° é alternativamente più,meno,per,diviso.
Cioé partendo da uno si aggiunge uno,si sottrae due,si moltiplica per tre,si divide per quattro,si aggiunge cinque,si sottrae sei ecc.
A occhio direi che la funzione tende a zero.Ma il vero problema é:come si calcola f(x)?Come cambia la successione se cambio l'ordine degli operatori primari?
Si era giunti alla conclusione che la funzione tendeva a meno infinito,ma una formula esatta,non dico esplicita,ancora non é stata trovata.Problema insolubile?Mah,non lo escludo...qualche tentativo però...
Aloha!
Recupero:la funzione salterello
Moderatori: Gianfranco, Bruno
Questo forum è una sezione del PORTALE DI BASE CINQUE
Recupero:la funzione salterello
Lo scopo principale di una dichiarazione DATA è quello di dare dei nomi alle costanti; anziché inserire ogni volta 3.141592653589793 come valore di $\pi$, con una dichiarazione DATA si può assegnare tale valore alla variabile PI che può essere poi usata per indicare la costante. Ciò rende anche più semplice modificare il programma, qualora il valore di $\pi$ dovesse cambiare.
-Da un vecchio manuale FORTRAN della Xerox
-Da un vecchio manuale FORTRAN della Xerox
Re: Recupero:la funzione salterello
Ecco riesumato un altro vecchio quesito:
DIM y(0 TO 10000)
LET x=0
LET y(x)=1
FOR x=1 TO 10000
IF MOD(x,4)=1 THEN
LET y(x)=y(x-1)+ x
ELSEIF MOD(x,4)=2 THEN
LET y(x)=y(x-1)-x
ELSEIF MOD(x,4)=3 THEN
LET y(x)=y(x-1)*x
ELSE
LET y(x)=y(x-1)/x
END IF
10 IF MOD(x,4)=1 THEN PRINT y(x)
20 !'IF MOD(x,4)=2 THEN PRINT y(x)
30 !'IF MOD(x,4)=3 THEN PRINT y(x)
40 !'IF MOD(x,4)=0 THEN PRINT y(x)
50 !'PRINT y(x)
NEXT X
END
Interessante e strana funzione: nella routine che calcola il valore della funzione per 1 <= x <= 10000 (ho sostituito N con x), ho lasciato funzionante solo la stampa del rigo 10, per porre in evidenza il valore positivo crescente della funzione nel caso in cui sia x Mod 4 = 1.
Negli altri casi il valore è negativo, ma solo per x Mod 4 = 3 il valore assoluto della funzione è maggiore di quello indicato sopra, ovvero cresce più velocemente di quello con valore positivo.
Come interpretare questo "andazzo" della funzione "salterello" ? Potremmo dire che la funzione tende a più e meno infinito? che tende lentamente a più infinito e più velocemente a meno infinito? La velocità della tendenza influisce sulla determinazione della tendenza in un senso solo, dal momento che per qualsiasi valore negativo della funzione ce ne sarà sempre un altro positivo di valore maggiore?
Infine, in matematica come vengono considerati ad esempio $\text -\infty^2 e +\infty$ ? il primo è maggiore del secondo, o il secondo è maggiore del primo, perché positivo?
Dovendo scegliere, opterei per quest'ultima interpretazione.
Cosa ne pensate? Perché?
Per quanto riguarda ilo quesito principale (la formula), al momento nessuna idea.
DIM y(0 TO 10000)
LET x=0
LET y(x)=1
FOR x=1 TO 10000
IF MOD(x,4)=1 THEN
LET y(x)=y(x-1)+ x
ELSEIF MOD(x,4)=2 THEN
LET y(x)=y(x-1)-x
ELSEIF MOD(x,4)=3 THEN
LET y(x)=y(x-1)*x
ELSE
LET y(x)=y(x-1)/x
END IF
10 IF MOD(x,4)=1 THEN PRINT y(x)
20 !'IF MOD(x,4)=2 THEN PRINT y(x)
30 !'IF MOD(x,4)=3 THEN PRINT y(x)
40 !'IF MOD(x,4)=0 THEN PRINT y(x)
50 !'PRINT y(x)
NEXT X
END
Interessante e strana funzione: nella routine che calcola il valore della funzione per 1 <= x <= 10000 (ho sostituito N con x), ho lasciato funzionante solo la stampa del rigo 10, per porre in evidenza il valore positivo crescente della funzione nel caso in cui sia x Mod 4 = 1.
Negli altri casi il valore è negativo, ma solo per x Mod 4 = 3 il valore assoluto della funzione è maggiore di quello indicato sopra, ovvero cresce più velocemente di quello con valore positivo.
Come interpretare questo "andazzo" della funzione "salterello" ? Potremmo dire che la funzione tende a più e meno infinito? che tende lentamente a più infinito e più velocemente a meno infinito? La velocità della tendenza influisce sulla determinazione della tendenza in un senso solo, dal momento che per qualsiasi valore negativo della funzione ce ne sarà sempre un altro positivo di valore maggiore?
Infine, in matematica come vengono considerati ad esempio $\text -\infty^2 e +\infty$ ? il primo è maggiore del secondo, o il secondo è maggiore del primo, perché positivo?
Dovendo scegliere, opterei per quest'ultima interpretazione.
Cosa ne pensate? Perché?
Per quanto riguarda ilo quesito principale (la formula), al momento nessuna idea.
_________________
$\text { }$ciao ciao
E' la somma che fa il totale (Totò)
$\text { }$ciao ciao
E' la somma che fa il totale (Totò)
Re: Recupero:la funzione salterello
Per quanto possa risultare utile, ecco una formuletta che consente di calcolare il valore di f(n), in funzione di f(n-1), che nella formula indico con A, con questo intendendosi che una formula in grado di calcolare direttamente il valore di f(n) senza altri riferimenti non mi è riuscito di elaborarla.
Inoltre, indico con M il valore del Modulo 4 di n:
$f(n) = \frac{AM+A}{n} + \frac{n^2+An-2A}{n}\cdot M + \frac{A-An-3n^2}{n} \cdot {\frac{M^2-M}{2}} + \frac{An^2+6n^2-A}{n} \cdot { \frac{M^3-3M^2+2M}{6}}$
Esempio:
se n=13 ed f(8) = -1.71875, allora f(9)=11.28125
se n=3975 ed f(3974)=-795.08371387963, allora f(3975)=-3160457.76267153
Tanto verificabile con la routine di cui sopra e salvo le approssimazioni conseguenti alle divisioni salterellanti 1 ogni 4 valori di n
Ne consegue per il vostro divertimento la seguente nuova routine:
INPUT PROMPT "Inserisci il valore di n -> ":n
INPUT PROMPT "Inserisci il valore di f(n-1) -> ":A
LET M=MOD(n,4)
PRINT
LET x=(a*m+a)/n+(n^2+a*n-2*a)*m/n+(a-a*n-3*n^2)*(m^2-m)/(2*n)+(a*n^2+6*n^2-a)*(m^3-3*m^2+2*m)/(6*n)
PRINT "f(";STR$(n);") =";x
END
Appare evidente che per utilizzare questa routine occorre conoscere il valore di f(n-1) e dunque bisogna utilizzare in prima battuta l'altra routine. Ne consegue che utilizzando l'altra routine, non serve più utilizzare questa e che in sostanza la formula elaborata con un certo impiego di tempo non è servito a nulla, se non a titolo di esercizio e divertimento, come nello spirito di Base5.
Non credo che sia possibile tirar fuori una formula direttamente in funzione di n anzicché di f(n-1), ma tenatar non nuoce, se ci volete provare.
Per quanto riguarda la formula elaborata, pur apparendo abbastanza complicata non è stato difficile impostare il lavoro di ricerca, una volta rimuginato sulla particolarità della funzione salterina
Inoltre, indico con M il valore del Modulo 4 di n:
$f(n) = \frac{AM+A}{n} + \frac{n^2+An-2A}{n}\cdot M + \frac{A-An-3n^2}{n} \cdot {\frac{M^2-M}{2}} + \frac{An^2+6n^2-A}{n} \cdot { \frac{M^3-3M^2+2M}{6}}$
Esempio:
se n=13 ed f(8) = -1.71875, allora f(9)=11.28125
se n=3975 ed f(3974)=-795.08371387963, allora f(3975)=-3160457.76267153
Tanto verificabile con la routine di cui sopra e salvo le approssimazioni conseguenti alle divisioni salterellanti 1 ogni 4 valori di n
Ne consegue per il vostro divertimento la seguente nuova routine:
INPUT PROMPT "Inserisci il valore di n -> ":n
INPUT PROMPT "Inserisci il valore di f(n-1) -> ":A
LET M=MOD(n,4)
LET x=(a*m+a)/n+(n^2+a*n-2*a)*m/n+(a-a*n-3*n^2)*(m^2-m)/(2*n)+(a*n^2+6*n^2-a)*(m^3-3*m^2+2*m)/(6*n)
PRINT "f(";STR$(n);") =";x
END
Appare evidente che per utilizzare questa routine occorre conoscere il valore di f(n-1) e dunque bisogna utilizzare in prima battuta l'altra routine. Ne consegue che utilizzando l'altra routine, non serve più utilizzare questa e che in sostanza la formula elaborata con un certo impiego di tempo non è servito a nulla, se non a titolo di esercizio e divertimento, come nello spirito di Base5.
Non credo che sia possibile tirar fuori una formula direttamente in funzione di n anzicché di f(n-1), ma tenatar non nuoce, se ci volete provare.
Per quanto riguarda la formula elaborata, pur apparendo abbastanza complicata non è stato difficile impostare il lavoro di ricerca, una volta rimuginato sulla particolarità della funzione salterina
_________________
$\text { }$ciao ciao
E' la somma che fa il totale (Totò)
$\text { }$ciao ciao
E' la somma che fa il totale (Totò)