Ho un piccolo problema di matematica. Vorrei avere una funzione con queste proprietà:Quale semplice funzione matematica f (x) ha queste proprietà?
- per x molto più grandi di 0: lim f (x) = x
- per x molto più piccoli di 0: lim f (x) = 0
- ed f (0) = 1 (scusate, ho avuto qui f (1) = 1, che era sbagliato!)
- f (x) dovrebbe essere monotonically increasing
Quindi la funzione dovrebbe guardare un po 'come questo:
^
| /
|/
|/
___.-+´
--´-----+------>
|
Il meglio che ho ottenuto finora è x/(1 + e^(-x))
ma poi ho riconosciuto che scende sotto 0 e non aumenta monotonicamente.
Un grande aiuto per giocare con queste funzioni è GraphFunc Online.
Inoltre, sarebbe utile se la funzione è veloce da calcolare in quanto ho bisogno di eseguirlo molto spesso.
EDIT: lo sto utilizzando in un programma per limitare i valori. Ho un algoritmo di ottimizzazione, che utilizza l'adattamento della curva con un algoritmo Levenberg-Marquardt. Ma questo algoritmo non consente vincoli e ottimizza l'intera gamma di valori reali. Quindi ho bisogno di una funzione come questa in modo da poter aggiungere un vincolo artificiale in modo che la funzione sia più grande di 0. Un approccio semplice sarebbe usare f(x) = x²
ma la funzione non è monotonicamente crescente e ha due minimas.
Il Levenberg-Marquardt si avvicina alle derivate, quindi penso che sarebbe meglio quando anche la funzione è liscia. Ma non sono sicuro che sia assolutamente necessario.
Non vedo come questo sia collegato alla programmazione. –
A questo punto mi aspetto di vedere più di un tag di lingua. Spiega perché lo stai facendo a livello di programmazione o qualcosa del genere. – EBGreen
Potrei facilmente vedere come questo è collegato alla programmazione, ma forse l'OP potrebbe aggiungere un contesto per soddisfare gli altri. –