why i get 'complex double' type?

Hi, i have below code. When run it i get kro as complex double.
Do you have any idea about why it is complex number, and how i can fix it.
By the way krw is not complex, just kro is complex.
thanx
swi=0.328; sor=0.205;
sw=linspace(swi,1-sor,100);
swd=(sw-swi)./(1-swi-sor);
kro=(1-swd).^2.56;
krw=0.78*(swd).^3.72;

 採用された回答

Walter Roberson
Walter Roberson 2021 年 7 月 21 日

0 投票

Although algebraically the maximum swd value should be 1 exactly, because of round-off error it turns out to be just slightly greater than 1. Then 1 minus that can be just slightly negative. Negative raised to a fraction is complex.
Take min(swd, 1)

3 件のコメント

ali yaman
ali yaman 2021 年 7 月 21 日
Thanks.
Could you tell me what min(swd, 1) makes? because when i write it, code works.
Walter Roberson
Walter Roberson 2021 年 7 月 21 日
swd = min(swd, 1);
means the same thing as
for K = 1 : numel(swd)
if swd(K) > 1; swd(K) = 1; end
end
That is, at any time, you take the minimum of what is in swd, compared to the constant 1. Any swd entry that is greater than 1 will be reduced to 1.
ali yaman
ali yaman 2021 年 7 月 22 日
i got it. Thank you very much

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

製品

リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by