Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

How do you properly define an infintisimal scaler?

  1. Dec 2, 2013 #1
    I have run into some situations where I need to scale a number by an infinitesimal amount and would like to know the correct way of defining this.

    The best I have come up with is [(∞ - 1)/∞] but I fear that this notation may cause computational problems. Is there a better way to define a number that is infinitesimally less than 1?
  2. jcsd
  3. Dec 2, 2013 #2


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Can you give an example of why you need to do this? I suspect the problem is more that you are trying to skip rigor than that you need a well-defined notion of an infinitesimal number.
  4. Dec 2, 2013 #3


    User Avatar
    Science Advisor
    Homework Helper

    hi tanus5! :smile:
    i don't understand :confused:

    can you give an example?​
  5. Dec 2, 2013 #4


    User Avatar
    Science Advisor

  6. Dec 2, 2013 #5
    To answer the questions as to why I need an infinitesimal scaler. I have developed a fuzzy-logic algorithm that evaluates an object with an incomplete data set of traits where some traits imply other traits to some degree. The infinitesimal scaler ensures that the implications from all other traits can never fully equal the state of the a trait being fully known in the data. I would like to present this as a mathematical formula.
    Last edited: Dec 2, 2013
  7. Dec 2, 2013 #6
    I am having difficulty processing the information about non-standard analysis as much of the notation used is new to me. I do see a great deal of set notation though. Would the following be valid based on the non-standard analysis?

    Is = 1 - (1/Ʃx)

    Or should I write it out explicitly as 1 - (1 / {1 + 2 ... + ∞}) ?

    In the Java programming language this problem can be easily stated as the following code.

    Code (Text):
    java.lang.Double I_s = (java.lang.Double.MAX_VALUE - 1)/java.lang.Double.MAX_VALUE;
    Last edited: Dec 2, 2013
  8. Dec 3, 2013 #7

    jim mcnamara

    User Avatar

    Staff: Mentor

    The java statement is not comparable to what you posted mathematically.

    You java statement in English is:
    Given: DBL_MAX is approximately 1.8 * 10^308 (on the system I'm typing on), the largest number an IEEE-754 double can represent.

    Code (Text):
    double var=DBL_MAX - 1 / DBL_MAX;
    You are already running into floating point computational problems doing things like that, IEEE-754 binary doubles have issues.

    For starters, use a decimal fp library. Plus, I cannot get what you are doing.
  9. Dec 3, 2013 #8

    jim mcnamara

    User Avatar

    Staff: Mentor

    I rethought this. MAybe you can represent the smallest possible value as an ULP - which is the limit of precision for a floating point number in a given range. It is not a fixed value.

    In any event consider reading this 'What every computer scientist should know about floating point arithmetic':
  10. Dec 4, 2013 #9

    Thanks for the feedback and that looks like a good article. To be completely honest this isn't being done in Java, it was being done in SciLab, I just used Java as an example since its known by more people. I'm not targeting the smallest possible number, I'm targeting the smallest possible number that is less than one so I can multiply that .999999.... by some value that has a known maximum (in this case 1 since its fuzzy logic) ensuring that the value never actually reaches one. In my code I used something like 999/1000 since 1000 is large enough for this case. When it comes to defining this formula mathematically I should be able to be more precise than computers can handle. As of now I'm sticking with the sigma notation as that seems to be the most readable and least likely to cause computational problems.

    Is = 1 - (1/Ʃx)

    If 0 <= G(z) <= 1 Then

    0 <= Is * G(z) < 1

    So ....

    Where Y = {0,1}

    0 <= Y + ( (1 - Y) * Is) * G(z) <= 1

    And that is why I need an infinitesimal because I don't want G(z) to be able to imply that Y is known to be true.

    [edit] This formula seems to still work if Y is also a fuzzy number 0 <= Y <= 1, but I haven't yet tested that case since in the final application, which will be in PHP+MySQL, the value of Y is a boolean value. It would be interesting to see what the behavior is for a fuzzy Y, as far as I can tell though even a fuzzy Y with this formula cannot imply that Y is fully known unless Y actually equals 1.
    Last edited: Dec 4, 2013
  11. Dec 4, 2013 #10
    In this paper, on page 11 the authors introduce the symbol ##\circledcirc## for an infintessimal, originally introduced by J. M. Henle, and E. M. Kleinberg, Infinitesimal Calculus, MIT Press,
    Cambridge, 1979.
  12. Dec 4, 2013 #11
    @scurty, thanks, that is exactly what I needed. I wish I had read that before studying calculus in the first place, it would have helped me to avoid many headaches.

    [edit] after the fact I ran some tests in scilab and this formula does not work for a fuzzy Y. I still have a ways to go to adjust this formula to integrate fuzzy knowledge about the trait being tested. If you use Y = 0.5 and G(z) = 0.5 where 0.5 means unknown you can clearly see this formula doesn't work if Y is a fuzzy number.
    Last edited: Dec 4, 2013
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Similar Threads for properly define infintisimal
I Convergence of a recursively defined sequence