بطريقة ما كنت بحاجة إلى مكتبة في c # ، والتي يمكنها القيام بالحسابات الرمزية (من وقت لآخر أكمل إمكانيات برنامج رياضي واحد). يمكن العثور على أي كود مصدر على الشبكة بلغات مختلفة ، ولكن لم يكن من الممكن العثور على شيء أكثر بساطة وأكثر قابلية للفهم. ولفت الانتباه إلى
Jasymca (Java Symbolic Calculator) .
التحدي
لتنفيذ تمثيلي لكتلة odesolve Mathcad في SMath Studio ، كان من الضروري حل المعادلات للمشتقات. لا توجد قيود خاصة على نظام ODE القابل للحل. يجب أن يتم تحويل ما يحدده المستخدم في شكل اعتباطي نسبيًا إلى نموذج مناسب للحل الرقمي لعدد ODE. يجب أن يبدو مثل هذا:

تبين أن التعرف على إمكانيات لغة c # أمر صعب بالنسبة لي هنا في الحالة العامة. فإن مساعدة من حرف محرك لن يضر.
تحويل المصدر
نظرت إلى الكود المصدري للبرنامج الصغير. لا يبدو هذا أمرًا مخيفًا للغاية ، لكنك تحتاج إلى محول Java في c #. في الوقت الذي بدأت فيه للتو القيام بذلك ، وجدت مصدرًا واحدًا أو أكثر يعمل عبر الإنترنت ، وهو ما لا يمكنني تذكره الآن. يبدو أنه كان موردًا من Tangible Software Solutions ، مثل التعليقات في الكود المصدري مماثلة لتلك التي أدلى بها المحول الحالي كبرنامج.
كل شيء جيد ، ولكن هناك شيء واحد سيء. تم تحويل المورد مجانًا فقط الحجم المحدود للمصدر. الحد الحقيقي لعدد الخطوط. لقد كان غريباً جداً ، حسب اعتقادي ، أعمى كل المحتويات في ملف واحد في سطر واحد. ثم قمت بتحويل مصادر سطر واحد إلى c # المكافئ مجانًا واستعادتها إلى وضعها الطبيعي في Visual Studio باستخدام التنسيق التلقائي.
ملف الانتهاء
وغني عن القول ، أن المحول التلقائي يتحول إلى شكل الجزء الأكبر ، ولكن مع المحتوى الذي لا تزال بحاجة إلى العمل عليه. في ذلك الوقت ، أدركت أنه من الواضح أنني لم يكن لدي مستويات كافية في كلتا اللغتين لحل جميع مشاكل الترجمة. مرور الوقت ، التبجيل جون سكيت. الرفيق السكيت غرس العزم.
في عملية النضال من أجل التجميع ، استرجع المحول بكلمة لطيفة. لقد قام تقريبا كل العمل الشاق. لم يتقن فقط الجزء الرياضي في بعض النقاط. يتعلق الأمر فئة كبيرة من JMath. يقع تحويل التمثيل المزدوج إلى السداسي والعكس صحيح في بعض الحالات مع وجود قيود على طريقة BitConverter.Int64BitsToDouble () ، والتي لا تعمل مع بعض الثوابت الطويلة غير الموقعة ، على سبيل المثال ، -0 (
0x8000000000000000 ). هنا مرة أخرى ، جاء الرفيق Skeet في عملية الإنقاذ ، ليس بدون مساعدة من تمكنا من تقديم هذه القيمة كـ 1.0 / double.NegativeInfinity. بشكل عام ، هذا الحساب من "اللانهائي" لا يزال يطاردني ، لأنه لست متأكدًا من التفسير الصحيح لكل ما كان في ذهن المؤلف Jasymca.
بعد تصحيح بعض الأخطاء الدلالية ، واستبدال العمل بأنواع ومثيلاتها ، وإضافة واجهة تعزية ، تمكنا من بدء هذا المشروع. لطالما أردت أن أنظر إلى المطبخ الداخلي لهذه البرامج الرمزية. الرمز C ++ هو شيء وجافا أو C # شيء آخر تمامًا. عتبة الدخول أقل بكثير.
في وقت كتابة هذا التقرير ، تبدو الحاسبة كما يلي:

الملف القابل للتنفيذ متاح في
المستودع . يتطلب. صافي 2.0. هناك تبعية على LinqBridge لينجح Linq في .Net 2.0 (المكتبة مرفقة هناك).
كل شيء تقريبا يعمل من
وثائق المؤلف Jasymca. الاستثناء هو العمل مع الرسومات ، أي وظائف التآمر. أعتقد أنه سيكون من الأسهل كتابة هذا الجزء مرة أخرى بدلاً من إرساله إلى المنفذ. لا يتم تضمين الوظائف التي تعتمد على مكتبات الجهات الخارجية (LAPACK ، وما إلى ذلك). هناك أيضا مواطن الخلل التي سيتم تطهيرها مع مرور الوقت.
الخاتمة
تم إنشاء المشروع لعشاق الرياضيات الرمزية. إذا رغبت في ذلك ، يمكن إحضاره إلى المكتبة واستخدامه في مشاريعك الخاصة حيث تتطلب الرياضيات الرقمية أو الرمزية البسيطة: العمل باستخدام أرقام معقدة ، والتكامل ، والتمايز ، وحل المعادلات ، إلخ. وضع المؤلف Jasymca
البرنامج كأداة تدريب لأولئك الذين يرغبون في إنشاء برنامج خاص بهم. إجراء حسابات رمزية:
وقد تم تطوير Jasymca لتدريس الرياضيات ، وخاصة لتسهيل دخول سريع وسهل لرياضيات الكمبيوتر. واحدة من العقبات الرئيسية هي الآلات الحاسبة الجيب ، والتي تمنع العديد من الطلاب من استخدام أجهزة الكمبيوتر للرياضيات. تعتبر الآلات الحاسبة الجيبية رخيصة ومحمولة ، في حين أن برامج CAS تكون غالية الثمن وتتطلب دائمًا تشغيل كمبيوتر محمول على الأقل. إن Jasymca عبارة عن برنامج مجاني ويعمل على أي نظام تقريبًا مزود بمعالج دقيق: من الهواتف المحمولة وأجهزة pdas إلى أجهزة كمبيوتر windows / linux / macos ، وحتى على أجهزة الألعاب أو أجهزة توجيه الإنترنت.
آمل أن يكون إصدار c # من الكود المصدري مفيدًا في شيء لك أيضًا.
المراجع
1.
Jasymca (جافا حاسبة رمزية) .
2.
مصادر Jasymca (الرمز البريدي) .
3.
Jasymca 2.0 - حاسبة رمزية لجافا (يدوي ، قوات الدفاع الشعبي) .
4.
نظرة عامة على هذه المكتبات جافا .
5.
مستودع المشروع .