Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Understanding how Matlab approximations work

Asked by Pl Pl on 9 Apr 2013

Dear all,

I have what may be a naive question about how Matlab truly works. I have an ODE whose solution lies on the unit sphere. One of the equilibrium points is (1,0,0). When I look for the equilibrium points using numerical methods, Matlab tells me that the equilibrium point is

1.000000000000000

0

0.000000000000000

When I then try to solve the equation, after some time, the solution of the equation leaves the equilibrium and starts to go around the sphere. But if before solving the equation I specify to Matlab to start from the point

1

0

0

then nothing happens (which is rather normal since the point is an equilibrium one, even if unstable). My question is therefore, why does the solution leave the equilibrium when the starting point is

1.000000000000000

0

0.000000000000000

To me, this was the exact same as

1

0

0

since I thought Matlab did not use more than 16 digits. But I am obviously wrong since the solutions are not the same... Is Matlab hiding me some numerical approximations somewhere?

Thank you very much

0 Comments

Pl Pl

Products

No products are associated with this question.

1 Answer

Answer by per isakson on 9 Apr 2013

Try

    format hex

6 Comments

per isakson on 9 Apr 2013

"My question is not about why this happens but why the second set of coordinates does not represent the point (1,0,0) for which the solution stays at the equilibrium point."

  • the hex output indicates that the two **inputs** are indeed identical
  • however, fminsearch obviously sees a difference (whatever that is)

fminsearch is implemented in m-code. With the debugger, you could step through the function with the two different inputs. That might explain what you see.

Pl Pl on 9 Apr 2013

"the hex output indicates that the two are indeed identical"

Does it? I thought on the contrary that the third component in the hex format was not as expected. To recall things, the coordinates of the equilibrium point using fminsearch in format hex are

   3ff0000000000000
   0000000000000000
   3c91a62633145c07

I thought it should read

   3ff0000000000000
   0000000000000000
   0000000000000000

shouldn't it?

I'm not sure I know how to use the debugger as you propose...

Thank you for your patience.

per isakson on 9 Apr 2013

Communication is tricky. I tried to say that the two sets of inputs are indentical. (I added the word "inputs" in my previous comment.)

    >> format hex
    >> 1,0,0
    ans =
       3ff0000000000000
    ans =
       0000000000000000
    ans =
       0000000000000000
    >> 1.0000, 0.0000, 0.0000
    ans =
       3ff0000000000000
    ans =
       0000000000000000
    ans =
       0000000000000000
    >> 

Still the two outputs differ.

Did you try to step through the code?

per isakson

Contact us