cancel
Showing results for
Did you mean:
cancel
Showing results for
Did you mean:

## Find() block with multi variables  13-Aquamarine

## Find() block with multi variables

To all,

Forgot how to do the following in mcad 15

I’d like to find the “best” possible (feasible) set of numbers (variables) to minimize an error. See attached

I am sure I have seen examples about similar problem but can’t find them right now. I'll start looking at setting up the problem but I thought I'll ask in the meantime

Does one have to set up a Given (Find) block with the possible equation(s)/inequation(s) or should a function be defined

Thanks

Regards

1 ACCEPTED SOLUTION

Accepted Solutions  24-Ruby V
(To:JXBWk)

@JXBWk wrote:

Thanks. After some trial and error I was just about getting there !

I have replaced the constraint "<= MaxMass" to be =MaxMass as it make more sense to "target" a mass as well as an inertia

I haven't figure out how to put an "constraint" on a specific variable. for example I would like each ycg value to be less than 120mm or even better ycg[i <= 120mm - r[i

Forget about the range i inside of the solve block!

That additional constraint seems to be easy, even though I am not sure why Mathcad accepts a constraint formulated like this as we have a vector on the LHS and a scalar on the RHS. I would have expected an error, but obviously it works OK: 10 REPLIES 10  23-Emerald III
(To:JXBWk)

Check the built in help, it comes with examples.

Yes, you 'll probably want to use a solve block, and the Minerr function. Or Minimize...

Success!
Luc  24-Ruby V
(To:JXBWk)

You calculate the sum of I.YY.CG and compare it with I.target.

Shouldn't it be the sum of I.YY.shift?.

You have only one equation and one value as a target and so many variables to play with!

Not sure if thats what you are looking for, but Mathcad finds that its only necessary to change one of those many variables (lyy.cg.5) to get a perfect result.   13-Aquamarine
(To:Werner_E)

Thanks. Indeed copied-pasted the wrong variable

Get perfect results because the values were entered to be so - to start with

It's because I have so many variables that I am not sure how to proceed

strictly speaking if change m then the related Iyy.CG must change (if you change the mass of a cube (by changing it's dimension then its inertia changes) - this introduce an extra 3 variables but 1 thing at a time

I manged to set your kindly provided example and will start playing with. You'll find that in your example/test, mcad does indeed seem to change only 1 of the variable  23-Emerald I
(To:JXBWk)

It's because I have so many variables that I am not sure how to proceed

Time to remember some basic algebra:  You need as many equations as variables you're solving for, or the problem is not sufficiently constrained.  If you have more equations than variables the problem is over constrained.  13-Aquamarine
(To:Fred_Kohlhepp)

Yes I know that that why I am trying to work my way through the equations I think I have

If one assumes 4 cylindrical shapes of dimensions r & h, of possible positions ycg then there are 12 variables.

I have 4 equations for the masses, 4 for the inertia (8-off total) and only 1 extra one for the overall inertia

I therefore have to add constraints to some variables. Maybe by forcing some masses or CGs to be equal  24-Ruby V
(To:JXBWk)

Mathcad only changes one variable because that's all it takes to satisfy that one equation.

Sure you could add constraints like or all I.yy.cg should be smaller than a specific value But if, as you wrote, your variables are dependent on each other, you have to formulate those dependencies using function.

If I.yy.cg depends on m, then you have to formulate I.yy.cg as a function of m, for example.  13-Aquamarine
(To:Werner_E)

Thanks

if functions are defined for mass & inertia how does one then uses these functions in the Given block?

See attached. Looks like the variables are not properly defined as I get an "not defined"  24-Ruby V
(To:JXBWk)

You can't use a range variable (i) in the solve block

You use the function INSTEAD of the variable - write fn_mass(r,h) instead of mass.

If you introduce a new variable "mass", you would also have to solve for it!

But as I see it you still have just one equation but 12 variables to play with. Thats the reason that in the solution so many values are approx. equal:   13-Aquamarine
(To:Werner_E)

Thanks. After some trial and error I was just about getting there !

I have replaced the constraint "<= MaxMass" to be =MaxMass as it make more sense to "target" a mass as well as an inertia

I haven't figure out how to put an "constraint" on a specific variable. for example I would like each ycg value to be less than 120mm or even better ycg[i <= 120mm - r[i  24-Ruby V
(To:JXBWk)

@JXBWk wrote:

Thanks. After some trial and error I was just about getting there !

I have replaced the constraint "<= MaxMass" to be =MaxMass as it make more sense to "target" a mass as well as an inertia

I haven't figure out how to put an "constraint" on a specific variable. for example I would like each ycg value to be less than 120mm or even better ycg[i <= 120mm - r[i

Forget about the range i inside of the solve block!

That additional constraint seems to be easy, even though I am not sure why Mathcad accepts a constraint formulated like this as we have a vector on the LHS and a scalar on the RHS. I would have expected an error, but obviously it works OK:  Announcements