2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Mathematica. Всё на одном графике. Как?
Сообщение28.02.2012, 10:50 


18/09/09
47
SPb
Есть некая функция и набор точек.
Как всё это разместить на одном графике?
Как несколько функций - знаю.
Как туда ещё точки добавить - не понимаю.
Точки заданы парой координат.

 Профиль  
                  
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение28.02.2012, 15:58 


20/12/11
44
Посмотрите в сторону Show и Inset.

 Профиль  
                  
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение28.02.2012, 23:56 


18/09/09
47
SPb
Меняем вводную.
Есть график, который задан некой функцией.
Нужно на графике отметить определённые точки.
Mesh выдаст всё, а мне надо только в определённых местах.
Т.е. я задаю координату по x'ам, а оно само вычисляет ф-цию и ставит точку на график.
Как?

 Профиль  
                  
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение29.02.2012, 10:25 


20/12/11
44
Код:
Clear[f, points];
f[x_] := x^2;
points[xcoord_List] := Map[{#, f[#]} &, xcoord];
pts = {1, 3, 5, -1};
ListPlot[points[pts]]

или
Код:
Clear[points];
points[xcoord_List] := Map[Point[{#, f[#]}] &, xcoord]
pts = {1, 3, 5, -1, -10, 50};
Plot[f[x], {x, Min[pts], Max[pts]}, Epilog -> points[pts]]

 Профиль  
                  
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение29.02.2012, 14:25 


18/09/09
47
SPb
Второй вариант - это то, что нужно!
Как такое сделать для двух функций на одном графике?
Тут же одна f[x]

-- Ср фев 29, 2012 15:45:40 --

Всё, разобрался.
Ещё странного хочу.
Хочу раскрасить точки и от точек опустить пунктирные линии на ось X.

-- Ср фев 29, 2012 16:12:38 --

И ещё...
Как на оси добавить стрелочки?
Где прописать с каким шагом маркируется оси X и Y?

 Профиль  
                  
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение29.02.2012, 15:55 


18/09/09
47
SPb
Есть некоторая ф-ция.
Код:
f[x] := -5.2*Exp[-0.32*x] + 5*Exp[-x]

Минимум ищу так.
Код:
x/. Last[FindMinimum[f[x], {x, 0, 20}]]

Как его отобразить на графике?
Причём другим цветом.
Я про второй способ отображения точек на графике.

 Профиль  
                  
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение29.02.2012, 17:08 


20/12/11
44
Код:
Clear[f, pts];
f[x_] := -5.2*Exp[-0.32*x] + 5*Exp[-x]
pts = Point[{x, f[x]}] /. Last[FindMinimum[f[x], {x, 0, 20}]];
Plot[f[x], {x, -10, 10},
Epilog -> Style[pts, Red, PointSize[Large]],
(* стрелки на осях *)
AxesStyle -> Arrowheads[Automatic],
(* подписываем оси *)
AxesLabel -> {Style["x", Large], Style["y", Red]},
(* маркируем оси *)
Ticks -> {FindDivisions[{-10, 10}, 4], FindDivisions[{-10, 1000}, 4]}
]

Просто пример. Настроите как вам будет удобно.

 Профиль  
                  
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение01.03.2012, 09:22 


18/09/09
47
SPb
По отдельности всё понятно, но ускользает один момент - как на одном графике совместить.

Вот, код, который раскрашивает экстремум ф-ции на интервале.
Код:
Clear[f, x, pts];
f[x_] := -5.2*Exp[-0.32*x] + 5*Exp[-x]
pts = Point[{x, f[x]}] /. Last[FindMinimum[f[x], {x, 0, 20}]];
Plot[f[x], {x, 0, 20},
Epilog -> {Style[pts, Red, PointSize[Medium]]},
PlotRange -> {{0, 21}, {0.5, -2.2}},
AxesStyle -> Arrowheads[Automatic],
GridLines -> Automatic,
GridLinesStyle -> Directive[Dashed],
AxesLabel -> {Style["t", Medium], Style["z", Medium]}]

Вот, который красит все точки.
Код:
Clear[z, t, points];
z[t_] := -5.2*Exp[-0.32*t] + 5*Exp[-t];
points[tcoord_List] := Map[Point[{#, z[#]}] &, tcoord];
pts = {1, 2, 3, 4, 5, 6, 7, 8,
   t /. Last[FindMinimum[z[t], {t, 0, 20}]]};
Plot[{z[t]}, {t, 0, 20},
AxesLabel -> {Style["t", Medium], Style["z", Medium]},
AxesStyle -> Arrowheads[Automatic],
PlotRange -> All,
GridLines -> Automatic,
GridLinesStyle -> Directive[Dashed],
PlotStyle -> {{Blue}},
Epilog -> {PointSize[Medium], Red, points[pts]}]


Мне нужно покрасить одним цветом экстремум и другим все остальные.
Как это совместить?

 Профиль  
                  
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение01.03.2012, 10:30 


20/12/11
44
Можно разделить точки, которые требуется покрасить разным цветом. Например:
Код:
normalPoints = {PointSize[Medium], Red, pts} /.
   pts -> points[{1, 2, 3, 4, 5, 6, 7, 8, 9}];
extremumPoints = {PointSize[Medium], Green, pts} /.
    pts -> Point[{t, z[t]}] /. Last[FindMinimum[z[t], {t, 0, 20}]];

И написать в
Код:
Plot[..., Epilog -> {normalPoints, extremumPoints}]

 Профиль  
                  
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение01.03.2012, 12:27 


18/09/09
47
SPb
Вот это, практически, всё, что я хотел получить.
Код:
Clear[z, t, pts];
z[t_] := -5.2*Exp[-0.32*t] + 5*Exp[-t]
points[tcoord_List] := Map[Point[{#, z[#]}] &, tcoord];
normalPoints = {PointSize[Medium], Blue, pts} /.
   pts -> points[{0, 0.5, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15}];
extremumPoints = {PointSize[Medium], Red, pts} /.
    pts -> Point[{t, z[t]}] /. Last[FindMinimum[z[t], {t, 0, 20}]];
Plot[z[t], {t, 0, 20},
Epilog -> {normalPoints, extremumPoints},
PlotRange -> {{0, 21}, {0.5, -2.2}},
AxesStyle -> Arrowheads[Automatic],
GridLines -> Automatic,
GridLinesStyle -> Directive[Dashed],
AxesLabel -> {Style["t", Medium], Style["z", Medium]}]


Как бы теперь от normalPoints опустить пунктирные линии на оси?

-- Чт мар 01, 2012 13:33:26 --

Ещё я не понял как менять шаг GridLines.
Нашёл, что можно указывать каждую линию и есть ещё возможность зацепить какую-то функцию, но без примера я не понимаю.
Хочется такую возможность как, извините, в excel - основные линии сетки и промежуточные линии сетки.

 Профиль  
                  
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение01.03.2012, 15:02 


20/12/11
44
Пунктирные линии на оси:
Код:
dash = {Dashed,
  normalPoints[[3]] /.
   Point[{x_, y_}] -> {Line[{{x, 0}, {x, y}}],
     Line[{{0, y}, {x, y}}]}}

Ну и
Код:
Plot[..., Epilog->{normalPoints, extremumPoints, dash}]

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group