how to find inverse
Show older comments
hi. I have a question. how can I solve this: if f(x)=x^2/1+sqrt x how can i find finvese(2)?
4 Comments
darova
on 16 Oct 2019
What have you tried?
Dimitris Kalogiros
on 16 Oct 2019
Which exactly is your function f(x) ?
Is it the following ?
f(x)=(x^2) / ( 1+sqrt(x) )
And are you trying to solve the equation y=f_inverse(2) ?
Sabri Kenno
on 16 Oct 2019
Moved: John D'Errico
on 8 Dec 2022
Venkata swapna
on 8 Dec 2022
1/invcos(x)*(cos(x)-1) in coding
Answers (2)
Dimitris Kalogiros
on 16 Oct 2019
Edited: Dimitris Kalogiros
on 16 Oct 2019
Generally, you must have in mind that : 

Taking that under consideration you can use the following piece of code
clear; clc;
syms x
% definition of f(x)
f(x)=(x^2) / (1+sqrt(x))
% f(x) is an increasing function of x
fplot(f(x), [0, 3]);
grid on; xlabel('x'); ylabel('f(x)')
% find x0, where f(x0)=2
x0=vpasolve(f(x)==2)
% x0 is the wanted value, since 2=f(x0) <=> finv(2)=x0
% === verification of our solution ===
%find inverse function
finv(x) = finverse(f);
% calculation of finv(2)
x0_verification=vpa(finv(2))
If you don't aim to use symbolic toolbox, you can use simple matlab instructions in order to calculate value x0:
clear; clc;
f=@(x) (x^2)/(1+sqrt(x));
y0=2;
%initial guess for finverse(y0)
x0=0;
%initialization for iterations
yerror=f(x0)-y0;
yerror_previous=yerror;
dx=0.1;
%loop for finding x0
while abs(yerror)>1E-5
% we have cross over y0, step must become less
if yerror*yerror_previous<0
dx=0.1*dx;
end
%store current error for next iteration
yerror_previous=yerror;
%adjust x0
x0=x0-sign(yerror)*dx;
yerror=f(x0)-y0;
end
fprintf(' finverse(2)= x0 = %f \n', x0);
Walter Roberson
on 16 Oct 2019
target_value = 2;
inverse_for_target = fzero(@(x) f(x)-target_value, initial_guess);
Categories
Find more on Programming in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!