Skip to main content
added 155 characters in body
Source Link

You are trying to solve an eigenvalue problem by directly finding zeros of the determinant. This has many numerical difficulties, e.g. overflow and small convergence basin. This is the same for standard eigenvalue problems. You need techniques from numerical linear algebra. Your problem is referred to as a nonlinear eigenvalue problem which is an active field of research within numerical linear algebra.

Your problem should be reasonably easy to solve with the Julia package NEP-PACK. (I am a developer of NEP-PACK.) Your code is a bit involved so here is a simplified problem which should be easy generalize:

YouSimilar to your post in mathexchange, you can solve $$ M(\lambda)q=0$$

where $$ M(\lambda)=A_0+A_1\lambda+A_2\sqrt{c+\lambda^2}+A_3\sqrt{d+\lambda^2} $$ as follows:

using NonlinearEigenproblems
A0=randn(10,10);
A1=randn(10,10);
A2=randn(10,10);
A3=randn(10,10); 
c=4; d=6;
f0= S->one(S)
f1= S->S
f2= S->sqrt(c*one(S)+S^2)
f3= S->sqrt(d*one(S)+S^2)
nep=SPMF_NEP([A0,A1,A2,A3],[f0,f1,f2,f3]);

and then solve it with any of the available methods, e.g., quasinewton

(omega,q)=quasinewton(nep,λ=-3.0);

it will give you a solution if the starting guess is sufficiently close to a solution since

norm((A0+A1*f1(omega)+A2*f2(omega)+A3*f3(omega))*q)

will be small. If you use this solution, please cite the package. If it leads to a publication, it would be nice to post a reference to the paper where it is used.

See a similar problem/solution in this tutorial.

You are trying to solve an eigenvalue problem by directly finding zeros of the determinant. This has many numerical difficulties, e.g. overflow and small convergence basin. This is the same for standard eigenvalue problems. You need techniques from numerical linear algebra. Your problem is referred to as a nonlinear eigenvalue problem which is an active field of research within numerical linear algebra.

Your problem should be reasonably easy to solve with the Julia package NEP-PACK. (I am a developer of NEP-PACK.) Your code is a bit involved so here is a simplified problem which should be easy generalize:

You can solve $$ M(\lambda)q=0$$

where $$ M(\lambda)=A_0+A_1\lambda+A_2\sqrt{c+\lambda^2}+A_3\sqrt{d+\lambda^2} $$ as follows:

using NonlinearEigenproblems
A0=randn(10,10);
A1=randn(10,10);
A2=randn(10,10);
A3=randn(10,10); 
c=4; d=6;
f0= S->one(S)
f1= S->S
f2= S->sqrt(c*one(S)+S^2)
f3= S->sqrt(d*one(S)+S^2)
nep=SPMF_NEP([A0,A1,A2,A3],[f0,f1,f2,f3]);

and then solve it with any of the available methods, e.g., quasinewton

(omega,q)=quasinewton(nep,λ=-3.0);

it will give you a solution if the starting guess is sufficiently close to a solution since

norm((A0+A1*f1(omega)+A2*f2(omega)+A3*f3(omega))*q)

will be small. If you use this solution, please cite the package. If it leads to a publication, it would be nice to post a reference to the paper where it is used.

See a similar problem/solution in this tutorial.

You are trying to solve an eigenvalue problem by directly finding zeros of the determinant. This has many numerical difficulties, e.g. overflow and small convergence basin. This is the same for standard eigenvalue problems. You need techniques from numerical linear algebra. Your problem is referred to as a nonlinear eigenvalue problem which is an active field of research within numerical linear algebra.

Your problem should be reasonably easy to solve with the Julia package NEP-PACK. (I am a developer of NEP-PACK.) Your code is a bit involved so here is a simplified problem which should be easy generalize:

Similar to your post in mathexchange, you can solve $$ M(\lambda)q=0$$

where $$ M(\lambda)=A_0+A_1\lambda+A_2\sqrt{c+\lambda^2}+A_3\sqrt{d+\lambda^2} $$ as follows:

using NonlinearEigenproblems
A0=randn(10,10);
A1=randn(10,10);
A2=randn(10,10);
A3=randn(10,10); 
c=4; d=6;
f0= S->one(S)
f1= S->S
f2= S->sqrt(c*one(S)+S^2)
f3= S->sqrt(d*one(S)+S^2)
nep=SPMF_NEP([A0,A1,A2,A3],[f0,f1,f2,f3]);

and then solve it with any of the available methods, e.g., quasinewton

(omega,q)=quasinewton(nep,λ=-3.0);

it will give you a solution if the starting guess is sufficiently close to a solution since

norm((A0+A1*f1(omega)+A2*f2(omega)+A3*f3(omega))*q)

will be small. If you use this solution, please cite the package. If it leads to a publication, it would be nice to post a reference to the paper where it is used.

See a similar problem/solution in this tutorial.

Source Link

You are trying to solve an eigenvalue problem by directly finding zeros of the determinant. This has many numerical difficulties, e.g. overflow and small convergence basin. This is the same for standard eigenvalue problems. You need techniques from numerical linear algebra. Your problem is referred to as a nonlinear eigenvalue problem which is an active field of research within numerical linear algebra.

Your problem should be reasonably easy to solve with the Julia package NEP-PACK. (I am a developer of NEP-PACK.) Your code is a bit involved so here is a simplified problem which should be easy generalize:

You can solve $$ M(\lambda)q=0$$

where $$ M(\lambda)=A_0+A_1\lambda+A_2\sqrt{c+\lambda^2}+A_3\sqrt{d+\lambda^2} $$ as follows:

using NonlinearEigenproblems
A0=randn(10,10);
A1=randn(10,10);
A2=randn(10,10);
A3=randn(10,10); 
c=4; d=6;
f0= S->one(S)
f1= S->S
f2= S->sqrt(c*one(S)+S^2)
f3= S->sqrt(d*one(S)+S^2)
nep=SPMF_NEP([A0,A1,A2,A3],[f0,f1,f2,f3]);

and then solve it with any of the available methods, e.g., quasinewton

(omega,q)=quasinewton(nep,λ=-3.0);

it will give you a solution if the starting guess is sufficiently close to a solution since

norm((A0+A1*f1(omega)+A2*f2(omega)+A3*f3(omega))*q)

will be small. If you use this solution, please cite the package. If it leads to a publication, it would be nice to post a reference to the paper where it is used.

See a similar problem/solution in this tutorial.