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

1 次查看(过去 30 天)
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
R2012a
  2 个评论
Wayne King
Wayne King 2012-9-18
I've confirmed that behavior in R2012a, but it is fixed in R2012b, let me check the bug reports
Wayne King
Wayne King 2012-9-18
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.

类别

Help CenterFile Exchange 中查找有关 Elementary Math 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by