MATLAB Answers

## 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

### Harshavardhan K (view profile)

on 15 Jun 2018
Latest activity Answered by Walter Roberson

### Walter Roberson (view profile)

on 16 Jun 2018
Accepted Answer by Steven Lord

### Steven Lord (view profile)

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

### Steven Lord (view profile)

on 15 Jun 2018
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 Harshavardhan K

### Harshavardhan K (view profile)

on 16 Jun 2018

Thanks :)

#### 0 Comments

Sign in to comment. ### Walter Roberson (view profile)

Answer by Walter Roberson

### Walter Roberson (view profile)

on 16 Jun 2018

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.