Loop program
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Loop program
The problem is the R loop solve 2 instead of 1 and the Vx loop solve 2 instead of 3. What’s the problem?
- Labels:
-
Mathcad Usage
-
Programming
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Don't know why the units cause problems.
See if this helps https://community.ptc.com/t5/Mathcad/Using-Units-in-a-for-loop/m-p/84351
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
When you learn programming than one of the first things you learn is that you should never compare float values for equality but rather ask if the absolut value of their difference is smaller than a certain small value like 10^-10.
The use of the units results in very small floating point rounding/conversion errors and so (l-b) is not exactly equal to x.
You may do it that way:
Or define a function
BTW, your programs don't contain any loops (no "if" and no "while").
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Thank you for your input. Is it possible to use different calculation formulae depending on x value
If x = (l-b); Matcad use formulae 1 to solve R
If 0 ≤ x < (l-b); Matcad use formulae 2 to solve R
If (l-b) < x ≤ l; Matcad use formulae 3 to solve R
For any other values of x, Matcad use 0 to solve R
If 0 ≤ x ≤ a; Matcad use formulae 1 to solve Vx
If a < x < (l-b); Matcad use formulae 2 to solve Vx
If (l-b) ≤ x ≤ l; Matcad use formulae 3 to solve Vx
For any other values of x, Matcad use 0 to solve Vx
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
@AS_9781967 wrote:
Thank you for your input. Is it possible to use different calculation formulae depending on x value
Sure. Simply replace "Result <-- 1" by "Result <-- <formulae 1>" etc.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
I didnt quite get why Matcad solve 2 if x = (l-b) = 60? Why should we have to add e = 10^10?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Because the value stored in x and the result of l-b are not exactly equal. Because of internal round off or conversion errors they are off by about 10^-18 as I had shown. Thats the reason why if x=l-b ... does not trigger - Prime realizes/thinks the the expressions are NOT equal.
If you have two real floating point values (and using unit mm seems to turn the integers into floats) a and b you should not ask if a=b but rather if "a" is approximately equal to "b" within a certain accuracy. So you don't ask "if a=b ..." but rather "if |a-b|< eps ..." with eps being a small value like 10^-12 or the like.
But there is an even simpler solution to your problem: Chose menu ribbon "Calculation", then open "Calculation Options" and turn on "Approximate Equality". This should make your if statement trigger the way it should be.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Can you please share the worksheet?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
@AS_9781967 wrote:
Can you please share the worksheet?
Here you are.
Its just your worksheet unchanged - only with "Approximate Equality" enabled.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
See here:
