MATLAB Answers

All fixed points of function

57 views (last 30 days)
Murad Khalilov
Murad Khalilov on 20 Jan 2021
Commented: Rik on 21 Jan 2021
Hello,
how can I find all fixed points of following function: f(x) = cos(x) - 0.07 * x^2. question is so: find all fixed points of this function: f(x)=x.
please, help me, I use roots function but this is not work because I dont know coefficent of cos(x)
Thanks in advance

  7 Comments

Show 4 older comments
Rik
Rik on 21 Jan 2021
If you use the answers here and pass them off as your own work, isn't that fraud? You didn't mention from the start this was homework.
If you mentioned you were using code by someone else, this should not count as fraud. However, if you passed this off as your own work, why would that be anything other than fraud?
I would say you are currently learning a very important lesson.
Murad Khalilov
Murad Khalilov on 21 Jan 2021
I dont use any code from here, because this is only small part of general task, I only want direction from others, but some codes are not useful for me, this is not fraud, but I dont want that my professor see this post, and also I dont need to show anyone's code as mine, this is not gentle behaviour, also it is not needed to continue this conversation, I only want to delete this forum, if it is not possible, okay, keep so
Rik
Rik on 21 Jan 2021
If you are not comitting fraud you should not have anything to worry about.

Sign in to comment.

Answers (2)

Walter Roberson
Walter Roberson on 20 Jan 2021
syms x
f(x) = cos(x) - 0.07 * x^2;
fplot([f(x)-x,0], [-15 15])
Now you can vpasolve() giving a starting point near a value you read from the graph.
You cannot use roots() for this, as it is not a polynomial.

  0 Comments

Sign in to comment.


Star Strider
Star Strider on 20 Jan 2021
Edited: Star Strider on 20 Jan 2021
If by ‘fixed points’ you intend ‘roots’, try this:
f = @(x) cos(x) - 0.07 * x.^2;
tv = linspace(-10, 10);
fv = f(tv);
zvi = find(diff(sign(fv)));
for k = 1:numel(zvi)
idxrng = [max([1 zvi(k)-1]):min([numel(tv) zvi(k)+1])];
indv = tv(idxrng);
depv = fv(idxrng);
B = [indv(:) ones(3,1)] \ depv(:);
zx(k) = B(2)/B(1);
end
figure
plot(tv, fv, '-b')
hold on
plot(zx, zeros(size(zx)), 'xr')
hold off
grid
legend('Function Value','Roots', 'Location','S')
EDIT —
Added plot image:
.

  4 Comments

Show 1 older comment
Star Strider
Star Strider on 21 Jan 2021
It wasn’t immediately obvious to me how to code that. (It’s been a long day!)
Try this:
f = @(x) cos(x) - 0.07 * x.^2;
tv = linspace(-50, 50, 1000);
fv = f(tv);
zvi = find(diff(sign(fv-tv)));
for k = 1:numel(zvi)
idxrng = [max([1 zvi(k)-1]):min([numel(tv) zvi(k)+1])];
indv = tv(idxrng);
depv = fv(idxrng)-indv;
B = [indv(:) ones(numel(idxrng),1)] \ depv(:);
zx(k) = -B(2)/B(1);
end
figure
plot(tv, fv, '-b')
hold on
plot(zx, f(zx), '+r', 'MarkerSize',15)
hold off
grid
xlim([-20 10])
text(zx, f(zx), compose(' \\leftarrow (%.3f, %.3f)',[zx; f(zx)].'), 'VerticalAlignment','middle','HorizontalAlignment','left', 'FontWeight','bold')
legend('Function Value','Fixed Points', 'Location','S')
producing:
.
Walter Roberson
Walter Roberson on 21 Jan 2021
This appears to be a homework question... which is why I chopped out the two exact solutions I was in the middle of posting, and replaced it with a description of strategy instead of complete code.
Star Strider
Star Strider on 21 Jan 2021
Didn’t pick up on that.
Still, an interesting problem that I’d not considred previously, and enjoyed solving.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!