How to solve 5 quadratic equations simultaneously
Afficher commentaires plus anciens
I am wondering if anyone has experience with using Matlab to solve 5 quadratic equations simultaneously – we are trying to model competitive binding with 5 proteins and 1 ligand. The program seems to work fine with up to 4 equations but crashes with 5 equations.
My codes are as follows:
(for 4)
syms LIDtot I1tot kdI1 x I2tot kdI2 y L3tot kdL3 z L4tot kdL4 w
S = solve ([(I1tot-x)*(LIDtot-x-y-z-w)==kdI1*x,(I2tot-y)*(LIDtot-x-y-z-w)==kdI2*y,(L3tot-z)*(LIDtot-x-y-z)==kdL3*z,(L4tot-w)*(LIDtot-x-y-z-w)==kdL4*w], [x,y,z,w])
This works fine.
(for 5)
syms LIDtot I1tot kdI1 x I2tot kdI2 y L3tot kdL3 z L4tot kdL4 w M4tot kdM4 v
S = solve ([(I1tot-x)*(LIDtot-x-y-z-w-v)==kdI1*x,(I2tot-y)*(LIDtot-x-y-z-w-v)==kdI2*y,(L3tot-z)*(LIDtot-x-y-z-w-v)==kdL3*z,(L4tot-w)*(LIDtot-x-y-z-w-v)==kdL4*w,(M4tot-v)*(LIDtot-x-y-z-w-v)==kdM4*v], [x,y,z,w,v])
This crashes.
Any help and advice would be much appreciated. Thanks.
Réponse acceptée
Plus de réponses (1)
Walter Roberson
le 4 Avr 2016
Z6 = (kdL4-kdM4)*(kdL3-kdL4)*(kdI2-kdL4)*(kdI1-kdL4);
Z5 = kdL4^5+(L4tot-M4tot+LIDtot-kdI1-kdI2-kdL3-kdM4-I1tot-I2tot-L3tot)*kdL4^4+((-2*kdI1-2*kdI2-2*kdL3-2*kdM4)*L4tot+(M4tot-LIDtot+kdI2+kdL3+kdM4+I2tot+L3tot)*kdI1+(M4tot-LIDtot+kdL3+kdM4+I1tot+L3tot)*kdI2+(M4tot-LIDtot+kdM4+I1tot+I2tot)*kdL3-kdM4*(LIDtot-I1tot-I2tot-L3tot))*kdL4^3+(((3*kdI2+3*kdL3+3*kdM4)*kdI1+(3*kdL3+3*kdM4)*kdI2+3*kdL3*kdM4)*L4tot+((-M4tot+LIDtot-kdL3-kdM4-L3tot)*kdI2+(-M4tot+LIDtot-kdM4-I2tot)*kdL3+kdM4*(LIDtot-I2tot-L3tot))*kdI1+((-M4tot+LIDtot-kdM4-I1tot)*kdL3+kdM4*(LIDtot-I1tot-L3tot))*kdI2+kdL3*kdM4*(LIDtot-I1tot-I2tot))*kdL4^2+((((-4*kdL3-4*kdM4)*kdI2-4*kdL3*kdM4)*kdI1-4*kdI2*kdL3*kdM4)*L4tot+(((M4tot-LIDtot+kdM4)*kdL3-kdM4*(LIDtot-L3tot))*kdI2-kdL3*kdM4*(LIDtot-I2tot))*kdI1-kdI2*kdL3*kdM4*(LIDtot-I1tot))*kdL4+5*kdM4*kdI2*(L4tot+(1/5)*LIDtot)*kdI1*kdL3;
Z4 = 6*L4tot*(((1/6)*M4tot-(1/6)*LIDtot+(1/6)*kdI1+(1/6)*kdI2+(1/6)*kdL3+(1/6)*kdM4+(1/6)*I1tot+(1/6)*I2tot+(1/6)*L3tot)*kdL4^4+(((1/6)*kdI1+(1/6)*kdI2+(1/6)*kdL3+(1/6)*kdM4)*L4tot+(-(1/3)*M4tot+(1/3)*LIDtot-(1/3)*kdI2-(1/3)*kdL3-(1/3)*kdM4-(1/3)*I2tot-(1/3)*L3tot)*kdI1+(-(1/3)*L3tot-(1/3)*M4tot+(1/3)*LIDtot-(1/3)*kdL3-(1/3)*kdM4-(1/3)*I1tot)*kdI2+(-(1/3)*I1tot-(1/3)*I2tot-(1/3)*M4tot+(1/3)*LIDtot-(1/3)*kdM4)*kdL3+(1/3)*kdM4*(LIDtot-I1tot-I2tot-L3tot))*kdL4^3+(((-(1/2)*kdI2-(1/2)*kdL3-(1/2)*kdM4)*kdI1+(-(1/2)*kdL3-(1/2)*kdM4)*kdI2-(1/2)*kdL3*kdM4)*L4tot+(((1/2)*M4tot-(1/2)*LIDtot+(1/2)*kdL3+(1/2)*kdM4+(1/2)*L3tot)*kdI2+((1/2)*M4tot-(1/2)*LIDtot+(1/2)*kdM4+(1/2)*I2tot)*kdL3-(1/2)*kdM4*(LIDtot-I2tot-L3tot))*kdI1+(((1/2)*M4tot-(1/2)*LIDtot+(1/2)*I1tot+(1/2)*kdM4)*kdL3-(1/2)*kdM4*(LIDtot-I1tot-L3tot))*kdI2-(1/2)*kdL3*kdM4*(LIDtot-I1tot-I2tot))*kdL4^2+((((kdL3+kdM4)*kdI2+kdL3*kdM4)*kdI1+kdI2*kdL3*kdM4)*L4tot+(((-(2/3)*M4tot+(2/3)*LIDtot-(2/3)*kdM4)*kdL3+(2/3)*kdM4*(LIDtot-L3tot))*kdI2+(2/3)*kdL3*kdM4*(LIDtot-I2tot))*kdI1+(2/3)*kdI2*kdL3*kdM4*(LIDtot-I1tot))*kdL4-(5/3)*kdM4*kdI2*(L4tot+(1/2)*LIDtot)*kdI1*kdL3);
Z3 = -(4*(((-(1/4)*kdM4-(1/4)*I2tot-(1/4)*L3tot-(1/4)*M4tot+(1/4)*LIDtot-(1/4)*kdI2-(1/4)*kdL3)*kdI1+(-(1/4)*kdL3-(1/4)*kdM4-(1/4)*I1tot-(1/4)*L3tot-(1/4)*M4tot+(1/4)*LIDtot)*kdI2+(-(1/4)*kdM4-(1/4)*I1tot-(1/4)*I2tot-(1/4)*M4tot+(1/4)*LIDtot)*kdL3+(1/4)*kdM4*(LIDtot-I1tot-I2tot-L3tot))*kdL4^3+(((-(1/4)*kdI2-(1/4)*kdL3-(1/4)*kdM4)*kdI1+(-(1/4)*kdL3-(1/4)*kdM4)*kdI2-(1/4)*kdL3*kdM4)*L4tot+(((3/4)*M4tot-(3/4)*LIDtot+(3/4)*kdL3+(3/4)*kdM4+(3/4)*L3tot)*kdI2+((3/4)*M4tot-(3/4)*LIDtot+(3/4)*kdM4+(3/4)*I2tot)*kdL3-(3/4)*kdM4*(LIDtot-I2tot-L3tot))*kdI1+(((3/4)*M4tot-(3/4)*LIDtot+(3/4)*I1tot+(3/4)*kdM4)*kdL3-(3/4)*kdM4*(LIDtot-I1tot-L3tot))*kdI2-(3/4)*kdL3*kdM4*(LIDtot-I1tot-I2tot))*kdL4^2+((((kdL3+kdM4)*kdI2+kdL3*kdM4)*kdI1+kdI2*kdL3*kdM4)*L4tot+(((-(3/2)*M4tot+(3/2)*LIDtot-(3/2)*kdM4)*kdL3+(3/2)*kdM4*(LIDtot-L3tot))*kdI2+(3/2)*kdL3*kdM4*(LIDtot-I2tot))*kdI1+(3/2)*kdI2*kdL3*kdM4*(LIDtot-I1tot))*kdL4-(5/2)*kdI1*kdI2*kdL3*kdM4*(L4tot+LIDtot)))*L4tot^2;
Z2 = ((((M4tot-LIDtot+kdL3+kdM4+L3tot)*kdI2+(M4tot-LIDtot+kdM4+I2tot)*kdL3-kdM4*(LIDtot-I2tot-L3tot))*kdI1+((M4tot-LIDtot+kdM4+I1tot)*kdL3-kdM4*(LIDtot-I1tot-L3tot))*kdI2-kdL3*kdM4*(LIDtot-I1tot-I2tot))*kdL4^2+((((kdL3+kdM4)*kdI2+kdL3*kdM4)*kdI1+kdI2*kdL3*kdM4)*L4tot+(((-4*M4tot+4*LIDtot-4*kdM4)*kdL3+4*kdM4*(LIDtot-L3tot))*kdI2+4*kdL3*kdM4*(LIDtot-I2tot))*kdI1+4*kdI2*kdL3*kdM4*(LIDtot-I1tot))*kdL4-5*kdI1*kdI2*kdL3*kdM4*(L4tot+2*LIDtot))*L4tot^3;
Z1 = (((((M4tot-LIDtot+kdM4)*kdL3-kdM4*(LIDtot-L3tot))*kdI2-kdL3*kdM4*(LIDtot-I2tot))*kdI1-kdI2*kdL3*kdM4*(LIDtot-I1tot))*kdL4+kdI1*kdI2*kdL3*kdM4*(L4tot+5*LIDtot))*L4tot^4;
Z0 = -L4tot^5*LIDtot*kdI1*kdI2*kdL3*kdM4;
Z = roots([Z6, Z5, Z4, Z3, Z2, Z1, Z0]);
x = -I1tot*kdL4*Z/((kdI1-kdL4)*Z-L4tot*kdI1);
y = -I2tot*kdL4*Z/((kdI2-kdL4)*Z-L4tot*kdI2);
z = -L3tot*kdL4*Z/((kdL3-kdL4)*Z-L4tot*kdL3);
w = Z;
v = (-(kdL3-kdL4)*(kdI2-kdL4)*(kdI1-kdL4)*Z^5+(-kdL4^4+(-LIDtot+kdI1+kdI2+kdL3+I1tot+I2tot+L3tot-L4tot)*kdL4^3+((2*kdI1+2*kdI2+2*kdL3)*L4tot+(LIDtot-kdI2-kdL3-I2tot-L3tot)*kdI1+(LIDtot-kdL3-I1tot-L3tot)*kdI2+kdL3*(LIDtot-I1tot-I2tot))*kdL4^2+(((-3*kdI2-3*kdL3)*kdI1-3*kdI2*kdL3)*L4tot+((-LIDtot+kdL3+L3tot)*kdI2-kdL3*(LIDtot-I2tot))*kdI1-kdI2*kdL3*(LIDtot-I1tot))*kdL4+kdI1*kdI2*kdL3*(LIDtot+4*L4tot))*Z^4-4*L4tot*(((1/4)*kdI1+(1/4)*kdI2+(1/4)*kdL3+(1/4)*I1tot-(1/4)*LIDtot+(1/4)*I2tot+(1/4)*L3tot)*kdL4^3+(((1/4)*kdI1+(1/4)*kdI2+(1/4)*kdL3)*L4tot+((1/2)*LIDtot-(1/2)*I2tot-(1/2)*L3tot-(1/2)*kdI2-(1/2)*kdL3)*kdI1+((1/2)*LIDtot-(1/2)*L3tot-(1/2)*kdL3-(1/2)*I1tot)*kdI2+(1/2)*kdL3*(LIDtot-I1tot-I2tot))*kdL4^2+(((-(3/4)*kdI2-(3/4)*kdL3)*kdI1-(3/4)*kdI2*kdL3)*L4tot+(((3/4)*kdL3-(3/4)*LIDtot+(3/4)*L3tot)*kdI2-(3/4)*kdL3*(LIDtot-I2tot))*kdI1-(3/4)*kdI2*kdL3*(LIDtot-I1tot))*kdL4+kdI1*kdI2*kdL3*(LIDtot+(3/2)*L4tot))*Z^3+(6*((((1/6)*LIDtot-(1/6)*kdI2-(1/6)*kdL3-(1/6)*I2tot-(1/6)*L3tot)*kdI1+((1/6)*LIDtot-(1/6)*kdL3-(1/6)*I1tot-(1/6)*L3tot)*kdI2+(1/6)*kdL3*(LIDtot-I1tot-I2tot))*kdL4^2+(((-(1/6)*kdI2-(1/6)*kdL3)*kdI1-(1/6)*kdI2*kdL3)*L4tot+((-(1/2)*LIDtot+(1/2)*kdL3+(1/2)*L3tot)*kdI2-(1/2)*kdL3*(LIDtot-I2tot))*kdI1-(1/2)*kdI2*kdL3*(LIDtot-I1tot))*kdL4+kdI1*kdI2*kdL3*(LIDtot+(2/3)*L4tot)))*L4tot^2*Z^2-4*L4tot^3*((((-(1/4)*LIDtot+(1/4)*kdL3+(1/4)*L3tot)*kdI2-(1/4)*kdL3*(LIDtot-I2tot))*kdI1-(1/4)*kdI2*kdL3*(LIDtot-I1tot))*kdL4+kdI1*kdI2*kdL3*(LIDtot+(1/4)*L4tot))*Z+L4tot^4*LIDtot*kdI1*kdI2*kdL3)/(((kdI1-kdL4)*Z-L4tot*kdI1)*((kdI2-kdL4)*Z-L4tot*kdI2)*((kdL3-kdL4)*Z-L4tot*kdL3)*(-L4tot+Z));
... except that you need to vectorize these, which I have not done in my transcription.
The polynomial turns out to be degree 6.
3 commentaires
Ann Kwan
le 4 Avr 2016
Walter Roberson
le 4 Avr 2016
It looks to me as if it might be an eigenvalue problem??
Ann Kwan
le 4 Avr 2016
Catégories
En savoir plus sur Symbolic Math Toolbox dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!