78 |
78 |
79 /// A simple test on the cube |
79 /// A simple test on the cube |
80 fn simple_cube_test() -> DynError { |
80 fn simple_cube_test() -> DynError { |
81 |
81 |
82 let points = [ |
82 let points = [ |
83 //OnCube::new(F1, Loc([0.5, 0.5])), |
|
84 //OnCube::new(F2, Loc([0.5, 0.5])), |
|
85 //OnCube::new(F4, Loc([0.1, 0.1])), |
|
86 OnCube::new(F1, Loc([0.5, 0.7])), |
83 OnCube::new(F1, Loc([0.5, 0.7])), |
87 OnCube::new(F2, Loc([0.3, 0.5])), |
84 OnCube::new(F2, Loc([0.3, 0.5])), |
88 OnCube::new(F4, Loc([0.9, 0.9])), |
85 OnCube::new(F4, Loc([0.9, 0.9])), |
89 OnCube::new(F6, Loc([0.4, 0.3])), |
86 OnCube::new(F6, Loc([0.4, 0.3])), |
90 OnCube::new(F4, Loc([0.3, 0.7])), |
87 OnCube::new(F4, Loc([0.3, 0.7])), |
94 let origin = OnCube::new(F4, Loc([0.5, 0.5])); |
91 let origin = OnCube::new(F4, Loc([0.5, 0.5])); |
95 |
92 |
96 write_points(format!("{PREFIX}/data"), points.iter())?; |
93 write_points(format!("{PREFIX}/data"), points.iter())?; |
97 write_points(format!("{PREFIX}/origin"), std::iter::once(&origin))?; |
94 write_points(format!("{PREFIX}/origin"), std::iter::once(&origin))?; |
98 |
95 |
99 //let x = points[0].clone(); |
|
100 // OnCube::new(F3, Loc([0.5, 0.5])); goes to opposite side |
|
101 let f = Sum::new(points.into_iter().map(DistToSquaredDiv2)); |
96 let f = Sum::new(points.into_iter().map(DistToSquaredDiv2)); |
102 //let g = ZeroFn::new(); |
97 //let g = ZeroFn::new(); |
103 let g = Scaled::new(0.5, DistTo(origin)); |
98 let g = Scaled::new(0.5, DistTo(origin)); |
104 let τ = 0.05; |
99 let τ = 0.05; |
105 |
100 |
112 run_and_save("x1", &f, &g, OnCube::new(F3, Loc([0.1, 0.7])), τ)?; |
107 run_and_save("x1", &f, &g, OnCube::new(F3, Loc([0.1, 0.7])), τ)?; |
113 run_and_save("x2", &f, &g, OnCube::new(F2, Loc([0.1, 0.7])), τ)?; |
108 run_and_save("x2", &f, &g, OnCube::new(F2, Loc([0.1, 0.7])), τ)?; |
114 run_and_save("x3", &f, &g, OnCube::new(F6, Loc([0.6, 0.2])), τ) |
109 run_and_save("x3", &f, &g, OnCube::new(F6, Loc([0.6, 0.2])), τ) |
115 } |
110 } |
116 |
111 |
|
112 /// Runs [forward_backward] and saves the results. |
117 pub fn run_and_save<F, G>( |
113 pub fn run_and_save<F, G>( |
118 name : &str, |
114 name : &str, |
119 f : &F, |
115 f : &F, |
120 g : &G, |
116 g : &G, |
121 x : OnCube, |
117 x : OnCube, |