src/discrete_gradient.rs

changeset 207
032957f8d6de
parent 186
afe04e6b4a5b
equal deleted inserted replaced
206:ce37ff3ce507 207:032957f8d6de
466 let im = DVector::from((0..9).map(|t| t as f64).collect::<Vec<_>>()); 466 let im = DVector::from((0..9).map(|t| t as f64).collect::<Vec<_>>());
467 let v = DVector::from((0..18).map(|t| t as f64).collect::<Vec<_>>()); 467 let v = DVector::from((0..18).map(|t| t as f64).collect::<Vec<_>>());
468 468
469 let grad = Grad::new_for(&im, 1.0, [3, 3], ForwardNeumann).unwrap(); 469 let grad = Grad::new_for(&im, 1.0, [3, 3], ForwardNeumann).unwrap();
470 let a = grad.apply(&im).dot(&v); 470 let a = grad.apply(&im).dot(&v);
471 let b = grad.adjoint().apply(&v).dot(&im); 471 let b = SimplyAdjointable::adjoint(&grad).apply(&v).dot(&im);
472 assert_eq!(a, b); 472 assert_eq!(a, b);
473 473
474 let grad = Grad::new_for(&im, 1.0, [3, 3], ForwardDirichlet).unwrap(); 474 let grad = Grad::new_for(&im, 1.0, [3, 3], ForwardDirichlet).unwrap();
475 let a = grad.apply(&im).dot(&v); 475 let a = grad.apply(&im).dot(&v);
476 let b = grad.adjoint().apply(&v).dot(&im); 476 let b = SimplyAdjointable::adjoint(&grad).apply(&v).dot(&im);
477 assert_eq!(a, b); 477 assert_eq!(a, b);
478 } 478 }
479 } 479 }

mercurial