WeBWorK Main Forum

Evaluate a multi-dimensional formula at a point

by Spyro Roubos -
Number of replies: 2
Hello,

I am doing a vector calculus problem that uses:

$VForm = Formula("(x^2/2) + (y^2/2) + (z^2/2)"); However, I want to evaluate this at two different points (it's used as an antiderivative). Is there a way of essentially doing the following:$Pt1 = Point(1,2,3);
$Pt2 = Point(4,5,6);$Antider = ($VectForm->eval((x,y,z)=>$Pt1)) - ($VectForm->eval((x,y,z)=>$Pt2));
-----------------------------------------------------
If not, how can I get the first, second, and third coordinates from a Point object?

Also, what is the syntax for evaluating a vector field at a point using the vector object?

Thank you,
Spyro Roubos

Re: Evaluate a multi-dimensional formula at a point

by Davide Cervone -
There is no direct way to do this, but there are a couple of approaches to getting the same effect.

The first is to deconstruct the points first, and then use eval:

    ($x1,$y1,$z1) =$Pt1->value;
($x2,$y2,$z2) =$Pt2->value;
$AntiDir =$VectForm->eval(x=>$x2,y=>$y2,z=>$z2) -$VectForm->eval(x=>$x1,y=>$y1,z=>$z1);  It's somewhat awkward, but works. Alternatively, you can create a perl function and pass the coordinates of the point. (Note that the perlFunction's parameters are in alphabetical order unless otherwise specificied.) $vf = $VectForm->perlFunction;$AntiDir = &$vf($Pt2->value) - &$vf($Pt1->value);

Finally, you could make a named function:
    $VectForm->perlFunction('VF');$AntiDir = VF($Pt2->value) - VF($Pt1->value);

Hope one of these works for you.

Davide

Re: Evaluate a multi-dimensional formula at a point

by Davide Cervone -
To get the coordinates of a vector, you can do either
    ($x,$y,$z) =$v->value;

as in the example above, or you can get individual coordinates (by number) as

    $x =$v->extract(1);
$y =$v->extract(2);
$z =$v->extract(3);

Davide