예제 #1
0
        private MathematicaKernel()
        {
            string path = ConfigurationManager.AppSettings["MathKernelPath"];

            if (string.IsNullOrEmpty(path))
            {
                m_kernel = MathLinkFactory.CreateKernelLink();
            }
            else
            {
                string[] args = new string[] { "-linkmode", "launch", "-linkname", "" };
                args[3]  = "\"" + path + "\"";
                m_kernel = MathLinkFactory.CreateKernelLink(args);
            }


            m_math = new MathKernel(m_kernel);
            m_math.AutoCloseLink   = true;
            m_math.CaptureGraphics = false;
            m_math.CaptureMessages = true;
            m_math.CapturePrint    = false;
            m_math.HandleEvents    = true;
            m_math.Input           = null;
            m_math.LinkArguments   = null;
            m_math.PageWidth       = byte.MaxValue;
            m_math.ResultFormat    = MathKernel.ResultFormatType.OutputForm;
            m_math.UseFrontEnd     = true;
            m_math.Compute("Needs[\"HypothesisTesting`\"];");
        }
예제 #2
0
        /// <summary>
        /// Calculates characteristic values of matrices
        /// (using Wolfram Mathematica).
        /// </summary>
        /// <param name="m"></param>
        /// <returns></returns>
        private Image GetEigenvalues(Matrix m)
        {
            MathKernel mk = new MathKernel();

            mk.ResultFormat = MathKernel.ResultFormatType.StandardForm;
            mk.Compute($"Tally[Round[Eigenvalues[{m.ToWMFormat()}],10^(-10)]]");

            Image image = new Image();

            image.Source = ToBitmapImage((System.Drawing.Bitmap)mk.Result);
            return(image);
        }
예제 #3
0
 public MathResult Execute(string script)
 {
     try
     {
         lock (m_synchronizer)
         {
             m_math.Compute(script);
             ParseResults();
             LogMessages();
         }
         return(m_result);
     }
     catch (Exception e)
     {
         Log.Error("Exception in MathematicaKernel.Execute(): script = \r\n{0}\r\n e = {1}", script, e);
         throw;
     }
 }
예제 #4
0
 private static string ComputeMathCommand(string command, MathKernel kernel)
 {
     kernel.Compute(command);
     return(kernel.Result.ToString());
 }