I would like to exclude the point {x=0,y=0}
in the function definition
f = Function[{x, y}, {x/(x^2 + y^2), -(y/(x^2 + y^2))}]
So far I tried ConditionalExpression
and /;
without success.
Thanks!
I would like to exclude the point {x=0,y=0}
in the function definition
f = Function[{x, y}, {x/(x^2 + y^2), -(y/(x^2 + y^2))}]
So far I tried ConditionalExpression
and /;
without success.
Thanks!
As far as I know, you cannot have a pure function that holds its arguments depending on a condition on the arguments. Condition
specifically works with pattern matching and pure functions don't use the pattern matcher. So the behaviour that f[0, 0]
doesn't evaluate simply cannot be achieved with a pure function.
The alternative is some sort of default return value. Probably the easiest way to do this, is with something like If
, Switch
or Which
:
f = Function[{x, y},
If[ TrueQ[x == 0 || y == 0],
Undefined,
{x/(x^2 + y^2), -(y/(x^2 + y^2))}
]
];
f[0, 0]
Undefined
Note the use of TrueQ
, which is necessary to deal with the case f[a, b]
where a
and b
are symbols. The If
will not evaluate otherwise, since a == 0
and b == 0
remain unevaluated (because they are equation, not truth statements). The test x === 0
is not useful here either, since 0. === 0
evaluates to False
. PossibleZeroQ[x]
is another test you could use in the If
statement.
Undefined
$\endgroup$
– Ulrich Neumann
Aug 8 at 12:15
f[0,0]
? $\endgroup$ – Lukas Lang Aug 8 at 11:14Null
! $\endgroup$ – Ulrich Neumann Aug 8 at 11:16If
or similar to do the check. As far as I am aware,Function
will always evaluate when it is applied to something. Depending on the amount of conditions, you could use e.g.Replace[{##},{{0,0}->Null,{x_,y_}:>{x^2,y^2}}]&
orReplace[{##},{{x_,y_}/;x!=0||y!=0:>{x^2,y^2},_->Null}]&
to have a syntax more similar to traditional downvalue definitions $\endgroup$ – Lukas Lang Aug 8 at 11:24TransformedRegion
. A possible workaround could be the definition of a region thereby excluding the point{0,0}
. $\endgroup$ – Ulrich Neumann Aug 8 at 11:27TransformedRegion
, I don't recommend using the return valueNull
. It's probably not the correct return for "this thing doesn't exists".Undefined
is probably better.Null
is a programmatic value, not a mathematical one. $\endgroup$ – Sjoerd Smit Aug 8 at 11:31