Post Reply 
[SOLVED] Given (|) in programming?
05-29-2016, 04:57 AM (This post was last modified: 06-21-2016 11:27 AM by CH3791.)
Post: #1
[SOLVED] Given (|) in programming?
Hi, I am trying to make a program that calculates x intercepts. Right now, it can calculate the answer, but I can't make it restrict the domain.

I understand you can do this directly in the CAS app:
solve(SIN(x)=0,x)|{(x>-10) AND (x<10)}
{-3*pi, -2*pi, -pi, 0, pi, 2*pi, 3*pi}

But when I put that kind of syntax into my program, it returns "Error: Invalid input".
Code:

EXPORT XINT(expression,domainlow,domainhigh)
BEGIN
  LOCAL equation;
  LOCAL variable;
  LOCAL answer;
  variable:="x";
  equation:=EXPR(LOWER(STRING("0="+expression)));
  answer:=CAS.solve(EVAL(equation),EVAL(variable))|{(EVAL(variable)>-10) AND (EVAL(variable)<10)};
  print("X-INTERCEPT(S)");
  print(answer);
  RETURN "DONE";
END;

Any ideas?
Find all posts by this user
Quote this message in a reply
05-29-2016, 08:24 AM
Post: #2
RE: Given (|) in programming?
I'm not sure that syntax, using the "|" operator, is valid within a program; but using assume() and additionally() does appear to work. See modified program below:

Code:
EXPORT XINT1(expression,domainlow,domainhigh)
BEGIN
 LOCAL equation;
 LOCAL variable;
 LOCAL answer;
 variable:="x>"+string(domainlow);
 CAS.assume(EVAL(variable));
 variable:="x<"+string(domainhigh); 
 CAS.additionally(EVAL(variable));
// variable:="x";
 equation:=EXPR(LOWER(STRING("0="+expression)));//EXPR means convert to a string.
 answer:=CAS.solve(EVAL(equation),"x");
 print("X-INTERCEPT(S)");
 print(answer);
 RETURN "DONE";
END;
Find all posts by this user
Quote this message in a reply
05-29-2016, 08:47 AM (This post was last modified: 05-29-2016 08:55 AM by CH3791.)
Post: #3
RE: Given (|) in programming?
Thanks roadrunner, your code works perfectly. One thing I would add though is:

purge(x);

at the very end just before RETURN "done", so that the domain gets deleted and won't affect future calculations involving x.
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: