Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 График кусочной функции в MATLAB.
Как построить график функции в матлабе( например, для n=3).В фигурных скобках - дробная часть числа. $$    T_{n}:[0,1]\to[0,1]$$
$$T_{n}(x)=\begin{cases}
\left\lbrace nx\right\rbrace,&\text{если $x\ne 1$;}\\
1,&\text{если $x=1$;}\\

\end{cases}$$

Пробовал сам построить, но ничего хорошего не получилось:
Код:
x=0:0.02:1;
y=(3*x-fix(3*x)).*(x~=1) + (1)*(x=1);
plot(x, y),   grid

 Posted automatically
 i  Тема перемещена из форума «Околонаучный софт» в форум «Карантин»
по следующим причинам:

- отсутствуют собственные содержательные попытки решения задачи.

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 Posted automatically
 i  Тема перемещена из форума «Карантин» в форум «Околонаучный софт»

 Re: График кусочной функции в MATLAB.
Создайте матлаб--функцию, или файл - функцию, подайте ей на вход массив х, получите на выходе массив у, далее plot.

 Re: График кусочной функции в MATLAB.
У Вас ошибка в 3 строке, в логическом выражении нужно писать "==" а не "=", т.е. нужно вот так:
(ось x советую продлить до 2, чтобы было видно точку x=1)
Используется синтаксис Matlab M
x=0:0.02:2;
y=(3*x-fix(3*x)).*(x~=1) + (1)*(x==1);
plot(x, y),   grid;
 

 Re: График кусочной функции в MATLAB.
Мне бы хотелось получить такой график, причем с выколотыми и закрашенными точками:

Изображение

а МАТЛАБ мне выдает такое:
Код:
x=0:0.02:2;
y=(3*x-fix(3*x)).*(x~=1) + (1)*(x==1);
plot(x, y),   grid;


Изображение

как решить эту проблему?

 Re: График кусочной функции в MATLAB.
Аватара пользователя
А Матлаб просто так, без доп. усилий вообще умеет рисовать графики с выколотыми и закрашенными точками и без вот этих вертикальных линий? Думаю, здесь нужно как следует постараться.

 Re: График кусочной функции в MATLAB.
К сожалению, не сумел найти хотя бы примера как это реализовать, а у Вас есть идеи?

 Re: График кусочной функции в MATLAB.
Практически все "графикорисовалки" просто соединяют точки линиями, отсюда и результат. То, что Вы хотите, можно сделать, если рисовать каждый участок как отдельный график, а потом также отдельно расставить выделенные точки.

 Re: График кусочной функции в MATLAB.
Запросто, рисуем линию по точкам без их соединения (шаг сетки увеличиваем в 100 раз, чтобы точки слились в сплошные линии),
находим точки разрыва по условию $y_n-y_{n+1}>0.8$ и наносим эти точки поверх предыдущего графика в виде кружочков, ну или как Вам больше нравится, вот рабочий пример:
Используется синтаксис Matlab M
x=0:0.0002:2;
y=(3*x-fix(3*x)).*(x~=1) + (1)*(x==1);
index=find(y(1:end-1)-y(2:end)>0.8);

figure; plot(x, y,'.','markersize',1);
hold on
plot(x(index), y(index),'o','markersize',8,'color','red','markerfacecolor','red'),
plot(x(index+1), y(index+1),'o','markersize',8,'color','red','markerfacecolor','red'),   grid;
hold off
 

 Re: График кусочной функции в MATLAB.
Andrey_Kireew, спасибо.

 Re: График кусочной функции в MATLAB.
Аватара пользователя
Pphantom в сообщении #1268944 писал(а):
Практически все "графикорисовалки" просто соединяют точки линиями, отсюда и результат.
Математика с некоторых пор умеет более красиво, даже на автомате. Есть ещё и опции (Exclusions, ExclusionsStyle), помогающие это контролировать.

 Re: График кусочной функции в MATLAB.
Аватара пользователя
Помнится, достаточно NaN вставить в точку разрыва....

 Re: График кусочной функции в MATLAB.
Matlab R2013b MuPAD Notebook
Вложение:
Matlab2013bPWPlot.png


-- Вс 26.11.2017 02:34:02 --

By default, the attribute DiscontinuitySearch = TRUE is set. This triggers a semi-symbolic preprocessing of the expression f to search for discontinuities and singularities. At each singular point, the function graph is split into disjoint branches to the left and to the right of the singularity. This avoids graphical artifacts such as lines connecting points to the left and to the right of a singularity.


У вас нет доступа для просмотра вложений в этом сообщении.

 оси с разным масштабом в МАТЛАБ
Можно ли добиться того, чтобы график на выходе получился приплюснутым по оси Х, т.е. масштаб осей был разным?
(внизу м-функция для построения графиков дробной части)

Код:
function TTT
n=2;
flag=0;

if flag==1

color=[0 0.5 0.5];
rectangle('Position',[0 0 0.5 1],'FaceColor',...
    color,'EdgeColor',color)
rectangle('Position',[0.75 0 0.25 1],'FaceColor',...
    color,'EdgeColor',color)
end

box on
ax = gca;
ax.DataAspectRatio=[1 1 1];
ax.XTick=[0:0.2:1];
ax.YTick=[0:0.2:1];


xlabel(['Т_' num2str(n) '(x)'])

k=0;
for i=1:n
   
    x1=k;
    x2=1/n+k;
    x=linspace(x1,x2);
    y=linspace(0,1);
   
    hold on
    plot(x,y,'b','LineWidth',1.5) 
   
    plot(x1,0,'.r','MarkerSize',28)
    if i~=n
    plot(x2,1,'og','MarkerSize',8)
    else
    plot(x2,1,'.r','MarkerSize',28)
    end
    k=k+1/n;

end

end

 [ Сообщений: 17 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group