F# is obviously incredibly bad for learning a language with a dynamic type system, because it doesn't have a dynamic type system. Quite the opposite: it's got a much more advanced static type system than the current mainstream languages, for example Java, C, C++ or its cousins C# and Visual Basic.NET.
As for the other two, I don't think that there is a clear winner.
However, for your first dynamic language, I would recommend Self, Newspeak or Ioke. All three of these are incredibly dynamic, much more so than Ruby or Python.
Unfortunately, Ioke and Newspeak are very new and Self hasn't been updated in a while (although it has picked up steam in the recent months), so, as an alternative I would suggest Io.
I personally find that when I want to learn about some new concept, it's easiest to learn it with a language that takes it to the extreme: static typing, functional programming and lazy evaluation in Haskell, OO in Self, class-based OO in Newspeak, syntactic metaprogramming in Scheme, concurrency in Clojure, fault-tolerance in Erlang, Design-by-Contract in Spec#, concatenative programming in Factor and so on.
One of the biggest problems newcomers on the Ruby mailinglists have, is that they are still writing Java, C#, PHP, C++, C, Pascal, but just with Ruby syntax. That won't happen with Self! The language is just too different, so that it will force you to embrace its dynamism. In Ruby or Python you will have to force yourself.