Implemented some form of LM optimization, but it's proper fucked somehow.
This commit is contained in:
11
app/Main.hs
11
app/Main.hs
@@ -12,6 +12,7 @@ import Petzval.Optimization
|
||||
import Petzval.Types
|
||||
import Linear
|
||||
import Numeric.AD.Mode (Scalar, Mode)
|
||||
import qualified Numeric.LinearAlgebra as L
|
||||
|
||||
bk7 = SellemeierMat [ (1.03961212, 6.00069867e-3 )
|
||||
, (0.231792344, 2.00179144e-2 )
|
||||
@@ -56,7 +57,7 @@ merit system = result
|
||||
. rights
|
||||
. map fst
|
||||
. map (raytrace baked . createRay Nothing ep angle)
|
||||
$ spiralPattern 10)
|
||||
$ hexapolarPattern 6)
|
||||
$ [0, 7.07, 15]
|
||||
|
||||
type Id a = a -> a
|
||||
@@ -69,13 +70,17 @@ main =
|
||||
ep = (entrancePupil baked){position=20.4747094540}
|
||||
fa = 20
|
||||
in do
|
||||
print $ L.norm_2 (L.fromList [3.0 , 4.0] :: L.Vector Double)
|
||||
putStrLn $ show ep
|
||||
putStrLn $ show $ rearFocalLength $ lensRTM baked
|
||||
putStrLn $ show $ mconcat (seidel ep fa baked :: [Seidel Double])
|
||||
defaultMain [
|
||||
{- defaultMain [
|
||||
bgroup "merit" [ bench "system1" $ nf merit (system1 :: [Element SellemeierMat Double])
|
||||
, bench "system2" $ nf merit (system2 :: [Element ConstMat Double])
|
||||
]
|
||||
, bgroup "ad" [ bench "system1" $ nf (gradientAt (ix 1.thickness) merit) system1
|
||||
, bgroup "ad" [ bench "system1" $ nf (gradientAt (ix 1.thickness) merit) system1,
|
||||
bench "system2" $ nf (gradientAt (ix 1.thickness) merit) system2
|
||||
|
||||
]
|
||||
]
|
||||
-}
|
||||
|
||||
Reference in New Issue
Block a user