Why is airy(3,1) complex? (No numerical round-off in the complex part)

Why does Matlab return a complex number for airy(3,1)?
The result is a pure real, the imaginary part is identically zero (no numerical round off), yet the value is considered complex?
>> format long
>> y = airy(3,1)
y =
0.932435933392775
>> isreal(y)
ans =
0
>> format hex
>> imag(y)
ans =
0000000000000000

답변 (3개)

Wayne King
Wayne King 2012년 9월 18일
편집: Wayne King 2012년 9월 18일
What release are you using?
>> format long
>> isreal(airy(3,1))
ans =
1
David Wilson
David Wilson 2012년 9월 18일

0 개 추천

R2012a

댓글 수: 2

I've confirmed that behavior in R2012a, but it is fixed in R2012b, let me check the bug reports
I don't see it as a bug report David, but the behavior is fixed in 12b, airy(3,1) returns the scalar with attribute real

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

Matt Tearle
Matt Tearle 2012년 9월 18일
Looks like a bug in 12a. If you do
whos y
it shows the class as double (complex), so isreal is working properly, but how the heck it gets a complex y with 0 real part is a mystery to me. It looks like the problem is actually coming from besselmx, which airy calls:
z = besselmx(real('B'),1,1)
whos z
It's fixed in 12b, where airy is now a built-in.

카테고리

도움말 센터File Exchange에서 Numeric Types에 대해 자세히 알아보기

질문:

2012년 9월 18일

Community Treasure Hunt

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

Start Hunting!

Translated by