عرض مشاركة واحدة
منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
قديم 24-02-2012, 03:50 PM   #54

deathpain

devkemo

الصورة الرمزية deathpain

 
تاريخ التسجيل: Dec 2010
كلية: كلية الحاسبات وتقنية المعلومات
التخصص: Computer Science
نوع الدراسة: إنتظام
المستوى: الثامن
البلد: جــــدة
الجنس: ذكر
المشاركات: 770
افتراضي رد: }{ تعالو نفهم بعض الsheet }{....برمجة 2

المشاركة الأصلية كتبت بواسطة محبة أم المؤمنين عائشة مشاهدة المشاركة
deathpain ياليت تفهمني كيف اسوي matrix Inverse
من نوع 3*3 انا اللي مو عارفتة خطوات طريقة حسابها عشان اسو يها في كود
يعني اول احسب دلتا Aواش كمان وعلى العموم الله يوفقك على مساعدتك لنا
كود PHP:
The inverse of a square matrix A is denoted A-1such that A×A-Iwhere I is the identity matrix with all1’s on the diagonal and 0 on all other cells
The inverse of matrix  , for exampleis  
 
that is

 
 
 
The inverse of a 3 × 3 matrix 
 
can be obtained using the following formula 
if  :
 
 
 
 .
 
Implement the following function to obtain an inverse of the matrix:
 
public static 
double[][] inverse(double[][] A)
 
Write a test program that prompts the user to enter  ,  ,  ,  ,  ,  ,  ,  ,   for a matrix and displays its inverse matrixHere are the sample runs:
 
 
Sample 1
Enter a11
a12a13a21a22a23a31a32a331 2 1 2 3 1 4 5 3
-2 0.5 0.5  1 0.5 -0.5  1 -1.5 0.5 
أولاً هذا السؤال ما دخل مزاجي لأنه فوق مستوانا جميعاً ويجيب المرض وإحنا بالعافية نمشي في الرياضيات ( تكلم عن نفسك نقرتين لعرض الصورة في صفحة مستقلة
هناك 3 أشياء رئيسية يجب حسابها في السؤال هذا حتى نجد مقلوب المصفوفة،،
أول شيء لازم تحسبي محددات المصفوفة determinant ،،
قانونه من الشكل الموجود في نفس السؤال :
كود PHP:
double determinant = array[0][0]*(array[1][1]*array[2][2]-array[2][1]*array[1][2])
                        -array[
0][1]*(array[1][0]*array[2][2]-array[1][2]*array[2][0])
                        +array[
0][2]*(array[1][0]*array[2][1]-array[1][1]*array[2][0]); 
ثاني شيء نحسب محددات مقلوب المصفوفة inverse determinant وهيا حسب السؤال بالقانون التالي:
كود PHP:
double invdet 1/determinant
وأخيراً حساب المقلوب حق المصفوفة حسب الشكل الموضح في السؤال:
كود PHP:
array2[0][0] =  (A[1][1]*A[2][2]-A[2][1]*A[1][2])*invdet;
array2[0][1] = -(A[0][1]*A[2][2]-A[0][2]*A[2][1])*invdet;
array2[0][2] =  (A[0][1]*A[1][2]-A[0][2]*A[1][1])*invdet;
array2[1][0] = -(A[1][0]*A[2][2]-A[1][2]*A[2][0])*invdet;
array2[1][1] =  (A[0][0]*A[2][2]-A[0][2]*A[2][0])*invdet;
array2[1][2] = -(A[0][0]*A[1][2]-A[1][0]*A[0][2])*invdet;
array2[2][0] =  (A[1][0]*A[2][1]-A[2][0]*A[1][1])*invdet;
array2[2][1] = -(A[0][0]*A[2][1]-A[2][0]*A[0][1])*invdet;
array2[2][2] =  (A[0][0]*A[1][1]-A[1][0]*A[0][1])*invdet
خطوات حل السؤال:
1- نقوم بإنشاء مصفوفة ثنائية الأبعاد 2D Array وندخل لها قيم داخل فور نستد لوب بواسطة السكانر:
كود PHP:
double[][] array = new double[3][3];
for (
int i 03i++)
for (
int j 03j++)
array[
i][j] = input.nextDouble(); 
2- نقوم بإنشاء ميثود تستقبل المصفوفة وتقوم بإيجاد مقلوبها وننشيء داخل الميثود مصفوفة ثانية من نفس الحجم:
كود PHP:
public static double[][] inverse(double[][] array) {
double[][] array2 = new double[3][3]; 
3- نضع القوانين التالية حسب الترتيب داخل الميثود:
أولاً نوجد الـdeterminant ثم inverse determinant ثم مقلوب المصفوفة باستخدام القوانين الموضحة أعلاه ،،

4- نسوي return للمصفوفة الثانية array2 في آخر الميثود ،،

5- في المين ميثود نسوي مصفوفة ثانية غير المصفوفة إلي أرسلها عشان نسوي كول للميثود داخلها:
كود PHP:
double[][] result inverse(A); 
6- وأخيراً نسوي فور نستد لوب لطباعة مقلوب المصفوفة ،،

وبالتوفيق

 

توقيع deathpain  

 



في حال وجود أي استفسار أو سؤال حول الجافا CPCS202 الرجاء كتابة استفسارك مباشرة في موضوعي هنا:

تطبيق - معدلي الجامعي - التطبيق الأسهل لحساب المعدل الجامعي
http://skaau.com/vb/showthread.php?t=745520

 

deathpain غير متواجد حالياً   رد مع اقتباس