how to identify certain variables as constants?
조회 수: 8 (최근 30일)
이전 댓글 표시
For example, I have this equation
A*cos( w0*t+phi) * B*sin(n*w0*t+phi+psi)
where A,B,w0,psi are all constants, and n is a positive non zero integer.
I want to integrate with repsect to psi, from 0 to 2*pi, and I already know the answer is zero.
How do I make the symbolic toolbox understand the problem in a way it can come to that result?
댓글 수: 0
채택된 답변
John D'Errico
2020년 11월 9일
Why not try it?
syms A B w0 t phi psi
syms n positive integer
V = A*cos(w0*t + phi)*B*sin(n*w0*t + phi + psi);
int(V,psi,[0,2*pi])
댓글 수: 3
John D'Errico
2020년 11월 9일
편집: John D'Errico
2020년 11월 9일
I think you have an old MATLAB release.
clear
syms n positive integer
whos
No other variables are created. From the help for syms, I see this:
syms ... ASSUMPTION
additionally puts an assumption on the variables created.
The ASSUMPTION can be 'real', 'rational', 'integer', or 'positive'.
Yes, in older releases I could have used assume, but how am I to know what release you are using?
So your real problem is then...
syms A B w0 t phi psi
syms n positive integer
V = A*cos(w0*t + phi)*B*sin(n*w0*t + phi + psi);
int(V,phi,[0,2*pi])
which MATLAB does not show as zero.
But we can reduce your problem to a simple one. First, A and B are irrelevant, if you expect the answer to be zero.
Consider this variation of your integral...
syms u v phi
int(cos(phi + u)*sin(phi + v),phi,[0,2*pi])
Thus if we set u=w0*t, v=n*w0*t + psi, we get essentially the same solution, thus
-pi*sin(w0*t - n*w0*t - psi)
And that is zero only under certain circumstances, for specific values of those parameters, when
w0*t - n*w0*t - psi = K*pi
for integer values of K. So unless you have chosen specific values of those parameters, you would not get zero. Or, possibly, you did these computations incorrectly when you did it yourself.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Assumptions에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!