Согласно вашему комментарию, вы можете добавить несколько строк в свою существующую функцию для достижения желаемого. Обратите внимание, что, если вы заранее знаете расположение корней, вы можете пропустить эту часть кода. Это прокомментировано, так что это должно быть довольно легко следовать. Скажите, пожалуйста, если я с трассы или есть что-то неясно:
clear
clc
close all
x=linspace(-2,2,400);
%// for i=1:400
%// y(i)=cos(x(i)^2)-5*x(i)*sin(x(i)/2);
%// end
%// Vectorized function
y= cos(x.^2)-5.*x.*sin(x./2);
%// If you already have the roots skip this part
%// ================================================
%// Create function handles to find roots.
fun = @(x) cos(x^2)-5*x*sin(x/2);
x0_1 = -1; %// Initial guesses for finding roots
x0_2 = 1;
a1 = fzero(fun,x0_1);
a2 = fzero(fun,x0_2);
%// ================================================
%// At this point you have the x-values of both roots (a1 and a2) as well
%// as their y-values, corresponding to fun(a1) and fun(a2), respectively).
%// Plot the function
plot(x,y)
hold on
%// Use scatter to mark the actual points on the curve. Highly
%// customizable.
hS1 = scatter(a1,fun(a1),300,'+','MarkerEdgeColor',[0 .5 .5],'MarkerFaceColor',[0 .7 .7]);
hS2 = scatter(a2,fun(a2),300,'+','MarkerEdgeColor',[0 .5 .5],'MarkerFaceColor',[0 .7 .7]);
%// Generate text strings. There are other ways as well, like using
%num2string[...].
TextString1 = sprintf('Root 1 is at (%0.1f,%0.1f)', a1,fun(a1));
TextString2 = sprintf('Root 2 is at (%0.1f,%0.1f)', a2,fun(a2));
%// Place text with those 2 lines at the location you want.
text(a1-1,fun(a1)+1,TextString1)
text(a2+.25,fun(a2)+1,TextString2)
title('2-D line plot for the equation')
xlabel('x')
ylabel('y')
, который выдает что-то вроде этого:
это то, что вы имели в виду?
Вы хотите отметить его текстом в нужном месте? Если это так, вы можете использовать текстовую аннотацию непосредственно внутри своей функции рисования. О, и обратите внимание, что вы можете заменить свою петлю на эту векторизованную форму: y = cos (x.^2) -5. * X. * Sin (x./2); –
Отметьте [этот блог] (http://blogs.mathworks.com/loren/2007/02/08/string-annotations-for-plots/) сообщение для некоторых хороших примеров для размещения текстовых маркеров на графиках – Scott
Вам действительно нужно для вызова другой функции или вы можете просто поместить весь код в розыгрыш? –