How to determine if my equation is equal to, less that or more then 0?

조회 수: 1 (최근 30일)
James Perkins
James Perkins 2019년 10월 14일
댓글: J Chen 2019년 10월 14일
Hi,
Im trying to solve 2nd order ODE's and determine if the solution is critically damped, over damped or under damped.
I rearranged the formula and inputted the equation to solve the quadratic equation (which works) however i cannot get the IF statement to tell me when if D=0, D<0 or D>0. Is this running into problems with the complex numbers?
Please could someone point me in the correct direction with the IF statements?
A section of the script can be seen below:
a = 1
b = 1
c = 1
D = sqrt((b^2/(4*a^2))-(c/a));
if D>0
disp('Over Damped')
elseif D<0
disp('Under Damped')
else D==0
disp('Critically Damped')
end
  댓글 수: 2
Jos (10584)
Jos (10584) 2019년 10월 14일
Did you debug your code, by for instance, displaying D before the if statement (remove the semicolon)?
James Perkins
James Perkins 2019년 10월 14일
Yes, this makes no difference.
In my command window i get the below
S2 =
-0.5000 - 0.8660i
D =
0.0000 + 0.8660i
ans =
logical
0
Index exceeds the number of array elements (11).

댓글을 달려면 로그인하십시오.

채택된 답변

J Chen
J Chen 2019년 10월 14일
  1. The result of sqrt((b^2/(4*a^2))-(c/a)) is a complex number. You can't compare it with 0 (a real number)
  2. The formula for damping ratio is probably wrong. Should it be b/(2*sqrt(a*c)?
  댓글 수: 2
James Perkins
James Perkins 2019년 10월 14일
  1. The result of sqrt((b^2/(4*a^2))-(c/a)) is a complex number. You can't compare it with 0 (a real number)
  2. The formula for damping ratio is probably wrong. Should it be b/(2*sqrt(a*c)?
Reply:
  1. Thank you for pointing this out, i have removed the 'sqrt' so that i just have a negative number which i should be able to relate to 0.
  2. I was told that there are different ways of determining the damping style? i have adjusted this to (b^2)-(4*a*c) which is what my lecturor has advised.
Im still getting an error saying "Index exceeds the number of array elements (11).". Can someone explain what this could be?
J Chen
J Chen 2019년 10월 14일
The damping ratio is defined as r = b/(2*sqrt(a*c)) = b^2/(4*a*c). It is under damped if r<1 and critically damped if r=1, etc. Your error came from other programming error. It's not related to the formula.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Mathematics에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by