Struct math_functions::F3D

source ·
pub struct F3D(_);
Expand description

Representation of a function with 3 variables

Implementations§

source§

impl F3D

source

pub fn build(input: &str, ctx: &Context<'_>) -> Result<Self, ParsingError>

Builds a F3D from a string and a context (meaning that you can use already created functions)

use math_functions::{F2D,F3D, context::Context};
use std::str::FromStr;

let func = F2D::from_str("yx^2").unwrap();
let mut ctx = Context::new();

ctx.add_f2d("CUSTOM", &func);

let func2 = F3D::build("z(CUSTOM+CUSTOM)", &ctx).unwrap();

assert_eq!(func2, F3D::from_str("z(yx^2+yx^2)").unwrap());
source

pub fn eval(&self, x: f64, y: f64, z: f64) -> f64

Evaluate F3D at a given (x,y,z)

use math_functions::{F3D,approx};
use std::str::FromStr;

let func = F3D::from_str("ysin(x)ln(z)").unwrap();

assert_eq!(approx(func.eval(2., 0.5, 4.), 5), 0.63028);
source

pub fn derivative(&self) -> Vec3<Self>

Computes the gradient of a F3D

use math_functions::{F3D, Vec3};
use std::str::FromStr;

let func = F3D::from_str("xyz^2").unwrap();

assert_eq!(func.derivative(), Vec3{ x: F3D::from_str("yz^2").unwrap(), y:
F3D::from_str("xz^2").unwrap(), z: F3D::from_str("2xyz").unwrap()});
source

pub fn hessian(&self) -> Matrix<F3D>

Computes hessian matrix of the given function

use math_functions::{F3D, Matrix};
use std::str::FromStr;
let func = F3D::from_str("3x^2+y^4+xyz^2").unwrap();
let hessian = func.hessian();
println!("{}", hessian);
//|         6          |        z^2         |        2yz         |
//|        z^2         |       12y^2        |        2xz         |
//|        2yz         |        2xz         |        2xy         |
let result: Matrix<F3D> = Matrix::new(
   vec![
       F3D::from_str("6").unwrap(),
       F3D::from_str("z^2").unwrap(),
       F3D::from_str("2yz").unwrap(),
       F3D::from_str("z^2").unwrap(),
       F3D::from_str("12y^2").unwrap(),
       F3D::from_str("2xz").unwrap(),
       F3D::from_str("2yz").unwrap(),
       F3D::from_str("2xz").unwrap(),
       F3D::from_str("2xy").unwrap(),
   ],
   3,
   3,
);
assert_eq!(result, hessian);
source§

impl F3D

source

pub fn powf(self, exp: f64) -> Self

Raise function to a f64

Trait Implementations§

source§

impl Add<F3D> for F3D

§

type Output = F3D

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self

Performs the + operation. Read more
source§

impl Debug for F3D

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for F3D

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Div<F3D> for F3D

§

type Output = F3D

The resulting type after applying the / operator.
source§

fn div(self, rhs: Self) -> Self

Performs the / operation. Read more
source§

impl FromStr for F3D

§

type Err = ParsingError

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Mul<F3D> for F3D

§

type Output = F3D

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Self) -> Self

Performs the * operation. Read more
source§

impl PartialEq<F3D> for F3D

source§

fn eq(&self, other: &F3D) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Sub<F3D> for F3D

§

type Output = F3D

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self

Performs the - operation. Read more
source§

impl StructuralPartialEq for F3D

Auto Trait Implementations§

§

impl RefUnwindSafe for F3D

§

impl Send for F3D

§

impl Sync for F3D

§

impl Unpin for F3D

§

impl UnwindSafe for F3D

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToString for Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.