Categories
Uncategorized

เรียกใช้ MathNet ใน Mathematica

ที่ต้องระวังคือถ้า methods ใน C# มีการใช้ตัวแปรเป็น Matrix<> หรือ Vector<> เวลาจะส่งผ่านค่า Matrix หรือ Vector จาก Mathematica เข้าไปซึ่งมันเป็น List จะต้องทำการแปลงเป็น Matrix หรือ Vector โดยอาศัย constructors จากตัว MathNet ก่อน

ตัวอย่างเช่น มี Method Neighbors ที่ต้องการ Matrix<double> ตามนี้

เวลาเรียกจาก Mathematica ก็ทำตามนี้ครับ

สังเกตตัวแปร mat ถูกสร้างขึ้นมาจาก คำสั่งนี้ครับ

NETNew["MathNet.Numerics.LinearAlgebra.Double.DenseMatrix", 10, 10, 
RandomReal[1, 100]]

Categories
Mathematica

ปัญหา .NetLink libraries ใน Mathematica

ปัญหามีอยู่ว่าโปรแกรมที่เขียนด้วย C# เพื่อ link กับ Mathematica สำหรับคำนวณอะไรบางอย่างไม่สามารถ compile หรือ Run ใน Visual Studio 2015 ได้ หลังจาก upgrade Mathematica มาเป็น 10.2

พอลองค่อยๆดูแล้วพบว่าไฟล์ ml32?.dll ของMathLink หายไปจาก Windows\System32 นั้นหมายความว่าตั้งแต่มาเป็น version 10 แล้ว Mathlink libs ทั้งหลายไม่ได้ถูกติดตั้งกับ Windows ให้

วิธีแก้ปัญหาก็คือ copy ml32?.dll จาก SystemFiles\Links\MathLink\DeveloperKit\Windows\SystemAdditio​‌​ns ไปไว้ในโฟลเดอร์ของ code C# แล้วลอง compile หรือ run code ใหม่ซึ่งปรากฏว่าแก้ปัญหาที่เกิดขึ้นได้