Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Matlab + fsolve Please Help

  1. Oct 23, 2008 #1
    Hey all, new here, lookin for some help with matlab, pretty much no experience.
    Gotta solve a system of 29 non-linear equations so here is what i was thinkin. I made a m-file with func which has each "guess/starting point" set to a variable. Then this function puts all of these into a matrix just so its easier to change and move around etc. Then my other m-file (as shown) has all the equations. Dont know if you can take a matrix as "IN" or what im doin wrong but keeps thrown errors so any help would be much appreciated...thanks in advance (Also what is the syntax/code for fsolve once i get this workn)?

    I had it set so i would call the other function, create a matrix with all those value and pass it to the one below (prolly not best most efficient but im not too good at all this)



    function f = HWFive (A)
    m1=A(1);
    m2=A(2);
    m8=A(3);
    m10L=A(4);
    m10V=A(5);
    m14=A(6);
    T2=A(7);
    T4=A(8);
    T5=A(9);
    T6=A(10);
    T7=A(11);
    T10=A(12);
    T12=A(13);
    T13=A(14);
    cp4=A(15);
    cp13=A(16);
    P4=A(17);
    P13=A(18);
    h5=A(19);
    h6=A(20);
    h6g=A(21);
    h7=A(22);
    h8=A(23);
    h10L=A(24);
    h10V=A(25);
    h11=A(26);
    h12=A(27);
    mpropane=A(28);
    methylene=A(29);

    %Well Here It Goes.....


    % T-Joint No.1
    f(1) = m1-m2+m14;
    f(2) = m1*290-m2*T2+m14*320;
    %Compressor No.1
    f(3) = (P4/1000)-7.5+150.5*((m2*T2^0.5)/1000);
    %Propane Evaporator
    f(4) = (230 - T4)/100 + exp((-2.64/(m2*cp4)));
    f(5) = cp4-2.114-0.000188*P4+(1.76*10^-8)*P4^2;
    %Heat Exchanger No.1
    f(6) = m2*cp4*(T4-T5)-m14*cp13*(T13-T12);
    f(7) = ((T13 - T12)/(T4 - T12)) - ((1 - exp((-4.22/(m14*cp13)*(1 - ((cp13*m14)/(cp4*m2))))))/(1 - ((cp13*m14)/(cp4*m2))*exp((-4.22/(m14*cp13)*(1 - ((cp13*m14)/(cp4*m2)))))));
    f(8) = cp13 - 2.114 - 0.000188*P13 + (1.76*10^(-8))*(P13)^2;
    %Compressor No.2
    f(9) = (1000/P13) - 5.6 + ((142.8*m14*T13^0.5)/P13);
    %Heat Exchanger No.2
    f(10) = m2*(h6 - h7) - m14*(h12 - h11);
    f(11) = 1 - exp((-5.275*(T6 - T7))/(m2*(h6 - h7))) - ((T6 - T7)/(T6 - T12));
    f(12) = h6 + 219.6 - 7.025*T6 + (0.034965*(T6)^2) - (0.00011321*(T6^3));
    f(13) = h7 + 219.6 - 7.025*T7 + (0.034965*(T7)^2) - (0.00011321*(T7^3));
    f(14) = h12 - 790.13 + 4.0137*T12 - (0.058268*(T12)^2) + (0.00019465*(T12^3));
    f(15) = log(P13) + (1026/T12) - 13.8;
    %Storage Tank
    f(16) = m10L + m10V - m8;
    f(17) = m8*h8 - m10L*h10L - m10V*h10V;
    f(18) = h10L + 219.6 - 7.025*T10 + (0.034965*(T10^2)) - (0.00011321*(T10^3));
    f(19) = h10V - 790.13 + 4.0137*T10 - (0.058268*(T10^2)) + (0.00019465*(T10^3));
    f(20) = log(101) + (1026/T10) - 13.8;
    %T-Joint No.2
    f(21) = m2 - m14 - m8;
    f(22) = h11 - h7;
    f(23) = h8 - h7;
    %Ethylene Evaporator
    f(24) = m2*(h5 - h6) - 42.2*(T6 - 170);
    f(25) = h5 - h6g - cp4*(T5 - T6);
    f(26) = h6g - 790.13 + 4.0137*T6 - (0.058268*(T6^2)) + (0.00019465*(T6^3));
    f(27) = log(P4) + (1026/T6) - 13.8;
    %Other Mass Flow Rates
    f(28) = (mpropane)*427.8 - (m2*cp4*(T2 - T4));
    f(29) = (methylene)*800.1 - m2*(h5 - h6);
     
  2. jcsd
  3. Oct 24, 2008 #2
    In order to help you were going to need to know what errors its giving you. Matlab is usually pretty good about telling you what is wrong and why when errors occur. Also check Matlab Central or the file exchange. A lot of your work may already be done for you.
     
  4. Oct 24, 2008 #3
    Alrite was workn on it a bit newest code is posted below (not really sure if i changed much)

    function f = HWFivexx (m1,m2,m8,m10L,m10V,m14,T2,T4,T5,T6,T7,T10,T12,T13,cp4,cp13,P4,P13,h5,h6,h6g,h7,h8,h10L,h10V,h11,h12,mpropane,methylene)

    %Well Here It Goes.....


    % T-Joint No.1
    f(1) = m1-m2+m14;
    f(2) = m1*290-m2*T2+m14*320;
    %Compressor No.1
    f(3) = (P4/1000)-7.5+150.5*((m2*T2^0.5)/1000);
    %Propane Evaporator
    f(4) = (230 - T4)/100 + exp((-2.64/(m2*cp4)));
    f(5) = cp4-2.114-0.000188*P4+(1.76*10^-8)*P4^2;
    %Heat Exchanger No.1
    f(6) = m2*cp4*(T4-T5)-m14*cp13*(T13-T12);
    f(7) = ((T13 - T12)/(T4 - T12)) - ((1 - exp((-4.22/(m14*cp13)*(1 - ((cp13*m14)/(cp4*m2))))))/(1 - ((cp13*m14)/(cp4*m2))*exp((-4.22/(m14*cp13)*(1 - ((cp13*m14)/(cp4*m2)))))));
    f(8) = cp13 - 2.114 - 0.000188*P13 + (1.76*10^(-8))*(P13)^2;
    %Compressor No.2
    f(9) = (1000/P13) - 5.6 + ((142.8*m14*T13^0.5)/P13);
    %Heat Exchanger No.2
    f(10) = m2*(h6 - h7) - m14*(h12 - h11);
    f(11) = 1 - exp((-5.275*(T6 - T7))/(m2*(h6 - h7))) - ((T6 - T7)/(T6 - T12));
    f(12) = h6 + 219.6 - 7.025*T6 + (0.034965*(T6)^2) - (0.00011321*(T6^3));
    f(13) = h7 + 219.6 - 7.025*T7 + (0.034965*(T7)^2) - (0.00011321*(T7^3));
    f(14) = h12 - 790.13 + 4.0137*T12 - (0.058268*(T12)^2) + (0.00019465*(T12^3));
    f(15) = log(P13) + (1026/T12) - 13.8;
    %Storage Tank
    f(16) = m10L + m10V - m8;
    f(17) = m8*h8 - m10L*h10L - m10V*h10V;
    f(18) = h10L + 219.6 - 7.025*T10 + (0.034965*(T10^2)) - (0.00011321*(T10^3));
    f(19) = h10V - 790.13 + 4.0137*T10 - (0.058268*(T10^2)) + (0.00019465*(T10^3));
    f(20) = log(101) + (1026/T10) - 13.8;
    %T-Joint No.2
    f(21) = m2 - m14 - m8;
    f(22) = h11 - h7;
    f(23) = h8 - h7;
    %Ethylene Evaporator
    f(24) = m2*(h5 - h6) - 42.2*(T6 - 170);
    f(25) = h5 - h6g - cp4*(T5 - T6);
    f(26) = h6g - 790.13 + 4.0137*T6 - (0.058268*(T6^2)) + (0.00019465*(T6^3));
    f(27) = log(P4) + (1026/T6) - 13.8;
    %Other Mass Flow Rates
    f(28) = (mpropane)*427.8 - (m2*cp4*(T2 - T4));
    f(29) = (methylene)*800.1 - m2*(h5 - h6);

    In the command window i first define all the vars, then call the function

    answer=fsolve('HWFivexx',m1,m2,m8,m10L,m10V,m14,T2,T4,T5,T6,T7,T10,T12,T13,cp4,cp13,P4,P13,h5,h6,h6g,h7,h8,h10L,h10V,h11,h12,mpropane,methylene)

    It tells me ---
    "
    Error in ==> HWFivexx at 47
    f(29) = (methylene)*800.1 - m2*(h5 - h6);

    Error in ==> fsolve at 193
    fuser = feval(funfcn{3},x,varargin{:});
    "

    So i thought i had a problem with missing a variable when declaring it or something I thought I had Checked Pretty good for this ..... is that what this error means for sure?
     
  5. Oct 24, 2008 #4
    Oh yea forgot to say that in order to check, i type " methylene " in the command window and it pops out with the correct value that I assigned...dont kno if this means anything tho....
     
  6. Oct 24, 2008 #5
    Its telling you that there is an error with the command "fsolve" which is the source of the problem. Look up the help document for this command ("help fsolve") and read its requirements. Chances are there is something wrong with your syntax or your asking it to do something that it can't.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Matlab + fsolve Please Help
Loading...