In order to solve the following equation((Z1/(ro_l*sqrt(G)))*((1-R).^2)* sqrt(1+0.25*(((ro_l*sqrt(G))/Z1)-(Z1/(ro_l*sqrt(G)))).^2*(sin(k*L)).^2) - 1=0) with respect to the complex variable G I have implemented this simple algorithm: function solveeqs()
options = optimset('MaxFunEvals',1000000,'MaxIter',100000);
ro_s=2700; %insert density of the solid in kg/m3
fcns(1)= (Z1/Z2)*((1-R).^2) sqrt(1+0.25((Z2/Z1)-(Z1/Z2)).^2*(sin(k*L)).^2) - 1;
the result is the following:
Optimizer appears to be converging to a minimum that is not a root: Sum of squares of the function values is > sqrt(options.TolFun). Try again with a new starting point.
-0.0182 - 0.0192i %result at last iteration
-5.2902e+003 +2.1171e+003i % first iteration result with guess value
algorithm: 'trust-region dogleg'
message: [1x169 char] The message error rises because the solution obtained at the last iteration (the 78th) is of the order of magnitude 1 while this algorithm is consistent with a solution of the order of 10^-6. The doubt I have is: do you think this algorithm is consistent? working with complex number in fact I fear that matlab is not able to find a solution closer to the 0. Is there a better way to threat this problem? (any other function or algorithm to threat with complex variable would be really usefull).
No products are associated with this question.
I don't think FSOLVE supports complex-valued functions/variables and am amazed it ran without errors. This recent thread looks closely related
and suggests an alternative.