Message Boards Message Boards

Solve[] not giving ConditionalExpression?

Posted 3 years ago

The following solution is finite only if c is not zero:

Solve[x * c == 1, x]
{{x -> 1/c}}

however, Solve[] does not return a ConditionalExpression. How could I enforce that? Thanks.

POSTED BY: Thomas Tse
5 Replies

Hi Thomas The coefficient c cannot be zero at the first place because if it is, then your equation you are trying to solve will not be valid as you get 0==1 That is why Solve[] assumed that c cannot be zero.

POSTED BY: Ahmed Elbanna
Posted 3 years ago

Hi Thomas,

Use Reduce

Reduce[x*c == 1, x]
(* c != 0 && x == 1/c *)
POSTED BY: Rohit Namjoshi
Posted 3 years ago

oh I see... but what about the following?

Solve[x * c == y, x]
{{x -> y/c}}

this time, x=0 if y=0; when y!=0, x is only defined if c!=0. Again, no ConditionalExpression is returned?

POSTED BY: Updating Name
Posted 3 years ago

as suggested by Robit below:

Reduce[x * c == y, x]
(y == 0 && c == 0) || (c != 0 && x == y/c)

that said, I should always use Reduce rather than Solve ???

POSTED BY: Thomas Tse

Use Reduce when you want the conditions, Solve when you want the generic solution.

POSTED BY: John Doty
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract