MATLAB: How to find the maximum value of a function

derivativefunctionmaximumscalar maximum

The function is:
f=sin(x)+sin(x*2)
and I want to find the scalar maximum and this is my code as of now.
f = sin(x)+sin(x*2);
f2 = diff(f,x)==0;
x = solve(f2,x);
X = max(x);
However this code gives:
acos(- 33^(1/2)/8 – 1/8)
and I want a numerical value because I need to use the scalar maximum for other calculations. If I procede with this code then "acos(- 33^(1/2)/8 – 1/8)" shows in every following calculation. Please let me know how to convert this or use a different code, thanks.

Best Answer

You are chasing the wrong problem.
x = solve(f2,x);
Those are not solutions to when the function f becomes 0: those are the solutions to when the derivative becomes 0. They are the locations of the inflection points, but they are not the values of the functions. You should be using
syms x
f = sin(x)+sin(x*2);
f2 = diff(f,x)==0;
extreme_points = solve(f2,x);
extreme_values = subs(f, x, extreme_points);
[maxX, maxidx] = max(extreme_values);
best_location = extreme_points(maxidx);
best_value = simplify(maxX, 'steps', 50);
best_value =
((3*2^(1/2) + 66^(1/2))*(33^(1/2) + 15)^(1/2))/32
Chances are that you should not be working with numeric values, as the numeric values are only approximations. You might choose to display a numeric value to make it easier for the user to make sense of the result, but you should compute based upon the full result.
To convert to a numeric approximation, double(best_value)
Related Question