Finding root of nonlinear functions

2 views (last 30 days)
Please, how do I find all the roots this function:
y-0.8193318913*tanh(y)+0.2931044702e-2*tanh(y)/(0.7500000000e-3*y^2-0.1622336517e-1) = 0

Accepted Answer

Torsten
Torsten on 8 Sep 2022
f = @(y)(y-0.8193318913*tanh(y)).*(0.7500000000e-3*y.^2-0.1622336517e-1)+0.2931044702e-2*tanh(y);
fun = @(y)f(y)./(0.7500000000e-3*y.^2-0.1622336517e-1);
y = -6:0.01:6;
plot(y,f(y))
x0 = [-5 -4];
s(1) = fzero(f,x0);
x0 = [-1 1];
s(2) = fzero(f,x0);
x0 = [4 5];
s(3) = fzero(f,x0);
s
s = 1×3
-4.5365 0 4.5365
fun(s)
ans = 1×3
1.0e-14 * 0.4951 0 -0.4951
  1 Comment
Sam Chak
Sam Chak on 8 Sep 2022
👍, Yes, follow this method to find all real roots.

Sign in to comment.

More Answers (1)

Sam Chak
Sam Chak on 8 Sep 2022
Read about fzero().
The solution may look like this:
fun = @(y) y - 0.8193318913*tanh(y) + (0.2931044702e-2)*tanh(y)./(0.7500000000e-3*y.^2 - 0.1622336517e-1);
y0 = 0; % initial guess
y = fzero(fun, y0)
y = 0

Categories

Find more on Optimization in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!