Skip to main content
1-Visitor
Aug 29, 2014 1:38 PM UTC
Question

Type equation first then evaluate with values

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
Aug 29, 2014 1:45 PM UTC

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.

Translate
Werner_E
25-Diamond I
Aug 29, 2014 1:54 PM UTC

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

Translate
Werner_E
25-Diamond I
Aug 29, 2014 2:00 PM UTC

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

Translate
24-Ruby IV
Aug 29, 2014 7:05 PM UTC

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

Translate
12-Amethyst
Aug 29, 2014 1:55 PM UTC

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

type_first.png

Translate
Dan8881-VisitorAuthor
1-Visitor
Aug 29, 2014 1:59 PM UTC

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.

Translate
19-Tanzanite
Aug 29, 2014 10:55 PM UTC

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.

Translate
23-Emerald I
Aug 29, 2014 2:11 PM UTC

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

Translate
Dan8881-VisitorAuthor
1-Visitor
Sep 1, 2014 6:59 AM UTC

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.

Translate
Dan8881-VisitorAuthor
1-Visitor
Sep 1, 2014 7:25 AM UTC

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) =

Translate
1-Visitor
Sep 1, 2014 7:29 AM UTC

Yes, but why would you want to?

Werner's example above basically does the same.

Translate