Ecuación implícita

Antes que todo un saludo espero puedas ayudarme con esta ecuación que llevo tiempo tratando de escribir el código. Esta ecuación se utiliza para calcular la saturación de agua llevo escrito lo siguiente
If Rt<=0 or n<=0 then Sw =-9999 '(Valor nullo)
else
Sw = ((F* Rw / Rt) - Rw* B* Qv *Sw^(n-1)) ^ (1 / n)
end if
El problema es que la ecuación es implícita y para resolver es necesario iterar con valores de sw hasta que se cumpla la igualdad con cierto valor de tolerancia o error, sin embargo llega un momento que los valores que iteran arrojan un radical negativo que detiene el proceso por un error. Agredeciendo de antemano cualquier ayuda para resolver este problema.

1 Respuesta

Respuesta
1
No se que función es, ¿que es SW?
Me podrías pasar un ejemplo ¿?
F, RW, RT etc ¿Son variables?
Saludos... Todas son variables a continuación te paso un ejemplo con valores
Ecuación original
Sw = ((F* Rw / Rt) - Rw* B* Qv *Sw^(n-1)) ^ (1 / n)
Con valores donde ocurre el error
F=102.46      Qv=0.62      B= 10.10
Rw=0.27       Rt=23.19     n=2
Todos los valores anteriores provienen de otras ecuaciones pero allí no tengo problemas, la ecuación con los valores qdaria planteada así y es al donde ir iterando valores para Sw ocurre un error con radical negativo.
Sw = ((102.46* 0.27 / 23.19) - 0.27*10.10 * 0.62 *Sw^(2-1)) ^ (1 / 2)
De la ecuación la entiendo pero mucho no de radicales negativos
¿Hay manera de determinar si el radical es negativo?
0.62 *Sw^(2-1) ¿Acá estaría el problema?
Sino, podemos dividir la ecuación.
F=102.46      Qv=0.62      B= 10.10
Rw=0.27       Rt=23.19     n=2
Sw = ((102.46* 0.27 / 23.19) - 0.27*10.10 * 0.62 *Sw^(2-1)) ^ (1 / 2)
original, divida por parentesis
Fun1 = (102.46* 0.27 / 23.19) -0.27
Fun2 = 10.10 * 0.62 *Sw^(2-1)
Fun3 = Fun1 * Fun2
Fun4 = Fun3 ^ (1 / 2)
Y entre todas podes ir controlando distintas opciones de errores.
oK, Así la he dividido
Fun1 = (f * Rw / Rt)
Fun2 = (Rw * B * Qv)
Sw = ((Fun1) - (Fun2 * Sw ^ (n - 1))) ^ (1 / n) Lo del radical negativo que te comento es que al momento de realizar la resta queda un numero negativo [ej, (-x)*(1/2)]. Para poder resolver el problema es necesario q al introducir valores de Sw en el lado derecho de la resta no genere valores mayores en este caso mayores que Fun1.
Bueno creo que si lo pones así podes llegar a advertir esta situación
Fun1 = (f * Rw / Rt)
Fun2 = (Rw * B * Qv)
Fun3=(Fun2 * Sw ^ (n - 1))
aca preguntar si
if fun1 > fun3 then
 msgbox "Radical Negativo"
else
Sw = ((Fun1) - (Fun3) ^ (1 / n))
end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas