Problem with the product of complex numbers
이전 댓글 표시
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
채택된 답변
추가 답변 (1개)
Walter Roberson
2013년 5월 24일
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
clement
2013년 5월 24일
Jonathan Epperl
2013년 5월 24일
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
2013년 5월 24일
Jonathan Epperl
2013년 5월 24일
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
2013년 5월 24일
Jonathan Epperl
2013년 5월 25일
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
2013년 5월 25일
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
2013년 5월 25일
I see, I didn't know that -- so A-50 is the more robust syntax...
카테고리
도움말 센터 및 File Exchange에서 Calculus에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!