ho la seguente equazione che voglio risolvere rispetto a
:Matlab: Soluzione un'equazione logaritmica
x = (a-b-c+d)/log((a-b)/(c-d))
dove x
, sono noti b
, c
e d
. Ho usato Wolfram Alpha per risolvere l'equazione, e il risultato è:
a = b-x*W(-((c-d)*exp(d/x-c/x))/x)
dove W
è la è la funzione log prodotto (Funzione W di Lambert). Potrebbe essere più facile vederlo allo Wolfram Alpha page.
Ho utilizzato la funzione incorporata di Matlab lambertW
per risolvere l'equazione. Questo è piuttosto lento, ed è il collo di bottiglia nel mio script. C'è un altro, più veloce, modo di fare questo? Non deve essere preciso fino al decimo decimale.
MODIFICA: Non avevo idea che questa equazione sia così difficile da risolvere. Ecco un'immagine che illustra il mio problema. Le temperature b-d più LMTD variano in ogni fase temporale, ma sono note. Il calore viene trasferito dalla linea rossa (CO2) alla linea blu (acqua). Devo trovare la temperatura "a". Non sapevo che fosse così difficile da calcolare! : P
Con quale frequenza e in quale contesto è necessario risolvere questa equazione per 'a'? Come parte di qualche altro risolutore? I valori di 'x, b, c, ...' che vuoi valutare sono già noti? – knedlsepp
Non so nulla della funzione lambert W. Tuttavia, non ho trovato la tua risposta molto utile, IrrationalPerson. @ knedlsepp: Sto usando per risolvere uno scambiatore di calore in una pompa di calore. Lo sto usando in qualche altro risolutore. Immagino che la funzione sia utilizzata almeno 30.000 volte, molto probabilmente più (sto facendo calcoli orari per un anno). Come menzionato, x, b, c e d sono noti. – ROLF
Potresti modificare il tuo post per fornire alcuni valori realistici per 'x, b, c, d'? Il mio primo pensiero ingenuo è di provare a usare 'fzero()' per trovare la/e radice/i di '(ab-c + d)/ln ((ab)/(cd)) - x', ma questo può portare a risposte complesse per alcuni dei valori dei parametri casuali che ho provato. – eigenchris