From a6337d82383e0157332060f9bc78d2b901c1b21c Mon Sep 17 00:00:00 2001 From: Abdelaziz Elrashed Date: Fri, 5 Jul 2024 05:13:14 +0300 Subject: [PATCH] =?UTF-8?q?=D8=A5=D8=B6=D8=A7=D9=81=D8=A9=20=D9=88=D8=AB?= =?UTF-8?q?=D8=A7=D8=A6=D9=82=20=D9=85=D8=A8=D8=AF=D8=A6=D9=8A=D8=A9=20?= =?UTF-8?q?=D9=84=D9=84=D9=85=D8=B9=D8=A7=D8=AF=D9=84=D8=A7=D8=AA=20=D8=A7?= =?UTF-8?q?=D9=84=D8=B1=D9=8A=D8=A7=D8=B6=D9=8A=D8=A9=20=D9=84=D8=AD=D8=B3?= =?UTF-8?q?=D8=A7=D8=A8=20=D8=A7=D9=84=D8=B2=D9=83=D8=A7=D8=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.ar.md | 2 + README.md | 6 +- docs/mathematics.ar.md | 144 ++++++++++++++++++++++++++++++++++++++++ docs/mathematics.md | 145 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 295 insertions(+), 2 deletions(-) create mode 100644 docs/mathematics.ar.md create mode 100644 docs/mathematics.md diff --git a/README.ar.md b/README.ar.md index e5664dc..fe397ef 100644 --- a/README.ar.md +++ b/README.ar.md @@ -61,6 +61,8 @@ - [آلية الزكاة: خوارزمية الغرف والصناديق](./docs/algorithm.ar.md) +- [صيغة الزكاة: تمثيل رياضي للصدقة الإسلامية](./docs/mathematics.ar.md) + ### ابدأ الآن: قم بتثبيت مكتبة الزكاة (Zakat) باستخدام pip: diff --git a/README.md b/README.md index 596fb20..2126518 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,9 @@ Zakat is a user-friendly Python library designed to simplify the tracking and ca - Automated Zakat Calculation: Automatically calculate Zakat due based on the Nisab (minimum threshold), Haul (time cycles) and the current market price of silver, simplifying compliance with Islamic financial principles. -- Customizable Nisab: Set your own Nisab value based on your preferred calculation method or personal financial situation. +- Customizable "Nisab": Set your own "Nisab" value based on your preferred calculation method or personal financial situation. -- Customizable Haul: Set your own Haul cycle based on your preferred calender method or personal financial situation. +- Customizable "Haul": Set your own "Haul" cycle based on your preferred calender method or personal financial situation. - Multiple Accounts: Manage Zakat for different assets or accounts separately for greater financial clarity. @@ -59,6 +59,8 @@ Zakat is a user-friendly Python library designed to simplify the tracking and ca - [Mechanism of Zakat: The Rooms and Boxes Algorithm](./docs/algorithm.md) +- [The Zakat Formula: A Mathematical Representation of Islamic Charity](./docs/mathematics.md) + ### Get Started: Install the Zakat library using pip: diff --git a/docs/mathematics.ar.md b/docs/mathematics.ar.md new file mode 100644 index 0000000..8e16a74 --- /dev/null +++ b/docs/mathematics.ar.md @@ -0,0 +1,144 @@ +
+ +# صيغة الزكاة: تمثيل رياضي للصدقة الإسلامية + +الزكاة هي أحد أركان الإسلام الخمسة، وهي شكل إلزامي من الصدقة للمسلمين الذين يستوفون معايير ثروة محددة. تعمل الزكاة كوسيلة لتطهير ثروة الفرد وإعادة توزيعها على المحتاجين. في حين أن مبادئ الزكاة راسخة، فإن حساب المبلغ المستحق يمكن أن يختلف تبعًا لنوع الأصول وقيمتها وفقًا لأسعار الصرف في وقت الزكاة. + +تركز هذه الورقة على تمثيل رياضي محدد لصيغة الزكاة باستخدام LaTeX، وهو نظام التنضيد المستخدم على نطاق واسع للمستندات العلمية والرياضية. + +### صيغة الزكاة + +يمكن التعبير عن صيغة الزكاة باستخدام المعادلة الرياضية التالية: +
+ +```math +Z_(السنة n) = [ P - \sum_(i=1)^(n-1) Z_(السنة i) ] × Z +``` +
+حيث: + + +* ($Z_(السنة n)$): الزكاة للسنة n (المبلغ المستحق في سنة محددة) +* (P): رأس المال الأولي (المبلغ الأصلي للثروة الخاضعة للزكاة) +* ($\sum_(i=1)^(n-1) Z_(السنة i)$): مجموع الزكاة المدفوعة في السنوات السابقة (من السنة الأولى إلى السنة التي تسبق السنة الحالية، أي n - 1) +* (Z): معدل الزكاة (عادة 2.5٪ من الثروة التي تتجاوز حدًا معينًا) + +**فهم الصيغة** + +الفكرة الأساسية للصيغة هي حساب الزكاة لسنة معينة بناءً على الثروة المتبقية بعد خصم الزكاة المدفوعة في السنوات السابقة. يأخذ هذا النهج في الاعتبار أن الزكاة تطهر الثروة بمرور الوقت، وقد ينخفض المبلغ المستحق سنويًا إذا ظلت الثروة مستقرة نسبيًا. + +يرمز رمز الجمع (\(\sum_(i=1)^(n-1)\)) إلى الزكاة التراكمية المدفوعة من السنة الأولى (i = 1) إلى السنة التي تسبق السنة الحالية (n - 1). بطرح هذه الزكاة التراكمية من رأس المال الأولي (P)، نحصل على الثروة المتبقية الخاضعة للزكاة في السنة الحالية (n). + +بضرب هذه الثروة المتبقية في معدل الزكاة (Z)، نحصل على مبلغ الزكاة المستحق للسنة. + +**مثال** + +لنفترض أن شخصًا ما لديه ثروة أولية قدرها 100,000 دولار، ومعدل الزكاة 2.5٪. في السنة الأولى، تكون الزكاة المستحقة: + +```math +Z_(السنة 1) = (100000 - 0) × 0.025 = 2500 +``` +في السنة الثانية، تكون الزكاة المستحقة: + +```math +Z_(السنة 2) = (100000 - 2500) × 0.025 = 2437.50 +``` +تستمر هذه العملية لكل سنة لاحقة، مع انخفاض مبلغ الزكاة تدريجيًا مع انكماش الثروة المتبقية. + +### منهجية الغرف والصناديق + +لتكييف صيغة الزكاة لسيناريو يتم فيه تخزين المعاملات في صناديق داخل الغرف (على غرار الحسابات)، نحتاج إلى مراعاة التعديل التالي. + +صيغة الزكاة المعدلة: + + +```math +Z_(الغرفة r, السنة n) = [ \sum_(j=1)^m (P_(r,j) - \sum_(i=1)^(n-1) Z_(r,j,i)) ] × Z +``` +حيث: + +* ($Z_(الغرفة r, السنة n)$): الزكاة للغرفة r في السنة n +* ($P_(r,j)$): رأس المال الأولي في الصندوق j من الغرفة r +* ($\sum_(j=1)^m$): الجمع على جميع الصناديق (j = 1 إلى m) في الغرفة r +* ($\sum_(i=1)^(n-1) Z_(r,j,i)$): مجموع الزكاة المدفوعة في السنوات السابقة للصندوق j في الغرفة r (من السنة 1 إلى السنة n-1) +* (Z): معدل الزكاة (عادة 2.5%) + +**شرح التعديلات:** + +* **مؤشر الغرفة (r):** تتضمن الصيغة الآن مؤشرًا 'r' لتمثيل الغرف المختلفة (الحسابات). هذا يسمح بحساب الزكاة لكل غرفة على حدة. +* **مؤشر الصندوق (j):** يتم إدخال مؤشر 'j' لتمثيل الصناديق المختلفة (المعاملات) داخل كل غرفة. نقوم بالتكرار على جميع الصناديق في الغرفة لحساب إجمالي الزكاة المستحقة لتلك الغرفة. +* **الجمع على الصناديق:** نستخدم رمز الجمع (\(\sum_(j=1)^m\)) لإضافة مبالغ الزكاة المحسوبة لكل صندوق داخل الغرفة. هذا يعطينا إجمالي الزكاة المستحقة للغرفة بأكملها. +* **تاريخ الزكاة لكل صندوق:** يأخذ المصطلح (\(\sum_(i=1)^(n-1) Z_(r,j,i)\)) في الاعتبار تاريخ الزكاة لكل صندوق على حدة. هذا يضمن أننا نحسب الزكاة فقط على الرصيد المتبقي في كل صندوق بعد خصم مدفوعات الزكاة السابقة. + +**التنفيذ العملي:** + +لتنفيذ هذه الصيغة المعدلة، عادة ما تتبع هذه الخطوات: + +1. **تحديد الغرف/الحسابات المؤهلة:** تحديد الغرف/الحسابات التي تستوفي معايير الزكاة (مثل الحد الأدنى للثروة). +2. **حساب الزكاة لكل صندوق:** لكل صندوق في غرفة مؤهلة، احسب الزكاة المستحقة بناءً على رأس المال الأولي ومدفوعات الزكاة السابقة. +3. **تجميع الزكاة لكل غرفة:** اجمع مبالغ الزكاة لجميع الصناديق داخل الغرفة للحصول على إجمالي الزكاة المستحقة لتلك الغرفة. +4. **كرر لجميع الغرف:** كرر الخطوات 2 و 3 لجميع الغرف المؤهلة لتحديد إجمالي التزام الزكاة. + +**اعتبارات إضافية:** + +* **توقيت المعاملات:** تفترض الصيغة أن جميع المعاملات تتم في بداية السنة. إذا حدثت معاملات على مدار السنة، فقد تحتاج إلى تعديل الصيغة لمراعاة التوقيت. +* **أنواع الأصول:** تفترض الصيغة أن جميع الأصول تخضع لنفس معدل الزكاة. إذا كان لديك أنواع مختلفة من الأصول بمعدلات زكاة متفاوتة، فستحتاج إلى حساب الزكاة بشكل منفصل لكل نوع من الأصول. + +من خلال دمج هذه التعديلات والاعتبارات، يمكنك إنشاء نظام حساب زكاة أكثر شمولاً يعكس بدقة هيكل حساباتك ومعاملاتك. + +**أسعار صرف الغرف** + +بالتأكيد! لدمج أسعار الصرف في صيغة الزكاة لعملات مختلفة داخل كل غرفة (حساب)، يمكننا إدخال معلمة إضافية لمراعاة تحويل العملة. + +### صيغة الزكاة المحسنة بأسعار الصرف: + +```math +Z_(الغرفة r, السنة n) = [ \sum_(j=1)^m (P_(r,j) × ER_(r,j) - \sum_(i=1)^(n-1) Z_(r,j,i)) ] × Z +``` + +حيث: + +* \( Z_(الغرفة r, السنة n) \): الزكاة للغرفة _r_ في السنة _n_ +* \( P_(r,j) \): رأس المال الأولي في الصندوق _j_ من الغرفة _r_ +* \( ER_(r,j) \): سعر الصرف للعملة في الصندوق _j_ من الغرفة _r_ (بالنسبة إلى العملة الأساسية المستخدمة لحساب الزكاة) +* \( \sum_(j=1)^m \): الجمع على جميع الصناديق (j = 1 إلى m) في الغرفة _r_ +* \( \sum_{i=1}^{n-1} Z_{r,j,i} \): مجموع الزكاة المدفوعة في السنوات السابقة للصندوق _j_ في الغرفة _r_ (من السنة 1 إلى السنة n-1) +* \( Z \): معدل الزكاة (عادة 2.5%) + +### شرح تعديل سعر الصرف: + +تتيح لنا إضافة (ER_(r,j)) تحويل رأس المال الأولي في كل صندوق إلى عملة أساسية مشتركة. يعد هذا ضروريًا عند التعامل مع عملات متعددة داخل حسابات مختلفة. بضرب رأس المال الأولي (P_(r,j)) في سعر الصرف المقابل (ER_(r,j))، نضمن أن جميع المبالغ معبر عنها بنفس العملة لحساب الزكاة بشكل متسق. + +### التنفيذ العملي: + +1. **تحديد العملة الأساسية:** اختيار عملة أساسية لحساب الزكاة (مثل العملة المحلية أو عملة دولية مستقرة). +2. **الحصول على أسعار الصرف:** جمع أسعار الصرف لجميع العملات الموجودة في الصناديق / المعاملات المختلفة داخل كل غرفة / حساب. +3. **تحويل رأس المال إلى العملة الأساسية:** ضرب رأس المال الأولي في كل صندوق بسعر الصرف المقابل لتحويله إلى العملة الأساسية. +4. **تطبيق الصيغة المعدلة:** استخدام صيغة الزكاة المحسنة لحساب الزكاة المستحقة لكل صندوق، ثم تجميع المبالغ لكل غرفة، وأخيرًا لجميع الغرف المؤهلة. + +### مثال: + +لنفترض أن لديك غرفة (حساب) بصندوقين: + +* **الصندوق 1:** 5000 دولار أمريكي (سعر الصرف إلى العملة الأساسية: 3.75) +* **الصندوق 2:** 2000 يورو (سعر الصرف إلى العملة الأساسية: 4.20) + +بعد التحويل إلى العملة الأساسية، يصبح رأس المال: + +* **الصندوق 1:** 5000 دولار أمريكي × 3.75 = 18750 وحدة عملة أساسية +* **الصندوق 2:** 2000 يورو × 4.20 = 8400 وحدة عملة أساسية + +ثم ستطبق صيغة الزكاة المعدلة على هذه المبالغ المحولة، إلى جانب أي مدفوعات زكاة سابقة، لتحديد الزكاة المستحقة لتلك الغرفة. + +### اعتبارات هامة: + +* **تقلبات أسعار الصرف:** يمكن أن تتغير أسعار الصرف بمرور الوقت. اختر إطارًا زمنيًا مناسبًا للحصول على أسعار الصرف (مثل سعر الصرف في بداية سنة الزكاة). +* **الزكاة على مكاسب صرف العملات:** إذا كان لديك مكاسب كبيرة من صرف العملات، فقد تحتاج إلى استشارة عالم لديه معرفة لتحديد ما إذا كانت الزكاة مستحقة على تلك المكاسب. + +من خلال دمج أسعار الصرف في صيغة الزكاة، يمكنك ضمان حساب دقيق وعادل لالتزامات الزكاة للأفراد والمؤسسات التي تحتفظ بأصول بعملات متعددة. + + +**استنتاج** + +توفر صيغة الزكاة، كما هو موضح في LaTeX، طريقة موجزة وصارمة رياضيًا لحساب التزامات الزكاة. تتماشى هذه الصيغة مع مبدأ أن الزكاة هي عملية مستمرة لتنقية وإعادة توزيع الثروة، بهدف تقليل التفاوت في الثروة وتخفيف حدة الفقر داخل المجتمع المسلم. من خلال فهم وتطبيق هذه الصيغة، يمكن للأفراد والمؤسسات ضمان الوفاء بالتزامات الزكاة الخاصة بهم بدقة والمساهمة في الصالح العام للمجتمع. +
\ No newline at end of file diff --git a/docs/mathematics.md b/docs/mathematics.md new file mode 100644 index 0000000..8e24650 --- /dev/null +++ b/docs/mathematics.md @@ -0,0 +1,145 @@ +# The Zakat Formula: A Mathematical Representation of Islamic Charity + +Zakat, one of the Five Pillars of Islam, is a mandatory form of charity for Muslims who meet specific wealth criteria. It serves as a means of purifying one's wealth and redistributing it to those in need. While the principles of Zakat are well-established, the calculation of the amount due can vary based on the type of assets and their value according to their exchange rates on Zakat time. + +This paper focuses on a specific mathematical representation of the Zakat formula using LaTeX, a typesetting system widely used for scientific and mathematical documents. + +### The Zakat Formula + +The Zakat formula can be expressed using the following mathematical equation: +$Z_{\text{year } n} = \left[ P - \sum_{i=1}^{n-1} Z_{\text{year } i} \right] \times Z$ + +Where: + + * ( $Z_{\text{year } n}$ ): Zakat for the year n (the amount due in a specific year) + +* ( P ): Initial principal (the original amount of wealth subject to Zakat) + + * ( $\sum_{i=1}^{n-1} Z_{\text{year } i}$ ): Sum of Zakat paid in previous years (from the first year to the year before the current year, i.e., n - 1) + + * ( Z ): Zakat rate (typically 2.5% of the wealth exceeding a certain threshold) + +**Understanding the Formula** + +The formula's core idea is to calculate Zakat for a given year based on the remaining wealth after deducting the Zakat paid in previous years. This approach acknowledges that Zakat purifies wealth over time, and the amount payable may decrease annually if the wealth remains relatively stable. + +The summation symbol ( $\sum_{i=1}^{n-1}$ ) represents the cumulative Zakat paid from the first year (i = 1) to the year preceding the current year (n - 1). By subtracting this cumulative Zakat from the initial principal (P), we obtain the remaining wealth subject to Zakat in the current year (n). + +Multiplying this remaining wealth by the Zakat rate (Z) gives us the Zakat amount due for the year. + +**Example** + +Let's illustrate the formula with an example. Suppose a person has an initial wealth of $100,000, and the Zakat rate is 2.5%. In the first year, the Zakat due would be: + +$Z_{\text{year } 1} = (100,000 - 0) \times 0.025 = 2,500$ + +In the second year, the Zakat due would be: +$Z_{\text{year } 2} = (100,000 - 2,500) \times 0.025 = 2,437.50$ + +This process continues for each subsequent year, with the Zakat amount decreasing gradually as the remaining wealth shrinks. + + +### Rooms & Boxes Methodology + +To adapt the Zakat formula for a scenario where transactions are stored in boxes within rooms (analogous to accounts), we need to consider the following modification. + +Modified Zakat Formula: + +$Z_{\text{room } r, \text{ year } n} = \left[ \sum_{j=1}^{m} (P_{r,j} - \sum_{i=1}^{n-1} Z_{r,j,i}) \right] \times Z$ + +Where: + + * ( $Z_{\text{room } r, \text{ year } n}$ ): Zakat for room r in year n + + * ( $P_{r,j}$ ): Initial principal in box j of room r + + * ( $\sum_{j=1}^{m}$ ): Summation over all boxes (j = 1 to m) in room r + + * ( $\sum_{i=1}^{n-1} Z_{r,j,i}$ ): Sum of Zakat paid in previous years for box j in room r (from year 1 to year n-1) + + * ( Z ): Zakat rate (typically 2.5%) + +**Explanation of Modifications:** + + * Room Index (r): The formula now includes an index 'r' to represent different rooms (accounts). This allows for calculating Zakat for each room separately. + + * Box Index (j): An index 'j' is introduced to represent different boxes (transactions) within each room. We iterate over all boxes in a room to calculate the total Zakat due for that room. + + * Summation over Boxes: We use the summation symbol ( $\sum_{j=1}^{m}$ ) to add up the Zakat amounts calculated for each box within a room. This gives us the total Zakat due for the entire room. + + * Zakat History per Box: The term ( $\sum_{i=1}^{n-1} Z_{r,j,i}$ ) accounts for the Zakat history of each box individually. This ensures that we only calculate Zakat on the remaining balance in each box after deducting previous Zakat payments. + +**Practical Implementation:** + +To implement this modified formula, you would typically follow these steps: +* Identify Eligible Rooms/Accounts: Determine which rooms/accounts meet the criteria for Zakat (e.g., minimum wealth threshold). + + * Calculate Zakat per Box: For each box in an eligible room, calculate the Zakat due based on the initial principal and previous Zakat payments. + + * Aggregate Zakat per Room: Sum up the Zakat amounts for all boxes within a room to get the total Zakat due for that room. + + * Repeat for All Rooms: Repeat steps 2 and 3 for all eligible rooms to determine the overall Zakat obligation. + +**Additional Considerations:** + + * Timing of Transactions: The formula assumes that all transactions are made at the beginning of the year. If transactions occur throughout the year, you may need to adjust the formula to account for the timing. + + * Types of Assets: The formula assumes that all assets are subject to the same Zakat rate. If you have different types of assets with varying Zakat rates, you'll need to calculate Zakat separately for each asset type. + +By incorporating these modifications and considerations, you can create a more comprehensive Zakat calculation system that accurately reflects the structure of your accounts and transactions. + +**Rooms Exchange Rates** + +Absolutely! To incorporate exchange rates into the Zakat formula for different currencies within each room (account), we can introduce an additional parameter to account for currency conversion. + +### Enhanced Zakat Formula with Exchange Rates: + +```math +Z_{\text{room } r, \text{ year } n} = \left[ \sum_{j=1}^{m} (P_{r,j} \times ER_{r,j} - \sum_{i=1}^{n-1} Z_{r,j,i}) \right] \times Z +``` + +Where: + +* \( Z_{\text{room } r, \text{ year } n} \): Zakat for room _r_ in year _n_ +* \( P_{r,j} \): Initial principal in box _j_ of room _r_ +* \( ER_{r,j} \): Exchange rate for the currency in box _j_ of room _r_ (relative to the base currency used for Zakat calculation) +* \( \sum_{j=1}^{m} \): Summation over all boxes (j = 1 to m) in room _r_ +* \( \sum_{i=1}^{n-1} Z_{r,j,i} \): Sum of Zakat paid in previous years for box _j_ in room _r_ (from year 1 to year n-1) +* \( Z \): Zakat rate (typically 2.5%) + +### Explanation of the Exchange Rate Modification: + +The addition of \( ER_{r,j} \) allows us to convert the initial principal in each box to a common base currency. This is essential when dealing with multiple currencies within different accounts. By multiplying the initial principal (\( P_{r,j} \)) by the corresponding exchange rate (\( ER_{r,j} \)), we ensure that all amounts are expressed in the same currency for consistent Zakat calculation. + +### Practical Implementation: + +1. **Determine Base Currency:** Choose a base currency for Zakat calculation (e.g., the local currency or a stable international currency). +2. **Obtain Exchange Rates:** Gather the exchange rates for all currencies present in the different boxes/transactions within each room/account. +3. **Convert Principals to Base Currency:** Multiply the initial principal in each box by its corresponding exchange rate to convert it to the base currency. +4. **Apply the Modified Formula:** Use the enhanced Zakat formula to calculate the Zakat due for each box, then aggregate the amounts for each room, and finally, for all eligible rooms. + +### Example: + +Suppose you have a room (account) with two boxes: + +* **Box 1:** $5,000 USD (exchange rate to base currency: 3.75) +* **Box 2:** €2,000 EUR (exchange rate to base currency: 4.20) + +After converting to the base currency, the principals become: + +* **Box 1:** 5,000 USD * 3.75 = 18,750 base currency units +* **Box 2:** 2,000 EUR * 4.20 = 8,400 base currency units + +You would then apply the modified Zakat formula to these converted amounts, along with any previous Zakat payments, to determine the Zakat due for that room. + +### Important Considerations: + +* **Exchange Rate Fluctuations:** Exchange rates can change over time. Choose an appropriate time frame for obtaining exchange rates (e.g., the exchange rate at the beginning of the Zakat year). +* **Zakat on Currency Exchange Gains:** If you have significant gains from currency exchange, you may need to consult with a knowledgeable scholar to determine if Zakat is due on those gains. + +By incorporating exchange rates into the Zakat formula, you ensure accurate and fair calculation of Zakat obligations for individuals and institutions holding assets in multiple currencies. + + +**Conclusion** + +The Zakat formula, as expressed in LaTeX, provides a concise and mathematically rigorous way to calculate Zakat obligations. This formula aligns with the principle that Zakat is a continuous process of purification and redistribution of wealth, aiming to reduce wealth disparities and alleviate poverty within the Muslim community. By understanding and applying this formula, individuals and institutions can ensure that they fulfill their Zakat obligations accurately and contribute to the greater good of society.