Göm menyn

TDDD44 Problemlösning och programmering

Lathund - knepiga saker i MatLab


Ibland blir man lite förundrad över hur MatLab gör sina beräkningar. Här följer en lista på lite underliga saker som vi upptäckt ...

Inf, NaN, intmin och intmax

Givet: intmin == -2147483648 och intmax == 2147483647. Observera att intmin slutar med en 8:a och intmax med en 7:a.

Inf motsvarar det tal som är oändligheten och NaN (not a number) motsvarar ett tal som inte finns i talmängden.

	Uttryck			I MatLab	Borde vara
	-------			--------	----------

	intmax + 1		intmax		Inf (eller möjligen NaN ...)
	intmin - 1		intmin		-Inf (eller möjligen NaN ...)

	-intmin			intmax		NaN
	-intmax			intmin + 1	inmin + 1 (alltså rätt!!!)

	--intmin		intmin + 1	intmin (eller NaN)

	intmax / 0		intmax		Inf

	intmax + Inf		intmax		Inf
	intmax - Inf		intmin		-Inf
	intmax + NaN		0		NaN

	0 * NaN			0		NaN

	NaN == NaN		0 (false)	0 (false)  (logiskt sett, eller ...)
	NaN ~= NaN		1 (true)	0 (false)  (logiskt sett, eller ...)

	Inf == Inf		1 (true)	1 (true)   (kanske logiskt ...)

	mod(x, 0)		x		NaN  (eller ...)
	mod(0.1, pi) - 0.1	-1.3878e-17	0

	sin(pi)			1.2246e-16	0

Vektoroperationer

	'kalle' / 'nisse'	ca 0.954
	'+noll' / '-noll'	ca 0.998
	'+0' / '-0'		ca 0.979

	Vilket visar att noll inte är riktigt noll :-), eller ...
	Dessutom är '+0' alltså mindre än '-0' vilket säger att
	noll egentligen är lite mindre än noll ...


Sidansvarig: Torbjörn Jonsson
Senast uppdaterad: 2012-08-16