السلام عليكم ورحمة الله وبركاته :
أما بعد :
كيف استخدم التكاملات والتفاضلات في عمليات البرمجة ؟! يعني أنا أبرمج بلغة C++ هل هنالك أوامر تقوم بعملية التكامل أو التفاضل أو النهايات Lim ؟!
واحد مسكين .
السلام عليكم ورحمة الله وبركاته :
أما بعد :
كيف استخدم التكاملات والتفاضلات في عمليات البرمجة ؟! يعني أنا أبرمج بلغة C++ هل هنالك أوامر تقوم بعملية التكامل أو التفاضل أو النهايات Lim ؟!
واحد مسكين .
لم أفهم شيء![]()
i found a job...
يعني هل توجد أوامر في لغة C++ مثل التكامل و التفاضل ؟!المشاركة الأصلية كتبت بواسطة 2501
وكيف أستخدمها ؟!
"التكامل و التفاضل "
this is the only part that i didnt understand in ur first and second post...
i found a job...
حتى انا ما فهمت معنى التفاضل و التكامل
كانها معادلات رياضية اخذناها باخر سنة ثانوي..!
نعم هي معادلات رياضية .. ولكن كيف أكتبها في الـ C++ ؟!
يعني أريد من الكمبيوتر نفسه أن يحل معادلة أنا أصممها .
أرجو أني وضحت المطلوب .
واحد مسكين .
مختار الصحاح مالي ضاع...فلو عندك واحد حط لنا مرادفات للتكامل و التفاضل...
r u talking about comparisions? finding min and max?
i am still unable to understand ur question...give us a sample...
![]()
i found a job...
يبي برنامج يحل له نوع من المعادلات الرياضيةr u talking about comparisions? finding min and max?
i am still unable to understand ur question...give us a sample...
ومثال على المسئلة
x^2 (اكس تربيع) حلها بالتكامل يصير
2x^1 ...
( 2 اكس اس 1)
هذا حلها على ما اتذكر..
واحد مسكين
لازم نعرف سير العملية الحسابية حتى نقدر نصممها لك
اللهم اذا في كود واحد يعطيك النتاج مباشرة
مع أني لا أريد أن أعمل الطريقة المطوّلة في التكاملات ، يعني مثلاً أستطيع أن أعمل دالة عملها مثل عمل التكامل أو مثل الإشتقاق .. يعني مثلاً :المشاركة الأصلية كتبت بواسطة TeamFlex
عندنا الدالة f(x)=x^2 ، فلو أردت أن أشتقها لعملت الأمر التالي :
f'(x)=2x^2-1 ، أي أني قمت بتطبيق القاعدة ( f'(x)=nx^n-1 ) وحيث n عدد ثابت ، وهذا المثال شامل لأي مثال يسير على نفس القاعدة ، ولكن هنالك الكثير من القواعد التي لا تسير على نفس النمط وقد يجعلها مطولة يعني عندك مثلاً : f(x)=(2x)^1/2 أي 2x تحت الجذر التربيعي ، فلو قمنا بتطبيق العملية السابقة ( القاعدة السابقة ) لوجدنا أن العملية أصبحت صعبة ، ولكن هنالك قاعدة سهلة وهي خاصة بالجذر التربيعي f'(x)=2/2(2x)1/2 أي أننا عملنا باشتقاق ما تحت الجذر وجعلناه في البسط وضربنا المقام في 2 ونفس الجذر التربيعي .
بصراحة يمكنني أن أعمل هذه الطرق كلها ولكن المشكلة على حسب نفس المعادلة المعطاة ، يعني قد تجد معادلات ملفوفة لف محكم ، وأنا صعب عليّ أني أصمم برنامج وأجعل كل حركات اللف والدوران فيها، وقلت في نفسي ممكن توجد دوال جاهزة في لغة C++ وشاملة على كل حركات المعادلات بدلاً من أن أصممها بنفسي ، ولكن الحاصل أنه لازم من التعب شوي
.
الحل السابق الذي ذكرته فيه خطأ بسيطالمشاركة الأصلية كتبت بواسطة TeamFlex
لأنك قمت بعملية إشتقاق بدلاً من التكامل وحلّها :
f x^2 dx = x^3/3 أي بتطبيق قاعدة : x^n+1/n+1 يعني : x أس n +1 على n +1 .
بصراحة لا يوجد كود واحد يعطيني نتائج مباشرة في كل المعادلات ، فكما ذكرت سابقاً يلزمني معرفة جميع حركات الدوال الممكن أن تُصاغ ، فقد تجد معادلة فيها أكثر من دوال في البسط والمقام فهذا يجعل المسئلة أشد تعقيداً وحلها ممل بالطرق السابقة التي ذكرتها ولكن هذا لا يعني أنه صعب حلها، ولكن توجد قواعد أخرى تسهّل لنا حل تلك الدوال المعقدة .
الظاهر أني قلبت الموضوع إلى محاضرة تفاضل وتكامل![]()
على العموم متأسفين
.
واحد مسكين .
Ahleen Akh :-)
/*
Some routines for creating and manipulating polynomials;
written for clarrity, if we wanted speed these could've been done with
matrices much more efficiently.
Ibn Al Qalam (ibn_alqalam@yahoo.com)
Public Domain.
دوال للتعامل مع للمعادلات ذوات الحدود. هذه الخوارزميات لسن بالامثل من ناحية الكفاءة والسرعة،
ولكنها تفي بالغرض كمثال بسيط.
اعتذر عن ركاكة عبيتي، اكتب الي ببريدي الالكتروني اذا ما عند اي اسالة.
ابن القلم.
*/
#include <stdio.h>
#include <math.h>
// the "term" data structure; represents a term of a polynomial
struct term {
int coeff; // or double, or float, depending on precision
int power; // the same as above
struct term *next;
};
typedef struct term term;
// a utility function to allocate memory for each term of the polynomial
term *make_term (int coeff, int power, term *next)
{
term *result = (term *) malloc (sizeof (term));
result->coeff = coeff;
result->power = power;
result->next = next;
return result;
}
// coefficients [] contains all the coefficients of the polynomials in
// normal form. If a term does no exist in the polynomial, you will need to
// put a zero in here. For example, ax^3 + bx + c, doesn't have the term
// x^2, so you will have to write at as ax^3 + 0x^2 + bx + c. Also note
// that c is a constant and can be written as cx^0.
// rank: the highest power of the polynomial.
// output is a linked list of successive terms of the polynomial, the head of
// which is the leading term (one with the highest power) and the end
// term is just the NULL term with coefficient and power set to zero and
// the next pointer to NULL.
term *make_polynomial (int coefficients[], int rank)
{
int i, j = 0;
// make the "end marker" term.
term *akhir = make_term (0, 0, NULL);
term *temp = make_term (0, 0, NULL);
for (i = rank; i >= 0; i--, j++) {
term *new_term = make_term (coefficients[i], j, temp);
temp = new_term;
}
return temp;
}
// testing
int main ()
{
term *poly;
// 5555x^3 + 555x^2 + 55x^1 + 5x^0
int coeffs [] = {5555, 555, 55, 5};
poly = make_polynomial (coeffs, 3);
for (; poly; poly = poly->next) {
printf("%dx^%d ", poly->coeff, poly->power);
}
}
لدينا الان كل مانحتاج لترجمة عمليات التفاضل والتكامل الى خوارزميات للعمل مع الحاسوب.
تذكر بان التعليل الرياضي يعمل مع اعداد صحيحة، او في الحالات العليا مع الاعداد المركبة. من المؤسف
ان الحاسوب لا يستطيع العمل الا مع نسبة محددة من الاعداد الصحيحة، الاعداد المتكررة مثلا ك PI ، اذا
لم تقارب الى عدد صححيح، يستحيل العمل معها مستخدمين فقط ال C او C++.
Simple polynomial differentiation.
Algorithm:
A polynomial of the form
p(x) = a_1x^n + a_2x^n-1 + ... + a_mx^0
Where a_1, a_2, ..., a_m are constants
differentiates to:
dy/dx a_1x^n + dy/dx a_2x^n-1 + ... + dy/dx a_mx^0
differentiate each term seperately and add all the derivates.
For each term dy/dx a_mx^n = (n)(a_m)(x^n-1)
The parenthesis are for multiplication.
Thus:
term *differentiate_term (term *term)
{
term->coeff = term->power*term->coeff;
term->power = term->power - 1;
return term;
}
For differentiate_polynomial() just call the above on succesive terms
This is the *simplest* case; you will have to account for accuracy, support transcendtal
functions, take care of a slew of numerical computation problems and god knows what. But
still, this is the simples case. I recommend you get a mathematics package like GNU Octave
or learn Scheme or who knows what.
حبذا لو تكتب بالعربي لأني لا أعرف إنجليزي.
شكراً لك .
ما أظن إنه في توابع تكامل في المكتبات الرئيسية لازم تدور على مكتبات رياضية في النت لعل وعسى أو تعمل كل شي لحالك
السلام عليكم
إذا أردت مجرد حساب التفاضل والتكامل من خلال الكمبيوتر بعمنى أنك تريد حساب ناتج عملية معينة
فهناك الكثير من البرامج الهندسية التى تقوم بذلك وأشهرها الmatlab
بل إن هناك بعض الالات الحاسبة التى تقوم بنفس العملية
أما إذا أردت أن تضعها خلال كود معين فى برنامجك فالموضوع ليس بالسهولة التى تتخيلها ولكنه ليس مستحيلا
بمعنى أنك يجب تطبيق المعنى الفيزيائى للتفاضل أو للتكامل لكى تصل إلى الناتج
فالتكامل مثلا هو عبارة عن المساحة تحت المنحنى المراد إيجاد التكامل له على الفترة المحددة بحدود التكامل
لذلك عليك أن تعوض فى المعادلة بقيمة معينة تزيد من بداية الفترة وحتى نهايتها بمقدار صغير جدا
مثال
هذا المثال يحسب لك ناتج تكامل الدالةكود:for (i = 0;i<100;i++) { x=i; y=3*x*x; Result =Resutl + y }
ص= 3 س تربيع خلال الفترة من صفر إلى 100
ولكن الناتج لن يكون دقيق لانى قمت بزيادة المتغير i بواجد صحيح فى كل مرة وهذه تعتبر قيمة كبيرة فيجب أن تجعلها قيمة أصغر مايمكن
ونفس الموضوع بالنسبة للتفاضل فيجب أيضا استخدام المعنى الفيزيائى له مع العلم بأنى التفاضل لدالة هو عبارة عن زاوية ميل المماس للمنحنى الذى يمثل الدالة عند النقطة التى تقوم بأخذ التفاضل عندها
موقع لتعليم برمجة الألعاب
http://www.gamedesigners.8m.net
وعليكم السلام ورحمة الله وبركاته :
شكراً لكم على هذا الشرح ، المشكلة من ناحية الأعداد التي بفاصلة .. يعني ما أدري ما إذا كنت أستطيع أن أستخدم أصغر رقم ممكن في هذه العملية أم لا ؟!
واحد مسكين .
وعليكم السلام ورحمة الله وبركاته :
شكراً لكم على هذا الشرح ، المشكلة من ناحية الأعداد التي بفاصلة .. يعني ما أدري ما إذا كنت أستطيع أن أستخدم أصغر رقم ممكن في هذه العملية أم لا ؟!
واحد مسكين .