Domanda

in this question i am addressing to numerical computation problems in matlab and want to get experience how to avoid this problems/errors in future

for example let consider following simple codes

t = 0.4 + 0.1 - 0.5

t =

     0

it works fine,but

u = 0.4 - 0.5 + 0.1

u =

   2.7756e-17

of course in mind it is also 0,but why not in first calculation got the same result?or what is difference?also please look

v = (sin(2*pi) = = sin(4*pi)) 

v = (sin(2*pi)==sin(4*pi))

v =

     0

it shows that sine function is not periodic,so what is general advice in this case?introduce some epsilon?like

V=((sin(2*pi)-sin(4*pi))<eps)

V =

     0

or

EPS=0.000000000000001

EPS =

   1.0000e-15

>> V=((sin(2*pi)-sin(4*pi))<EPS)

V =

     1

please help me

È stato utile?

Soluzione

It's normal you get these results, because floating-point relative accuracy in Matlab is

eps('double')

ans =

   2.2204e-16

For V=((sin(2*pi)-sin(4*pi))<eps), because

sin(2*pi)-sin(4*pi)

ans =

   2.4493e-16

which is larger than eps('double'), so its result will be V=0.


And for V=((sin(2*pi)-sin(4*pi))<EPS), because EPS>2.4493e-16, so its result will be V=1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top