تخطي إلى المحتوى
دليل Varlig
صفحة Varlig الرئيسية

المجاميع وحل المعادلات والتفاضل والتكامل

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

تستقبل كل هذه الدوال اسم متغيّر ضمن وسائطها، مثل k في sum(k^2, k, 1, 10). يكون هذا الاسم محليًا داخل الاستدعاء فقط، فلا يغيّر أبدًا قيمة تحمل الاسم نفسه في موضع آخر من الملاحظة.

المجاميع وحواصل الضرب المنتهية

calc
sum(k, k, 1, 100) الناتج 5,050
sum(k^2, k, 1, 10) الناتج 385
summation(2*k - 1, k, 1, 10) الناتج 100
product(k, k, 1, 5) الناتج 120

الوسائط هي التعبير والمتغير والقيمة الأولى والقيمة الأخيرة. تُشمَل النهايتان، لذا يجمع sum(k, k, 1, 100) الأعداد 1 + 2 + … + 100. وsummation اسم آخر لـsum. يوضح السطر الثالث أن مجموع أول عشرة أعداد فردية هو 10²، أما السطر الأخير فيحسب مضروب 5.

تدعم عمليات الجمع المتسلسل العملات والوحدات، مما يجعلها مناسبة لحساب المدّخرات الدورية:

calc
# £1,200 paid in at the start of each year for 5 years, at 5%
sum(£1200 * 1.05^k, k, 1, 5) الناتج £6,962.30

يفيد حاصل الضرب في سلاسل الاحتمالات. احتمال اشتراك شخصين على الأقل في تاريخ الميلاد ضمن مجموعة من 23 شخصًا يساوي واحدًا ناقص احتمال اختلاف تواريخ ميلاد الأشخاص الـ23 جميعًا:

calc
p = 1 - product((365 - k)/365, k, 0, 22)
(p as %) to 1 dp الناتج 50.7%

بعض التفاصيل:

  • يجب أن تكون القيمتان الأولى والأخيرة عددين صحيحين.
  • إذا كانت القيمة الأخيرة أصغر من الأولى، فلا توجد حدود في المتسلسلة: يكون المجموع 0 وحاصل الضرب 1.
  • يمكن أن تتضمّن عملية جمع أو ضرب متسلسلة واحدة 10,000 حد على الأكثر.
  • يمكن تداخل عمليات الجمع، مثل sum(sum(j, j, 1, n), n, 1, 4) التي تعطي 20. وتشترك الاستدعاءات المتداخلة في حدّ إجمالي واحد للعمل الحسابي.
  • لجمع قيم لديك بالفعل، استخدم قائمة: sum([4, 8, 15]). راجع القوائم والإحصاء.

الحل الدقيق لمعادلة

عند تمرير معادلة وحدها، يقرأ solve معاملاتها ويحسب الحل كما تفعل على الورق:

calc
solve(2x + 6 = 10) الناتج 2
solve(x/3 + 1 = 4) الناتج 9
solve(5x + 3 = 2x - 9) الناتج -4
# Candles sell for 12, cost 4 each to make, on 2,000 of fixed costs
solve(12n = 2000 + 4n) الناتج 250

المجهول هو الاسم الوحيد في المعادلة الذي لم تُعرَّف له قيمة. أما أي اسم عرّفته مسبقًا فيُفسَّر بقيمته. وإذا حذفت الطرف الأيمن، يُفترَض أن التعبير يساوي صفرًا.

تعيد المعادلة الخطية عددًا. أما المعادلة التربيعية فتعيد قائمة بجذورها الحقيقية المختلفة، مرتبة من الأصغر إلى الأكبر؛ لذلك يُعرَض الجذر المكرر في قائمة من عنصر واحد:

calc
solve(x^2 - 5x + 6 = 0) الناتج [2, 3]
solve(x^2 = 9) الناتج [-3, 3]
solve(x^2 - 6x + 9 = 0) الناتج [3]
solve(x^2 - 2 = 0) الناتج [-1.4142135624, 1.4142135624]

يعتمد شكل النتيجة على نوع المعادلة التي كتبتها، لا على الجذور الناتجة: فالمعادلة التربيعية تُرجِع قائمة دائمًا.

تُحل المعادلات الخطية والمعادلات التربيعية التي يكون مميّزها مربعًا كاملًا باستخدام كسور دقيقة، لذلك تكون نتيجتا solve(x^2 - 5x + 6 = 0) هما 2 و3 تمامًا. عندما لا يكون المميّز مربعًا كاملًا، يُحسب الجذران باستخدام قيم عشرية للجذور التربيعية. ولا يُضمن تساوي قيمتين تقريبيتين حتى لو بدتا متطابقتين: يعرض كل من solve(x^2 - 2 = 0) وsqrt(2) القيمة 1.4142135624، لكن المقارنة تعدّهما مختلفتين.

تُحلّ المعادلات باستخدام أعداد بلا وحدات. تُرفض الوحدات والمبالغ المالية بدل تمريرها عبر إعادة ترتيب جبري لا يحافظ عليها. راجع القاعدة كاملة في ضمانات محرّك الحساب.

عند تعذّر الحل

لا يعتمد الحل على التخمين. إذا لم يكن للمعادلة جذر حقيقي، تُعرض رسالة توضّح ذلك بدلًا من إرجاع جذر مركّب. وتُرفَض المعادلات الأعلى من الدرجة الثانية، مع اقتراح الصيغة العددية كبديل:

calc
solve(x^2 + 1 = 0) الناتج Error: no real solution
solve(x^3 - 1 = 0) الناتج Unsupported: solve reads equations of degree 1 and 2; this one has degree 3: write solve(expression,x,lower,upper) to search for one root numerically
solve(sin(x) = 0) الناتج Unsupported: solve reads a polynomial in x of degree 1 or 2; write solve(expression,x,lower,upper) to search for one root numerically

لا يمكن أن يظهر المجهول في المقام أو في الأس أيضًا. وإذا احتوت المعادلة على اسمين غير معرّفين، توضّح الرسالة الاسم الذي تعذّر تفسيره:

calc
solve(1/x = 2) الناتج Unsupported: The unknown cannot be a divisor; write solve(expression,x,lower,upper) to search for one root numerically
solve(2^x = 8) الناتج Unsupported: The unknown cannot be an exponent; write solve(expression,x,lower,upper) to search for one root numerically
solve(x + y = 10) الناتج Unsupported: solve reads one unknown, and y holds no value either; give y a value, or write solve(expression,x,lower,upper) to search for one root numerically

إذا كانت جميع القيم تحقّق المعادلة، تظهر رسالة توضّح ذلك بدلًا من اختيار قيمة واحدة:

calc
solve(x - x = 0) الناتج Unsupported: every value of x solves this equation, so it has no single answer

توجّهك كل حالة رفض من هذه الحالات إلى صيغة solve ذات الوسائط الأربعة أدناه، التي تبحث عدديًا عن جذر واحد ولا تشترط شكلًا محددًا للتعبير. لحل عدة معادلات خطية بعدة مجاهيل، استخدم solve_system من المتجهات والمصفوفات.

إيجاد جذر واحد عدديًا

عند استخدام أربعة وسائط، تعمل solve بطريقة مختلفة: تبحث، بين حدَّين تحددهما، عن قيمة للمتغير تحقق المعادلة. استخدمها عندما ترفض صيغة الحل الدقيق أعلاه معادلتك.

calc
solve(x^2 = 2, x, 0, 2) الناتج 1.4142135624
solve(x^2 - 4, x, -3, 0) الناتج -2
solve(cos(x) = x, x, 0, 1) الناتج 0.7390851332
# How long does a stone take to fall 44.1 m?
solve(4.9*t^2 = 44.1, t, 0, 10) الناتج 3
# Candles sell for £12, cost £4 each to make, plus £2,000 of fixed costs
solve(12*n = 2000 + 4*n, n, 0, 1000) الناتج 250

الوسائط هي المعادلة والمتغير والحد الأدنى والحد الأعلى. يمكنك إدخال معادلة تتضمن =، أو تعبير وحده تتعامل معه solve على أنه expression = 0.

اختيار الحدود

تحتاج solve إلى أن يتبادل طرفا المعادلة أيهما أكبر بين الحدَّين. بعبارة أخرى، يجب أن تكون left - right موجبة عند أحد الحدَّين وسالبة عند الآخر، أو مساوية للصفر تمامًا عند أحدهما. ثم تضيّق الدالة المجال حتى تجد نقطة التقاطع.

يترتّب على ذلك ما يلي:

  • إذا وُجد جذران بين الحدّين، فقد تكون الإشارة واحدة عند طرفي الفترة. يفشل solve(x^2 - 4, x, -3, 3) لأن x^2 - 4 موجب عند الطرفين. استخدم حدّين يحيطان بجذر واحد، مثل 0 و3.
  • لا يمكن العثور بهذه الطريقة على جذر يلامس عنده المنحنى الصفر فقط، مثل x^2 = 0، لأن الإشارة لا تتغيّر.
  • يجب أن يكون التعبير معرّفًا على المجال كله. تفشل solve(sqrt(x) = 2, x, -1, 10) لأن sqrt لعدد سالب تعطي خطأ. ابدأ المجال من 0 بدلًا من ذلك.
  • القفز عبر الصفر، كما يحدث في 1/x قرب 0، ليس جذرًا؛ لذلك تعيد solve خطأ في هذه الحالة بدلًا من نتيجة.
  • يجب أن يكون الحد السفلي أصغر من الحد العلوي، وأن يكون كلاهما عددًا مجرّدًا دون وحدات.

تعيد solve جذرًا واحدًا، ولا تعيد مطلقًا قائمة بكل الجذور. وهي تعمل بالأعداد المجرّدة فقط، لذا لا تضع وحدات في المعادلة.

التقريب وإعادة الاستخدام

النتيجة تقريب عددي دقيق، وقد يوجد اختلاف في آخر رقم معروض. أضف to 4 dp إلى السطر نفسه، أو حدّد أي عدد آخر من المنازل العشرية، لعرض نتيجة مرتّبة. ويمكنك أولًا إسناد اسم إلى النتيجة إذا أردت استخدامها مجددًا:

calc
solve(sqrt(x) = 2, x, 0, 10) الناتج 4.0000000001
solve(sqrt(x) = 2, x, 0, 10) to 4 dp الناتج 4
side = solve(sqrt(x) = 2, x, 0, 10) الناتج 4.0000000001
side * 3 to 2 dp الناتج 12

يمكنك إحاطة solve بدالة خاصة بك لإعادة استخدامها بقيم مختلفة:

calc
root(y) = solve(x^2 = y, x, 0, 10)
root(9) الناتج 3

لحلّ عدة معادلات خطية بعدة مجاهيل، استخدم solve_system الموضّحة في المتجهات والمصفوفات.

الاشتقاق الرمزي

عند تمرير وسيطين، تُرجِع differentiate (أو derivative) المشتقّة على شكل صيغة:

calc
differentiate(sin(x), x) الناتج cos(x)
derivative(x^3, x) الناتج (3*(x^(3-1)))
derivative(x * sin(x), x) الناتج (sin(x)+(x*cos(x)))
derivative(exp(2*x), x) الناتج (exp((2*x))*2)

لا تُبسَّط النتيجة، وتوضع كل خطوة بين قوسين: فالتعبير (3*(x^(3-1))) يساوي 3x². وتُحوَّل الأعداد العشرية في التعبير إلى كسور، فيظهر 19.6 بالشكل (98/5).

النتيجة نص، وليست قيمة يستطيع Varlig إجراء الحسابات عليها. لاستخدامها، اكتب الصيغة ضمن دالة تعرّفها بنفسك:

calc
slope(x) = 3*x^2
slope(2) الناتج 12

يدعم الاشتقاق الرمزي ما يلي:

  • + و- و* و/ والقوى، باستخدام قواعد الجمع والضرب والقسمة والقوة والسلسلة
  • الدوال sin وcos وtan وsinh وcosh وexp وln وsqrt
  • أسماء أخرى، يتم التعامل معها على أنها ثوابت وتبقى كأسماء في النتيجة

لا يحتاج الاسم إلى قيمة معرّفة في الملاحظة، لذلك يمكنك اشتقاق صيغة تحتوي على رموز:

calc
derivative(a*x^2, x) الناتج (a*(2*(x^(2-1))))

تُنتج الدوال الأخرى، مثل abs أو log أو دالة عرّفتها بنفسك، خطأ. استخدم معها الصيغة العددية أدناه. كما أن الصيغة الناتجة لا تتضمن قيود مجال التعبير الأصلي: مشتقة sqrt(x) صالحة فقط حيث تكون sqrt(x) صالحة، حتى لو بدت (1/(2*sqrt(x))) صيغة مستقلة.

الاشتقاق العددي

عند إضافة وسيط ثالث، تعطي derivative ميل المنحنى عند تلك النقطة في صورة عدد:

calc
derivative(x^3, x, 2) الناتج 12
differentiate(sin(x), x, 0) الناتج 1
derivative(sqrt(x), x, 4) الناتج 0.25
height(t) = 20*t - 4.9*t^2
derivative(height(t), t, 1) الناتج 10.2

تعمل هذه الصيغة مع الدوال التي عرّفتها في الملاحظة، مثل height أعلاه، بخلاف الصيغة الرمزية. ولأنها تحسب قيمة عددية، يحتاج كل اسم آخر في التعبير إلى قيمة. وينطبق ذلك أيضًا على sum وproduct وsolve وintegrate:

calc
derivative(a*x^2, x, 2) الناتج Unsupported: Unknown name: a
a = 3
derivative(a*x^2, x, 2) الناتج 12

النتيجة تقدير يعتمد على قيم قريبة على جانبي النقطة. عندما يكون الميل الحقيقي عددًا بسيطًا، يحفظ Varlig ذلك العدد، فتنجح المقارنة الدقيقة معه. أما قيم الميل غير النسبية، مثل ميل exp(x)، فتحتفظ بجميع أرقامها، لذا قارنها ضمن هامش سماح:

calc
derivative(x^3, x, 2) == 12 الناتج true
abs(derivative(exp(x), x, 1) - e) < 1e-6 الناتج true

يجب أن يكون التعبير أملس دون زوايا أو انقطاعات في جوار النقطة. يُرجِع derivative(abs(x), x, 0) خطأ لأن abs له زاوية عند الصفر، ويُرجِع derivative(sqrt(x), x, 0) خطأ لأن sqrt غير معرّفة إلى يسار الصفر.

التكامل المحدّد

calc
integrate(x^2, x, 0, 3) الناتج 9
integrate(sin(x), x, 0, pi) الناتج 2
integrate(x^2, x, 3, 0) الناتج -9
integrate(4/(1 + x^2), x, 0, 1) الناتج 3.1415926536
# Distance fallen in 3 s: integrate the speed, 9.8t m/s
integrate(9.8*t, t, 0, 3) الناتج 44.1

الوسائط هي التعبير والمتغير والحد الأدنى والحد الأعلى، بالترتيب نفسه المستخدم في sum. النتيجة هي المساحة الجبرية تحت المنحنى بين الحدَّين، مع احتساب الإشارة. تبديل الحدَّين يعكس الإشارة، وتساويهما يعطي صفرًا. يمكنك تكامل الدوال المعرّفة في ملاحظتك، مثل integrate(power(t), t, 0, 4).

تحسب integrate التكامل عدديًا، لذلك لا تدعم بعض الحالات:

  • لا يتوفر التكامل غير المحدد: تحصل دائمًا على عدد، ولا تحصل على صيغة رمزية.
  • يجب أن يكون حدّا التكامل عددين منتهيين؛ لا يدعم التطبيق التكامل إلى ما لا نهاية.
  • يجب أن يكون التعبير معرّفًا على الفترة كاملة. يُرجِع integrate(1/sqrt(x), x, 0, 1) خطأ، لأن 1/sqrt(0) يتضمّن قسمة على صفر، رغم أن المساحة نفسها منتهية.
  • قد تعطي التعبيرات ذات القفزات أو القمم الحادّة أو التذبذبات السريعة جدًا نتائج غير دقيقة أو رسالة خطأ.
  • الوحدات غير مقبولة، لذا اتركها في تعليق، كما في المثال الأخير.

الخوارزميات والتقارب

لا تحتاج إلى هذه التفاصيل للاستخدام اليومي، ولكنها تساعد عندما تبدو النتيجة خاطئة أو يعطي السطر خطأ.

تستخدم solve طريقة التنصيف: تقسم المجال إلى نصفين مرارًا، وتحتفظ بالنصف الذي تتغير فيه الإشارة. تتوقف عندما لا تبعد قيمة left - right عن الصفر بأكثر من 10⁻¹⁰ ويصبح المجال ضيقًا بما يكفي. وإذا لم تتوصل إلى حل بعد 128 عملية تنصيف، تعيد خطأ.

تطبّق derivative الرمزية قواعد الاشتقاق المعتادة خطوة بخطوة من دون تبسيط. يبلغ الحد الأقصى لطول النتيجة 8,192 محرفًا. هذه ليست منظومة جبر حاسوبي متكاملة.

تقارن derivative العددية الفروق المركزية باستخدام خطوات تتناقص تدريجيًا، وتفحص الميل من كل جانب على حدة. إذا لم تتفق النتائج، أو كانت قيمة قرب النقطة غير معرّفة، تعيد خطأ بدلًا من التخمين.

تستخدم integrate قاعدتَي Gauss–Kronrod التكيفيتين ذواتَي 7 و15 نقطة. تقارن التقديرين على كل جزء من المجال، ثم تقسّم الجزء ذي أكبر خطأ مقدّر، حتى ينخفض مجموع الخطأ المقدّر عن 10⁻⁹ × max(1, |answer|). تسمح بما يصل إلى 2,048 تقسيمًا و20 مستوى من التقسيم، ضمن حدّ مشترك قدره 100,000 خطوة. نقاط أخذ العينات غير متساوية التباعد، لذلك يُحسب تكامل التذبذب السريع مثل cos(128*pi*x) من 0 إلى 1 على نحو صحيح بقيمة قريبة من الصفر، بدل اعتباره ثابتًا. ومع ذلك، يظل تقدير الخطأ استدلاليًا؛ لذا تعامل بحذر مع نتائج التعبيرات التي تتضمن نقاطًا شاذة أو انقطاعات.

القواعد الكاملة موجودة في مرجع الرياضيات المتقدم.

مثال يجمع هذه العمليات

إليك طريقة للتحقّق من حل مسألة فيزياء: كرة قُذفت رأسيًا إلى أعلى بسرعة 19.6 m/s، مع اعتبار تسارع الجاذبية 9.8 m/s²:

calc
# Height in metres after t seconds
height(t) = 19.6*t - 4.9*t^2
velocity(t) = 19.6 - 9.8*t
# Lands when the height is back to zero (skip t = 0)
landing = solve(height(t) = 0, t, 1, 10) الناتج 4
# Speed after 1 second, from the slope of the height
derivative(height(t), t, 1) الناتج 9.8
# Highest point, where the velocity is zero
peak = solve(velocity(t) = 0, t, 0, landing) الناتج 2
height(peak) الناتج 19.6
# Check: integrating the velocity up to the peak gives the same height
integrate(velocity(t), t, 0, peak) الناتج 19.6

تهبط الكرة بعد 4 ثوانٍ، وتبلغ ارتفاع 19.6 m بعد ثانيتين. يمنع الحد الأدنى 1 في سطر landing الدالة solve من اختيار الجذر الآخر عند t = 0. يتحقق السطر الأخير من الارتفاع بطريقة ثانية، بتكامل السرعة.