2014 dxdy logo

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

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




 
 Mathematica. Всё на одном графике. Как?
Сообщение28.02.2012, 10:50 
Есть некая функция и набор точек.
Как всё это разместить на одном графике?
Как несколько функций - знаю.
Как туда ещё точки добавить - не понимаю.
Точки заданы парой координат.

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

 
 
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение28.02.2012, 23:56 
Меняем вводную.
Есть график, который задан некой функцией.
Нужно на графике отметить определённые точки.
Mesh выдаст всё, а мне надо только в определённых местах.
Т.е. я задаю координату по x'ам, а оно само вычисляет ф-цию и ставит точку на график.
Как?

 
 
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение29.02.2012, 10:25 
Код:
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 
Второй вариант - это то, что нужно!
Как такое сделать для двух функций на одном графике?
Тут же одна f[x]

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

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

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

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

 
 
 
 Re: Mathematica. Всё на одном графике. Как?
Сообщение29.02.2012, 15:55 
Есть некоторая ф-ция.
Код:
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 
Код:
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 
По отдельности всё понятно, но ускользает один момент - как на одном графике совместить.

Вот, код, который раскрашивает экстремум ф-ции на интервале.
Код:
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 
Можно разделить точки, которые требуется покрасить разным цветом. Например:
Код:
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 
Вот это, практически, всё, что я хотел получить.
Код:
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 
Пунктирные линии на оси:
Код:
dash = {Dashed,
  normalPoints[[3]] /.
   Point[{x_, y_}] -> {Line[{{x, 0}, {x, y}}],
     Line[{{0, y}, {x, y}}]}}

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

 
 
 [ Сообщений: 11 ] 


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