The roots for an equation containing tangent

2 views (last 30 days)
Mia Finit
Mia Finit on 4 Oct 2020
Answered: Milind Amga on 8 Oct 2020
I'm going to find the roots of an equation containing tangent. like x*1.4 - atan(0.28*x)=37.5
I dont know how to write the code to find x in above equation.
  1 Comment
James Tursa
James Tursa on 4 Oct 2020
You say "like". Is that your actual equation? Or is your actual equation something else?

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 5 Oct 2020
Assuming it's not your homework, try this:
x = linspace(0, 40, 10000);
y = x*1.4 - atan(0.28*x);
plot(x, y, 'b-', 'LineWidth', 2);
grid on;
yline(37.5, 'LineWidth', 2, 'Color', 'r');
diffs = abs(y - 37.5);
[minDiff, index] = min(diffs)
xCrossing = x(index)
caption = sprintf('y crosses 37.5 at x = %f', xCrossing);
title(caption, 'FontSize', 18);
xlabel('x', 'FontSize', 18);
ylabel('y', 'FontSize', 18);
xline(xCrossing, 'LineWidth', 2, 'Color', 'g');
  4 Comments
Mia Finit
Mia Finit on 6 Oct 2020
Thank you so much for your support. That is not the answer of my question. but if someone wants to help me out, please dont give me the exact answer of that. I asked you that to help me out in order to improve my programming skill. So, please just tell me the way by which Ill be able to code myself.
Thank all of you.

Sign in to comment.

More Answers (3)

Alan Stevens
Alan Stevens on 5 Oct 2020
If x*1.4 - atan(0.28*x)=37.5 is the equation then fixed point iteration will work.
Rewrite the equation as x(n+1) = (37.5+atan(0.28*x(n)))/1.4, use an initial guess for x, say, x(1) = 20, then use a while loop until x(n+1) and x(n) are the same (or within some tolerance).
  3 Comments
Alan Stevens
Alan Stevens on 6 Oct 2020
The following is what I mean:
% Fixed point iteration
% If the equation is 1.4x - atan(0.28x) = 37.5 rearrange it as
% x = (37.5 + atan(0.28x))/1.4
tol = 1^-8; % Set desired tolerance
x = 20; % initial guess
flag = true; % Set to false when converged
while flag
xold = x;
x = (37.5 + atan(0.28*xold))/1.4;
if abs(x-xold)<tol
flag = false;
end
end
disp(x)
However, if you have a different equation in mind, you might have to manipulate it in a few different ways in order to find an arrangement that converges.
An alternative is to look up the Newton-Raphson method.

Sign in to comment.


Bruno Luong
Bruno Luong on 6 Oct 2020
>> fzero(@(x) x*1.4 - atan(0.28*x) - 37.5, 0)
ans =
27.8165
  2 Comments
Image Analyst
Image Analyst on 7 Oct 2020
I did it numerically rather than analytically or by using a function. So it's not exact but as close as you want to get. However there are optimization functions (seems like a lot of them) that may do the trick. I'm not very familiar with them, since I don't have the optimization toolboxes. There is a function fminsearch() you may want to study up on. Or lsqnonneg().

Sign in to comment.


Community Treasure Hunt

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

Start Hunting!