Hi Rafael, thank you for your answer.
I'm running the code with the minimum variables required for it (positions, radius, number of spheres). it can be some sort of error generating in the output (or in some internal calculation) of calc_D_superp_dobcel, but I don't think it is roundoff, why would that change when defining a different variable or adding a command with no connection? superp0 and superp1, as you told me to define them, are the same (superp0-superp1=0), so the error is not produced in those lines, it is something less direct. I'm not expert, but I guess what is happenning here is that, using a section of the RAM, the stack, the space where variables are stored, or whatever it is, is sligthly modifying OTHER sections of the RAM or wathever. Some bug of scilab, or maybe it is a common thing in every program but usually goes unnoticed (which would be understandable, it is a 1e-15 error, most of the times it will be not significant). Right after writting this, and remembering some issues like the division by zero... I had an idea (is "epiphany" too pretencious?), and I ran it on ubuntu... the problem is gone! There is no error under ubuntu. So the problem is in Windows (it is Windows server, I can check Windows Vista in a few days...). the question is: Is it a Windows bug, or a Scilab-for-Windows bug? By the way, the obvious solution for me would not work. I cannot run my simulations in my ubuntu machine, we have the workstation for large calculations so we don't overload our personal computers, and the worstations runs with Windows server... Well, I can test my control system in my ubuntu machine, but not run the real thing...



On 28/01/13 21:50, Rafael Guerra wrote:
 From the code excerpt provided it is difficult to see from where errors of
magnitude~=1e-15 might come from.

Could they be due to some round-off errors in the function:
calc_D_superp_dobcel? Please check the function details.

Have you run the code with a "clear" at the beginning of the program to
clean all variables?

// Could you please define before your 3rd control system:
    superp0= superp;
// and after your 3rd control system:
    superp1= superp;
    printf("%i...delta(superp) = %e", control, max(abs(superp1-superp0)) )
// and tell us what values do you get? Do the errors of 1e-15 magnitude
occur and at which "control" iterations?


// Non related to your problem, herebelow are some suggestions, if you will,
to make your code more easy to read:

    //define additional variables to simplify the code:
    m = int(control/max_mov*20);
    N = length(sup_2);
    s = sum(superp);

    // write:
    while max(superp)>tol & control<=max_mov // moving "control=control+1" to
the end of the while loop


PS: "sumsupant"  // this variable is not defined in the code excerpt, looks
like =sum(superp)


Regards,
Rafael G.



--
View this message in context: 
http://mailinglists.scilab.org/modifying-a-variable-changes-the-value-of-another-variable-tp4025762p4025819.html
Sent from the Scilab users - Mailing Lists Archives mailing list archive at 
Nabble.com.
_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

Reply via email to