Skip to main content
1-Visitor
August 29, 2014
Question

Type equation first then evaluate with values

  • August 29, 2014
  • 16 replies
  • 5179 views

I'd like to type something like this:

Area = a x b

where:

a := 10

b := 20

Thus,

Area = 200

How close can I get in Mathcad?

I've tried using the boolean "=" for the first statement but then can't get the last statement to work.

16 replies

23-Emerald I
August 29, 2014

Mathcad evaluates top down and left to right.

type a : 10 (the : will become :=)

type b : 20

This will define a and b as equal to those values.

Below, or to the right type

Area: a * b =

see attached.

Werner_E
25-Diamond I
August 29, 2014

Fred showed you one way to do it.

If you insist in having the formula on top, you have to define it as a function depending on the two arguments.

I have chosen the names "length" and "width" to make clear that the can be different from the variable names you use later. But of course the arguments can be named a and b, too, if you like.

1.png

An alternative way would be the use of global assignments, but I would strongly advise against using them.

2.png

Werner_E
25-Diamond I
August 29, 2014

Here is the image which does not show in the previous post. I ever so often have this problem that when I edit a post I am not able to add images.

2.png

24-Ruby IV
August 29, 2014

Werner Exinger wrote:

Here is the image which does not show in the previous post. I ever so often have this problem that when I edit a post I am not able to add images.

2.png

SMath. Is it good?

SMathArea.png

12-Amethyst
August 29, 2014

If you want the structure you've given, then the definition of Area needs to be a function, as shown below.

type_first.png

Dan8881-VisitorAuthor
1-Visitor
August 29, 2014

Thanks, but is there no way to do it with booleans / symbolics?

Seems a bit of an oversight if not as it is the way most solutions / books are written.

Functions are a bit "mathy" in my context.

19-Tanzanite
August 29, 2014

It's not an oversight, it's by design. A book doesn't have to calculate anything. Suppose on page xxx I have:

a:=2

b:=3

Area:=a*b

So Area=6

Then on page xxx+5 I have:

If a and b now take on the new values

a:=4

b:=5

then Area=20.

You can understand that, but for Mathcad to know that the latter two values should be used it would have to understand the text. The way Mathcad treats it is that Area is a fixed quantity calculated from previously declared values. What you are asking for is that Area is an implicit function. In the example I give above, it would actually have to be both, depending on context that is only clear from the text.

Valery shows an example from Smath, where you can do what you request (although not the example I show). What he doesn't say is that the help (or perhaps a tutorial?) warns you it's a dangerous thing to do, because you can get unexpected results.

23-Emerald I
August 29, 2014

Tip of the hat to Valery, we can give you exactly what you want with a bit of hidden magic.

Dan8881-VisitorAuthor
1-Visitor
September 1, 2014

Took me a while to figure out what you did there Fred !

Note to all: There's an area at the top where a and b are defined.

Dan8881-VisitorAuthor
1-Visitor
September 1, 2014

Is there a way to do it with solve blocks?

I tried the following but it doesn't give an answer: (all equals in the solve block are boolean)

Area := 50 (guess value)

Given (start solve block)

Area = a.b

a = 10

b = 20

Find(Area) =

1-Visitor
September 1, 2014

Yes, but why would you want to?

Werner's example above basically does the same.