help-octave
[Top][All Lists]
Advanced

[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

```

reply via email to

 [Prev in Thread] Current Thread [Next in Thread]