Problem with the product of complex numbers
Show older comments
Hello,
I calculated the equivalent impedance of an RLC circuit, and I would like this one to be completely resistive (complex part equals to 0). So I declared my variables as 'syms' and I used the function 'solve' to obtain the equivalent impedance litterally like:
% syms R X Y Z
% Zeq=solve('(R+i*X)*(-i*Y)/(R+i*X-i*Y)=Z',Z)
The problem is that Matlab gives me a solution like this:
%Zeq =
% -(Y*(R + X*i)*i)/(R + X*i - Y*i)
But I would like something like: Zeq = A + i*B.
Could anyone help?
Thanks
Accepted Answer
More Answers (1)
Walter Roberson
on 24 May 2013
You cannot do that unless you add the assumption that the variables are real-valued
syms R X Y Z real
Zeq = simplify(solve((R+i*X)*(-i*Y)/(R+i*X-i*Y)-(Z),Z));
A = simplify(real(Zeq));
B = simplify(imag(Zeq));
A + B*i
8 Comments
clement
on 24 May 2013
Jonathan Epperl
on 24 May 2013
S1 = solve(A==50,X)
You need two equal signs ==, one equal sign = assigns a value to the variable on the left, which is not what you want to do here.
clement
on 24 May 2013
Jonathan Epperl
on 24 May 2013
That is curious. I can confirm neither of this:
syms R X Y real
A = (R*Y^2)/(R^2 + X^2 - 2*X*Y + Y^2)
solve(A==50,X)
simplify(ans)
yields
ans =
Y + (-2*R*(- Y^2 + 50*R))^(1/2)/10
Y - (-2*R*(- Y^2 + 50*R))^(1/2)/10
You might have assigned X or Y somewhere earlier in your session, if you want to make sure that they are "pristine" when you declare them as symbolic variables, do this
clear X Y R
syms X Y R real
clement
on 24 May 2013
Jonathan Epperl
on 25 May 2013
S10=solve(A-50,X)
and
S10=solve(A==50,X)
should do the exact same thing, I can't think of one reason why one should work when the other doesn't.
What version of the Symbolic Toolbox are you using (command ver symbolic) ?
Walter Roberson
on 25 May 2013
Before R2011b, "==" was processed as a logical relationship to be evaluated and the result of the logical evaluation to be passed into solve(). But those versions also did not know how to compare a symbol (with any content) against a number, so the expression would generate an error... unless, of course, A was a number instead of a symbol.
Jonathan Epperl
on 25 May 2013
I see, I didn't know that -- so A-50 is the more robust syntax...
Categories
Find more on Calculus in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!