how to solve nonlinear equations using boundary conditions?

Hi all,
I have two sets of equation.
m_c_theta0=(m_c0-1/M+1)*cos(theta0)+j_L0*sin(theta0)+1/M-1;
j_L_theta0=(-m_c0+1/M-1)*sin(theta0)+j_L0*cos(theta0);
j_M0=j_L_theta0-l*theta0;
m_m_theta0=1;
m_c_gama=(m_c_theta0-1/M-1)*cos(gama-theta0)...
+j_L_theta0*sin(gama-theta0)+1/M+1;
j_L_gama=(-m_c_theta0+1/M+1)*sin(gama-theta0) ...
+j_L_theta0*cos(gama-theta0);
j_M_gama=j_L_theta0-l*(gama-theta0);
m_m_gama=-1;
boundary conditions are
[ j_L_gama+x(1); %curernt
m_c_gama+x(2); %voltage
j_M0+j_M_gama;
m_m_theta0+1;
];
where,
l=0.2, F=0.5:0.1:1.5; gama=pi/F;
I need to find the initial,
j_L0=x(1);
m_c0=x(2);
theta0=x(3);
M=x(4);
for above F range and plot(F,M)
I want to do it by using fsolve.
can anyone please help?

8 comentarios

Can anyone please help?
How are those boundary conditions to be interpreted? Is there an implicit "= 0" on each one? So j_L_gama+x(1) = 0, m_c_gama+x(2)=0, and so on? If so then the equation
m_m_theta0=1;
contradicts m_m_theta0+1 = 0
safisay
safisay el 11 de Dic. de 2017
Editada: Walter Roberson el 11 de Dic. de 2017
yes, they are like j_L_gama+x(1) = 0, m_c_gama+x(2)=0.
Sorry, I did not realize that. it should be like this
m_m_theta0=-1;
If I ignore m_m_theta0+1=0 as a boundary condition in favour of the explicitly stated m_m_theta0=1 then I appear to derive two formulas for M from the equations:
M = 10*F*(sin((1/2)*(10*F*j_M_gama-Pi)/F)+sin((1/2)*(10*F*j_M_gama+Pi)/F))/(10*F*(m_c_theta0-1)*sin((1/2)*(10*F*j_M_gama-Pi)/F)+Pi*cos((1/2)*(10*F*j_M_gama-Pi)/F)+10*F*(m_c_theta0+1)*sin((1/2)*(10*F*j_M_gama+Pi)/F)+cos((1/2)*(10*F*j_M_gama+Pi)/F)*Pi)
M = 10*F*(cos((1/2)*(10*F*j_M_gama-Pi)/F)+cos((1/2)*(10*F*j_M_gama+Pi)/F)-2)/(10*F*(m_c_theta0-1)*cos((1/2)*(10*F*j_M_gama-Pi)/F)-Pi*sin((1/2)*(10*F*j_M_gama-Pi)/F)+10*F*(m_c_theta0+1)*cos((1/2)*(10*F*j_M_gama+Pi)/F)-sin((1/2)*(10*F*j_M_gama+Pi)/F)*Pi)
provided that I assume all quantities are real-valued.
At one point an equation seems to fall out that
j_M_gama = 2*j_L_theta0-Pi/(5*F)+j_M_gama
which implies that 2*j_L_theta0 = Pi/(5*F)
If the task is to rewrite all of the equations in terms of j_L0, m_c0, theta0, M and F then I am not sure that is possible, but I have not gone through to rigorously check.
safisay
safisay el 11 de Dic. de 2017
Editada: safisay el 11 de Dic. de 2017
note that: m_m_theta0=-1.
all quantities are real valued. Is it possible to find the solutions numerically using fsolve rather than finding a symbolic equation?
and plot(M vs F)
The value of m_m_theta0 does not matter to the code, as you never use the value.
"Is it possible to find the solutions numerically using fsolve rather than finding a symbolic equation?"
I would need to go back through my steps, but I do not think this can be done without there either being more equations or at least one variable (two, more likely) having been assigned a numeric value. The number of equations effectively usable for solving appears to be less than the number of variables to be solved for.
safisay
safisay el 11 de Dic. de 2017
Editada: safisay el 11 de Dic. de 2017
I have solved the equations for specific F. I have attached the code.
I am just not quite sure how to do that for a range of F.
Can anyone please help?

Iniciar sesión para comentar.

 Respuesta aceptada

options=optimset('Display','on',...
'Algorithm','trust-region-reflective','LargeScale','off','MaxFunEvals',20000);
l=0.4;
Fvals = 0.5:0.1:1.5;
numF = length(Fvals);
j_L0 = zeros(1, numF);
m_c0 = zeros(1, numF);
theta0 = zeros(1, numF);
M = zeros(1,numF);
for F_idx = 1 : numF
F = Fvals(F_idx);
func_CC=@(x)myfun_CC(x,l,F);
x0=[ 1, -1.5, 2 1]; % Make a starting guess at the solution
x = fsolve(func_CC, x0, options); % Call solver
j_L0(F_idx) = x(1);
m_c0(F_idx) = x(2);
theta0(F_idx) = x(3);
M(F_idx) = x(4);
end

Más respuestas (0)

Preguntada:

el 8 de Dic. de 2017

Respondida:

el 11 de Dic. de 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by