MATLAB: Hello, I want to solve system of non linear equations using fsolve. There are thre equations and two unknowns K and L. looking at the code, please advice how to best do this. Also please advice if this is the best way or there is an alternate optio

non-linear equations

Ld= 0.8194 %constant
% cos^2(K*L)+ Ld*K*sin(K*L)cos(K*L)=2.2 two non linear equations
% cos^2(K*L)=0.299
% Ld*cos^2(K*L)+sin(K*L)cos(K*L)/K=0.262
cos^2(K*L)+ Ld*K*sin(K*L)cos(K*L)-2.2=0
cos^2(K*L)-0.299=0
Ld*cos^2(K*L)+(sin(K*L)cos(K*L))/K-0.262=0
function F=calib(K,L)
F(1)=cos(K*L)^2+ Ld*K*sin(K*L)*cos(K*L)-2.2;
F(2)=cos(K*L)^2-0.299;
F(3)=Ld*cos^2(K*L)+(sin(K*L)cos(K*L))/K-0.262;
fun = @calib (K,L);
initial_val=[2.73,0.6] % initial value of K and L respectively
x = fsolve(fun,initial_val);

Best Answer

You have the correct approach and are close to the correct solution. There are some errors in your code for ‘calib’ that I corrected. (Check to be certain that they do what you want.) I also created it as an anonymous function, for convenience.
The optimization functions all expect a vector of parameters, not separate parameters. I changed ‘fun’ to provide the correct calling convention, without having to change ‘calib’.
This runs:
Ld= 0.8194 %constant
calib = @(K,L) [cos(K*L).^2 + Ld*K*sin(K*L).*cos(K*L)-2.2; cos(K*L).^2-0.299; Ld*cos(K*L).^2 + (sin(K*L).*cos(K*L))/K-0.262];
fun = @(b) calib(b(1),b(2));
initial_val=[2.73, 0.6] % initial value of K and L respectively
[x,fval] = fsolve(fun,initial_val);
You may need to experiment with it to actually solve your equations, since the end values are not near zero.