Community
Inventor Forum
Welcome to Autodesk’s Inventor Forums. Share your knowledge, ask questions, and explore popular Inventor topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Equation driven curve - unit error

23 REPLIES 23
SOLVED
Reply
Message 1 of 24
19112033
4511 Views, 23 Replies

Equation driven curve - unit error

Hi there,

I would like to create an equation driven curve with inventor. I have no problems plotting the function in a plotter, however, inventor won't accept my equation. It gives me the error message, saying: "The equation contains unit errors". I'm using the explicit equations.

That's the bare equation:

 

"y=sqr(2)*16.5/2/sqr(pi)*sqr(arccos(1-2*x/50)-(sin(2*arccos(1-2*x/50))/2))"

 

I modified it, inserting variables which I defined also in inventor, leading to this:

 

"sqrt(2)*height/2/sqrt(PI)*sqrt(acos(1-2*t/length)-sin(2*acos(1-2*t/length))/2))"

 

But both equations are not accepted by inventor due to unit errors. In this design, I'm using the metric system, millimeters, so I don't understand why and how I have to redefine this for the equation in order to get it working.

 

I would appreciate your help,

Max

23 REPLIES 23
Message 2 of 24
conklinjm
in reply to: 19112033

Beyond the fact that the equation has unmatched brackets, it could also be because of mixed units (if any).

This gives me an error (i.e. turns red) when I type it into a user defined parameter

sqrt(2 ul) * height / 2 ul / sqrt(PI) * sqrt(acos(1 ul - 2 ul * t / length) - sin(2 ul * acos(1 ul - 2 ul * t / length)) / 2 ul))

However, if you remove the last bracket, it works.

HTH

Not sure of what the equation represents -- might be easier to find the errors (and have someone else understand it) if you broke it down into subcomponents.
Message 3 of 24
19112033
in reply to: conklinjm

I'm quite new to Inventor and not familiar how the program handles equation. E.g. it's totally new for me to specify units in an equation. 

 

BTW: I forgot a bracket in my first post, sorry about that.

 

Breaking the equation down into subcomponents:

First of all you have the first part, which works without problems:

 

sqrt(2)*16.5/2/sqrt(PI)

 

The second part is a bit more complex:

 

sqrt(acos(1-2*x/50)-(sin(2*acos(1-2*x/50))/2))

 

So let's break it down a little.

 

You have this element:

 

acos(1-2*x/50)

 

And you want to subtract the following:

(sin(2*acos(1-2*x/50))/2)

 

So you have this:

 

acos(1-2*x/50)-(sin(2*acos(1-2*x/50))/2)

 

Now you want to calculate the square root of this difference:

 

sqrt(acos(1-2*x/50)-(sin(2*acos(1-2*x/50))/2))

 

In the end, you multiply this part with the first, resulting in this:

 

sqrt(2)*16.5/2/sqrt(PI)*sqrt(acos(1-2*x/50)-(sin(2*acos(1-2*x/50))/2))

 

So, I hope you could grasp how this equation is build up.

 

Anyway, if I enter this equation, as is, into Inventor, i get the following error messages:

 

1: Cannot evaluate inverse cosine outside of the range [-1,+1]

2: Cannot evaluate square-root of zero or a negative number

 

Why can't Inventor calculate the square-root of zero? sqrt(0) is defined as zero.

 

There seems to be a problem with my equation, but I can't find it.

 

Thank you for your help so far,

Max

 

 

 

 

 

 

 

Message 4 of 24
conklinjm
in reply to: 19112033

It probably comes down to a unit error ... try this.

sqrt(2 ul) * 16.5 in / 2 ul / sqrt(PI) * sqrt(acos(1 ul - 2 ul * x / 50 in) - ( sin(2 deg * acos(1 ul - 2 ul * x / 50 in)) / 2 in ))

Certain functions _require_ a specific type of unit for them to calculate correctly -- for example if x is expecting a unit of 'in' and is given '1 ul' it evaluates it as 0.393701" which is not anywhere near what the intent of the design. Best approach is to go function by function and verify that both the inputs and outputs have the expected units.

HTH
Message 5 of 24
19112033
in reply to: 19112033

Thank you for your help. Now we have eliminated the second error, but the first is preventing the curve to be drawn. There must be something wrong with the acos. But the strange thing is, that I can plot this function without problems in a plotter. Why not in Inventor?

 

Looking forward to an answer,

Max

Message 6 of 24
karthur1
in reply to: 19112033


19112033 wrote:

......... 

sqrt(2)*16.5/2/sqrt(PI)

 

The second part is a bit more complex:

 

sqrt(acos(1-2*x/50)-(sin(2*acos(1-2*x/50))/2))

 

So let's break it down a little.

 

You have this element:

 

acos(1-2*x/50)

 

........

 

Thank you for your help so far,

Max  

 

 

 

The reason that this does not work is because your units are not what Inventor expects them to be.  For instance, the equation acos(1-2*x/50).  Inventor expects the units of the input to be unitless and it will output this in degrees.  You can find the input and output in the help.  Search for "algebraic operators".  It should be close to the top of the list.

 

If you enter acos(1-2*x/50) as an equation, it will fail (x is also defined in the parameters in units (mm)).

 

 

2013-11-27_1211.png

 

 In order to get it to work, multiple the length units by (1ul/1mm)

 

2013-11-27_1216.png

 

 

Kirk

 

 

Message 7 of 24
karthur1
in reply to: 19112033


@19112033 wrote:

Thank you for your help. Now we have eliminated the second error, but the first is preventing the curve to be drawn. There must be something wrong with the acos. But the strange thing is, that I can plot this function without problems in a plotter. Why not in Inventor?

 

Looking forward to an answer,

Max


Now, I am thinking there is something wrong with the ACOS function also.  When I enter a simple equation in the equation curve, I get this error "Cannot perform division with a zero denominator".  There is NO zero in the denominator.

 

2013-11-27_1240.png

 

 

If I change the formula to a COS function, it works.

 

Sorry if I mislead you.

 

Kirk

 

Message 8 of 24
19112033
in reply to: 19112033

Well, if you insert your minimum value of x (which in your case is zero), then you have a denominator of zero. If you change your xmin value to one, it should work. Thats all very strange...

Message 9 of 24
karthur1
in reply to: 19112033

In my equation y=ACOS (x/1mm), the denominator is always "1mm".  The numerator varies from 0 to 1.

 

If:

x=0... then the formula should be ACOS (0/1), which equals 90 deg.

x=1... then the formula should be ACOS (1/1), which equals 0 deg.

Message 10 of 24
glenn-chun
in reply to: karthur1

I looked into the ACOS issue.  Mathematically speaking, the arcsine and arccosine functions should take any input value from -1 to 1.  However, Inventor seems to take a value a little less than 1, such as 0.999999, but not 1 itself.  Attached is an Inventor 2013 part that shows an inverse cosine curve:

 

acos_works.png

 

Once the tmin and tmax are changed to -1 and 1, respectively, Inventor shows an error message:

 

acos_bug.png

 

I'm logging a defect against the above issue in ACOS and ASIN.  Defect number is 1510653.

 

Glenn



Glenn Chun
Sr. Principal Engineer
Message 11 of 24
karthur1
in reply to: 19112033

Max,

After I looked at what Glen worked out, it appears that a portion of your formula is outside the range of -1 to +1,

 

In the (1-2*x/50) portion.... if x>0, then this would be greater than 1 and can't be evaluated.

 

Kirk

Message 12 of 24
19112033
in reply to: karthur1

Thank you all for your replies. This is a really professional forum with great members.

 


@karthur1 wrote:

Max,

After I looked at what Glen worked out, it appears that a portion of your formula is outside the range of -1 to +1,

 

In the (1-2*x/50) portion.... if x>0, then this would be greater than 1 and can't be evaluated.

 

Kirk


Well, if I insert 1 for x in this portion, the result is 0.96. If I insert 50, the result is 0.6. So all this should be in the possible range of -1 to +1. 

And you can calculate the arccos of 0.96 without problems, it's around 16.3. 

 

Could you explain to me how you came to the conclusion, that if you insert a value for x>0, you will get a result greater than 1?

 

Thanking you for your help,

Max

Message 13 of 24
karthur1
in reply to: 19112033

Max,

I made an error... if x<0 then the formula is greater than +1, which is outside the range of ACOS.

 

Kirk

Message 14 of 24
19112033
in reply to: karthur1

No problem, nobody's perfect.

 

I've set the boundaries from xmin=0 to xmax=50, so there should be no negative value for x. So this part of the equation should not cause the error present in inventor. But what does? I can easily plot the function outside of autodesk, so the equation itself shouldn't be the problem. Even when I'm including dimensions, I get an error concerning the computation of the arcsine, complaining that something is out of the boundary range... But I can't find evidence for that.

 

I'm still unsure weather it is a problem with autodesk or with my equation.

 

Maybe I should note, that I can use this equation in other CAD programs, but can't get it to work with Inventor.

 

Looking forward to an answer,

Max

Message 15 of 24
conklinjm
in reply to: 19112033

See the last message on the end of the first page ...  GlennChun wrote:

 


 

Once the tmin and tmax are changed to -1 and 1, respectively, Inventor shows an error message:

 

acos_bug.png

 

I'm logging a defect against the above issue in ACOS and ASIN.  Defect number is 1510653.

 


 

So it seems that it is a problem with Inventor and not necessarily with your equation.

 

HTH

 

 

 

Message 16 of 24
glenn-chun
in reply to: 19112033

Hi Max,

 

The Equation Curve command in Inventor does not take -1 or 1 as an input for the acos or asin function.  I logged a defect (1510653) yesterday against this issue.  The valid input values should be in the range of [-1, 1], but the Equation Curve command currently takes (-1, 1).

 

Since you set xmin to 0 and xmax to 50, the input for your acos, 1-2*x/50, ranges from 1 to -1, which are perfectly valid.  However, an error occurred in Inventor due to the defect in the Equation Curve command.  A workaround is that you set xmin to 0.000001 and xmax to 49.999999 so that the input for your acos can range from 0.999... to -0.999...  I recommend to define a user parameter for the tolerance in the Parameters dialog:

 

workaround_for_acos_asin_boundaries.png

 

Glenn



Glenn Chun
Sr. Principal Engineer
Message 17 of 24
karthur1
in reply to: glenn-chun

Glen,

I was looking at this equation again. In the equation that the OP gave, he used a "length" variable in teh ACOS(x) function.  I noticed that you went ahead and substituted a hard number there (50mm). I was trying to work this out using the "length" variable and could not get it to work.  I noticed that when the length variable is <10, the function fails.  If I put 9.9mm in the denominator, I get this error.  Can you explain why?

 

2013-11-28_1945.png

Message 18 of 24
karthur1
in reply to: 19112033

Max,

Here is a part that has your equation in it.  How does this compare to the results you were getting in the other grapher? 

 

No guarantee that this is 100% correct, but it does plot.

 

The length and width are user parameters that you can change.  In order for this to workthe length>50.  It also fails if the height is =1.0mm

 

Kirk

 

2013-11-28_2113.png

 

 

 

 

Message 19 of 24
glenn-chun
in reply to: karthur1

Hi Kirk,

 

In each of the attached parts, I added a variable 'length' in the Parameters and initially set it to 50.  The equation curve is correctly plotted when I changed the length to any positive number, such as 100, 10, 9.9, 5, and 1.

 

Explicit

 

length in mm

tol: 0.000001 mm

 

y(x):  acos(1 ul - 2 ul * x / length) / 1 rad

 

xmin:  tol

xmax: length - tol

 

Parametric

 

length in ul

tol: 0.000001 ul

 

x(t):  t

y(t):  acos(1 ul - 2 ul * t / length) / 1 rad

 

tmin:  tol

tmax:  length - tol

 

 

The length of the curve in Y direction is always 1.  The length of the curve in X direction is the value of the variable 'length' (more precisely, 'length' - 2 * tol).

 

Glenn



Glenn Chun
Sr. Principal Engineer
Message 20 of 24
19112033
in reply to: karthur1

Hi Glenn,

I used length, defined in Inventor as 50mm, as a placeholder for the value 50. Since I didn't want to mess around with the units, I repalced it with a hard value.

 

So, when I plot the function in a normal plotter, I get this result, which is as it should be:

plot.PNG

 

So I don't understand how you get these crazy shaped curves in the posts above.

 

Thank you for your help so far,

Max

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report