equivSymbolic

Overview

The equivSymbolic method checks that the value entered by the student is mathematically equivalent to the value that the Author has set in validation, even if they are in different forms.

Use equivSymbolic when working with equations, or other input with variables, where order or form is not important. For example, if the task is to multiply 3 and 2, any response that is mathematically equal to 6 will be considered as correct, such as \(\frac{6}{1}, \frac{12}{2}, 3+3, 6.0\).

equivSymbolic accepts decimals, fractions, variables, and percentage.


  • Allow decimal marks

    Authors can specify what separators can be used by the student. From the Thousand Separator drop down menu you can select dot, comma, and/or space. The Decimal Separator menu contains the option for either a dot or a comma. Note that the specified thousand separator and decimal separator cannot be the same, e.g. both dot.


  • Ignore text

    This refers to LaTeX text only, and when enabled will ignore any LaTeX text the student enters in the response area.


  • Compare sides

    Used when comparing two constant equations, when both sides of an equation have not been fully specified, such as {{response}} + {{response}} = {{response}}. By default, expressions such as this will validate as isTrue. This means that as long as the expression is mathematically correct it will be correct, even if the value(s) entered is different to that specified in the validation area. However, enabling Compare Sides ensures that the response given is symbolically equal to the equation set in the validation area.
    See Example 11 below.


  • Significant decimal places

    This option specifies the number of significant decimal places. Maximum value is 10. See Example 9 below.




Examples

Example 1 - Basic equivSymbolic scoring.

In this example any value that is equal to 100 will be considered as correct.

AnswerMarking
\(100\)true
\(50 + 50\)true
\(\frac{200}{2}\)true
\(2.5 \times 40\)true
\(10000\%\)true
\(100=100\)false
Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "Enter anything that is equal to \\(100\\)",
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "value": "100",
                    "options": {
                        "inverseResult": false
                    }
                }
            ]
        }
    }
}


Example 2 - equivSymbolic fill in the blanks.

In this question the students enter a value in the response box in order to complete the equation. Anything that is equal to 100 must be entered in the response box.

AnswerMarking
\(100\)true
\(50 + 50\)true
\(\frac{200}{2}\)true
\(2.5 \times 40\)true
\(40 + 60=100\)true
Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "Enter anything that is equal to \\(100\\)",
    "template": "{{response}} =100",
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "value": "100=100",
                    "options": {
                        "inverseResult": false
                    }
                }
            ]
        }
    }
}


Example 3 - equivSymbolic fill in the blanks.

This is a similar example, only with two blank spaces that have to be filled in. Two values that are equal to 100 must be entered in the response boxes. Order is not important.

AnswerMarking
\(50 + 50\)true
\(\frac{100}{2} + 50\)true
\(60 + 40\)true
\(40 + 60\)true

Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "Enter anything that is equal to \\(100\\)",
    "template": "{{response}} + {{response}} = 100",
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "value": "100=100",
                    "options": {
                        "inverseResult": false
                    }
                }
            ]
        }
    }
}


Example 4 - equivSymbolic fill in the blanks.

This example has 3 empty boxes. The valid response is set to "\(2 + 2 = 4\)". As neither side of the equation has a set value it is scored as isTrue. Any equation inserted in the response boxes will be correct as long as it represents a mathematically correct equation in the form \(x+y=z\).

AnswerMarking
\(2+2=4\)true
\(\frac{1}{2}+.5 =1\)true
\(50 + 50 = 100\)true
\(3+2=6\)false
\(1\frac{1}{2}+1 = \frac{1}{2}\)false

Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "Enter any format where the left side is equal to the right.",
    "template": "{{response}}+{{response}}={{response}}",
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "options": {
                        "inverseResult": false
                    },
                    "value": "2+2=4"
                }
            ]
        }
    }
}


Example 5 - equivSymbolic with fractions.

equivSymbolic handles responses containing fractions of different types.

AnswerMarking
\(\frac{26}{4}\)true
\(6 + \frac{1}{2}\)true
\(6.5\)true
\(650\%\)true

Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "Enter something symbolically equivalent to \\(\\frac{13}{2}\\)",
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "options": {
                        "inverseResult": false
                    },
                    "value": "\\frac{13}{2}"
                }
            ]
        }
    }
}


Example 6 - equivSymbolic with variables.

equivSymbolic can also be used with variables.

AnswerMarking
\(x\)true
\(x + 0\)true
\((x-2) + 2\)true
\(\frac{2x}{2}\)true
\(y\)false
\( x + 1\)false
Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "<p>Enter anything equal to \\(x\\)<\/p>\n",
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "options": {
                        "inverseResult": false
                    },
                    "value": "x"
                }
            ]
        }
    }
}


Example 7 - equivSymbolic with trigonometry questions.

equivSymbolic recognises trigonometric functions.

AnswerMarking
\(\tan (x)\)true
\(\tan x\)true
\(1\tan (x)\)true
\(\frac{\sin x}{\cos x}\)true
\(\frac{\sin}{\cos}\)false
\(\frac{\cos x}{\sin x}\)false

Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "Enter something symbolically equivalent to \\(\\tan (x)\\).",
    "symbols": [
        "basic",
        "trigonometry"
    ],
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "options": {
                        "inverseResult": false
                    },
                    "value": "\\tan(x)"
                }
            ]
        }
    }
}


Example 8 - equivSymbolic with algebraic expressions.

In the example below an expression in any form that is mathematically equivalent to the one in the stimulus will be correct.

AnswerMarking
\((x + 2)^2\)true
\(x^2 + 4x + 4\)true
\(x(x + 4) + 4\)true
\(x^2 + 8\frac{x+1}{2}\)true
\(x^3 + 4x + 4\)false
\(x^2 +4(x+2)\)false

Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "Enter something symbolically equivalent to \\((x + 2)^2\\).",
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "options": {
                        "inverseResult": false
                    },
                    "value": "\\left(x+2\\right)^2"
                }
            ]
        }
    }
}


Example 9 - Decimal rounding.

The Decimal Places field is used to specify a number of significant decimal places in the response. In this example the Decimal Places value is set to 2. This way the students will not need to enter all the digits after the decimal point for the response to be deemed correct.

AnswerMarking
\(0.33\)true
\(0.33333333\)true
\(\frac{2}{6}\)true
\(33 \%\)true
\(0.3\)false

Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "<p>Enter anything symbolically equivalent to \\(\\frac{1}{3}\\).<\/p>",
    "type": "formulaV2",
    "ui_style": {
        "type": "floating-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "options": {
                        "inverseResult": false,
                        "decimalPlaces": 2
                    },
                    "value": "\\frac{1}{3}"
                }
            ]
        }
    }
}


Example 10 - Using Text Blocks.

You can set custom units such as ft, kg, mi etc. as Text Blocks in the Advanced settings. This way they will not be rendered as LaTeX.

AnswerMarking
\(100ft\)true
\(50 \times 2ft\)true
\(100\)false

Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "Enter anything that is symbolically equivalent to \\(100\\)ft",
    "template": "{{response}}",
    "text_blocks": [
        "ft"
    ],
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "value": "100\\text{ft}",
                    "options": {
                        "inverseResult": false
                    }
                }
            ]
        }
    }
}


Example 11 - Using Compare Sides.

Compare Sides is used with open ended questions. It ensures the equation values entered by the student give the same mathematical result and are symbolically equivalent to the equation set by the author.

AnswerMarking
\(3+4=7\)true
\(4+3=7\)true
\(6+1=7\)true
\(3+2=5\)false

Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "<p>Alex had \\(4\\) apples, Ben gave her \\(3\\) more apples. How many apples has she now?<\/p>\n",
    "template": "{{response}} + {{response}} = {{response}}",
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "options": {
                        "inverseResult": false,
                        "decimalPlaces": 10,
                        "ignoreOrder": false,
                        "compareSides": true
                    },
                    "value": "3+4=7"
                }
            ]
        }
    }
}





Combining Methods

equivSymbolic is a very flexible method and is often used in conjunction with other methods. In this section you will find some worked examples of equivSymbolic combined with different methods, a short explanation of how they work together and a response table for each example to help you better understand the concept.


Example 1 - Excluding possible correct responses.

This is the same question as in Example 8 above, however we do not want the actual expression in the stimulus to be accepted as the correct response. In some cases students might be asked to give a correct response other that the one already specified in the stimulus. Authors can set such exceptions by combinig equivSymbolic with equivLiteral and enabling Inverse Result in the settings of the latter. This way any symbolically equivalent equation will be correct except for the actual valid response specified in question validation.

AnswerMarking
\((2 + x)^2\)true
\(x^2 + 4x + 4\)true
\(x(x + 4) + 4\)true
\(x^2 + 8\frac{x+1}{2}\)true
\((x + 2)^2\)false
\(x^3 + 4x + 4\)false

Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "Enter something symbolically equivalent to \\((x + 2)^2\\).",
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "value": "\\left(x+2\\right)^2",
                    "options": {
                        "inverseResult": false
                    }
                },
                {
                    "method": "equivLiteral",
                    "value": "\\left(x+2\\right)^2",
                    "options": {
                        "ignoreOrder": false,
                        "inverseResult": true
                    }
                }
            ]
        }
    }
}


Example 2 - Excluding possible correct responses.

This is a similar example of combining equivSymbolic with equivLiteral + Inverse Result. Only in this example Ignore Order is also enabled in equivLiteral settings. By adding this option authors can restrict validation further. With Ignore Order enabled swapping order in the expression from the stimulus will not be accepted. Only the response given in different format will be valid.

AnswerMarking
\(x^2 + 4x + 4\)true
\(x(x + 4) + 4\)true
\(x^2 + 8\frac{x+1}{2}\)true
\((x + 2)^2\)false
\((2 + x)^{2}\)false

Source
{
    "feedback_attempts": 0,
    "instant_feedback": true,
    "is_math": true,
    "stimulus": "Enter something symbolically equivalent to \\((x + 2)^2\\).",
    "type": "formulaV2",
    "ui_style": {
        "type": "block-on-focus-keyboard"
    },
    "validation": {
        "scoring_type": "exactMatch",
        "valid_response": {
            "score": 1,
            "value": [
                {
                    "method": "equivSymbolic",
                    "value": "\\left(x+2\\right)^2",
                    "options": {
                        "inverseResult": false
                    }
                },
                {
                    "method": "equivLiteral",
                    "value": "\\left(x+2\\right)^2",
                    "options": {
                        "ignoreOrder": true,
                        "inverseResult": true
                    }
                }
            ]
        }
    }
}