كيف يقوم شخص ما بتنفيذ الصيغ الرياضية في جافا؟ [مغلق

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

  •  27-09-2019
  •  | 
  •  

سؤال

كيف يقوم شخص ما بتنفيذ الصيغ الرياضية في جافا؟

ما أعنيه ، يقوم المستخدم بإدخال سلسلة مع متغيرات متعددة. مثل الصيغة التربيعية البسيطة: x^2 + 5x + 10. أو في Java: (Math.pow(x,2)) + (x * 5) + 10. يقوم المستخدم بعد ذلك بإدخال ذلك ثم يحل البرنامج لـ X. سأستخدم بينشيل فئة المترجم المترجم لتفسير السلسلة على أنها معادلة. ولكن كيف يمكنني حل x؟

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

المحلول

هذه مشكلة صعبة ، إلا إذا قمت بتقييد نفسك على أنواع المعادلات البسيطة.

فيما يلي بعض الروابط لتطاردها:

صامتة من خلال الرابط الثاني ، رصدت 3 أنظمة Java مفتوحة المصدر.

نصائح أخرى

لا أعتقد أن هذا واجب منزلي (صعب للغاية!) ، ولا أعتقد أنها مشكلة بحثية أيضًا (ما الجديد؟) ، لذلك اعتمادًا على سياق المشكلة ، قد يكون الحل الأسهل هو الاستفادة ولفرام ألفا.

ولفرام ألفا: solve x^2 + 5x + 10

x = -1/2 i (sqrt(15)-5 i) ~~ -2.5-1.93649 i
x = 1/2 i (sqrt(15)+5 i) ~~ -2.5+1.93649 i

الروابط

كما تشير Nuriaion إلى أنه يمكنك استخدام نظام جبر الكمبيوتر ، على الرغم من أنني أعتقد أن Mathematica أو Maple أو Sage أو MacSyma قد يكونان اقتراحات أفضل. هناك آخرون أيضًا. لست متأكدًا من أن الكثيرين سيعتبرون إما Matlab أو Octave كـ CAS ، فهي أشبه بيئات الحوسبة العددية. على الرغم من أن صندوق الأدوات الرمزي MATLAB قد يوفر قدرة كافية على احتياجاتك.

من السهل نسبيًا دمج Mathematica في نظام مبرمجة Java. ربما ليس رخيصة العقل لك.

أنا أستخدم مكتبة Java Algebra System (JAS) في symja مشروع لحل متعدد الحدود المتغير.

مثال على الإدخال للوضع الرمزي:

Roots[x^2 + 5x + 10]

يمكنك تعيين معاملات X إلى قوة X's. فمثلا؛ افترض أن لديك صيغة مثل هذه: 3x^2 - 5x + C = 0 ولكن هذا النهج البسيط هو فقط معادلات درجة صغيرة. على سبيل المثال المعادلة التي قدمتها هي في درجة 2 (أكبر قوة x) ؛ لذلك يحتوي على قيمان حلتين لـ X ، ويمكن حسابه مع معادلات VIETA.

ملاحظة: أنا أدرس هندسة الرياضيات في الكلية وأنا راضٍ جدًا عن Gnu Octave.

http://mathworld.wolfram.com/polynomialroots.html

http://en.wikipedia.org/wiki/root-finding_algorithm

أحد الاحتمالات هو استخدام Maxima المترجمة مع ABCL لحل المعادلات (والقيام بأي جبر آخر تحتاجه). ABCL هو تنفيذ LISP المشترك في Java. سيأخذ البرنامج الأمامي الخاص بك الإدخال ويمررها إلى Maxima لحلها ، ثم عرض النتيجة. في الأساس ، يمكنك استخدام Maxima كمكتبة رياضيات كبيرة.

من الأفضل أن تدرس خوارزميات بنية البيانات لتحويل التعبيرات من Infix إلى Postfix & to & Fro. ثم في بنية البيانات هناك خوارزمية لتقييم التعبيرات. يتم هذا التقييم باستخدام كومة.

يمكنك دراسة كتب بنية البيانات. بعض الكتب "أساسيات هياكل البيانات" بواسطة إليس هورويتز, الخطوط العريضة لشركة Schaum لهياكل البيانات مع Java, ، إلخ.

ربما يمكنك استخدام أ كاس مثل ماتلاب, أوكتاف, ، إلخ.

Octave مفتوح المصدر وأعتقد أنه يحتوي على ملزمة Java (jopas).

تحرير: MATLAB مع صندوق الأدوات الرمزي يمكن أن يحل الكثير. لدى Octave أيضًا بعض الأدوات الرمزية ، لكنني لا أعرف مدى جودتها.

أقترح أوكتاف لأنه مفتوح المصدر. معظم الحالات باهظة الثمن.

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