حساب eigenvectors في C# باستخدام مكتبة المصفوفة المتقدمة في C#. صافي

StackOverflow https://stackoverflow.com/questions/4400203

سؤال

حسنًا يا شباب ، أنا أستخدم المكتبة التالية: http://www.codeproject.com/kb/recipes/advancedMatrixLibrary.aspx

وأود أن أحسب eigenvectors لبعض المصفوفات التي لدي. لا أعرف كيفية صياغة الكود.

حتى الآن حاولت:

Matrix MatrixName = new Matrix(n, n);
Matrix vector = new Matrix(n, 0);
Matrix values = new Matrix(n, 0);

Matrix.Eigen(MatrixName[n, n], values, vector);

ومع ذلك ، فإنه يقول أن أفضل طريقة تم تحميلها بشكل زائد تحتوي على بعض الوسائط غير صالحة. أعلم أن المكتبة تعمل ولكني لا أعرف كيفية صياغة رمز C# الخاص بي.

أي مساعدة سيكون رائعا!

هل كانت مفيدة؟

المحلول

بالنظر إلى المكتبة ، يبدو توقيع طريقة eigen مثل هذا:

public static void Eigen(Matrix Mat, out Matrix d,out Matrix v)

هناك بعض الأخطاء:

  1. لاحظ ال out الكلمة الرئيسية بجانب المعلمات D و V. تحتاج إلى إضافة الكلمة الرئيسية الخارجية إلى المكالمة إلى Eigen.

  2. يتوقع الرمز مصفوفة كوسيطة أولى ، بينما ترسل عنصرًا. هكذا، MatrixName[n, n] يحتاج إلى التغيير إلى MatrixName.

  3. لا تحتاج إلى إنشاء مثيل للمتجه والقيم المصفوفات ، لأن طريقة EIGEN تقوم بذلك نيابة عنك وستعود القيم في الوسيطتين اللتين ترسلهما بفضل الكلمة الرئيسية الخارجية. شيء واحد يجب ملاحظته أيضًا هو أنك ستتلقى الإخراج على النحو التالي:

    • ستكون القيم مصفوفة [N+1،1

    • ستكون المتجه مصفوفة [n+1 ، n+1

ليس كمصفوفة (ن ، 0) كما تتوقع من الكود الأولي الخاص بك.

سيبدو الرمز هكذا:

Matrix MatrixName = new Matrix(n, n);
Matrix vector;
Matrix values;

Matrix.Eigen(MatrixName, out values, out vector);

نصائح أخرى

يجب أن تبدو الرمز هكذا:

Matrix MatrixName = new Matrix(n, n);
Matrix vector;
Matrix values;

Matrix.Eigen(MatrixName, out values, out vector);

ج# out الكلمة الرئيسية تعني تلك الطريقة Eigen سيتم إنشاء كائن لك ، لذلك يجب ألا تفعل هذا new Matrix(n, 0);

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top