Start working on solving systems of eqns
This commit is contained in:
parent
8a33818790
commit
067f868222
@ -123,6 +123,22 @@ impl Unknowns for Eqns {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for Eqns {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
write!(f, "{{ ");
|
||||||
|
let mut first = true;
|
||||||
|
for eq in &self.0 {
|
||||||
|
if first {
|
||||||
|
first = false;
|
||||||
|
} else {
|
||||||
|
write!(f, " && ")?;
|
||||||
|
}
|
||||||
|
write!(f, "{}", eq)?
|
||||||
|
}
|
||||||
|
write!(f, " }}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@ -155,7 +171,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_solve() {
|
fn test_eqn_solve() {
|
||||||
use Expr::*;
|
use Expr::*;
|
||||||
let _ = env_logger::try_init();
|
let _ = env_logger::try_init();
|
||||||
let u1 = Unknown(1);
|
let u1 = Unknown(1);
|
||||||
@ -232,4 +248,23 @@ mod tests {
|
|||||||
assert!(relative_eq!(const_expr(e.clone()).unwrap(), -9.));
|
assert!(relative_eq!(const_expr(e.clone()).unwrap(), -9.));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_eqns_solve() {
|
||||||
|
use Expr::*;
|
||||||
|
|
||||||
|
let x = Unknown(1);
|
||||||
|
let y = Unknown(2);
|
||||||
|
let t1 = Unknown(3);
|
||||||
|
let t2 = Unknown(4);
|
||||||
|
|
||||||
|
let eqns = Eqns(vec![
|
||||||
|
Eqn::new(x.into(), t1 / 2.),
|
||||||
|
Eqn::new(y.into(), t1 / 2.),
|
||||||
|
Eqn::new(x.into(), Const(1.0) - t2 / 2.),
|
||||||
|
Eqn::new(y.into(), t2 / 2.),
|
||||||
|
]);
|
||||||
|
println!("eqns: {}", eqns);
|
||||||
|
let sol = eqns.solve(&[t1, t2]).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user