[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Solve multiple non-linear equations with function handles
From: |
jmb |
Subject: |
Solve multiple non-linear equations with function handles |
Date: |
Mon, 27 Apr 2015 18:33:46 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 |
Hello,
I am trying to use Octave 3.8 (Ubuntu 12.04 64bit) to solve multiple
non-linear simultaneous equations, using a functional handles as seen in
the example below:
=======================================================================
#!/usr/bin/octave -q
# Test of Function Handles in solving simultaneous non-linear equations:
P = 29.5; # [bar]
y = 0.3; # [-]
T = 300; # [K]
h_g = @(H_g) h_g_calc(y, P);
# Try with just ONE equation:
#
# Find a value of Y that satisfies the fictional Eqn: h_g (@ T = 300 &
an unknown Y) = Y * 2309.6
# The value 2309.6 was chosen to be close to the enthalpy, which is:
# 2309.6 [kJ/kg] @ y=0.3 [-] & P=29.5 [bar]
# The solution for Y, should be close to 1.0; since
# 2309.6 - 1.0*2309.6 = 0
#
# eq = @(Y) h_g(y, P) - Y*2309.6; # This works!
# -------------------------------------------
# Now let's try with 2 equations:
function Y = eq(y)
eq(1) = @(Y(1)) h_g(y, P) - Y(1)*2309.6;
eq(2) = @(Y(2)) h_g(y, P) - Y(2)*2*2309.6;
endfunction
#--------------------------------------------
options=optimset('FunValCheck','on', 'Display','iter-detailed',
'MaxIter',4000, 'TolFun',1.0e-10, 'TolX',1.0e-10);
[Y,fval,exitflag]=fsolve(eq,0,options)
#======================================================================
The version for a single function which is commented out works well.
Note that 'h_g_calc(y, P)' is call to an external function that I have
not included here for brevity. Next I am trying to make it work for 2
or more equations. My attempt at defining a function with eq(1), eq(2)
& Y(1), Y(2) fails the parsing step.
Can I and how do I do this in Octave? Thanks in advance for any help
you can offer.
Regards, JMB
- Solve multiple non-linear equations with function handles,
jmb <=