Borrar filtros
Borrar filtros

fslove Equation with variable coefficients

4 visualizaciones (últimos 30 días)
Saeid
Saeid el 9 de Feb. de 2017
Comentada: Saeid el 9 de Feb. de 2017
Using fsolve, I want to solve a non linear set of equations such as
k*exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2)=0
x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5=0
Whereas k is a set of varying coefficients. I want to solve the set of equations using fsolve for each value of k. I used a normal loop with k(i) inside the function and received an error message. Is there a way to perform this with fsolve?
  1 comentario
Torsten
Torsten el 9 de Feb. de 2017
Please include your code and the exact error message you receive.
Best wishes
Torsten.

Iniciar sesión para comentar.

Respuesta aceptada

John D'Errico
John D'Errico el 9 de Feb. de 2017
Editada: John D'Errico el 9 de Feb. de 2017
Of course you got an error. Solve one problem at a time. Put the loop outside of the call to fsolve.
n = numel(k);
X = zeros(n,2);
x0 = ???
for i = 1:n
fun = @(x) [k(i)*exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2); ...
x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5];
X(i,:) = fsolve(fun,x0);
end
At some point, you might decide to learn how to specify a sparse block diagonal jacobian, in which case you could try to solve multiple problems at a time in one call to fsolve. Walk before you run.
  2 comentarios
Saeid
Saeid el 9 de Feb. de 2017
Hi, I tried it and got this error message:
Error in solve_xyvarcoeff (line 8)
X(i,:) = fsolve(fun,x0);
Caused by:
Failure in initial objective function evaluation. FSOLVE cannot
continue.
Saeid
Saeid el 9 de Feb. de 2017
I guess I found the mistake: x0 should have had the same dimension as that of the X!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Systems of Nonlinear Equations en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by