You can do it with binaray intersect.
Vb = 10
HLow:= 0
HHigh=10000
H=(HHigh + HLow) / 2
WHILE Abs(VbCalc = Vb - Va*[(Ca/(1 + H/Ka) - H + Kw/H)/(Cb/(1 + Kw⁄
(H*Kb)) + H - Kw/H)]) > 0.0005
IF VbCalc < Vb
HLow=H
ELSE
HHigh=H
ENDIF
H=(HHigh + HLow) / 2
ENDDO
HTH
Johan Nel
South Africa
On 2022/12/14 01:49, Paul Newton wrote:
I have the following equation
Vb = Va*[(Ca/(1 + H/Ka) - H + Kw/H)/(Cb/(1 + Kw⁄ (H*Kb)) + H - Kw/H)]
Va, Ca, Ka, Cb, Kb and Kw are known or can be provided for any given
"run" of the calculation. Typical values might be
Va = 10, Ca = 0.1, Ka = 1.8E-5, Cb = 0.1, Kb = 0.63, Kw = 1.0E-14
The aim is to calculate H for various values of Vb and this requires
"solving" for H. Various software packages do this in pretty much the
same way but the terminology varies: Matlab uses "fsolve", Mathcad
uses "find", Maple uses "solve" and Excel uses "GoalSeek".
I would like to try to find a way of doing this from VFP. Perhaps
there is already a .NET DLL that could be called from VFP? Perhaps
with a wrapper to act as a sort of mediator? Failing that, would it
be a major task to create something in .NET (perhaps using an existing
package)?
I really don't know, just thinking aloud ...
Paul Newton
[excessive quoting removed by server]
_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: https://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: https://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: https://leafe.com/archives
This message:
https://leafe.com/archives/byMID/c1922019-990e-4e98-02b5-fa26a5a45...@xsinet.co.za
** All postings, unless explicitly stated otherwise, are the opinions of the
author, and do not constitute legal or medical advice. This statement is added
to the messages for those lawyers who are too stupid to see the obvious.