Ledning till sqrt och komplexa tal


Eftersom vi inte räknar exakt kan avrundningsfel ge upphov till komplexa tal i beräkningen av sqrt(1 - x^2 - y^2) när vi med exakt aritmetik endast skulle få reella tal. Här ett exempel:

f = 2.8768e-01;
x = cos(f);
y = sin(f);

sqrt(1 - x^2 - y^2)
ans =  0 + 3.7253e-09i  % lika med noll om vi räknar exakt

% Förklaring
>> 1 - x^2 - y^2        % vi får ett lite avrundningsfel här
ans = -1.3878e-17       % litet negativt tal

Eftersom surf och mesh klagar på komplexa tal, kan vi avlägsna de små imaginärdelarna genom att plocka ut realdelen av resultatet:

>> real(sqrt(1 - x^2 - y^2))
ans = 0

Funktionen real fungerar även på matriser.

Back