# How do I solve an equation with multiple symbolic variables with a condition on one of the variables?

7 views (last 30 days)
Nathan Ong on 13 Nov 2017
Edited: Karan Gill on 20 Nov 2017
I'm trying to program a concrete column interaction curve and one of the points needed is for a column in pure bending. I'm trying to solve for the values 'c' and 'fs' simultaneously, but I need the absolute values of fs to be limited to less than or equal to the yield stress of steel, Fy. Here is the code below:
Fy = 50;
B1 = 0.85;
rows = 3;
Es = 29000;
d = [2.5 7.5 12.5];
As = [5.08 2.54 5.08];
b =15;
fc = 4;
syms c fs
assume(abs(fs)<=Fy)
for i = 1:rows
fs(i) = (0.003/c)*(c-d(i))*Es
product(i) = As(i)*fs(i)
end
eqn = 0.85*fc*B1*c*b + sum(product) == 0
cM = solve(eqn,c);
cM = double(cM(cM >= 0));
fs = double(subs(fs,c,cM))
When I get my output, the absolute values of fs are still greater than Fy. Can anybody give me some advice? Thanks!

Karan Gill on 14 Nov 2017
Edited: Karan Gill on 20 Nov 2017
You should first solve the equation for c and then use that value to find fs.
Also, your problem sounds like an optimization problem. Consider the Optimization Toolbox: https://www.mathworks.com/help/optim/getting-started-with-optimization-toolbox.html.