Математический пакет ГРАФ

Сообщение №23481 от Moderator 14 января 2008 г. 09:08
Тема: Математический пакет ГРАФ

Разработанный нами математический пакет "Граф" позволяет чрезвычайно просто проводить вычисления и строить графики без инсталляции и скачивания каких-либо программ. Просто наберите формулу в адресной строке и получите результат в броузере. Формула задаётся в конце адреса скрипта http://physics.nad.ru/cgi-bin/gra.pl после вопросительного знака. При этом все дополнительные параметры указываются через ";". Например:

   http://physics.nad.ru/cgi-bin/gra.pl?exp((i-0.1)*2*x)

Если набрать эту ссылку в адресной строке (или просто нажать на ссылку выше), то появится окно с графиком функции, который можно сохранить к себе на компьютер как PNG-рисунок. Рисунок имеет прозрачный фон, т.ч. можно накладывать несколько графиков друг на друга.

Если вы хотите вставить этот график на интернет страницу, то это можно сделать, как для обычного рисунка:

<img border="0" src="http://physics.nad.ru/cgi-bin/gra.pl?exp((i-0.1)*2*x)">

Или, предположим, нужно получить значение exp(3)*sin(5)+ln(4). Пишем в адресной строке

 http://physics.nad.ru/cgi-bin/gra.pl?exp(3)*sin(5)+ln(4) 

и получаем ответ в текстовом виде: -17.8742145641675

Если формулы неудобно набирать в адресной строке, то можно написать формулу в окошке ввода текста сообщения форума, выделить формулу курсором и нажимать кнопку F(x) из панели инструментов внизу окна ввода. В результате формула оказывается заключённой в теги gra, которые активируют конвертор. Итак, в окне ввода текста набрана строка:

<gra>sin(5)</gra>

Нажимаем "Просмотр" (всегда перед нажатием "Отправить" стоит посмотреть, как выглядит набранный текст). В результате вышеприведенный код заменяется значением синуса 5.

-0.958924274663138

Теперь вместо sin(5) наберём sin(x) и заключим его в теги gra:

<gra>sin(x)</gra>

Нажимаем "Просмотр" и получаем график функции sin(x), а также корни этой функции на интервале от 0 до 2π, заданных по умолчанию.

f=sin(x); xmin=0, xmax=6.28318530717959
fmin=-0.998026728428272, fmax=0.998026728428272

Корни: 0, 3.14159265358979, 6.28318530717959

Также для удобства ввода формул и просмотра результатов можно использовать http://physics.nad.ru/cgi-bin/graph.pl В появившееся окошко формулы вводятся без тегов <gra>. В дальнейшем тексте мы будем их также опускать, хотя для ввода формул через форум они необходимы.

Ну и наконец можно установить скрипт у себя на компьютере. В этом случае снимается ограничение на время его выполнения и можно работать с очень сложными формулами и графиками.

Постоянный адрес обновляемого описания пакета "ГРАФ" здесь: http://physics.nad.ru/graph.html Это описание можно также вызвать из окна ввода текста сообщений командой

 <gra>help</gra>. 
Пожалуйста, тестируйте и присылайте свои дополнения к этому пакету в виде подпрограмм, написанных на Perl (или также на C или PHP).


Отклики на это сообщение:

Преобразование 3D-координат.

Вращение в декартовых координатах:
(x,y,z)=rotate(x,y,z,φ,θ)
(x,y,z)=x_rotate(x,y,z,φ)
(x,y,z)=y_rotate(x,y,z,φ)
(x,y,z)=z_rotate(x,y,z,φ)

<gra>
nmax=50; animated(10,0)
width=200
xmin=-2; xmax=2
ymin=-2; ymax=2
begin
1 1 1
1 -1 1
-1 -1 1
-1 1 1
1 1 1
1 1 1
1 -1 1
1 -1 -1
1 1 -1
1 1 1
1 1 -1
1 -1 -1
-1 -1 -1
-1 1 -1
1 1 -1
-1 1 -1
-1 -1 -1
-1 -1 1
-1 1 1
-1 1 -1
end
(x,y,z)=rotate(x,y,z,pi/10,pi/10)
(x,y,z)=y_rotate(x,y,z,2*n*pi/50)
</gra>

xmin=-2, xmax=2
fmin=-2, fmax=2


Тоже самое, только вращается сфера.

xmin=-12, xmax=12
fmin=-12, fmax=12

При наличии команды inv между тегами gra не рисует невидимые точки.

xmin=-12, xmax=12
fmin=-12, fmax=12


nmax=1; animated
roots=0
x1=sin(x)
x2=sin(2*x)
x3=sin(3*x)
(x,y,z)=rotate(x1,x2,x3,pi/4,pi/4)
f=x+i*y

f=x+i*y; xmin=0, xmax=6.28318530717959
fmin=(-1.44191939625777 + i*-1.24455991478164), fmax=(1.44191939625777 + i*1.24455991478164)


Эпитрохоида (от греч. на и колесо) — плоская кривая, образуемая точкой, жёстко связанной с окружностью, катящейся по другой окружности.

Описывается параметрическими уравнениями

x = (R + mR)cos(mt) − hcos(t + mt)
y = (R + mR)sin(mt) − hsin(t + mt)

R — радиус неподвижной окружности;
r — радиус катящейся окружности;
h — расстояние от центра катящейся окружности до точки
m = r/R

Если h = r, эпитрохоида образует эпициклоиду. Также при h > r, получаемую фигуру называют удлинённой эпициклоидой, а при h < r укороченной эпициклоидой

Собственные имена получили ещё два варианта эпитрохоиды:

  • r = R (m = 1) — улитка Паскаля
  • h = R + rРоза
Удлиненная эпитрохоида
R=1; r=0.2; h=0.3;
Улитка Паскаля
R=1; r=1; h=1.5
Роза
R=1; r=1/6; h=1+1/6
%% Удлиненная эпитрохоида
roots=0; width=200
fmin=-2-2i
fmax=2+2i
xmax=10*pi
R = 1; r=0.2; m=r/R
h=0.3
x=(R+m*R)*cos(m*t)-h*cos(t+m*t)
y=(R+m*R)*sin(m*t)-h*sin(t+m*t)
XY(t)=x+i*y
%% Улитка Паскаля
roots=0; width=200
fmin=-4-4i
fmax=4+4i
xmax=2*pi
R = 1; r=1; m=r/R
h=1.5
x=(R+m*R)*cos(m*t)-h*cos(t+m*t)
y=(R+m*R)*sin(m*t)-h*sin(t+m*t)
XY(t)=x+i*y
%% Роза
roots=0; width=200
points=200
fmin=-3-3i
fmax=3+3i
xmax=12*pi
R = 1; r=1/6; m=r/R
h=1+1/6
x=(R+m*R)*cos(m*t)-h*cos(t+m*t)
y=(R+m*R)*sin(m*t)-h*sin(t+m*t)
XY(t)=x+i*y
Роза



Удлиненная эпитрохоида
R=1; r=0.2; h=0.1;
Эпициклоида
R=1; r=0.1; h=0.1
 
%% Укороченная эпитрохоида
roots=0; width=200
fmin=-2-2i
fmax=2+2i
xmax=10*pi
R = 1; r=0.2; m=r/R
h=0.1
x=(R+m*R)*cos(m*t)-h*cos(t+m*t)
y=(R+m*R)*sin(m*t)-h*sin(t+m*t)
XY(t)=x+i*y
%% Эпициклоида
roots=0; width=200
fmin=-2-2i
fmax=2+2i
xmax=10*pi
R = 1; r=0.2; m=r/R
h=0.2
x=(R+m*R)*cos(m*t)-h*cos(t+m*t)
y=(R+m*R)*sin(m*t)-h*sin(t+m*t)
XY(t)=x+i*y
 
 


Улитка Паскаля ― плоская алгебраическая кривая 4-го порядка; конхоида окружности относительно точки на окружности, частный случай Декартова овала, она также является эпитрохоидой. Названа по имени Этьена Паскаля (отца Блеза Паскаля), впервые рассмотревшего её.

Уравнение в прямоугольных координатах:
(x2 + y2 - ay)2 = l2(x2+y2)
в полярных координатах:
r = l - a·sin(φ)

Начало координат
 - узловая при a > l.
 - точка возврата при a = l (в этом случае Улитка Паскаля называется кардиоидой).
 - двойная точка, изолированная при a < l

a > l a = l a < l
xmax=4*pi
fmin=-2-3i
fmax=2+i
l=1; a=2
r=l-a*sin(fi)
f(fi)=cplxe(r,fi)
xmax=4*pi
fmin=-2-3i
fmax=2+i
l=1; a=1
r=l-a*sin(fi)
f(fi)=cplxe(r,fi)
xmax=4*pi
fmin=-2-3i
fmax=2+i
l=1; a=0.5
r=l-a*sin(fi)
f(fi)=cplxe(r,fi)



l = 1/25 ... 2    
nmax=50; animated(0,0)
xmax=4*pi
l=1; a=(n+1)/25
r=l-a*sin(fi)
f(fi)=cplxe(r,fi)
   
   


Эпициклоида (от греческих слов на и окружность) — плоская кривая, образуемая точкой окружности, катящейся по другой окружности. Эпициклоида - частный случай Эпитрохоиды, т.к. точка лежит в точности на окружности радиуса r, а не на расстоянии h от её центра, как в случае Эпитрохоиды.

Описывается параметрическими уравнениями

x = (R + mR)cos(mt) - mcos(t + mt)
y = (R + mR)sin(mt) - msin(t + mt)

где m=r/R; R — радиус неподвижной окружности; r — радиус катящейся окружности.

Модуль величины m определяет форму эпициклоиды. На рисунках показаны эпициклоиды при m = 1/10, m = 1/3 и m = 2/3. При m = 1 эпициклоида образует кардиоиду. Кардиоида (от греч. сердце и вид) — плоская линия, которая описывается фиксированной точкой окружности, катящейся по неподвижной окружности с таким же радиусом. Получила своё название из за схожести своих очертаний со стилизованным изображением сердца.

m = 1/10 m = 1/3 m = 2/3
roots=0; width=200
fmin=-1.5-1.5i; fmax=1.5+1.5i
xmax=20*pi
R = 1; m=1/10
x=(R+m*R)*cos(m*t)-m*cos(t+m*t)
y=(R+m*R)*sin(m*t)-m*sin(t+m*t)
XY(t)=x+i*y
roots=0; width=200
fmin=-2-2i; fmax=2+2i
xmax=6*pi
R=1; m=1/3
x=(R+m*R)*cos(m*t)-m*cos(t+m*t)
y=(R+m*R)*sin(m*t)-m*sin(t+m*t)
XY(t)=x+i*y
roots=0; width=200
fmin=-2.5-2.5i; fmax=2.5+2.5i
xmax=6*pi
R=1; m=2/3
x=(R+m*R)*cos(m*t)-m*cos(t+m*t)
y=(R+m*R)*sin(m*t)-m*sin(t+m*t)
XY(t)=x+i*y



Кардиоида (m=1)    
roots=0; width=200
fmin=-3-3i; fmax=3+3i
R=1; m=1
x=(R+m*R)*cos(m*t)-m*cos(t+m*t)
y=(R+m*R)*sin(m*t)-m*sin(t+m*t)
XY(t)=x+i*y
   
   


Гипоциклоида (от греческих слов под и окружность) — плоская кривая, образуемая точкой окружности, катящейся внутри другой окружности без скольжения. Описывается параметрическими уравнениями:

x=(R-mR)·cos(mt) + m·cos(t-mt)
y=(R-mR)·sin(mt) - m·sin(t-mt)

где m=r/R; R — радиус неподвижной окружности; r — радиус катящейся окружности. Модуль величины определяет форму гипоциклоиды. При m=1/4 является астроидой.

Астроида (m = 1/4) m = 1/2.1  
roots=0; width=200
xmax=8*pi
R=1; m=1/4
x=(R-m*R)*cos(m*t)+m*cos(t-m*t)
y=(R-m*R)*sin(m*t)-m*sin(t-m*t)
XY(t)=x+i*y
roots=0; width=200
fmin=-1-i; fmax=1+i
xmax=42*pi
R=1; m=1/2.1
x=(R-m*R)*cos(m*t)+m*cos(t-m*t)
y=(R-m*R)*sin(m*t)-m*sin(t-m*t)
XY(t)=x+i*y
 
 
 


Трохоида (от греч. колесообразный) — плоская трансцендентная кривая, описываемая параметрическими уравнениями:

x = r·t - h·sin(t)
y = r - h
·cos(t)


Представляет собой траекторию точки, жестко связанной с окружностью радиуса r, катящейся без скольжения по прямой (в приведённом примере такой прямой является горизонтальная ось координат). Расстояние точки от центра окружности — h. Также описывает, например, движение заряда q в случае одновременного наличия однородных и постоянных электрического (E) и магнитного (B) полей, перпендикулярных друг другу и первоначальному направлению движения заряда. В этом случае траекторию движения частицы можно представить как сумму двух движений: в направлении, перпендикулярном скрещенным полям, заряд движется с постоянной дрейфовой скоростью, а в плоскости, перпендикулярной магнитному полю, он движется по окружности с циклотронной частотой. Также известно, что например, период колебаний материальной точки, скользящей по перевёрнутой циклоиде не зависит от амплитуды, этот факт используется в точных механических часах. Детали машин, которые совершают одновременно вращательное и поступательное движение, описывают циклоидальные кривые (циклоида, эпициклоида, гипоциклоида, трохоида, астроида).

Если h = r, то трохоида переходит в циклоиду. При h > r трохоиду называют удлинённой циклоидой, а при h < r — укороченной циклоидой.

Трохоида Циклоида  
nmax=5; animated(100,0)
xmax=6*pi
width=400
r = 1; h=(n+1)/3
x=r*t-h*sin(t)
y=r-h*cos(t)
XY(t)=x+i*y
xmax=6*pi
width=400
r = 1
x=r*(t-sin(t))
y=r*(1-cos(t))
XY(t)=x+i*y
 
 


Трансцендентные кривые

Каннабола (cannabola) — интернет-мем, представляющий собой выведенное (по собственным данным) пользователями «Живого Журнала» семейство математических функций, описывающих поведение внешней границы листа конопли. Самая простая каннабола аналитически записывается как r = (1 + sin(φ))(1 + 0.9cos(8φ))(1 + 0.1cos(24φ))

Архимедова спираль — плоская кривая, траектория точки M, которая равномерно движется вдоль луча с началом в O, в то время как сам луч равномерно вращается вокруг O. Другими словами, расстояние ρ пропорционально углу поворота φ луча. Повороту луча на один и тот же угол соответствует одно и то же приращение ρ.Уравнение Архимедовой спирали в полярной системе координат записывается так: ρ = k·φ, где k - смещение точки M по лучу r, при повороте на угол равный одному радиану. Повороту прямой на 2π соответствует смещение a = 2kπ. Число a -называется шагом спирали. Уравнение Архимедовой спирали можно переписать так: ρ = (a/2π)·φ

Гиперболическая спираль — плоская трансцендентная кривая. Уравнение гиперболической спирали в полярной системе координат является обратным для уравнения Архимедовой спирали и записывается так: ρ·φ = k. Параметрическая запись уравнения: x= k·cos(t)/t; y=k·sin(t)/t. При t->0:  x-> ∞; y->k

Логарифмическая спираль или изогональная спираль ― особый вид спирали, часто встречающийся в природе. Логарифмическая спираль была впервые описана Декартом и позже интенсивно исследована Бернулли, который называл её Spira mirabilis ("удивительная спираль"). В полярных координатах кривая может быть записана как  ρ= a·exp(b·φ) либо φ=(1/b)·ln(r/a), что объясняет название "логарифмическая".  В параметрической форме может быть записана как x(t)=a·exp(bt)cos(t); y(t)=a·exp(bt)sin(t). Якоб Бернулли хотел, чтобы на его могиле была выгравирована логарифмическая спираль, но вместо этого по ошибке его на надгробие поместили Архимедову спираль.

Цепная линия — линия, форму которой принимает гибкая однородная, нерастяжимая тяжелая нить или цепь (отсюда название) с закрепленными концами. Является плоской трансцендентной кривой. Уравнение в декартовых координатах: a·(exp(x/a)+exp(-x/a))/2. Цепь подвесного моста имеет массу намного меньшую, чем пролёт. При таких условиях цепь принимает форму параболы, а не цепной линии. Перевёрнутая цепная линия - идеальная форма для арок. Однородная арка в форме перевёрнутой цепной линии испытывает только деформации сжатия, но не излома.

Лемниската Бернулли — кривая, у которой произведение расстояний от каждой её точки до двух заданных точек (фокусов) постоянно и равно квадрату половины расстояния между ними. В прямоугольных координатах: (x2 + y2)2 - 2a2(x2 - y2) = 0, в полярных координатах:
ρ2 = 2a2cos(2φ).  Лемниската по форме напоминает восьмёрку. Название "лемниската" восходит к античному Риму, где так называли бантик, с помощью которого прикрепляли венок к голове победителя на спортивных играх. Эту лемнискату называют в честь швейцарского математика Якоба Бернулли, положившего начало её изучению. Обобщением является многофокусная лемниската.
 

Каннабола Архимедова спираль Гиперболическая спираль
%% Каннабола
points=500; roots=0
fmax=3+4.5i; fmin=-3-i
r = (1 + sin(t))(1 + 0.9*cos(8*t))(1 + 0.1*cos(24*t))
f(t)=cplxe(r,t)
%% Архимедова спираль
roots=0; width=200
fmax=3+3i;
fmin=-3-3i
xmax=6*pi
a=1 %% Шаг спирали
k=a/(2*pi)
r = k*fi
f(fi)=cplxe(r,fi)
%% Гиперболическая спираль
roots=0; width=200
fmax=0.5+i;
fmin=-0.5-0.25i
xmax=8*pi
k=1
r = k/fi
f(fi)=cplxe(r,fi)



Цепная линия Лемниската Бернулли Логарифмическая спираль
%% Цепная линия
xmin=-3; xmax=3
ymin=0; ymax=10
a=1; f=(a/2)*(exp(x/a)+exp(-x/a))
a1=2; f1=(a1/2)*(exp(x/a1)+exp(-x/a1))
a2=0.5; f2=(a2/2)*(exp(x/a2)+exp(-x/a2))
%% Лемниската Бернулли
points=200; roots=1
width=200
fmin=-1.5-i; fmax=1.5+i
xmin=pi/4; xmax=pi/4+2*pi
a=1
r = sqrt(2*a^2*cos(2*fi))
f(fi)=cplxe(r,fi)

 
%% Логарифмическая спираль
roots=0; width=200
fmax=25+25i;
fmin=-25-25i
xmax=10*pi
a=1; b=0.1
r = a*exp(b*fi)
f(fi)=cplxe(r,fi)
 

Трансцендентные кривые


Функции двух переменных.

Суть цветовой схемы следующая. Строится график функции двух переменных f(x,y). Красным отмечены области, где f>0, и синим, где f<0. Чем интенсивнее цвет, тем ближе к нулю. Поэтому граница между синим и красным показывает решение уравнения f(x,y)=0. Зелёным заполняются остальные области (можно убрать, положив bitmap=3).

На рисунке ниже приведён график функции f(x,y) = x² + y² - 1.5 Соответственно красно-синяя граница - решение уравнения x² + y² = 1.5

width=150
height=150
scale=2
f(x,y)=x**2+y**2-1.5

f=x**2+y**2-1.5;
xmin=-1.5, xmax=1.5, ymin=-1.5, ymax=1.5
zmin=-1.5, zmax=3

Из-за ограничений на время выполнения скрипта на этом сервере можно строить лишь небольшие графики. Аналогичный скрипт на http://physics-animations.com позволяет строить графики намного больше.


x² + y² = n


Овалы Кассини.



Забавное мультиплексирование можно наблюдать на экране, если попытаться нарисовать концентрические окружности с достаточно маленьким шагом. Реально должна появиться система концентрических окружностей с центром в (0,0). Фантомные образы возникают из-за дискрета экрана. Реально их нет, но они как-то образуются за счёт того, что элементы изображения могут отображаться только с дискретом экрана. Если попытаться закадрировать одно из фантомных изображений (например xmin=3.5; ymin=3.5), то возникнет абсолютно новая картинка. Интересно, что для f(x,y)=1+cos(100*(abs(x)+abs(y))) такого эффекта не возникает. Можно сформулировать в виде задачи для олимпиады (найти например период фантомных изображений).

bitmap=5; fbox=0
xmin=-.9; xmax=.9
ymin=-.9; ymax=.9
f(x,y)=1+cos(510*(x^2+y^2))

f=1+cos(510*(x**2+y**2));
xmin=-0.9, xmax=0.9, ymin=-0.9, ymax=0.9
zmin=7.84e-07, zmax=2
Processing time: 0.848775 sec.


%% Визиера
xmin=-5; xmax=5; ymin=0
a=1
f=a^3/(x^2+a^2)

f=a**3/(x**2+a**2); xmin=-5, xmax=5
fmin=0 , fmax=1
Processing time: 0.004426 sec.

%% Декартов лист
fmin=-3;fmax=2+2i;xmin=-0.7;xmax=pi/2
f(fi)=[3*cos(fi)*sin(fi)/((cos(fi))^3+(sin(fi))^3),fi]

f=cplxe(3*cos(fi)*sin(fi)/((cos(fi))**3+(sin(fi))**3),fi); xmin=-0.7, xmax=1.57
fmin=(-3 + i*0 ), fmax=( 2 + i*2 )
Корни: 0
Processing time: 0.509775 sec.

%% Жезл
roots=0;ratio=1
xmax=4*pi
f(fi)=[1/sqrt(fi),fi]

f=cplxe(1/sqrt(fi),fi); xmin=0, xmax=12.6
fmin=(-0.571 + i*-0.696 ), fmax=( 2.8 + i*1.55 )
Processing time: 0.52743 sec.

%% Конхоида Никомеда
ymin=-1
f(x,y)=(x^2+y^2)*(y-0.4)^2-y^2

f=(x**2+y**2)*(y-0.4)**2-y**2;
xmin=-1.5, xmax=1.5, ymin=-1, ymax=1.5
zmin=-0.641, zmax=5.37
Processing time: 1.238387 sec.


f(x,y)=x²-y²-a; a=-1..1



f(x,y)=(x²+y²)*(y-a)²-y²; a=-1..1


Физика в анимациях - Купить диск - Тесты по физике - Графики on-line

Реклама:
Rambler's Top100