2014 dxdy logo

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

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




 
 Не работает Symbolic C++
Сообщение13.07.2011, 17:37 
Аватара пользователя
Хотел воспользоваться библиотекой http://issc.uj.ac.za/symbolic/symbolic.html
Ни один пример кода не компилируется. Пробовал Visual C++ 2010 sp1 и Intel C++ 12.0 Update 4

 
 
 
 Re: Не работает Symbolic C++
Сообщение13.07.2011, 18:10 
Конкретнее, плз.
Код, ошибки?

 
 
 
 Re: Не работает Symbolic C++
Сообщение13.07.2011, 23:48 
Аватара пользователя
Была попытка комплировать с помощью MSVS2010sp1 вот это например:
Код:
#include "stdafx.h"
#include "iostream"
#include "symbolicc++.h"

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
   Symbolic x("x");
   cout << integrate(x+1, x);     // => 1/2*x^(2)+x
   Symbolic y("y");
   cout << df(y, x);              // => 0
   cout << df(y[x], x);           // => df(y[x],x)
   cout << df(exp(cos(y[x])), x); // => -sin(y[x])*df(y[x],x)*e^cos(y[x])
   return 0;
}


Результат:

Код:
Предупреждение   1   warning C4800: int: принудительно задано логическое значение "true" или "false" (предупреждение о производительности)   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\equation.h   147
Предупреждение   2   warning C4390: ";": обнаружен пустой контролируемый оператор; это правильно?   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\sum.h   422
Предупреждение   3   warning C4101: se: неиспользованная локальная переменная   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\integrate.h   61
Предупреждение   4   warning C4101: se: неиспользованная локальная переменная   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\integrate.h   71
Предупреждение   5   warning C4101: se: неиспользованная локальная переменная   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\integrate.h   81
Предупреждение   6   warning C4101: se: неиспользованная локальная переменная   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\integrate.h   96
Предупреждение   7   warning C4101: se: неиспользованная локальная переменная   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\integrate.h   115
Предупреждение   8   warning C4101: se: неиспользованная локальная переменная   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\integrate.h   134
Предупреждение   9   warning C4101: se: неиспользованная локальная переменная   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\integrate.h   146
Предупреждение   10   warning C4101: se: неиспользованная локальная переменная   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\integrate.h   156
Предупреждение   11   warning C4101: se: неиспользованная локальная переменная   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\integrate.h   166
Предупреждение   12   warning C4101: se: неиспользованная локальная переменная   c:\program files\microsoft visual studio 10.0\vc\include\symbolic\solve.h   74
Ошибка   13   error C2593: неоднозначный "operator ,"   C:\Program Files\Microsoft Visual Studio 10.0\VC\include\xlocmon   410


-- Ср июл 13, 2011 23:56:11 --

Интеловским компилятором пытался компилировать пример из архива с библиотекой:
Код:
// grass.cpp

#include <iostream>
#include "symbolicc++.h"
using namespace std;

int main(void)
{
   int i,j,n=4;
   Symbolic e("e",n);
   Symbolic y,result;
   Symbolic A("A",n,n);

   // non-commutative e0, e1, e2, ... , en
   e = ~e;

   cout << e << endl;

   A(0,0) = 1; A(0,1) = 2; A(0,2) = 5; A(0,3) = 2;
   A(1,0) = 0; A(1,1) = 1; A(1,2) = 2; A(1,3) = 3;
   A(2,0) = 1; A(2,1) = 0; A(2,2) = 1; A(2,3) = 0;
   A(3,0) = 0; A(3,1) = 3; A(3,2) = 0; A(3,3) = 7;

   result = 1;
   for(i=0;i<n;i++) result *= A.row(i)*e;

   cout << result << endl; cout << endl;

   Equations rules;

   // set e(i)*e(i) to 0
   for(i=0;i<n;i++) rules = (rules,e(i)*e(i) == 0);

   // for all i>j, set e(i)*e(j) to -e(j)*e(i)
   for(i=0;i<n;i++)
      for(j=0;j<i;j++)
         rules = (rules,e(i)*e(j) == -e(j)*e(i));

   result = result.subst_all(rules);
   cout << "result = " << result << endl;
   return 0;
}



Код:
1>------ Построение начато: проект: SymbolicC++1, Конфигурация: Release Win32 ------
1>Построение начато 14.07.2011 0:52:30.
1>InitializeBuildStatus:
1>  Обращение к "Release\SymbolicC++1.unsuccessfulbuild".
1>MessageBuildingWithCompiler:
1>  Building with Intel(R) C++ Compiler XE 12.0
1>ClCompile:
1>  ***** ClCompile (Win32 - Intel C++)
1>  1.cpp
1>Link:
1>  xilink: executing 'link'
1>MSVCRT.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup
1>d:\documents\visual studio 2010\SymbolicC++1\Release\SymbolicC++1.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
1>
1>СБОЙ построения.

 
 
 
 Re: Не работает Symbolic C++
Сообщение13.07.2011, 23:58 
ArtemKim в сообщении #468028 писал(а):
Пробовал Visual C++ 2010 sp1 и Intel C++ 12.0 Update 4
В архиве SymbolicC++3-3.35-vc.zip есть solution (решение? не помню, как по-русски) SymbolicC++3.sln для VS2008. Оно нормально компилируется в VS2008.
А вот если SymbolicC++3.sln открыть в VS2010, то после конвертации оно уже не компилируется.
Ошибка "ambiguous operator ," во второй строке:
Код:
if (_Str[0] < _E0 || _E0 + 9 < _Str[0])
    _Str2 += '-', ++_Off;

Но это - обычное дело при смене версии VS. Нужно пользоваться VS2008 или править код. Например, так:
Код:
if (_Str[0] < _E0 || _E0 + 9 < _Str[0])
   { _Str2 += '-'; ++_Off;}

 
 
 
 Re: Не работает Symbolic C++
Сообщение14.07.2011, 00:31 
Аватара пользователя
с первым - ясно
спасибо
а все остальные - там везде неразрешенный внешний символ _WinMain@16 - а где его искать в файлах не понятно

-- Чт июл 14, 2011 01:24:44 --

в msvs2008 не компилируется «hyperliapunov» из стандартных примеров

Код:
#include <iostream>
#include <cmath>
#include "symbolicc++.h"
using namespace std;

const int N = 10;

Symbolic u("u",N), ut("ut",N);

// The vector field V
template <class T> T V(const T& ss)
{   
  T sum(0);   
  for(int i=0;i<N;i++) sum += ut(i)*df(ss,u(i));   
  return sum;
}

int main(void)
{   
  int i, j;   
  Symbolic t("t"), us("",N);

  Equations values;
  double r1 = 1.0/4.0, r2 = 11.0/5.0, r3 = 1.0/20.0, r4 = 3.0/10.0;

  // hyperchaotic model   
  ut(0) = -u(1) - u(2);   
  ut(1) = u(0) + r1*u(1) + u(3);   
  ut(2) = r2 + u(0)*u(2);   
  ut(3) = r3*u(3) - 0.5*u(2);

  ut(4) = r1*u(4) + u(6) + u(7);
  ut(5) = u(0)*u(5) - u(7);
  ut(6) = r3*u(6) - 0.5*u(5) - u(8) - u(9);
  ut(7) = (r1 + u(0))*u(7) - u(2)*u(4) + u(5) - u(9);
  ut(8) = r4*u(8) + u(6) - 0.5*u(7);
  ut(9) = (u(0) + r3)*u(9) + u(2)*u(6);

  // Taylor series expansion up to order 2   
  for(i=0;i<N;i++)     
  us(i) = u(i) + t*V(u(i)) + 0.5*t*t*V(V(u(i)));   

  // Evolution of the approximate solution   
  // initial values
  values = (u(0) == -19.0, u(1) == 0.0, u(2) == 0.0,
            u(3) ==  15.0, u(4) == 1.0, u(5) == 1.0,
            u(6) ==   1.0, u(7) == 1.0, u(8) == 1.0,
            u(9) ==   1.0, t == 0.01);

  int iter = 20000;
  for(j=0;j<iter;j++)   
  {       
   Equations newvalues;
   newvalues = (newvalues, t == 0.01);

   for(i=0;i<N;i++)
    newvalues = (newvalues, u(i) == us(i)[values]);
   values = newvalues;
  } // end for loop j

  double T = double(rhs(values,t))*iter;
  double lambda =
    log(fabs(double(rhs(values,u(4))))
       +fabs(double(rhs(values,u(5))))
       +fabs(double(rhs(values,u(6))))
       +fabs(double(rhs(values,u(7))))
       +fabs(double(rhs(values,u(8))))
       +fabs(double(rhs(values,u(9)))))/T;
  cout << "lambda = " << lambda << endl;
  return 0;
}


Код:
1>------ Построение начато: проект: HyperLiapunov, Конфигурация: Release Win32 ------
1>Компиляция...
1>HyperLiapunov.cpp
1>Компоновка...
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator+=(class Symbolic &,class Symbolic const &)" (??Y@YA?AVSymbolic@@AAV0@ABV0@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Power::Power(class Symbolic const &,class Symbolic const &)" (??0Power@@QAE@ABVSymbolic@@0@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class std::list<class Equation,class std::allocator<class Equation> > __cdecl operator,(class Equation const &,class Equation const &)" (??Q@YA?AV?$list@VEquation@@V?$allocator@VEquation@@@std@@@std@@ABVEquation@@0@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class std::list<class Equation,class std::allocator<class Equation> > __cdecl operator,(class std::list<class Equation,class std::allocator<class Equation> > const &,class Equation const &)" (??Q@YA?AV?$list@VEquation@@V?$allocator@VEquation@@@std@@@std@@ABV01@ABVEquation@@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Equation __cdecl operator==(class Symbolic const &,class Symbolic const &)" (??8@YA?AVEquation@@ABVSymbolic@@0@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Equation __cdecl operator==(class Symbolic const &,double)" (??8@YA?AVEquation@@ABVSymbolic@@N@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Symbolic::operator double(void)const " (??BSymbolic@@QBENXZ)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: class Symbolic & __thiscall Symbolic::operator()(int)" (??RSymbolic@@QAEAAV0@H@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: class Symbolic __thiscall Symbolic::operator[](class std::list<class Equation,class std::allocator<class Equation> > const &)const " (??ASymbolic@@QBE?AV0@ABV?$list@VEquation@@V?$allocator@VEquation@@@std@@@std@@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: virtual __thiscall Symbolic::~Symbolic(void)" (??1Symbolic@@UAE@XZ)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Symbolic::Symbolic(class Symbolic const &)" (??0Symbolic@@QAE@ABV0@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Symbolic::Symbolic(class CloningSymbolicInterface const &)" (??0Symbolic@@QAE@ABVCloningSymbolicInterface@@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Symbolic::Symbolic(int const &)" (??0Symbolic@@QAE@ABH@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Symbolic::Symbolic(char const *)" (??0Symbolic@@QAE@PBD@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Symbolic::Symbolic(char const *,int)" (??0Symbolic@@QAE@PBDH@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator*(class Symbolic const &,class Symbolic const &)" (??D@YA?AVSymbolic@@ABV0@0@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator*(double const &,class Symbolic const &)" (??D@YA?AVSymbolic@@ABNABV0@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator+(class Symbolic const &,class Symbolic const &)" (??H@YA?AVSymbolic@@ABV0@0@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator+(double const &,class Symbolic const &)" (??H@YA?AVSymbolic@@ABNABV0@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator+(class Symbolic const &,double const &)" (??H@YA?AVSymbolic@@ABV0@ABN@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: class SymbolicProxy & __thiscall SymbolicProxy::operator=(class SymbolicProxy const &)" (??4SymbolicProxy@@QAEAAV0@ABV0@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic & __cdecl rhs(class std::list<class Equation,class std::allocator<class Equation> > &,class Symbolic const &)" (?rhs@@YAAAVSymbolic@@AAV?$list@VEquation@@V?$allocator@VEquation@@@std@@@std@@ABV1@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl df(class Symbolic const &,class Symbolic const &)" (?df@@YA?AVSymbolic@@ABV1@0@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: virtual __thiscall Equation::~Equation(void)" (??1Equation@@UAE@XZ)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Equation::Equation(class Equation const &)" (??0Equation@@QAE@ABV0@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator-(class Symbolic const &)" (??G@YA?AVSymbolic@@ABV0@@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator-(class Symbolic const &,class Symbolic const &)" (??G@YA?AVSymbolic@@ABV0@0@Z)"
1>HyperLiapunov.obj : error LNK2001: неразрешенный внешний символ ""public: virtual __thiscall Symbol::~Symbol(void)" (??1Symbol@@UAE@XZ)"
1>D:\Documents\Visual Studio 2008\HyperLiapunov\Release\HyperLiapunov.exe : fatal error LNK1120: 28 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://d:\Documents\Visual Studio 2008\HyperLiapunov\Release\BuildLog.htm"
1>HyperLiapunov - ошибок 29, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

 
 
 
 Re: Не работает Symbolic C++
Сообщение14.07.2011, 01:33 
Аватара пользователя
Код:
// bose.cpp

#include <iostream>
#include "symbolicc++.h"
using namespace std;

int C(int n, int r)
{
int num = 1, den = 1;
for(int i=n;i>r;i--) num *= i;
for(int j=2;j<=(n-r);j++) den *= j;
return num/den;
}

int main(void)
{
Symbolic b("b"), bd("b'");
b = ~b; bd = ~bd;

for(int m=0; m<5; m++)
{
  int fac = 1, j;
  Symbolic comm = (b^m)*(bd^m)-(bd^m)*(b^m);
  Symbolic res, res2;
  cout << m << ": " << comm << " = "
       << comm.subst_all(b*bd==1+bd*b) << endl;

  for(j=1; j<=m; j++)
  {
   fac *= j;
   res += df(bd^m,bd,j)*df(b^m,b,j)/fac;
   res2 += fac*C(m,j)*C(m,j)*(bd^(m-j))*(b^(m-j));
  }
  cout << "   " << comm << " = " << res << endl;
  cout << "   " << comm << " = " << res2 << endl;
}
return 0;
}


Код:
1>------ Построение начато: проект: Bose, Конфигурация: Release Win32 ------
1>Компиляция...
1>Bose.cpp
1>stdafx.cpp
1>Компоновка...
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator+=(class Symbolic &,class Symbolic const &)" (??Y@YA?AVSymbolic@@AAV0@ABV0@@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Power::Power(class Symbolic const &,class Symbolic const &)" (??0Power@@QAE@ABVSymbolic@@0@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""class Equation __cdecl operator==(class Symbolic const &,class Symbolic const &)" (??8@YA?AVEquation@@ABVSymbolic@@0@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator/(class Symbolic const &,int const &)" (??K@YA?AVSymbolic@@ABV0@ABH@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: class Symbolic __thiscall Symbolic::operator~(void)const " (??SSymbolic@@QBE?AV0@XZ)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: class Symbolic __thiscall Symbolic::subst_all(class Equation const &,int &)const " (?subst_all@Symbolic@@QBE?AV1@ABVEquation@@AAH@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: virtual __thiscall Symbolic::~Symbolic(void)" (??1Symbolic@@UAE@XZ)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Symbolic::Symbolic(void)" (??0Symbolic@@QAE@XZ)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Symbolic::Symbolic(class CloningSymbolicInterface const &)" (??0Symbolic@@QAE@ABVCloningSymbolicInterface@@@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Symbolic::Symbolic(int const &)" (??0Symbolic@@QAE@ABH@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall Symbolic::Symbolic(char const *)" (??0Symbolic@@QAE@PBD@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Symbolic const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVSymbolic@@@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator*(class Symbolic const &,class Symbolic const &)" (??D@YA?AVSymbolic@@ABV0@0@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator*(int const &,class Symbolic const &)" (??D@YA?AVSymbolic@@ABHABV0@@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator+(int const &,class Symbolic const &)" (??H@YA?AVSymbolic@@ABHABV0@@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: class SymbolicProxy & __thiscall SymbolicProxy::operator=(class SymbolicProxy const &)" (??4SymbolicProxy@@QAEAAV0@ABV0@@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator^(class Symbolic const &,int)" (??T@YA?AVSymbolic@@ABV0@H@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl df(class Symbolic const &,class Symbolic const &,unsigned int)" (?df@@YA?AVSymbolic@@ABV1@0I@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: virtual __thiscall Equation::~Equation(void)" (??1Equation@@UAE@XZ)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""class Symbolic __cdecl operator-(class Symbolic const &,class Symbolic const &)" (??G@YA?AVSymbolic@@ABV0@0@Z)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: static int Symbolic::subst_count" (?subst_count@Symbolic@@2HA)"
1>Bose.obj : error LNK2001: неразрешенный внешний символ ""public: virtual __thiscall Symbol::~Symbol(void)" (??1Symbol@@UAE@XZ)"
1>D:\Documents\Visual Studio 2008\Bose\Release\Bose.exe : fatal error LNK1120: 22 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://d:\Documents\Visual Studio 2008\Bose\Release\BuildLog.htm"
1>Bose - ошибок 23, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


-- Чт июл 14, 2011 01:35:06 --

Вобщем... Под какой стандарт и компилятор авторы это писали не пойму

 
 
 
 Re: Не работает Symbolic C++
Сообщение15.07.2011, 20:05 
Аватара пользователя
Вообще авторы молодцы. Можете качать библиотеку и пользоваться бесплатно. А если хотите документацию почитать, то заплатите несколько тысяч рублей :D

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


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