Problem with the product of complex numbers
Ältere Kommentare anzeigen
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
Akzeptierte Antwort
Weitere Antworten (1)
Walter Roberson
am 24 Mai 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 Kommentare
clement
am 24 Mai 2013
Jonathan Epperl
am 24 Mai 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
am 24 Mai 2013
Jonathan Epperl
am 24 Mai 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
am 24 Mai 2013
Jonathan Epperl
am 25 Mai 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
am 25 Mai 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
am 25 Mai 2013
I see, I didn't know that -- so A-50 is the more robust syntax...
Kategorien
Mehr zu Calculus finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!