Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.

Topic: Very simple question
Replies: 4   Last Post: Apr 11, 2014 2:11 AM

 Messages: [ Previous | Next ]
 Alexei Boulbitch Posts: 483 Registered: 2/28/08
Re: Very simple question
Posted: Apr 11, 2014 2:11 AM

I've been away from Mathematica for about 7 years.
Can anyone tell me why function fx gives an error message but fy does
not? They look functionally the same to me.

fx[ptl_] := Module[{x1, y1, x2, y2, x3, y3},
Print[pt1];
x1 = pt1[[1, 1]]; y1 = pt1[[1, 2]];
x2 = pt2[[2, 1]]; y2 = pt2[[2, 2]];
x3 = pt3[[3, 1]]; y3 = pt3[[3, 2]];
Print[x1, y1, x2, y2, x3, y3];
]
fx[{{1, 2}, {3, 5}, {4, 7}}]

fy[pt1_] := Module[{zz, x1, y1, x2, y2, x3, y3},
zz = pt1;
Print[zz];
x1 = zz[[1, 1]]; y1 = zz[[1, 2]];
x2 = zz[[2, 1]]; y2 = zz[[2, 2]];
x3 = zz[[3, 1]]; y3 = zz[[3, 2]];
Print[x1, y1, x2, y2, x3, y3]
]
fy[{{1, 2}, {3, 5}, {4, 7}}]

Thank you.
Steve Gray

Hi, Stephen,

The answer is also simple: the body of the function fx calls pt2 and pt3 that are not defined anywhere. It confuses Mathematica. If you replace fx as follows:

fx[pt1_] := Module[{x1, y1, x2, y2, x3, y3},

x1 = pt1[[1, 1]];
y1 = pt1[[1, 2]];
x2 = pt1[[2, 1]];
y2 = pt1[[2, 2]];
x3 = pt1[[3, 1]];
y3 = pt1[[3, 2]];
Print[x1, y1, x2, y2, x3, y3]]

Which is probably what you intended, it will return the result. In messages though. To see the result on the screen it is better to do something like the following:

fz[pt1_] := Module[{x1, y1, x2, y2, x3, y3},

x1 = pt1[[1, 1]];
y1 = pt1[[1, 2]];
x2 = pt1[[2, 1]];
y2 = pt1[[2, 2]];
x3 = pt1[[3, 1]];
y3 = pt1[[3, 2]];
{x1, y1, x2, y2, x3, y3}]

fz[{{1, 2}, {3, 5}, {4, 7}}]

{1, 2, 3, 5, 4, 7}

Have fun, Alexei

Alexei BOULBITCH, Dr., habil.
IEE S.A.
ZAE Weiergewan,
11, rue Edmond Reuter,
L-5326 Contern, LUXEMBOURG

Office phone : +352-2454-2566
Office fax: +352-2454-3566
mobile phone: +49 151 52 40 66 44

e-mail: alexei.boulbitch@iee.lu

Date Subject Author
4/9/14 W. Craig Carter
4/10/14 Bob Hanlon