6 views (last 30 days)

Hello,

I need to solve a non-linear equation with an eliptic integral in it. I tried to used fsolve but it don't want to work, any ideas. I copy the code below:

NI = 6.749914199660242e+05;

NI_ol = 1.749914199660242e+05;

Muo = 4*pi*10^-7; % (T*m/A)

a = 0.2073;

y = 0.15;

% Bos_c = Muo*(NI-NI_ol)*(a^2)/((z(1)^2 + a^2)^(1.5));

% m = (4*a*y)/((a+y)^2+z(1)^2);

%

% [K, E]= ellipke(m);

% Be = 2*Muo*NI*a*((2*m)^0.5)*(a*m*E/(2-2*m) + y*K - y*(2-m)*E/(2-2*m))/(2*pi*(2*a*y)^(1.5));

F=@(z) [Muo*(NI-NI_ol)*(a^2)/((z(1)^2 + a^2)^(1.5))...

- 2*Muo*NI*a*((2*m)^0.5)*(a*m*E/(2-2*m) + y*K - y*(2-m)*E/(2-2*m))/(2*pi*(2*a*y)^(1.5));...

m - (4*a*y)/((a+y)^2+z(1)^2);

[K, E]== ellipke(m)];

z_c = [0; 1000];

opts = optimoptions(@fsolve,'Algorithm', 'levenberg-marquardt');

neff = fsolve(F,z_c,opts);

Matt J
on 17 Mar 2020

Edited: Matt J
on 17 Mar 2020

It does not make sense to have a relational expression like,

[K, E]== ellipke(m)

as one of your equations, expecially one that doesn't depend on any of your unknowns, z(i). Also, z(2) is not used anywhere in the system of equations. In other words, you have multiple equations in a single unknown z(1), so the system is not likely to have a solution.

Matt J
on 17 Mar 2020

z_c must be the same length as the number of unknowns that you have. It appears from the rewritten code that you now have 4 unknowns. Therefore, zc must be of length 4.

However, these 2 equations look like they can be eliminated

z(3) - ellipticK(z(2));

z(4) - ellipticE(z(2))];

because once you solve for z(1) and z(2) from the first two equations, the values of z(3) and z(4) follow trivially. If you eliminate z(3) and z(4) from the problem, then you will have 2 unknowns and z_c will have to be of length 2.

Sign in to comment.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.