Математический пакет Граф

Сообщение №23236 от Moderator 02 января 2008 г. 17:16
Тема: Математический пакет Граф

На форуме в тестовом режиме начал работать математический пакет "Граф", который является математическим и графическим расширением LaTeX. Пока пакет находится в режиме отладки и подключения опций. Пожалуйста, тестируйте и присылайте свои функции, реализованные на C, PHP или PERL. Постепенно я буду выкладывать описания функций пакета, которые в дальнейшем будут объеденены в единый файл помощи.

Итак, начнём с "Hello, World"...

Предположим, нам нужно вычислить sin(5). Пишим sin(5) в окне ввода текста сообщения, выделяем формулу курсором и нажимаем кнопку F(x) из панели инструментов внизу окна ввода. В результате формула sin(5) оказывается заключённой в теги 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

Продолжение следует.


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

Базовые функции пакета Граф (полный список позднее)

Функция Описание Пример
+ Сложение  
- Вычитание  
/ Деление  
* Умножение  
** Возведение в степень (можно также ^) 3**2=9,   3^2 = 9
abs(x) Вычисление абсолютного значения выражения x. abs(-5) = 5
cos(x) Вычисление функции cos, выражение x в радианах. cos(pi) = -1
sin(x) Вычисление функции sin, выражение x в радианах. sin(pi/2) = 1
atan2(x,y)  Вычисление arctg(x/y). atan2(1/1) = 0.785398163397448
exp(x) Вычисление значения экспоненциальной функции x. exp(1) = 2.71828182845905
log(x) Вычисляет натуральный логарифм числа x (по основанию e). log(2.71828182845905) = 1
sqrt(x) Вычисляет квадратный корень числа x. sqrt(9) = 3, sqrt(-1) = i
rand(x) Возвращает случайное дробное число в интервале 0 до значения параметра x. rand(10) =  6.18115656349016
hex(x) Интерпретирует строковое выражение x как шестнадцатиричное число и вычисляет его десятичный эквивалент hex(FF) = 255
oct(x) Интерпретирует строковое выражение x как восьмеричное число и вычисляет его десятичный эквивалент. Если строка начинается с символов "0x", то ее содержимое интерпретируется как шестнадцатиричное число. oct(11) = 9
int(x): Вычисление целой части числа (отбрасывается дробная часть). int(3.1415926535) = 3


Дополнительные функции пакета Граф

Дополнительные функции Пояснения
    tan         tan(z) = sin(z) / cos(z)
    csc, cosec, sec, sec, cot, cotan         csc(z) = 1 / sin(z)
        sec(z) = 1 / cos(z)
        cot(z) = 1 / tan(z)
    asin, acos, atan         asin(z) = -i * log(i*z + sqrt(1-z*z))
        acos(z) = -i * log(z + i*sqrt(1-z*z))
        atan(z) = i/2 * log((i+z) / (i-z))

         asin(1) = 1.5707963267949

    atan2(z1,z2)         atan2(z1,z2) = atan(z1/z2)
    acsc, acosec, asec, acot, acotan         acsc(z) = asin(1 / z)
        asec(z) = acos(1 / z)
        acot(z) = atan(1 / z)
    sinh, cosh, tanh         sinh(z) = 1/2 (exp(z) - exp(-z))
        cosh(z) = 1/2 (exp(z) + exp(-z))
        tanh(z) = sinh(z) / cosh(z)
    csch, cosech, sech, coth, cotanh         csch(z) = 1 / sinh(z)
        sech(z) = 1 / cosh(z)
        coth(z) = 1 / tanh(z)
    asinh, acosh, atanh         asinh(z) = log(z + sqrt(z*z+1))
        acosh(z) = log(z + sqrt(z*z-1))
        atanh(z) = 1/2 * log((1+z) / (1-z))
    acsch, acosech, asech, acoth, acotanh         acsch(z) = asinh(1 / z)
        asech(z) = acosh(1 / z)
        acoth(z) = atanh(1 / z) = 1/2 * log((1+z) / (z-1))
    pi         3.14159265358979
    радианы=deg2rad(градусы)         deg2rad(90) = 1.5707963267949
    градусы=rad2deg(радианы)          rad2deg(pi) = 180
    cbrt, log10, logn(z, n)         cbrt(z) = z ** (1/3)
        log10(z) = log(z) / log(10)
        logn(z, n) = log(z) / log(n)
    ln         ln(exp(1)) = 1
    Re(z), Im(z)         Мнимая и действительная часть
    abs(z), arg(z)         Полярные координаты z (r,j)


Работа с комплексными числами в пакете Граф

Комплексные числа можно записать в полярных и декартовых координатах. В декартовых координатах это a+b·i, а в полярных - r·exp(it). Соответственно из одного вида комплексные числа переводятся в другой операторами z->{d} и z->{p}. Модуль комплексного числа находится как abs(z), а угол как arg(z). Re(z), Im(z) - действительная и мнимая часть z. Ввести комплексное число можно просто как например 3+4i (или cplx(a,b)). В полярных координатах число вводится как cplxe(r,t). Результат в полярных координатах отображается как [r,t] (но вводить его в таком виде нельзя, пользуйтесь  функцией cplxe). И ещё один ньюанс. Если zn = [r,t], то, находя корень кубический из [r,t] угол может определяться неоднозначно. Например корень кубический из [8,p] может быть и [2,p/3], и [2,p], и [2,5p/3]. k-ое значение корня n-ой степени находится через функцию (root(z,n))[k]. cbrt(z) находит только одно решение кубического корня.

Комплексные числа можно складывать, делить, подвергать их действию различных функций:

Пусть z1 = a + bi = r1 * exp(i * t1) и z2 = c + di = r2 * exp(i * t2)
Тогда z1 + z2 = (a + c) + i(b + d)
z1 - z2 = (a - c) + i(b - d)
z1 * z2 = (r1 * r2) * exp(i * (t1 + t2))
z1 / z2 = (r1 / r2) * exp(i * (t1 - t2))
z1 ** z2 = exp(z2 * log z1) ~z = a - bi
abs(z) = r1 = sqrt(a*a + b*b) sqrt(z) = sqrt(r1) * exp(i * t/2)
exp(z) = exp(a) * exp(i * b)
log(z) = log(r1) + i*t
sin(z) = 1/2i (exp(i * z1) - exp(-i * z))
cos(z) = 1/2 (exp(i * z1) + exp(-i * z))

Функция Пояснения
     cplxe(r,t) Ввод комплексного числа в полярных координатах
     cplx(a,b) или a+b*i Ввод комплексного числа в декартовых координатах
     Re(z), Im(z), abs(z), arg(z) Вещественная, мнимая часть комплексного числа, а также его абсолютная величина и угол в полярных координатах
     z->{d},   z->{p} Перевод комплексного числа соответственно в декартовы и полярные координаты
     cbrt(z) Кубический корень из комплексного числа
     (root(z,n))[k] k-ый корень для z = [r,t] задаваемый:
(root(z, n))[k] = r**(1/n) * exp(i * (t + 2*k*pi)/n)
<gra>Код</gra> Результат
a=i
a->{p}
a
[1,pi/2]
a=cplxe(1,pi/2)
a->{d}
a
6.12303176911189e-17 + i
(1+i)(2+i)/(3+i)(4+i) 1.6+3.8i
sqrt(-1) i
abs(3+4i) 5
Re(3+4i) 3
Im(3+4i) 4
arg(1+i) pi/4
a=exp(i*pi/2)
a->{d}
a
6.12303176911189e-17 + i
a=cplxe(1, 2*pi/3)
b=a**3
1 - 2.44921270764475e-16i


Резонанс тока в последовательном колебательном контуре

Резонансная кривая последовательного колебательного контура I(w):

<gra>
xmin=1
L=1; C=0.1; R=1; U=1 %%Параметры контура%%
rL=i*w*L %%Импеданс индуктивности%%
rC= -i/(w*C) %%Импеданс ёмкости%%
I(w)=abs(U/(R+rL+rC)) %%Ток в колебательном контуре%%
</gra>

I=abs(U/(R+rL+rC)); xmin=1, xmax=6.28318530717959
fmin=0.110431526074847, fmax=0.999970724714332


Фазочастотная характеристика последовательного колебательного контура Fi(w):

<gra>
xmin=1
L=1; C=0.1; R=1; U=1
rL=i*w*L
rC= -i/(w*C)
I=U/(R+rL+rC)
a=Im(I); b=Re(I) %%Мнимая и действительная часть тока%%
Fi(w)=atan(a/b) %%Сдвиг по углу между током и напряжением%%
</gra>

Fi=atan(a/b); xmin=1, xmax=6.28318530717959
fmin=-1.36079362306812, fmax=1.460139105621

Корни: 3.16227766016838


Сдвиг между током и напряжением в последовательном колебательном контуре. Т.е. то, что увидим на осциллографе, если на ось X подадим напряжение на контуре, на на ось Y - напряжение на сопротивлении R (которое совпадает по фазе с током в контуре).

<gra>
xmax=1; roots=0; ratio=0
w=2*pi %%w-угловая частота%%
L=1; C=0.1; R=1
U=exp(i*w*t) %%t-время%%
rL=i*w*L
rC= -i/(w*C)
I=U/(R+rL+rC)
XY(t)=cplx(Re(U),Re(I))
</gra>

XY=cplx(Re(U),Re(I)); xmin=0, xmax=1
fmin=(-1 + i*-0.208414333099974), fmax=(1 + i*0.208414333099974)


Графики функций.

Уравнение функции, константы и вспомогательные функции пишутся на отдельных строчках или разделяются символом ; Можно вообще написать типи g(t)=sin(t) и тогда функция будет g, а аргумент - t. Комментарии отделяются символами %%.

Алгоритм таков:
Если в строчке нет знака равенства =, то смотрится есть ли там символ x. Если x есть, то нужно строить график функции, если нет, то вычислить число и показать его. Также смотрятся все остальные строчки, в которых содержится знак равенства. Ecли это типа g(t)=.., то g - функция, t - переменная. Если f=.., то в строчке записана функция. Если это типа с=5, то с - константа, а 5 - её значение. Также проверяется наличие x во всех остальных строчках. Если есть, то нужно строить график функции. В общем легче смотреть на примерах. В любом случае зарезервированы буквы f под функцию, a x под её аргумент (переменную). Как функция, так и её аргумент могут быть вещественными или комплексными. Если значение функции комплексно, то по вертикальной оси откладывается мнимое значение функции, а по горизонтальной - вещественное. При этом x линейно меняется от xmin до xmax. Как xmin, так и xmax могут тоже быть комплексными. Если строится комплексная функция, то левый нижний угол задаётся как комплексное fmin, а верхний правыый угол - комплексное fmax. Если fmin или fmax отсутствует, то они вычисляются автоматически. Есть 2 режима масштабирования комплексной функции ratio=0 или 1. Если ratio=0, то функция растягивается по горизонтали и вертикали до fmin, fmax. Если ratio=1, то масштабы по осям одинаковые и fmin и fmax выбираются автоматически (ввод не действует), чтобы отобразить всю функцию. Если у вас две функции одного переменного и вы хотите нарисовать их в осях X-Y, то выводите как cplx(f1(t),f2(t)) или f1(t)+i*f2(t). Название функций и из аргумента могут быть любыми.

Пример 1:

<gra>xmin=0    %% Минимальное значение аргумента (по умолчанию xmin=0)
xmax=5 %% Максимальное значение аргумента (по умолчанию xmax=2*pi)
fmin=-2 %% Минимальное значение функции (если пусто, то вычисляется)
fmax=10 %% Максимальное значение функции (если пусто, то вычисляется)
points=50 %% Количество точек на кривой (по умолчанию - 100)
width=400 %% Ширина рисунка в пикселях (по умолчанию - 300)
hight=200 %% Высота рисунка в пикселях (по умолчанию - 200)
fbox=0 %% Наличие внешней рамки (по умолчанию - 1, т.е. присутствует)
a=x^4 %% Вспомогательная функция
b=10*x^3 %% Вспомогательная функция
c=35*x^2 %% Вспомогательная функция
d=50*x %% Вспомогательная функция
e=24 %% Вспомогательная функция
a-b+c-d+e %% Уравнение функции</gra>

f=a-b+c-d+e; xmin=0, xmax=5
fmin=-2, fmax=10

Корни: 1; 2; 3; 4

Пример 2 (прислала Ana):

<gra>sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(x)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))</gra>
f=sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(x))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); xmin=0, xmax=6.28318530717959
fmin=-0.214933498715024, fmax=0.214933498715024

Корни: 0; 3.14159265358979; 6.28318530717959

Пример 3:

<gra>fbox=0; width=700; points=500; roots=0
sin(6*sin(5*x))</gra>

f=sin(6*sin(5*x)); xmin=0, xmax=6.28318530717959
fmin=-0.99690813246534, fmax=0.996908132465327

Пример 4:
Затухающие гармонические колебания.

<gra>xmax=4*pi; ratio=1
exp(-0.5*x)*exp(i*x)</gra>

f=exp(-0.5*x)*exp(i*x); xmin=0, xmax=12.5663706143592
fmin=(-0.234424144407471 + i*-0.207821413368276), fmax=(1 + i*0.615128016236704)



f=0.1/(1.0+0.8*cos(x))*exp(i*x); xmin=0, xmax=6.28318530717959
fmin=(-0.5 + i*-0.166612217703079), fmax=(0.0555555555555556 + i*0.166612217703079)

Корни: 1.5707963267949; 4.71238898038469


Можно также строить графики комплексных функций от комплексной переменной. Пусть, например, x меняется от i до 1. Найдём как выглядит функция x^n для нескольких произвольных n. Результат ниже.

f=x; xmin=i, xmax=1
fmin=(-1 + i*-1), fmax=(1 + i*1)

f=x**2; xmin=i, xmax=1
fmin=(-1 + i*-1), fmax=(1 + i*1)

f=x**3; xmin=i, xmax=1
fmin=(-1 + i*-1), fmax=(1 + i*1)

f=x**4; xmin=i, xmax=1
fmin=(-1 + i*-1), fmax=(1 + i*1)

f=x**9; xmin=i, xmax=1
fmin=(-1 + i*-1), fmax=(1 + i*1)

Проверка для f=x^2: x=t+i*(1-t), где t=0..1
f=x^2=(2t-1)+i*2t(1-t)
Re(f)=2t-1; Im(f)=2t(1-t)
Нетрудно видеть, что Im(f)=0.5(1-Re(f)^2) Т.е. если построить эту зависимость в координатах XY, то это будет y=0.5(1-x^2), x=-1..1. Построим эту функцию и видим что получили то же самое, что и для комплексного представления
f=0.5*(1-x**2); xmin=1, xmax=-1
fmin=-1, fmax=1


XY=cplx(a1,a2); xmin=0, xmax=6.28318530717959
fmin=(-1 + i*-0.999960842402021), fmax=(1 + i*0.999960842402021)

XY=cplx(a1,a2); xmin=0, xmax=6.28318530717959
fmin=(-1 + i*-0.999943615781706), fmax=(1 + i*0.999943615781706)


Теперь по точкам можно строить линии и закрашенные фигуры. Массив точек задаётся в столбик через пробел. Начинается с заголовка begin и заканчивается end. Можно строить несколько линий на одном поле. Линия - polyline или пусто. Закрашенная фигура - polygon. Цвет: black, white, red, green, blue, darkblue (по умолчанию). xmin, xmax, fmin, fmax задают рамку. В случае polyline иногда полезно использовать spline=1. В этом случае кривая строится не отрезками линии, а параболами (см. нижний пример).
xmin=-47, xmax=47
fmin=-32, fmax=32

xmin=0, xmax=5
fmin=-5, fmax=5


Амплитудно-модулированные колебания (AM):
f=(1+b*cos(a*t))*cos(w0*t); xmin=0, xmax=314.159265358979
fmin=-1.1984229402629, fmax=1.2

Фазо-модулированные колебания (FM):
f=cos(w0*t+b*sin(a*t)); xmin=0, xmax=314.159265358979
fmin=-1, fmax=1


А как надо поступить, чтобы корни не отображались?

Фазо-модулированные колебания (FM):
f=cos(w0*t+b*sin(a*t)); xmin=0, xmax=314.159265358979
fmin=-1, fmax=1


XY=cplx(a1,a2); xmin=0, xmax=18.8495559215388
fmin=(-0.998026728428274 + i*-1), fmax=(0.998026728428272 + i*1)


> А как надо поступить, чтобы корни не отображались?

roots=0


XY=cplx(a1,a2); xmin=0, xmax=201.061929829747
fmin=(-200.115393548227 + i*-0.999684189283497), fmax=(197.981273545905 + i*1)


Распределение Планка плотности излучения абсолютно чёрного тела в зависимости от частоты. Максимальная частота соответствует 3 мкм.
ro=8*pi*h*nu**3/(c**3*(exp((h*nu)/(k*T))-1)); xmin=1, xmax=62622413561556.5
fmin=7.7843245989949e-45, fmax=2.16380177359225e-18



Распределение Планка плотности излучения абсолютно чёрного тела в зависимости от длины волны в диапазоне от 1 до 30 мкм.
f=(8*pi*h*c/(l**5))*(1/(exp(h*c/(k*T*l))-1)); xmin=1, xmax=30
fmin=7.52073682130108e-99, fmax=0.0422118485930753

На обоих графиках температура изменяется от 60 до 300 К


Ночной кошмарик.
f=a*(sin(2*x))*1/(x)+0.3*(cos(2*x)); xmin=-3.14159265358979, xmax=3.14159265358979
fmin=-0.574449044754396, fmax=2.3


Анимация animated(time,transparent)

XY=cplx(a1,a2); xmin=0, xmax=6.28318530717959
fmin=(-1 + i*-1), fmax=(1 + i*1)


Преобразование сферических координат в декартовы.
<gra>animated(10,0)
roots=0; nmax=10; points=50; width=200
R=1
THETA=pi*n/nmax
PHI=x
(X,Y,Z)=spherical_to_cartesian(R,THETA,PHI)
f=X+Z*i</gra>

f=X+Z*i; xmin=0, xmax=6.28318530717959
fmin=(-0.998026728428272 + i*-1), fmax=(0.998026728428272 + i*1)

Также имеются следующие 3D функции преобразования координат:

    ($rho, $theta, $z)     = cartesian_to_cylindrical($x, $y, $z);
($rho, $theta, $phi) = cartesian_to_spherical($x, $y, $z);
($x, $y, $z) = cylindrical_to_cartesian($rho, $theta, $z);
($rho_s, $theta, $phi) = cylindrical_to_spherical($rho_c, $theta, $z);
($x, $y, $z) = spherical_to_cartesian($rho, $theta, $phi);
($rho_c, $theta, $z) = spherical_to_cylindrical($rho_s, $theta, $phi);


Преобразование сферических координат в декартовы.


f=X+Z*i; xmin=0, xmax=6.28318530717959
fmin=(-0.987461587634931 + i*-0.997048566321683), fmax=(0.999535876403039 + i*1)


Построение прямой y=a+bx методом наименьших квадратов.
xmin=-9.1, xmax=9.9
fmin=-4.7, fmax=14.4
Построение прямой y = a + bx методом наименьших квадратов
a = 4.96 ± 0.13
b = 0.97 ± 0.02
Dx=<x2>-<x>2; Dy=<y2>-<y>2
b=(<xy>-<x><y>)/Dx; a=<y>-b<x>
σb2=(Dy/Dx-b2)/N; σa2= σb2Dx
Выпадающая точка (отклонение более 3σ): (-2.1,4.7)


Несколько разных функций на одном поле.

Основная функция f должна быть без номера, остальные с произвольными числовыми номерами. Если основная функция переопределена как например g(t)=..., то остальные должны быть g1=.., g2=.., g101=.. и т.д. При этом доплнительные функции тоже будут иметь в качестве аргумента переменную t. Корни вычисляются только у основной функции.

<gra>points=50; width=200; roots=0
f=exp(i*x)
f2=0.3*exp(i*x)
f3=sin(2*x)*exp(i*x)
</gra>

f=exp(i*x); xmin=0, xmax=6.28318530717959
fmin=(-1 + i*-0.998026728428272), fmax=(1 + i*0.998026728428272)


Параметры.
Параметр Значение по умолчанию Пояснения
xmin xmin=0 Минимальное значение аргумента. В случае комплексной функции также может быть комплексным.
xmax xmax=2*pi Максимальное значение аргумента. В случае комплексной функции также может быть комплексным.
fmin - Минимальное значение функции. При отсутствии вычисляется. В случае, если функция комплексная, то fmin может также быть комплексной. В этом случае fmin задаёт левый нижний угол графика.
fmax - Максимальное значение функции. При отсутствии вычисляется. В случае, если функция комплексная, то fmax может также быть комплексной. В этом случае fmax задаёт правый верхний угол графика.
points points=100 Количество точек по которым строится каждый график функции. Чем больше points, тем более гладкая кривая. но тем больше времени требуется для её расчёта. Если points велико, то отведённого на сервере лимита времени может не хватить для выполнения скрипта и возникнет ошибка. В этом случае уменьшите количество точек.
fbox fbox=1 Параметр fbox может принимать значение 0 или 1. Если fbox=0, то рамка графика не строится. Если fbox=1, то рамка строится. По умолчанию рамка строится.
spline spline=0 Этот параметр может принимать два значения 0 и 1. Если spline=0, то график строится отрезками прямых. Если spline=1, то график строится параболами. В некоторых случаях это может быть использовано для получения более гладкой кривой при небольшом количестве точек. С другой стороны это увеличивает время расчёта.
ratio ratio=0 Если строится комплексная функция, то она автоматически растягивается до границ отображаемого прямоугольника (ratio=0). В некоторых случаях это может быть неудобным, так как нарушает пропорции между действительной и мнимой частью функции. Например, если мы хотим построить график функции exp(i*x), то ожидаем увидеть окружность, а не эллипс. В этом случае используйте splin=1. Масштаб по обоим осям будет одинаковым, а график растянется автоматически по одному направлению (исходя из пропорций графика и окна отображения).
nmax nmax=1 При построении на одном поле нескольких функций отличающихся одним параметром nmax задаёт максимальное количество графиков на поле. При этом переменная n будет меняться от 0 до nmax-1.
n - Если задано nmax, то переменная n  меняется от 0 до nmax.
roots roots=1 Параметр roots может принимать два значения 0 и 1.  Если roots=0, то корни уравнения f(x)=0 не вычисляются. Если roots=1, то корни вычисляются. По умолчанию корни вычисляются. Если имеется несколько функций, то корни вычисляются у главной (без цифровых индексов).
width width=300 Ширина окна в пикселях.
hight hight=200 Высота окна в пикселях.
animated(time,transparent) animated(0,0) Задаёт построение GIF анимации. Каждый кадр отличается параметром n. Поэтому также необходимо указать nmax. time задаёт время между кадрами анимации в миллисекундах. time=0 задаёт максимальную скорость смены кадров анимации. transparent=1 задаёт прозрачный фон. В этом случае кривые накладываются друг на друга. чтобы получить анимацию параметр animated должен быть установлен в 0.
begin - Начало массива точек.
end - Конец массива точек
polygon - Построение по точкам фигуры с заливкой. Идёт сразу после begin.
polyline включён Построение кривой по точкам фигуры без заливки. Идёт сразу после begin. Используется по умолчанию.
stat - Построение наилучшей прямой методом наименьших квадратов. Идёт сразу после begin.
points включён Если идёт сразу после begin, то помимо кривой (прямой, залитой фигуры) отображаются точки, по которым они были построены.


Разработанный нами математический пакет "Граф" позволяет чрезвычайно просто проводить вычисления и строить графики без инсталляции и скачивания каких-либо программ. Просто наберите формулу в адресной строке и получите результат в броузере. Формула задаётся в конце адреса скрипта 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>. В дальнейшем тексте мы будем их также опускать, хотя для ввода формул через форум они необходимы.

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


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

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