# EquationImplicitFunction1

Jump to: navigation, search

## Answer is an Equation that Implicitly Defines a Function

This PG code shows how to have an answer that is an equation that implicitly defines a function.

PG problem file Explanation

Problem tagging:

```DOCUMENT();

loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"parserImplicitEquation.pl",
"AnswerFormatHelp.pl",
);

TEXT(beginproblem());
```

Initialization:

```Context("ImplicitEquation");
Context()->{error}{msg}{
"Can't find any solutions to your equation"} = " ";
Context()->{error}{msg}{
"Can't generate enough valid points for comparison"} = " ";

Context()->variables->set(
x=>{limits=>[-6,11]},
y=>{limits=>[-6,11]},
);

\$a = random(1,5,1);
\$b = random(1,5,1);
\$r = random(2,5,1);

\$answer = ImplicitEquation(
"(x-\$a)^2 + (y-\$b)^2 = \$r^2",
solutions=>[
[\$a,\$b+\$r],
[\$a,\$b-\$r],
[\$a+\$r,\$b],
[\$a-\$r,\$b],
[\$a+\$r*sqrt(2)/2,\$b+\$r*sqrt(2)/2],
]
);
```

Setup: We quash some error messages by redefining them to be a blank string `" "` (notice the space). Since the circle will always be contained in a rectangle with two opposite corners at ```(-4,-4) and UNIQ3fafbd0623c11519-code-00000005-QINU ```, we set the limits for the variables x and y to be outside of this rectangle. The `ImplicitEquation` object allows us to specify as many solutions as we like, and doing so should improve the accuracy of the answer evaluator.

If your equation is linear of the form `x=3`, `4x+3y=12`, or `4x+3y+5z=21`, or..., you should probably use the [ImplicitPlane1 implicit plane] context and answer evaluator.

```Context()->texStrings;
BEGIN_TEXT
Enter an equation for a circle in the xy-plane
of radius \( \$r \) centered at \( (\$a,\$b) \).
\$BR
\$BR
\{ ans_rule(40) \}
\{ AnswerFormatHelp("equation") \}
END_TEXT
Context()->normalStrings;
```

Main Text:

```\$showPartialCorrectAnswers = 1;

ANS( \$answer->cmp() );
```

Answer Evaluation: The answer evaluator used is very sensitive and finicky. We strongly recommended that you read about it at parserImplicitEquation.pl.html

```Context()->texStrings;
BEGIN_SOLUTION
\${PAR}SOLUTION:\${PAR}
Solution explanation goes here.
END_SOLUTION
Context()->normalStrings;

COMMENT("MathObject version.");

ENDDOCUMENT();
```

Solution: