I am working with symbolic vector of 1xN size. The vector contains N eqations in the from of
X == a + b + c
Y == X*(d + e + f)
Z == Y + X
I am suing subs to substitute the coefficients a b c d e f with numeric values. The result is in the form of
X == g
Y ==X*h
Z == Y +X
It sould be quite straigh forward to solve for Z since all variables are numeric, but for crying out loud I cannot make matlab to solve for Z.
Any ideas?

2 个评论

Please include your code so far.
This are the type of inputs that i am using
syms a b c d e
eqn = transpose(str2sym("[X == a+b+c, Y == X*(d+e), Z == X+Y]"));
eqn_S = subs(eqn,{a,b,c,d,e},{[1 2 3 4 5]});
and the outout i am getting
eqn_S =
X == 6
Y == 9*X
Z == X + Y
I tried vpa solve etc. but cannot find syntaxis that works properly to solve for Z.
One way i tried to solve it to solve each row separately and substitute its value in the following equations, but there must be more elegant solution to the problem.

请先登录,再进行评论。

 采纳的回答

vpasolve works perfetcly to solve it numerically.
syms a b c d e
eqn = transpose(str2sym("[X == a+b+c, Y == X*(d+e), Z == X+Y]"));
eqn_S = subs(eqn,{a,b,c,d,e},{[1 2 3 4 5]});
vpasolve(eqn_S)

1 个评论

syms a b c d e X Y Z
eqn = transpose(str2sym("[X == a+b+c, Y == X*(d+e), Z == X+Y]"))
eqn = 
sol = solve(eqn,[X,Y,Z]);
sol = struct with fields:
X: a + b + c Y: (d + e)*(a + b + c) Z: a + b + c + a*d + a*e + b*d + b*e + c*d + c*e
sol.Z = simplify(sol.Z)
sol = struct with fields:
X: a + b + c Y: (d + e)*(a + b + c) Z: (d + e + 1)*(a + b + c)
subs(sol,[a,b,c,d,e],[1,2,3,4,5])
ans = struct with fields:
X: 6 Y: 54 Z: 60

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by