Mission Carthage

الرئيسية › الدروس › التقريب والتحسين

تقريب π و e، الـ dichotomie، النقطة الثابتة، المساحات والتحسين

الفصل 20 · 3 علوم الإعلامية, باك علوم الإعلامية

احسب π و e بدقّة معيّنة، لقى صفر دالة، مساحة تحت منحنى، وأحسن حلّ لمشكل.

دروس هذا الفصل

  1. قيم تقريبية لـ π و e
  2. صفر دالة والنقطة الثابتة
  3. حساب المساحات: المستطيلات وأشباه المنحرف
  4. مسائل التحسين

الدرس 20.1 : قيم تقريبية لـ π و e

11 دقيقة

فما ثوابت نلقاوهم مجموع عدد لا نهائي من الحدود اللي يصغرو ديما. ما نجموش نجمعوهم الكل: نوقفو كي الحدّ يولّي أصغر من دقّة eps (مثلا 0.0001). وبما أنّو ما نعرفوش عدد الدورات من قبل، نستعملو Tant que.

نصيحة : حساب كل حدّ من اللي قبلو يتجنّب نعاودو نحسبو factorielle في كل دورة: أسرع.

انتبه : دقّة أدق (eps أصغر) تستحق دورات أكثر برشا. série de Leibniz بطيئة: لـ eps = 0.0001، يلزم 5000 حدّ.

بـ Python

قيمة تقريبية لـ e: نزيدو الحدود 1/k! ما دامهم أكبر من eps.

eps = 0.000001
s = 1
terme = 1
k = 1
while terme > eps:
    terme = terme / k
    s = s + terme
    k = k + 1
print("e vaut environ", s)
print("Termes ajoutés :", k - 1)

بـ algorithme

المتغيّرات s و terme من نوع réel.

Algorithme ValeurDeE
Début
  eps ← 0.000001
  s ← 1
  terme ← 1
  k ← 1
  Tant que terme > eps Faire
    terme ← terme / k
    s ← s + terme
    k ← k + 1
  FinTantQue
  Ecrire("e vaut environ ", s)
  Ecrire("Termes ajoutés : ", k - 1)
Fin

TDO
Objet | Type/Nature
eps, s, terme | Réel
k | Entier

الدرس 20.2 : صفر دالة والنقطة الثابتة

12 دقيقة

باش نحلّو f(x) = 0 على مجال [a, b] اللي فيه f تبدّل الإشارة، الـ dichotomie تقسم المجال على زوز: نحسبو الوسط m، ونخلّيو النص اللي مازالت فيه الإشارة تتبدّل (f(a) × f(m) ≤ 0: الحلّ في [a, m]). نوقفو كي b − a يولّي أصغر من eps.

النقطة الثابتة متاع دالة g هي x تحقّق g(x) = x. نبداو من قيمة x0 ونعاودو x ← g(x) حتى زوز قيم متتاليين يوليو تقريبا كيف كيف (|x − ancien| < eps).

نصيحة : الدالة f تتكتب مرّة وحدة كـ fonction (DEF FN f)، وبعد نناديوها قدّ ما يلزم.

بـ Python

صفر f(x) = x³ + x − 1 على [0, 1] بدقّة 0.001.

def f(x):
    return x ** 3 + x - 1

a = 0
b = 1
eps = 0.001
while b - a > eps:
    m = (a + b) / 2
    if f(a) * f(m) <= 0:
        b = m
    else:
        a = m
print("Zéro proche de", (a + b) / 2)

بـ algorithme

الدالة f هي module: DEF FN f (x : Réel) : Réel.

DEF FN f (x : Réel) : Réel
Début
  Retourner x ^ 3 + x - 1
Fin

Algorithme Dichotomie
Début
  a ← 0
  b ← 1
  eps ← 0.001
  Tant que b - a > eps Faire
    m ← (a + b) / 2
    Si f(a) * f(m) ≤ 0 Alors
      b ← m
    Sinon
      a ← m
    FinSi
  FinTantQue
  Ecrire("Zéro proche de ", (a + b) / 2)
Fin

TDO
Objet | Type/Nature
a, b, eps, m | Réel

الدرس 20.3 : حساب المساحات: المستطيلات وأشباه المنحرف

11 دقيقة

باش نحسبو المساحة تحت منحنى f بين a و b، نقسمو [a, b] على n شرايط عرضهم h = (b − a) / n، ونجمعو مساحات بسيطة.

نصيحة : كل ما n يكبر، النتيجة تقرب للمساحة الصحيحة. لـ f(x) = x² على [0, 1]، المساحة الصحيحة هي 1/3.

بـ Python

المساحة تحت f(x) = x² على [0, 1] بالمستطيلات، بـ n = 100.

def f(x):
    return x * x

a = 0
b = 1
n = 100
h = (b - a) / n
s = 0
for i in range(n):
    s = s + f(a + i * h)
print("Aire (rectangles) :", s * h)

بـ algorithme

الـ boucle Pour تمشي من 0 لـ n − 1: مستطيل لكل شريط.

DEF FN f (x : Réel) : Réel
Début
  Retourner x * x
Fin

Algorithme Rectangles
Début
  a ← 0
  b ← 1
  n ← 100
  h ← (b - a) / n
  s ← 0
  Pour i de 0 à n - 1 Faire
    s ← s + f(a + i * h)
  FinPour
  Ecrire("Aire (rectangles) : ", s * h)
Fin

TDO
Objet | Type/Nature
a, b, h, s | Réel
n, i | Entier

الدرس 20.4 : مسائل التحسين

10 دقيقة

مسألة تحسين تلوّج على أحسن حلّ من الحلول الممكنة الكل: أقل عدد قطع، أكبر مساحة، أرخص كلفة…

نصيحة : نحسبو الفلوس بالـ مليم (أعداد صحيحة): 1 دينار = 1000 مليم. الأعداد الصحيحة تتجنّب غلطات التقريب متاع الـ réels.

بـ Python

رجّع مبلغ (بالمليم) بأقل عدد ممكن من القطع والأوراق.

pieces = [20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10]
reste = int(input())
nb = 0
for i in range(len(pieces)):
    while reste >= pieces[i]:
        reste = reste - pieces[i]
        nb = nb + 1
        print(pieces[i])
print("Nombre de pièces et billets :", nb)

بـ algorithme

الـ tableau P فيه القيم، من الأكبر للأصغر.

Algorithme Monnaie
Début
  P[1] ← 20000
  P[2] ← 10000
  P[3] ← 5000
  P[4] ← 2000
  P[5] ← 1000
  P[6] ← 500
  P[7] ← 200
  P[8] ← 100
  P[9] ← 50
  P[10] ← 20
  P[11] ← 10
  Lire(reste)
  nb ← 0
  Pour i de 1 à 11 Faire
    Tant que reste ≥ P[i] Faire
      reste ← reste - P[i]
      nb ← nb + 1
      Ecrire(P[i])
    FinTantQue
  FinPour
  Ecrire("Nombre de pièces et billets : ", nb)
Fin

TDO
Objet | Type/Nature
P | Tableau de 11 Entiers
reste, nb, i | Entier

تدرّب مجانًا

كل درس فيه 3 تمارين مجانية مع تلميحات باش تطبّق الفصل هذا مع هنّيبوت.

افتح الفصل في Mission Carthage جرّب في الكومبيلاتور أونلاين

← الفصل اللي قبل : الواجهات الرسومية بـ Qt · الفصل اللي بعد : العودية (Récursivité) →

كل الفصول · شوف فروض 2 تكنولوجيا المصلّحة

الدروس كتبناها لـ Mission Carthage على أساس البرنامج الرسمي. الأستاذ متاعك يبقى المرجع.