Problema matematico

Nettuno001
Buon giorno, vorrei sottoporre un problema.
Passo a descrivere il problema qui di seguito:
Sia dato un vettore algebrico v, di cui siano note tutte le componenti $v_1,v_2,v_3,..., v_n$.
Le componenti del vettore v sono ordinate in senso crescente ovvero $v_(j+1) > v_(j)$.
Sia inoltre q un numero reale assegnato.
Vorrei trovare una formula puramente analitica che sia in grado di restituire il valore
della più piccola componente del vettore v che sia maggiore o uguale della quantità q assegnata.
I dati di input della formula dovrebbero essere il valore q e tutte le componenti del vettore v.
Grazie.

Risposte
Ciao,

Innanzitutto, il tuo problema non è ben posto al 100% perché i $v_i$ potrebbero essere tutti minori di $q$, quale dovrebbe essere l'output in questo caso? Supponiamo che in questo caso l'output sia $q$ (ma è facile modificare la funzione che segue all'occorrenza).

Poi c'è il (solito) problema di cosa si intende per "formula puramente analitica". Immagino che tu intenda una formula che coinvolge le quattro operazioni e funzioni "di base" come la radice quadrata, la radice cubica eccetera, ed eventualmente esponenziali, logaritmi, funzioni trigonometriche.

La seguente funzione $f(q,v_1,...,v_n)$ restituisce $q$ se $v_1,...,v_n$ sono tutti minori di $q$. Se almeno uno tra $v_1,...,v_n$ e' maggiore o uguale a $q$ allora $f(q,v_1,...,v_n)$ restituisce il più piccolo tra i $v_i$ che sono maggiori o uguali a $q$.

[tex]f(q,v_1,...,v_n) = q + \min(\max(0,v_1-q),\ldots,\max(0,v_n-q))[/tex]

Qui [tex]\max(x_1,...,x_n)[/tex] è il massimo tra $x_1,...,x_n$ e [tex]\min(x_1,...,x_n)[/tex] è il loro minimo. Ora, tu potresti dire che "max" e "min" non sono funzioni "puramente analitiche", ma in realtà lo sono, dato che sono iterazioni di max e min in due variabili (per esempio [tex]\max(x,y,z)=\max(\max(x,y),z)[/tex]) e

[tex]\min(x,y) = \frac{1}{2} (x+y-|x-y|)[/tex]

[tex]\max(x,y) = \frac{1}{2} (x+y+|x-y|)[/tex]

e se preferisci non usare il "modulo", puoi usare la radice quadrata:

$|x| = \sqrt{x^2}$.

Con questi dati riesci a scrivere una "formula chiusa" che però è complicata (ma questo immagino che non sia un problema per te). Per esempio se $n=2$ abbiamo

[tex]f(q,v_1,v_2) = q+\min ( \frac{1}{2} ( v_1-q + |v_1-q| ), \frac{1}{2} (v_2-q+|v_2-q|) )[/tex]
[tex]=q+ \frac{1}{4} \left( v_1-q + | v_1-q| + v_2-q + | v_2-q | - | v_1-q+ | v_1-q | -(v_2-q)- | v_2-q | | \right)[/tex]

Nettuno001
Si, in effetti non ho specificato che non tutte cle componenti di v sono più piccole
di q. Non ho specificato perchè in questo caso il problema non avrebbe avuto soluzione.
q è sempre più grande della più piccola componente di v e più piccolo
della più grande componente di v.
Nella soluzione proposta c'è però una cosa che non capisco:
abbiamo detto che le componenti del vettore v sono ordinate in senso crescente. Immaginiamo
che $v_(j+1)$ sia la soluzione del problema ovvero che risulti
$v_1 Per tutte le componenti di v che precedono q risulta
$v_h$ invece per le componenti di v che seguono q risulta
$v_h$>q dunque $v_h$-q>0 dunque max(0,$v_h$-q)=$v_h$-q>0.
Dovrebbe quindi risultare
min(max(0,$v_1$-q),...,max(0,$v_n$-q))=0
e dunque
q+min(max(0,$v_1$-q),...,max(0,$v_n$-q))=q
ma avremmo dovuto ottenere $v_(j+1)$.
Avevo pensato anche io di ragionare sulle differenze fra le componenti di v e q, ma in
valore assoluto.
Avrei quindi lavorato sulle quantità
$abs(v_1-q),abs(v_2-q),...,abs(v_n-q)$.
Tali quantità raggiungono infatti un minimo proprio nell'intervallo [$v_j$,$v_(j+1)$].
Però se prendessi a riferimento la quantità
min($abs(v_1-q),abs(v_2-q),...,abs(v_n-q)$)
se q fosse più vicino a $v_j$ otterrei
min($abs(v_1-q),abs(v_2-q),...,abs(v_n-q)$)=$abs(v_j-q)$
ma se q fosse più vicino a $v_(j+1)$ otterrei
min($abs(v_1-q),abs(v_2-q),...,abs(v_n-q)$)=$abs(v_(j+1)-q)$.
A questo punto non so come procedere
Grazie.

Sì è vero, hai ragione, quando scrivevo "min" pensavo al minimo dei numeri non nulli della lista. Cioè chiamando

[tex]g(x_1,\ldots,x_n) = \left\{ \begin{array}{lr} \min\{x_i\ |\ i \in \{1,\ldots,n\},\ x_i \neq 0\} & \mbox{se } (x_1,\ldots,x_n) \neq (0,\ldots,0), \\
0 & \mbox{se } (x_1,\ldots,x_n) = (0,\ldots,0) \end{array} \right.[/tex]

allora la funzione $f$ di cui parlavo sopra, corretta, è

[tex]f(q,v_1,...,v_n) = q+ g(\max(0,v_1-q),\ldots,\max(0,v_n-q))[/tex].

Ho l'impressione che la questione si traduca nella possibilità di esprimere la funzione $g$ analiticamente. Ci ho pensato un po' e la cosa non mi sembra facilissima.

Nettuno001
Si, in effetti non deve essere una cosa semplice esprimere in formule la funzione g.
Ciò dipende dal fatto che, ad oggi non è noto un sistema che ci consenta di
esprimere analiticamente gli operatori logici (appartiene, diverso, per ogni, etc. )
Forse si potrebbe ragionare sulla proposta che ho indicato sopra in cui considero il minimo
dei valori assoluti. Se infatti q fosse più vicino a $v_(j+1)$ piuttosto che a $v_j$,
(Il che si verifica se q supera la metà dell’intervallo [$v_j$,$v_(j+1)$].
La formula sarebbe esattamente
f=q+min($abs(v_1-q), abs(v_2,-q),…, abs(v_n-q)$).
Tale formula invece non vale se q appartiene alla prima metà dell’intervallo indicato.
Se una espressione analitica fosse trovata, potrei utilizzarla per impostare analiticamente lo studio di
problemi che, ad oggi vengono affrontati solo numericamente.
So che tale problema sembra di poco conto ma lo si incontra spesso quando la quantità q
proviene da un dimensionamento di qualche sistema e quando si debba cercare una
quantità che sia commercialmente disponibile.
La disponibilità commerciale e’ contenuta nel vettore v, mentre la quantità richiesta e’ indicata da q.
Il problema consiste quindi nell’individuare la minima quantità commercialmente disponibile che sia almeno uguale alla richiesta q.
Sembra un problema astratto ma in realtà e’ molto frequente nella pratica ed ha quindi un certo interesse applicativo.
Grazie

Capisco, ma a livello operativo ti basta un programma da computer, non capisco a cosa ti serva esprimere la funzione in modo analitico.

Nettuno001
fin che c’è da determinare poche quantità ci si può anche fidare di un computer. Ma quando le quantità da determinare sono migliaia si ha necessità di un metodo non numerico che sia cioè totalmente sotto controllo del progettista. La soluzione analitica e’ esplicita mentre quella numerica e’ implicita.
I metodi impliciti non consentono poi di capire come funziona un sistema mentre una formula può rappresentare un intero sistema.
Più che altro mi interessa la controllabilità della soluzione analitica.
Una soluzione analitica ulteriore rispetto alla soluzione numerica costituisce un controllo di affidabilità della soluzione numerica.
Il doppio controllo sarebbe essenziale nella progettazione.
Se infatti, per distrazione, inserissi in un modello numerico un dato numerico sbagliato e non me ne accorgessi, sarei ritenuto responsabile io e non il computer.
Se però dispongo di metodi alternativi posso anche validare la soluzione numerica che potrebbe anche essere, in alcuni casi, soggetta ad instabilita’ numerica.

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