Una specie di fattoriale

blackdie
Prendiamo in considerazione :

$F(x)=((((((x^(x-1))^(x-2))^(x-3))^...)^3)^2)$


Voglio definirlo su un programma matematico(Derive) in modo che lo calcoli in maniera autonoma,senza che io scriva tutti i numeri nell'operazione.
Come posso fare?

Risposte
blackdie
Ho risolto tutto ! Grazie ancora
Cmq la funzione come l'avete intesa è corretta!


Ps Secondo me la potenza di calcolo dei software matematici, in questo caso Derive dipende piu dalla potenza di un computer che da altri fattori.
[/quote]

Nidhogg
Allora n ed r sono due parametri della funzione. In n è contenuto il valore iniziale mentre in r si troverà il risultato della procedura, che rappresenta il valore di funzione f(n). Per inserire il programma, dalla barra degli strumenti, dal menù Crea, selezioni "Definisci funzione...". Poi nel campo "Nome della funzione ed argomenti:" inserisci f(n,r); nel form "Definizione:" inserisci questo codice:
PROG(
  i ≔ 2,
  r ≔ i,
  LOOP(
    IF(r = n,
       RETURN i),
    IF(n < 2,
       RETURN n),
    i ≔ (r + 1)^i,
    r ≔ r + 1)    )


Per utilizzare la procedura basta scrivere nella stringa di comando di Derive, ad esempio, f(4,r) e il risultato sarà 262144.

blackdie
Scusate la mia ignoranza ma per inserirla come devo fare?devo andare su crea/definisci funzione?


E poi da quel che ho capito di quel codice si utilizzano due variabili (n,r) ma io ne utilizzo solo una.Mi spiegate perchè?




Grazie

Nidhogg
f(n, r) ≔          
  Prog             
    i ≔ 2          
    r ≔ i          
    Loop           
      If r = n     
         RETURN i  
      If n < 2     
         RETURN n  
      i ≔ (r + 1)^i
      r ≔ r + 1


Una modifica al codice "Derive". Credo che sia (salvo errori) simile a quella di signor.nessuno.

signor.nessuno1

Nidhogg
Il problema dei software matematici (soprattutto Derive) è che non supportano la potenza espressiva di un linguaggio ad alto livello (tipo C). Infatti il Derive come stile di programmazione è molto simile al LISP, il che non è il massimo!

signor.nessuno1

signor.nessuno1

Nidhogg
Forse ho interpretato male la funzione. Io sinceramente non saprei. Deve rispondere blackdie!

Nidhogg
No! Anzi ti ammiro. Vedo che hai un'ottima conoscenza del linguaggio C, anche se credo che la potenza di calcolo di software tipo Derive sia superiore.

signor.nessuno1

signor.nessuno1

Nidhogg
F(4)=4096 e non 262144

signor.nessuno1

Nidhogg
f(n, r) ≔          
  Prog             
    r ≔ n          
    Loop           
      If n ≤ 2     
         RETURN r  
      r ≔ r^(n - 1)
      n ≔ n - 1


Basta definire questa procedura in Derive. Poi chiamarla passando f(n,r) dove n è l'elemento da calcolare e r può essere qualsiasi valore, perchè all'interno della procedura r verrà inizializzata con il valore di n. Se hai bisogno di chiarimenti chiedi pure.

blackdie
Nessuno sa aiutarmi?

blackdie
Chiedo scusa. Ho sbagliato a mettere le parentesi:

si ha:
$F(x)=(x^((x-1)^((x-2)^((x-3)^(...^(4^(3^2)))))))

Che è un operazione completamente diversa!

Mistral2
Scusa ma se $x$ è intero non basta che scrivi $f(x)=x^{(x-1)!}$. Il calcolo mi sembra più che abbordabile dato che tutti i programmi sanno già calcolare il fattoriale.

Saluti

Mistral

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.