Hi Nicolas,
Thanks so much for your quick reply!
First, there are some supplements:
1) All these three variables passed the checkgradient(). And the block diagonal matrix is a general one, not just 2 blocks.
2) For the 3 figures in my last email,
Variable W is a block diagonal matrix. I use spherecomplexfactory + conjugategradient to obtain the results.
Variable WRF is a block diagonal matrix. I use complexcirclefactory+ conjugategradient to obtain the results.
Variable v is just a vector. I use complexcirclefactory+ conjugategradient to obtain the results.
When you asked if I tried other algorithms, I think it refers to manifold algorithms in the library? So I tested some other algorithms (which need cost function and euclidean gradient) with results shown below:
According to these results, it seems that the algorithm do influence the optimization.
For variable W, the rlbfgs seems to work better than others.
For variable WRF, it seems all of them go down quite slowly.
Do you have any suggestions? For example, should I adjust the tolgradnorm/maxiter/maxtime/minstepsize, etc., instead of using the default values?
3) For the block diagonal matrix, I checked euclideansparsefactory. But I have fixed problem definition. For example, the amplitude of each variable should be 1. So I use complexcirclefactory.
So I am thinking to seperate the block diagonal matrix using iteration/loop to avoid the sparsity. How do you think of that?
Thanks again!
Best regards,
Lu Wang