حاسبة نقطة الزاوية
أدخل معاملات دالة الهدف ورؤوس منطقة الحلول الممكنة واعرف أيها يعطي أعلى قيمة: للدالة 3x + 5y على الرؤوس (0, 0) و(0, 4) و(3, 3) و(5, 0) يفوز الرأس (3, 3) بقيمة 24. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- الهدف
- 3, 5
- الرأس الأمثل
- 3, 3
- قيمة الدالة الهدف
- 24
- الفهرس
- 2
- الرؤوس المقيَّمة
- 4
تجيب حاسبة نقطة الركن عن الخطوة الأخيرة في أي تمرين برمجة خطية: إذا عُرفت معاملات دالة الهدف ونقاط ركن منطقة الجدوى، فأي رأس يُعظّم الهدف وما القيمة التي يبلغها؟ إن دالة هدف خطية فوق متعدد سطوح محدب تبلغ مثلاها دائمًا عند رأس، لذا فإن حساب الهدف عند كل نقطة ركن واختيار الأفضل ليس تقريبًا بل هو الحل الدقيق. ترسل متجه المعاملات وقائمة الرؤوس، فيحسب الطرف حاصل الضرب النقطي عند كل رأس، ويطبق قاعدة تعادل حتمية، ويعيد الرأس الفائز وقيمة هدفه وموضعه في قائمتك. يعمل خلال أجزاء من الثانية، ولا يحتفظ بأي بيانات، والشيفرة نفسها تعمل مجانًا في متصفحك على هذه الصفحة.
لماذا يقع المثل دائمًا عند نقطة ركن
تنص النظرية الأساسية للبرمجة الخطية على أنه إذا كان لبرنامج خطي حل أمثل وكانت منطقة جدواه تحوي رأسًا واحدًا على الأقل، فإن رأسًا ما يكون أمثل. فدالة الهدف الخطية تتحرك في مجموعات مستوى متوازية، ودفع هذه المجموعات في اتجاه التحسين يضغطها في النهاية على نقطة قصوى من متعدد السطوح المجدي. لهذا تقتصر طرق الكتب المدرسية — الحل البياني في متغيرين وطريقة السيمبلكس في الأبعاد الأعلى — على نقاط الركن وحدها.
وإذا كنت قد عددت رؤوس منطقة جدواك مسبقًا، فالعمل المتبقي حسابي بحت: احسب c·x عند كل رأس واختر الأكبر. هذا الطرف يفعل ذلك بالضبط، مع تحقق صارم بحيث يفشل أي رأس مشوّه أو اختلاف في الأبعاد بشكل ظاهر بدل أن يفسد نتيجتك بصمت. ولأنه يقيّم كل رأس، فهو يخبرك أيضًا بعدد المرشحين الذين قورنوا، وهو أمر مفيد عند مراجعة حل أو تدريس الطريقة خطوة بخطوة.
تجهيز الرؤوس من القيود لديك
المدخل بسيط عمدًا: مصفوفة هدف ومصفوفة رؤوس، حيث كل رأس مصفوفة أعداد بنفس طول الهدف. أما الحصول على تلك الرؤوس فمهمتك — عادة بتقاطع أزواج خطوط القيود في بعدين، أو بتشغيل خوارزمية تعداد الرؤوس في الأبعاد الأعلى. يجب أن يكون كل رأس ترسله مجديًا؛ فالطرف يثق بالقائمة التي تقدمها ولا يعيد فحص القيود لأنه لا يراها أصلًا.
والتعادل حتمي: عندما يبلغ رأسان القيمة القصوى نفسها يفوز الوارد أولًا في قائمتك، فتعيد الاستدعاءات المتكررة بالمدخل نفسه الإجابة ذاتها حرفًا بحرف.
حالات الاستخدام
إنهاء تمرين LP بياني
بعد إيجاد أركان الجدوى لمسألة بمتغيرين يدويًا، أكّد أيها يعظّم الربح دون إعادة الحساب.
التحقق المتقاطع من حلّال LP
أدخل قائمة رؤوس معدودة بشكل مستقل مع دالة الهدف في الطرف وتحقق من تطابق المثل المعلن من الحلّال.
تصحيح واجبات التحسين على نطاق واسع
أتمت المقارنة بين نقاط ركن الطالب والإجابة المرجعية، باستدعاء حتمي واحد لكل تسليم.
الأسئلة الشائعة
كم التكلفة؟
كما يعمل مجانًا في متصفحك على هذه الصفحة — فالشيفرة نفسها تنفَّذ في الحالتين.
ماذا لو بلغ عدة رؤوس القيمة القصوى نفسها؟
يفوز الأول في قائمتك. قاعدة التعادل حتمية، فالمدخل نفسه ينتج دائمًا الإجابة ذاتها.
هل يتحقق من أن رؤوسي تحقق القيود؟
لا. إنه لا يرى قيودك أصلًا — بل يثق بقائمة الرؤوس التي ترسلها. يجب إثبات الجدوى عند تعداد الأركان.
ما الأبعاد المدعومة؟
أي بعد من 1 حتى الحد الموثق، ما دام طول كل رأس مساويًا تمامًا لطول مصفوفة الهدف.
لماذا يقع الحل الأمثل في البرمجة الخطية دائمًا عند رأس؟
لأن دالة الهدف الخطية تتحسن دائمًا في اتجاه واحد، وعند دفعها إلى أبعد ما تسمح به منطقة الحلول الممكنة تصل إلى نقطة طرفية. فإذا وُجد حل أمثل وكان للمنطقة رأس، فأحد الرؤوس أمثل.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/math/corner-point \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"objective":[3,5],"vertices":[[0,0],[0,4],[3,3],[5,0]]}'const res = await fetch("https://api.kit.forhosting.com/math/corner-point", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"objective": [
3,
5
],
"vertices": [
[
0,
0
],
[
0,
4
],
[
3,
3
],
[
5,
0
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/corner-point",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"objective": [
3,
5
],
"vertices": [
[
0,
0
],
[
0,
4
],
[
3,
3
],
[
5,
0
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/corner-point", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"objective":[3,5],"vertices":[[0,0],[0,4],[3,3],[5,0]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"objective":[3,5],"vertices":[[0,0],[0,4],[3,3],[5,0]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/corner-point", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"objective": [
3,
5
],
"vertices": [
[
0,
0
],
[
0,
4
],
[
3,
3
],
[
5,
0
]
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.corner_point",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_rows | 4096 |
max_cols | 64 |
max_abs | 1000000000000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تجهيز الرؤوس من القيود لديك
يجب أن يكون كل إحداثي عددًا منتهيًا ضمن حد المقدار الموثق، وتُرفض قائمة الرؤوس الفارغة بخطأ invalid_input، إذ لا شيء يُحسَّن في منطقة جدوى بلا نقاط ركن.
قراءة النتيجة وأتمتتها
ومن الأتمتات الشائعة تصحيح واجبات الطلاب مقابل حل مرجعي، والتحقق من تطابق المثل الذي يعلنه حلّال مع تعداد مستقل للرؤوس، وتقييم نماذج جدولة أو مزج صغيرة يكون فيها تعداد الركن أرخص من نشر حلّال LP كامل. تحمل الاستجابة أربعة حقول: optimal_vertex وهي نسخة من إحداثيات الفائز، وobjective_value وهي أكبر قيمة c·x محققة، وindex وهو موضع ذلك الرأس في المصفوفة المرسلة بدءًا من الصفر، وvertices_evaluated وهو عدد المرشحين المقارَنين. ولهذا الموضع أهمية عملية لأن الرؤوس تحمل عادة تسميات في نموذجك — تشكيلة الآلات أ، المحفظة ب — فيتيح لك الموضع ربط الإجابة بنموذجك دون مقارنة إحداثيات هشة. وتنفّذ أداة التشغيل على هذه الصفحة الشيفرة نفسها مجانًا، فيمكنك التجريب تفاعليًا ولا تدفع إلا عند دمج الاستدعاء في خط معالجة بسعر $0.002 لكل طلب.
أسئلة تقنية
ماذا يحدث عند إرسال قائمة رؤوس فارغة؟
يُرفض الطلب بخطأ invalid_input ولا يُحتسب عليك: فبلا نقاط ركن لا يوجد شيء يُحسَّن.
هل يمكن التصغير بدل التعظيم؟
اعكس إشارة معاملات الهدف وقيمة objective_value المعادة: فتعظيم −c·x يكافئ تصغير c·x.