المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : التكاملات والتفاضلات ...



واحد مسكين
01-01-2005, 11:38 AM
السلام عليكم ورحمة الله وبركاته :
أما بعد :
كيف استخدم التكاملات والتفاضلات في عمليات البرمجة ؟! يعني أنا أبرمج بلغة C++ هل هنالك أوامر تقوم بعملية التكامل أو التفاضل أو النهايات Lim ؟!

واحد مسكين .

2501
01-01-2005, 06:48 PM
لم أفهم شيء :(

واحد مسكين
01-01-2005, 08:01 PM
لم أفهم شيء :(يعني هل توجد أوامر في لغة C++ مثل التكامل و التفاضل ؟!
وكيف أستخدمها ؟!

2501
02-01-2005, 11:26 AM
"التكامل و التفاضل "
this is the only part that i didnt understand in ur first and second post...

TeamFlex
02-01-2005, 11:59 AM
حتى انا ما فهمت معنى التفاضل و التكامل

كانها معادلات رياضية اخذناها باخر سنة ثانوي..!

واحد مسكين
02-01-2005, 05:28 PM
نعم هي معادلات رياضية .. ولكن كيف أكتبها في الـ C++ ؟!

يعني أريد من الكمبيوتر نفسه أن يحل معادلة أنا أصممها .
أرجو أني وضحت المطلوب .
واحد مسكين .

2501
02-01-2005, 10:15 PM
مختار الصحاح مالي ضاع...فلو عندك واحد حط لنا مرادفات للتكامل و التفاضل...

r u talking about comparisions? finding min and max?

i am still unable to understand ur question...give us a sample...

:D

TeamFlex
03-01-2005, 06:56 AM
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)

هذا حلها على ما اتذكر..

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

واحد مسكين
03-01-2005, 08:12 PM
يبي برنامج يحل له نوع من المعادلات الرياضية
مع أني لا أريد أن أعمل الطريقة المطوّلة في التكاملات ، يعني مثلاً أستطيع أن أعمل دالة عملها مثل عمل التكامل أو مثل الإشتقاق .. يعني مثلاً :
عندنا الدالة 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 ونفس الجذر التربيعي .

بصراحة يمكنني أن أعمل هذه الطرق كلها ولكن المشكلة على حسب نفس المعادلة المعطاة ، يعني قد تجد معادلات ملفوفة لف محكم ، وأنا صعب عليّ أني أصمم برنامج وأجعل كل حركات اللف والدوران فيها :wow: ، وقلت في نفسي ممكن توجد دوال جاهزة في لغة C++ وشاملة على كل حركات المعادلات بدلاً من أن أصممها بنفسي ، ولكن الحاصل أنه لازم من التعب شوي :tongue2: .



يبي برنامج يحل له نوع من المعادلات الرياضية
ومثال على المسئلة

x^2 (اكس تربيع) حلها بالتكامل يصير
2x^1 ...
( 2 اكس اس 1)

هذا حلها على ما اتذكر..

واحد مسكين
لازم نعرف سير العملية الحسابية حتى نقدر نصممها لك
اللهم اذا في كود واحد يعطيك النتاج مباشرةالحل السابق الذي ذكرته فيه خطأ بسيط :o لأنك قمت بعملية إشتقاق بدلاً من التكامل وحلّها :
f x^2 dx = x^3/3 أي بتطبيق قاعدة : x^n+1/n+1 يعني : x أس n +1 على n +1 .

بصراحة لا يوجد كود واحد يعطيني نتائج مباشرة في كل المعادلات ، فكما ذكرت سابقاً يلزمني معرفة جميع حركات الدوال الممكن أن تُصاغ ، فقد تجد معادلة فيها أكثر من دوال في البسط والمقام فهذا يجعل المسئلة أشد تعقيداً وحلها ممل بالطرق السابقة التي ذكرتها ولكن هذا لا يعني أنه صعب حلها ;) ، ولكن توجد قواعد أخرى تسهّل لنا حل تلك الدوال المعقدة .

الظاهر أني قلبت الموضوع إلى محاضرة تفاضل وتكامل :D :D على العموم متأسفين :( .

واحد مسكين .

ibn_alqalam
04-01-2005, 01:55 AM
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.

واحد مسكين
04-01-2005, 05:44 AM
حبذا لو تكتب بالعربي لأني لا أعرف إنجليزي :( .

شكراً لك .

mbyadd
09-01-2005, 03:28 AM
ما أظن إنه في توابع تكامل في المكتبات الرئيسية لازم تدور على مكتبات رياضية في النت لعل وعسى أو تعمل كل شي لحالك

eslamfekry
09-01-2005, 04:27 AM
السلام عليكم

إذا أردت مجرد حساب التفاضل والتكامل من خلال الكمبيوتر بعمنى أنك تريد حساب ناتج عملية معينة
فهناك الكثير من البرامج الهندسية التى تقوم بذلك وأشهرها الmatlab
بل إن هناك بعض الالات الحاسبة التى تقوم بنفس العملية

أما إذا أردت أن تضعها خلال كود معين فى برنامجك فالموضوع ليس بالسهولة التى تتخيلها ولكنه ليس مستحيلا
بمعنى أنك يجب تطبيق المعنى الفيزيائى للتفاضل أو للتكامل لكى تصل إلى الناتج
فالتكامل مثلا هو عبارة عن المساحة تحت المنحنى المراد إيجاد التكامل له على الفترة المحددة بحدود التكامل
لذلك عليك أن تعوض فى المعادلة بقيمة معينة تزيد من بداية الفترة وحتى نهايتها بمقدار صغير جدا
مثال


for (i = 0;i<100;i++)
{
x=i;
y=3*x*x;
Result =Resutl + y
}



هذا المثال يحسب لك ناتج تكامل الدالة
ص= 3 س تربيع خلال الفترة من صفر إلى 100
ولكن الناتج لن يكون دقيق لانى قمت بزيادة المتغير i بواجد صحيح فى كل مرة وهذه تعتبر قيمة كبيرة فيجب أن تجعلها قيمة أصغر مايمكن
ونفس الموضوع بالنسبة للتفاضل فيجب أيضا استخدام المعنى الفيزيائى له مع العلم بأنى التفاضل لدالة هو عبارة عن زاوية ميل المماس للمنحنى الذى يمثل الدالة عند النقطة التى تقوم بأخذ التفاضل عندها

واحد مسكين
28-01-2005, 02:32 PM
وعليكم السلام ورحمة الله وبركاته :
شكراً لكم على هذا الشرح ، المشكلة من ناحية الأعداد التي بفاصلة .. يعني ما أدري ما إذا كنت أستطيع أن أستخدم أصغر رقم ممكن في هذه العملية أم لا ؟!

واحد مسكين .

واحد مسكين
28-01-2005, 02:38 PM
وعليكم السلام ورحمة الله وبركاته :
شكراً لكم على هذا الشرح ، المشكلة من ناحية الأعداد التي بفاصلة .. يعني ما أدري ما إذا كنت أستطيع أن أستخدم أصغر رقم ممكن في هذه العملية أم لا ؟!

واحد مسكين .

do4you
29-01-2005, 03:23 AM
السلام عليكم اعذروني با اخوان لم اقراء ردودكم كلها لكن ردا على الاخ واحد مسكين

بالنسبه للموضوع المطروح التكامل والتفاضل
تستطيع حل كل مشاكل مادة الرياضيات دون مبالغه باستخدام الكمبيوتر لكن اذا كنت اولا قد درست علوم الكمبيوتر وبالنسبه لسؤالك نعم تستطيع عمل البرنامج المطلوب لكن عليك اولا تحديد حاضنه البيانات التي تريدها او التي تناسب مشكلتك (data structer)

محمود خالد محمد
31-01-2005, 12:52 PM
السلام عليكم و رحمة الله



يا اخي العزيز استخدم التفاضل النوني للوصول لاي درجة تفاضلية


مثال:

س = ص^(ك)



فان التفاضل النوني لها





س(ن)=(مضروب (ن) ) ص^(ك - ن ) عند : ك > صفر

ك>ن









اما بالنسبة للاكواد فاني لا استطيع نفعك لاني مبرمج VB