MATLAB Answers

0

I am trying to solve an implicit equation. But it seems that I am having a problem with the fzero function because it keeps showing the output values around 1. The code is given below.

Asked by Harshavardhan K on 15 Jun 2018 at 6:47
Latest activity Answered by Walter Roberson
on 16 Jun 2018 at 6:34
CL = 0:0.5:8;
for i=1:1:17
fcn = @(CR) sind(CL(i)).^2 + sind(CR).^2 - ((0.5)*(sind(2*CL(i)))*(sind(2*CR))) - (2*(sind(CL(i)).^2)*(sind(CR).^2)) - sind(CL(i)-CR).^2;
CR(i) = fzero(fcn,1 );
disp(CR);
end

Iam trying to get a CR value for each value of CL but CR values come out to be always near 1 (which I know is incorrect).

  0 Comments

Sign in to comment.

3 Answers

Answer by Steven Lord
on 15 Jun 2018 at 13:52
 Accepted Answer

When I run your code and store the results in a table array:

CL = 0:0.5:8;
results = table(CL.', zeros(size(CL.')), zeros(size(CL.')), 'VariableNames', {'CL', 'CR', 'solution'});
for i=1:1:17
      fcn = @(CR) sind(CL(i)).^2 + sind(CR).^2 - ((0.5)*(sind(2*CL(i)))*(sind(2*CR))) - (2*(sind(CL(i)).^2)*(sind(CR).^2)) - sind(CL(i)-CR).^2;
      CR(i) = fzero(fcn,1 );
      %disp(CR);
      results{i, 'CL'} = CL(i);
      results{i, 'CR'} = CR(i);
      results{i, 'solution'} = fcn(CL(i));
  end

displaying that table shows that the value of your function for the solution found by fzero is extremely small for each value of CL.

results =
  17×3 table
      CL       CR        solution  
      ___    _______    ___________
        0          1              0
      0.5          1     2.3366e-20
        1    0.97978     -4.124e-20
      1.5    0.97376    -2.6978e-19
        2    0.97172    -3.3119e-19
      2.5       1.04     7.5217e-19
        3    0.97172     8.0976e-19
      3.5     0.9755     8.3687e-19
        4          1     1.0639e-18
      4.5    0.98637    -6.0986e-19
        5    0.97172     -2.575e-19
      5.5    -1.2817    -2.3852e-18
        6    -2.5999    -2.4937e-18
      6.5       0.96    -2.6563e-18
        7    0.99967    -6.2884e-18
      7.5    -6.0998    -2.9273e-18
        8    0.98114    -7.5894e-19

The values of CR found by fzero may not be the solution you expected, but they seem from these results to each be a solution to your equation for the given value of CL.

If we plot one of your functions, I see one reason why you may be confused. I'm using just one of the CL values over which you iterated, so I was able to simplify your function by removing the indexing on CL:

CL = 4;
fcn = @(CR) sind(CL).^2 + sind(CR).^2 - ((0.5)*(sind(2*CL))*(sind(2*CR))) - (2*(sind(CL).^2)*(sind(CR).^2)) - sind(CL-CR).^2;
CR2 = linspace(-3, 3, 1000);
plot(CR2, fcn(CR2))

Look at the Y limits. The maximum value of your function over that interval is about 7e-18. That's pretty small.

  0 Comments

Sign in to comment.


Answer by Walter Roberson
on 16 Jun 2018 at 6:34

Your function is an identity for all real values of CR and CL (I wouldn't want to promise for complex values.) Everything is a solution, and any plot of the function is just plotting numeric noise.

  0 Comments

Sign in to comment.


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today