All fixed points of function
古いコメントを表示
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 件のコメント
Rik
2021 年 1 月 21 日
@Murad Khalilov Editing away your question after receiving an answer is extremely rude. Please don't do it again.
Murad Khalilov
2021 年 1 月 21 日
Rik
2021 年 1 月 21 日
What kinds of problems? Please explain your reasons to have this question deleted.
I don't see how this is copyrighted material. So the only way I can see this causing problems is if you used this forum to cheat.
Murad Khalilov
2021 年 1 月 21 日
Rik
2021 年 1 月 21 日
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
2021 年 1 月 21 日
Rik
2021 年 1 月 21 日
If you are not comitting fraud you should not have anything to worry about.
回答 (2 件)
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.
Star Strider
2021 年 1 月 20 日
編集済み: Star Strider
2021 年 1 月 20 日
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 件のコメント
Walter Roberson
2021 年 1 月 20 日
"fixed points" means f(x)=x -- the place where applying the function to a point gives back the same location.
So not the point where f(x) = 0, but rather the point where f(x)-x = 0
Star Strider
2021 年 1 月 21 日
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
2021 年 1 月 21 日
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
2021 年 1 月 21 日
Didn’t pick up on that.
Still, an interesting problem that I’d not considred previously, and enjoyed solving.
カテゴリ
ヘルプ センター および File Exchange で Get Started with MATLAB についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
