Date Редакция Категория sci Теги cas

Giac — свободная система компьютерной алгебры, разработанная в университете им. Жозефа Фурье (г. Гренобль, Франция). Среди других свободных систем Giac выделяется тем, что в нем реализован режим совместимости с Maple (а также MuPAD и несколькими калькуляторами). Это означает, что Giac «понимает» большое число команд Maple и позволяет импортировать рабочие файлы Maple «классического» формата (.mws). Giac позволяет также сохранять результаты работы в виде текстовой записи команд Maple. Более подробно, возможности Giac описаны в книге «Symbolic algebra and Mathematics with Xcas» Renée De Graeve и Bernard Parisse.

Giac реализован в виде библиотеки на С++, что позволяет вызывать его функции их других программ на C++, Python, Java и JavaScript, а также использовать с различными графическими интерфейсами, например, Xcas (реализован на FLTK), qcas (Qt) и wxCAS.

Giac работает под всеми основными платформами, в том числе, под Android и iOS.

Ниже приведена краткая сводка примеров, работающих в Maple и в Giac. Русские комментарии, сделанные в Maple, в Giac не читаются. Поэтому для удобства работы лучше скачать готовый mws-файл, ссылка на который приводится в конце каждого пункта. Его можно как запускать в Maple или импортировать в Giac.

1. Основы

В Giac нет необходимости завершать строку символами ';' или ':' — они используются только для разделения операторов внутри строки. Группа выражений в Giac не может начинаться с комментария (#).

> 1+3-2;                                  # Арифметические операции.
> 1/2+3^2;
> sqrt(100);
> n1:=10;                                 # Присвоение значения.
> n1^-1;                                  # Возведение в степень: n1^-1 = 1/n1
> sin(Pi/3);                              # В Maple - Pi, в Giac - Pi и pi.
> y:=sin(x)+3*x^2;
> diff(y,x);                              # Производная dy/dx.
> x:=1:
  evalf(y);                               # Вычислим y(1).
> y:='y':                                 # Вернемся к исходным значениям y и x.
  x:='x':
> diff(x^3*y^2,x$1,y$2);                  # Вычисление частных производных.
> int(cos(x),x);                          # Неопределенный интеграл. 
> int(1/(1+x^2),x=0..1);                  # Определенный интеграл.
> int(1/x^2,x=1..infinity);               # Несобственный интеграл.
> convert(1/((s+1)*(s+2)),parfrac,s);     # Разложение на простейшие дроби.
> expand(sin(x+y));                       # Раскрываем скобки.
> factor(x^2-y^2);                        # Разложение на множители.
> limit((cos(x)-1)/x,x=0);                # Вычисление предела.
> z1:=3+2*I;                              # Операции с комплексными числами.
  z2:=2-I;
> z3:=z1+z2;
  z4:=z1*z2/z3;
> modz1:=abs(z1);                         # Вычисление модуля комплексного числа.
> evalc(exp(I*z1));                       # Вычисление значения выражения, содержащего
                                          # комплексные числа.
> solve({x+2*y=1,x-y=3},{x,y});           # Решение системы уравнений (результат - формула).
> fsolve(x*cos(x)=0,x=7..9);              # Решение системы уравнений (результат - число).
> S:=sum(i^2,i=1..n);                     # Сумма ряда.
> simplify((sin(3*x)+sin(7*x))/sin(5*x)); # Упрощение выражения

Скачать basics-1.mws

2. Матрицы

> A:=matrix([Скачать matrices-2.mws](1,2],[3,4]]);
> B:=matrix([[1,0],[-1,3]]);
> evalm(B^(-1)); # Вычисление матрицы.
> C:=evalm(A+2*B);
> AB:=evalm(A &* B);
> A1:=matrix([[1,0,4],[0,2,0],[3,1,-3]]);
> with(linalg): # Без пакета linalg следующие далее операции не будут выполняться в Maple,
                # а в Giac - будут. 
> det(A1);      # Вычисление детерминанта.
> eigenvals(A1);# Собственные числа.

Скачать matrices-2.mws

3. Графики

> plot(cos(2*x),x=0..4*Pi);
> plot(x*(x^2-1),x=-3..3,y=-10..10,title="A cubic polynomial");
> plot(tan(x),x=-2*Pi..2*Pi,y=-10..10,
> discont=true); # Мы можем перенести часть оператора на другую строчку
                 # с помощью Shift+Enter - в Maple и в Giac.
> plot({x*cos(x),x-2},x=-5..5);
> with(plots):   # Следующие далее графики не будут построены в Maple без подключения
                 # пакета plots 
> implicitplot(y^2+y=x^3-x,x=-2..3,y=-3..3);
> animate(sin(x*t),x=-4*Pi..4*Pi,t=0..1, color=red); # 2-D animation.
> plot3d(sin(x)*exp(-y),x=0..Pi,y=0..3,axes=boxed);

Скачать plots-3.mws

4. Дифференциальные уравнения

> dsolve(diff(y(x),x)=x,y(x));
> dsolve({diff(v(t),t)+2*t=0,v(1)=5},v(t));             # Неизвестная функция: v(t).
> dsolve(diff(x(t),t$2)+8*diff(x(t),t)+25*x(t)=0,x(t)); # Уравнение 2-го порядка.

Скачать ode-4.mws

5. Простейшие программы

> norm3d:=proc(a,b,c)     # Процедура.
>   sqrt(a^2+b^2+c^2);
> end:
> norm3d(3,4,5);

> total:=0:               # Оператор цикла for.
> for i from 0 to 100 do
> total:=i+total:
> od:
> total;

> p:=4:                   # Условный оператор.
> if p<2 then print("p is less than 2"):
> elif p>=2 then print("p is not less than 2"):
> fi:

> imax:=14:               # Числа Фибоначчи.
> F:=[seq(0,i=1..imax)]:
> F[1]:=0:
> F[2]:=1:
> for i from 3 to imax do
>   F[i]:=F[i-1]+F[i-2]:
> od:
> seq(F[i],i=1..imax);

Скачать programs-5.mws



Комментарии

comments powered by Disqus