Solving System of Equations with Assumptions

584 Views Asked by At

Trying to solve a system of equations in Maple and I have some assumptions. However, I get a warning that says "Solve may be ignoring assumptions on input variables."

The goal is to find the kinetic rate constants of a series of coupled enzymatic reactions.

$$ V + S_0 <=> W <=> X <=> Y <=> Z $$ The chemistry package doesn't work here, but each arrow has an associated rate constant: the first forward (V to W) is $k_1$, first reverse (W to V) is $k_2$, the second set of arrows (between W and X) are $k_3$ and $k_4$ etc.

This system has an associated set of differential equations: $$\frac{dV}{dt}=-k_1S_0Vk_2W$$ $$\frac{dY}{dt}= k_1S_0V -(k_2 + k_3)W + k_4X$$ $$etc...$$ Which can be expressed as a matrix: $$ \begin{bmatrix} -k_1S_0&k_2&0&0&0\\ k_1S_0&-k_2-k_3&k_4&0&0\\ 0&k_3&-k_4-k_5&k_6&0\\ 0&0&k_5&-k_6-k_7&k_8\\ 0&0&0&k_7&-k_8\\ \end{bmatrix} \begin{bmatrix} V\\W\\X\\Y\\Z \end{bmatrix} $$ The coefficent matrix has an associated characteristic polynomial (for simplification I have made $k_1S_0 -> a, k_2 -> b,$ etc)

$$x^5-(-d-e-f-g-h-b-c-a)x^4-(-ac-ad-ae-af-ag-ah-bd-be-bf-bg-bh-ce-cf-cg-ch-df-dg-dh-eg-eh-fh)x^3-(-ace-acf-acg-ach-adf-adg-adh-aeg-aeh-afh-bdf-bdg-bdh-beg-beh-bfh-ceg-ceh-cfh-dfh)x^2-(-aceg-aceh-acfh-adfh-bdfh)x$$

I don't particularly care about the roots of this equation, so I don't want to solve for the eigenvalues. Instead, I am using Vietas formulas to look at just the coefficients of the polynomial.

$$1. k_{obs_1}+k_{obs_2}+k_{obs_3}k_{obs_4} = a+b+c+d+e+f+g+h$$ $$2. k_{obs_1}k_{obs_2}+k_{obs_1}k_{obs_3}+k_{obs_1}k_{obs_4}+k_{obs_2}k_{obs_3} ... = (ac+ad+ae+af+ag+ah+bd+be+bf+bg+bh+ce+cf+cg+ch+df+dg+dh+eg+ehfh)$$ $$3. k_{obs_1}k_{obs_2}k_{obs_3}+k_{obs_1}k_{obs_2}k_{obs_4}+ ... = (ace+acf+acg+ach+adf+adg+adh+aeg+aeh+afh+bdf+bdg+bdh+beg+beh+bfh+ceg+ceh+cfh+dfh)$$ $$4. k_{obs_1}k_{obs_2}k_{obs_3}k_{obs_4} = aceg+aceh+acfh+adfh+bdfh$$

Because $a = k_1S_0$ we note that each of these equations is linear in terms of $S_0$. Splitting these 4 equations into 8 gives us 8 equations and 8 unknowns so it should be solvable.

From here am solving for c, d, e, f, g, h in terms of s, u, v, w, x, y, z. I already have expressions of a and b from equation 1. Here is what I have in a Maple worksheet, note that for each expression, I have already substituted a and b where they belong within the system.

a := s:
b := t - (u/s):
u := s*(c+d+e+f+g+h):
v := (t-(u/s))*(d+e+f+g+h)+c*(e+f+g+h) + d*(f+g+h) + e*(g+h) + f*h:
w := s*(c*(g+e+f+h)+d*(f+g+h)+e*(g+h)+f*h):
x := (t-u/s)*(d*(f+g+h)+e*(g+h)+f*h)+c*(e*(g+h)+f*h)+d*f*h:
y := s*(c*(e*g+e*h+f*h)+d*f*h):
z := (t-u/s)*d*f*h:

I have the following as the assumptions. Before, I was using just greater than zero instead of not equal to, but I get the same issues anyway.

Assume(c <> 0, d <> 0, e <> 0, f <> 0, g <> 0, f <> 0, h <> 0):

solve({u, v, w, x, y, z}, {c, d, e, f, g, h})

Finally I get this when I compute:

Warning, solve may be ignoring assumptions on the input variables.
{c=0, d=d, e=e, f= (d^2+2de+e^2)/e, g=(d(d+e))/e, h=0}
{c=0,d=0,e=0,f=-g,g=h,h=0}
{c=0,d=-e,e=e,g=-h,h=h}

Especially the latter solutions are not helpful at all. Am I setting up my assumptions or solve incorrectly? Again, thanks in advance.

1

There are 1 best solutions below

0
On

The solve command does not automatically take advantage assumptions made on the solution variables (for various technical and legacy reasons), that is what the warning is telling you.

You can instruct solve to convert assumptions into inequations that it adds to the system by passing the option "useassumptions" to solve:

solve({u, v, w, x, y, z}, {c, d, e, f, g, h}, useassumptions);

It is probably better practice to avoid assumptions altogether and just include those constraints directly in the system:

solve({u, v, w, x, y, z, c<>0, d<>0, e<>0, f<>0, g<>0, h<>0}, {c, d, e, f, g, h});

That said, looking at the solutions that come out of solve when it ignores your constraints, there do not appear to be any solutions that actually satisfy them.

When I made my best guess at correcting the typo in your input equations (I made the fourth equation: v:=(t-u/s))*... ), I get no solutions satisfying those constraints when I run solve in Maple 2016.2.

Perhaps something else is not formulated correctly? It looks like you may want to create a system of equations with x,y... as the left-hand sides instead of assigning them values, but I cannot say for sure.


This is my best guess at what you are trying to do. solve oeqs in terms of vars:

oeq := [
s = a,
t = b + c+d+e+f+g+h,
u = a*(c+d+e+f+g+h),
z = (b)*d*f*h,
y = a*(c*(e*g+e*h+f*h)+d*f*h),
w = a*(c*(g+e+f+h)+d*(f+g+h)+e*(g+h)+f*h),
v = (b)*(d+e+f+g+h)+c*(e+f+g+h)+d*(f+g+h)+e*(g+h)+f*h,
x = (b)*(d*(f+g+h)+e*(g+h)+f*h)+c*(e*(g+h)+f*h)+d*f*h
];
vars := [a, b, c, d, e, f, g, h];

Solve kind of chokes on this if you call it directly, but you can solve it a piece at a time and back-substitute as you go:

eq := oeq: fullsol := {}: n := 1;
while n <= nops(vars) do
 sols := solve(eq[1 .. n], {vars[1 .. n][]});
 tmpsol := remove((x)->has(rhs(x), {a, b, c, d, e, f, g, h}), sols);
 fullsol := fullsol union tmpsol;
 eq := simplify(eval(eq, fullsol));
 if nops(tmpsol) = 0 then n := n+1 end if;
end do:
fullsol;

The full solution is very large, so I don't include it here.