اهلا بك

الكاتب

مرحبا بكم

البحث فى المدونه

اشترك ليصلك كل جديد

احصل على كل جديد فى عالم التدوين لحظه بلحظه اشترك الان

الأحد، 1 مارس 2015

طريقة الإنكماش

 طريقة الإنكماش
matrix 
 

مصطلحات
العربية: طريقة الإنكماش
الإنجليزية: Deflation Method
الفرنسية: Méthode de déflation

المبدأ
(حالة  )
نفترض معرفة الزوج (1x1)، قيمة المميزة لأكبر معيار A ومتجهة المميزة المرتبطة(حسبة عامة بطريقة القوى). إذن يمكننا حساب 2 ،القيمة المميزة للمعيار  الأدنى مباشرة من1، بتحويل المصفوفة A إلى مصفوفةA(1)  ذات نفس القيم المميزة A إلا1  المعوض بقيمة مميزة منعدمة،ثم نطبق من جديد طريقة القوى على A(1) .

الخوارزم
نفترض معرفة الزوج (1x1)
نعتبر متجهة w بحيث 
لتكن A(1) = A - 1 x1 wT
نطبق من جديد طريقة القوى علىA(1) ،بحساب (2v2) و( v2متجهة مميزةل A(1)) ونستنتجالمتجهة المميزة لA الملائمة لصيغة:
يمكن تكرار الانكماش علىA(1) ،وهكدا.

 مثال
أحسب القيمتين المميزتين لأكبر معيار (ومتجهة المميزة المرتبطة) للمصفوفة:
نختار اعتباطيا متجهة الانطلاقة:
 
ولأول متجهة القاعدة القانونية.
حساب الانكماش: 
نحسب أول زوج قيمة /متجهة بطريقة القوى
نختار 
A(1) = A - 1 x1 wT

البرمجة
نسترجع برنامج طريقة القوى، ونكمله بالانكماش:
#include <math.h>
#include <conio.h>
#define NMAX 5
 
double al_norme_vect(double x[NMAX],int n);
void al_prod_mat_vect(double a[NMAX][NMAX],int n,double x[NMAX],double y[NMAX]);
 double vp_puissance(double a[NMAX][NMAX],int n,double x[NMAX],double eps);

main()
{
 double x[NMAX],r[NMAX],w[NMAX],v[NMAX];
 double a[NMAX][NMAX],b[NMAX][NMAX];
 double l1,l2,eps,tx;
 int i,j,n;
 clrscr();
 printf("Méthode de la Puissance avec déflation\n");
 n=4;
 a[1][1]=-183;a[1][2]=53;a[1][3]=-12;a[1][4]=28;
 a[2][1]=-392;a[2][2]=113;a[2][3]=-38;a[2][4]=65;
 a[3][1]=-192;a[3][2]=56;a[3][3]=-1;a[3][4]=25;
 a[4][1]=-538;a[4][2]=157;a[4][3]=-7;a[4][4]=71;
 printf("Matrice A\n");
 for(i=1;i<=n;i++)
 {
  for(j=1;j<=n;j++)
  printf("%12.6e ",a[i][j]);
  printf("\n");
 }
 eps=1e-13;
 printf("Les premiers itérés :\n");
 for(i=1;i<=n;i++)
 x[i]=1;
 l1=vp_puissance(a,n,x,eps);
 printf("1er couple valeur/vecteur propre (dernier itéré)\n");
 printf("lambda1 = %22.16e\n",l1);
 printf("x(1) = ");
 for(i=1;i<=n;i++)
 printf("\n %22.16e  ",x[i]);
 printf("\n");
 al_prod_mat_vect(a,n,x,r);
 for(i=1;i<=n;i++)
 r[i] -= l1*x[i];
 printf("Norme résidu = %.3e\n",al_norme_vect(r,n));
 printf("Déflation\n");
 tx=al_norme_vect(x,n);
 tx=tx*tx;
 for(i=1;i<=n;i++)
 w[i]=x[i]/tx;
 for(i=1;i<=n;i++)
 for(j=1;j<=n;j++)
 b[i][j]=a[i][j]-l1*x[i]*w[j];
 printf("Matrice A(1)\n");
 for(i=1;i<=n;i++)
 {
  for(j=1;j<=n;j++)
  printf("%12.6e ",b[i][j]);
  printf("\n");
 }
 printf("Les premiers itérés :\n");
 for(i=1;i<=n;i++)
 v[i]=1;
 l2=vp_puissance(b,n,v,eps);
 printf("2e couple valeur/vecteur propre (dernier itéré)\n");
 printf("lambda2 = %22.16e\n",l2);
 printf("v(2) = ");
 for(i=1;i<=n;i++)
 printf("\n %22.16e  ",v[i]);
 printf("\n");
 al_prod_mat_vect(b,n,v,r);
 for(i=1;i<=n;i++)
 r[i] -= l2*v[i];
 printf("Norme résidu (pour A(1)) = %.3e\n",al_norme_vect(r,n));
 tx=0.0;
 for(i=1;i<=n;i++)
 tx+=w[i]*v[i];
 tx*=l1/(l2-l1);
 printf("x(2) = ");
 for(i=1;i<=n;i++)
 {
  x[i]=v[i]+tx*x[i];
  printf("\n %22.16e  ",x[i]/x[1]);
 }
 printf("\n");
  al_prod_mat_vect(a,n,x,r);
 for(i=1;i<=n;i++)
 r[i] -= l2*x[i];
 printf("Norme résidu = %.3e\n",al_norme_vect(r,n)/x[1]);
}

نتيجة البرنامج
نسترجع إظهار طرقة القوى، ثم نطبق الانكماش
نحذف التعليقات من الدالة  vp_puissance؛ في كل كرة البرنامج يظهر :
  • المعاد l(k)
  • المعادu(k+1) 
ثم يظهر بعد ذلك الانكماش
  • آخر كرة
  • متجهة المميزة x لـ A الملائم لـ v
  •  ضابطة الباقي Ax -  x
طريقة القوى مع الانكماش
 A                المصفوفة 
-1.83000e+02  5.30000e+01 -1.20000e+01  2.80000e+01 
-3.92000e+02  1.13000e+02 -3.80000e+01  6.50000e+01 
-1.92000e+02  5.60000e+01 -1.00000e+00  2.50000e+01 
-5.38000e+02  1.57000e+02 -7.00000e+00  7.10000e+01 
الكرة الأولى
l(  1)=-1.1400e+02   u(  1)=( 1.0000e+00  2.2105e+00  9.8246e-01  2.7807e+00 )
l(  2)= 2.2807e-01   u(  2)=( 1.0000e+00  5.2692e+00  1.4231e+00 -1.7308e+00 )
l(  3)= 3.0731e+01   u(  3)=( 1.0000e+00  1.1990e+00  1.8999e+00  5.0901e+00 )
l(  4)= 2.7159e-01   u(  4)=( 1.0000e+00  7.9124e+00  1.8295e+00 -6.1060e+00 )
l(  5)= 4.3438e+01   u(  5)=( 1.0000e+00  8.2177e-01  2.2243e+00  5.9377e+00 )
l( 10)=-2.2872e-01   u( 10)=( 1.0000e+00 -9.1163e+00  2.3037e+00  2.2607e+01 )
l( 20)=-1.0548e+00   u( 20)=( 1.0000e+00 -1.4301e+00  2.2966e+00  9.7508e+00 )
l( 30)=-1.7893e+00   u( 30)=( 1.0000e+00 -5.5632e-01  2.2964e+00  8.2898e+00 )
l( 40)=-2.3874e+00   u( 40)=( 1.0000e+00 -2.4193e-01  2.2964e+00  7.7641e+00 )
l( 50)=-2.8403e+00   u( 50)=( 1.0000e+00 -9.1986e-02  2.2964e+00  7.5134e+00 )
l( 60)=-3.1646e+00   u( 60)=( 1.0000e+00 -1.0974e-02  2.2964e+00  7.3779e+00 )
l( 70)=-3.3877e+00   u( 70)=( 1.0000e+00  3.5751e-02  2.2964e+00  7.2998e+00 )
l( 80)=-3.5370e+00   u( 80)=( 1.0000e+00  6.3723e-02  2.2964e+00  7.2530e+00 )
l( 90)=-3.6351e+00   u( 90)=( 1.0000e+00  8.0842e-02  2.2964e+00  7.2244e+00 )
l(100)=-3.6986e+00   u(100)=( 1.0000e+00  9.1461e-02  2.2964e+00  7.2066e+00 )
l(110)=-3.7396e+00   u(110)=( 1.0000e+00  9.8103e-02  2.2964e+00  7.1955e+00 )
l(120)=-3.7658e+00   u(120)=( 1.0000e+00  1.0228e-01  2.2964e+00  7.1886e+00 )
l(130)=-3.7825e+00   u(130)=( 1.0000e+00  1.0491e-01  2.2964e+00  7.1842e+00 )
l(140)=-3.7931e+00   u(140)=( 1.0000e+00  1.0658e-01  2.2964e+00  7.1814e+00 )
l(150)=-3.7999e+00   u(150)=( 1.0000e+00  1.0763e-01  2.2964e+00  7.1796e+00 )
1er couple valeur/vecteur propre (dernier itéré)
lambda1 = -3.811646855752201e+00
x(1) = 
  1.000000000000000e+00  
  1.094572319901319e-01  
  2.296364144307056e+00  
  7.176553199301980e+00  
Norme résidu = 4.53e-13
Déflation
Matrice A(1)
-1.82934e+02  5.30072e+01 -1.18485e+01  2.84734e+01 
-3.91993e+02  1.13001e+02 -3.79834e+01  6.50518e+01 
-1.91849e+02  5.60166e+01 -6.52180e-01  2.60870e+01 
-5.37527e+02  1.57052e+02 -5.91300e+00  7.43971e+01 
Les premiers itérés :
l(  1)=-1.1330e+02   u(  1)=( 1.0000e+00  2.2235e+00  9.7436e-01  2.7536e+00 )
l(  2)= 1.7860e+00   u(  2)=( 1.0000e+00  7.7241e-01  2.1842e+00  6.0321e+00 )
l(  3)= 3.8843e+00   u(  3)=( 1.0000e+00  1.2170e+00  1.8933e+00  5.0556e+00 )
l(  4)= 3.0937e+00   u(  4)=( 1.0000e+00  8.0578e-01  2.2547e+00  5.9912e+00 )
l(  5)= 3.6541e+00   u(  5)=( 1.0000e+00  8.6509e-01  2.2199e+00  5.8624e+00 )
l( 10)= 3.6394e+00   u( 10)=( 1.0000e+00  7.8447e-01  2.2958e+00  6.0476e+00 )
l( 20)= 3.6421e+00   u( 20)=( 1.0000e+00  7.8408e-01  2.2963e+00  6.0485e+00 )
l( 30)= 3.6421e+00   u( 30)=( 1.0000e+00  7.8408e-01  2.2963e+00  6.0485e+00 )
2e couple valeur/vecteur propre (dernier itéré)
lambda2 =  3.642058168286467e+00
v(2) = 
  1.000000000000000e+00  
  7.840790390406579e-01  
  2.296281797754661e+00  
  6.048525233491739e+00  
Norme résidu (pour A(1)) = 2.08e-12
x(2) = 
  1.000000000000000e+00  
  1.314980606802037e+00  
  2.296216994166474e+00  
  5.160810354920547e+00  
Norme résidu = 3.50e-12

الدوال الثانوية

 معايير الدالة al_norme_vect هي كالتالي:

x :متجهة (التي فيها نحسب المنظم)n : بعد المتجهة.

ترجع هذه الدالة المنظم المتجهي الأقليدي (المنظم 2 لـ Holder).



معايير الدالة al_prod_mat_vect هي كالتالي:

a : المصفوفة
n : درجة المصفوفة
x و y : متجهتين

ترجع هذه الدالة في المتجهة y ضرب المصفوفة a في المتجهة x.



الدالة al_prod_matmd_vect

المصفوفة متماثلة قطريا، ومحفوظة في جدول ثنائي البعد بعده NMAX*NDIAG.

معايير الدالة هي كما يلي :

a : مصفوفة متماثلة قطريا ومكدسةn : درجة المصفوفةx و y : متجهتين

ترجع هذه الدالة في المتجهة y ضرب المصفوفة a في المتجهة x.

الدالة الرئيسية vp_puissance
معايير هذه الدالة هي كالتالي:


a : المصفوفة
n : درجة المصفوفة
x : جدول أحادي البعد
eps : الدقة المطلوبة

ترجع القيمة المميزة المحسوبة، أما في الجدول x المتجهة المميزة المرتبطة بها.

وهي تستدعي الدالة التالية:
 void al_prod_mat_vect(double a[NMAX][NMAX],int n,double x[NMAX],double y[NMAX])
  هذه الدالة يجب أن تعرف في البرنامج الرئيسي.

الثابنة الصحيحة NMAX تساوي البعد القصوي للمصفوفة (+1).
double vp_puissance(double a[NMAX][NMAX],int n,double x[NMAX],double eps)
{
 int i,j,c;
 /* int k; */
 double l,l1;
 double y[NMAX];
 l=0.0;
 /* k=1; */
 do
 {
 c=1;
 l1=l;
 al_prod_mat_vect(a,n,x,y);
 while(y[c]==0)c++;
 l=y[c];
 for(i=1;i<=n;i++)
 x[i]=y[i]/ l;
 /* if((k<=5)||(k/10*10==k)&&(k<=150))
 {
 printf("l(%3d)=%11.5e u(%3d)=(",k,l,k);
 for(i=1;i<=n;i++)
 printf("%11.5e ",x[i]);
 printf(")\n");
 }
 k++; */
 }
 while (fabs(l-l1)>eps);
 return(l);
}

اصنع ثلاجتك الصغيرة بنفسك

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

جهز نفسك
  
كابل USB
01
شبكة تبريد

تجدها على معالج (بروسيسور) الحاسوب مثلا. انظر لأي قطعة قديمة في أسواق الخردة أو الأجهزة المستعملة.
إذ لم تجدها، يمكنك أم تنزعها من حاسوبك وبالتالي لن تستطيع ان ترى موقع اصنعها ثانية ههههههه.
02
وحدة التبريد (Peltier cooler)

هذا الجزء هو ما قد يطلق عليه "وقف حمار الشيخ عند العقبة". هو شيخ وانت شاب فاذا وقف حمارك عند العقبة فاحمل انت حمارك ولا تستسلم.
إذا أردت الحصول على وحدة التبريد نرشدك الى التالي:
l        محلات بيع أجهزة الثلاجات
l        محلات بيع المركبات الاليكترونية
l        وحدات تبريد غير مستعملة في أسواق الخردة أو ما شابه، ابحث عن جهاز قديم وانزعها منه.
l        وآخر الاختيارات يمكنك شراءها من الانترنت

1.        ww.ebay.com

2.        www.amazon.com


ملاحظة: يجب أن تصل السلكين الأحمر والأسود بكابل USB لتشغل ثلاجتك عن طريق وضع الكابل في أي مدخل من مداخل USB في حاسوبك أو حتى في الكهرباء. وإلا يمكن ايصالهما ببطارية أو محول كهربائي ذي 9 فولط.
03
صندوق بلاستيكي

تدبر أمرك، لا داعي لأن نشرح لك كيف تصنعه هو أيضا!!!!!
04


واجهة تحويل المنفذ المتوازي لشاشة رقمية

واجهة تحويل المنفذ المتوازي لشاشة رقمية
image001
نتطرق في هذا المقال إلى صنع بطاقة إليكترونية هي عبارة عن واجهة تربط المنفذ المتواتزي LPT مع الشاشة الرقميةLCD وكذلك واجهة أخرى LIRC للتحكم عن بعد باستعمال الأشعة تحت الحمراء.

تقديم
تتكون هذه البطاقة من واجهتين:
·        واجهة تحويل من LPT إلى LCD.
·         واجهة LIRC للأشعة تحت الحمراء من أجل التحكم عن بعد باستعمال البرنامجhttp://www.lirc.org
ملفات البطاقة
قم بتحميل البطاقات التالية من أجل صنع البطاقة الإليكترونية:

الأجزاء الرئيسية
العربية
إنجليزية
فرنسية
الرمز في الدارة الكهربائية
الكمية
القيمة أو الصيغة
مقاومة متغيرة رقمية التحكم لامتقلبة
Nonvolatile Digitally Controlled Potentiometer
Potentiomètre à Commande Numérique Non-volatile
IC1, IC2
2
DS1809
مقوم كهربائي
Voltage Regulator
Regulateur de Tension
IC3, IC4
2
7805T
موصل
Connector
Connecteur
JP1
1
مصفوفة 2×8
JP2, JP3
2

JP4
1

موصل متوازي للطابعة
Printer Parallel Port
Port Parallel d'Impremante
X1
1
LPT

X2
1
LIRC
زر ضغطي
Pushbutton
Bouton Poussoire
S1, S2, S3, S4
4

جسر
Jumper
Cavalier
J1
1

مقحل (ترنزستور)
Transistor
T1
1
BC547
صمام ثنائي
Diode
D1
1
1N4148
صمام ضوئي
LED
LED1
1

مقاومة
Resistor
Resistance
R1
1
220 Ohm
R2
1
4.7 KOhm
مكثف
Capacitor
Condensateur
C1
1
ربما تساوي 105nF
C2
1
470 uF
C3
1
ربما تساوي قيمة C2
C4
1
4.7 uF, 12V


الدارة الكهربائية
image002
المركبين المتحكمين بتعديل شدة إضاءة ونصوع الشاشة هما DS1809 إضافة إلى زرين كهربائيين لكل واحد منهما من أجل تخويل المستخدم من التعديل اليدوي. 

يتم التحكم بالمركب IC1 من أجل تغيير شدة إضاءة الشاشة عن طريق الزرين:
S1(+, Up)o  وS2(–, Down)o.

بينما يتم التحكم في المركب IC2من أجل تغيير نصوع الضوء بمساعدة الترنزستور T1 عن طريق الزرين:
S3(+, Up)o   وS4(–, Down)o.
المركب IC3 عبارة عن مقوم كهربائي الذي يعمل على استقرار التيار الكهربائي في الدارة. يوجد أيضا مكثفا يعمل كمصفاة والذي يساعد على التفريغ العابر للدارة من أجل تفادي أي تلف للمركبات الإليكترونية. أما عندJP2 يجب أن تطبق 12 فولط وإذا أحببت يمكنك إضافة صمام ثنائي 1N4007 من أجل الحماية القطبية.

بالنسبة لمستقبل الأشعة تحت الحمراء (IR receiver) فيجب أن تزور الموقعhttp://www.lirc.org.
الشي الوحيد الذي يجب أن تضيفه هو إزالة pin3عند الإنقباض واقرأ المعلومات المتعلقة بمستقبل الأشعة تحت الحمراء من أجل مساعدتك على إيصاله بالشكل الصحيح. والشكل جانبه يمثل مضبط يربط بين المنفذLPT والشاشة LCD.
image003


لا بد من قراءته
من فضلك اضطلع على المقالات الثلاث التالية ولو بنظرة خاطفة إذ أنها مهمة في تحويل الدارات الكهربائية إلى بطاقات إليكترونية بمهنية عالية وبصنع يدك فقط:

اصنعها إليكترونيا – الشرائح الإليكترونية 1

اصنعها إليكترونيا – الشرائح الإليكترونية 2

اصنعها إليكترونيا – تحويل الدارات إلى بطاقات إليكترونية


التصميم
بالإعتماد على المقال الثاني في لا بد من قرائته يمكنك انجاز البطاقة الإليكترونية بسهولة. قم بتحميلها في ما ذكرناه في فقرة "ملفات البطاقة".
image004

تموضع المركبات
استعن بالصورة التالية من أجل وضع المركبات الإليكترونية بشكل صحيح في مواقعها على البطاقة.
image005

Advertising that works - yX Media

حلول التمارين - الجزء ب

حلول التمارين - الجزء ب
b
 تجد هنا حلول جميع التمارين للدرسين 7 و8. هذا يمثل الجزء الثاني من سلسلة حلول التمارين.
 الدرس 7: الجداول »» »»
التمرين 7.1
التمرين 7.2
التمرين 7.3
التمرين 7.4
التمرين 7.5
التمرين 7.6
التمرين 7.7
أ) جداول أحادية البعد-المتجهات
التمرين 7.8
التمرين 7.9
التمرين 7.10
التمرين 7.11
التمرين 7.12
التمرين 7.13
التمرين 7.14
التمرين 7.15
التمرين 7.16
ب) جداول ثنائية البعد - المصفوفات
التمرين 7.17
التمرين 7.18
التمرين 7.19
التمرين 7.20
التمرين 7.21
التمرين 7.22
التمرين 7.23
التمرين 7.24

التمرين 7.1

#include <stdio.h>

main()
{
 int T[50]; 
 int I,N;   
 long SOM;  

 printf("Dimension of the array (max.50) : ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Element %d : ", I);
     scanf("%d", &T[I]);
    }
 printf("The given array :\n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
 for (SOM=0, I=0; I<N; I++)
     SOM += T[I];
 printf("Sum of the elements : %ld\n", SOM);
 return 0;
}

التمرين 7.2

#include <stdio.h>

main()
{
 int T[50]; 
 int N;    
 int I,J;   

 printf("Dimension of the array (max.50) : ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Element %d : ", I);
     scanf("%d", &T[I]);
    }
 printf("Given array : \n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
 for (I=0, J=0 ; I<N ; I++)
     {
      T[J] = T[I];
      if (T[I]) J++;
     }
 N = J;
 printf("Resulted array :\n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
 return 0;
}

التمرين 7.3 

#include <stdio.h>

main()
{
 int T[50]; 
 int N;     
 int I,J;  
 int AIDE; 

 printf("Dimension of the array (max.50) : ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Element %d : ", I);
     scanf("%d", &T[I]);
    }
 printf("Given array : \n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
 /* نعكس الجدول */
 for (I=0, J=N-1 ; I<J ; I++,J--)
      /* T[I] و T[J] تبادل قيمتي*/
        {
         AIDE = T[I];
         T[I] = T[J];
         T[J] = AIDE;
        }
 printf("Resulted array :\n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
 return 0;
}

التمرين 7.4

#include <stdio.h>

main()
{
 int T[50], TPOS[50], TNEG[50];
 int N,     NPOS,     NNEG;
 int I; 

 printf("Dimension of the array (max.50) : ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Element %d : ", I);
     scanf("%d", &T[I]);
    }
 printf("Given array :\n");
 for (I=0; I<N; I++)
     printf("%d ", T[I]);
 printf("\n");
 NPOS=0;
 NNEG=0;
 for (I=0; I<N; I++)
      { if (T[I]>0) {
                     TPOS[NPOS]=T[I];
                     NPOS++;
                    }
        if (T[I]<0) {
                     TNEG[NNEG]=T[I];
                     NNEG++;
                    }
      }
 printf("array TPOS :\n");
 for (I=0; I<NPOS; I++)
     printf("%d ", TPOS[I]);
 printf("\n");
 printf("array TNEG :\n");
 for (I=0; I<NNEG; I++)
     printf("%d ", TNEG[I]);
 printf("\n");
 return 0;
}

التمرين 7.5

#include <stdio.h>

main()
{
 int T[50][50];
 int L, C;  
 int I, J;  
 long SOM;  

 printf("Number of rows   (max.50) : ");
 scanf("%d", &L );
 printf("Number of columns (max.50) : ");
 scanf("%d", &C );
 for (I=0; I<L; I++)
    for (J=0; J<C; J++)
        {
         printf("Element[%d][%d] : ",I,J);
         scanf("%d", &T[I][J]);
        }
 printf("Given array :\n");
 for (I=0; I<L; I++)
    {
     for (J=0; J<C; J++)
         printf("%7d", T[I][J]);
     printf("\n");
    }
 for (SOM=0, I=0; I<L; I++)
     for (J=0; J<C; J++)
         SOM += T[I][J];
 printf("Sum of the elements : %ld\n", SOM);
 return 0;
}

التمرين 7.6

#include <stdio.h>

main()
{
 int T[50][50];
 int L, C;      
 int I, J;      
 long SOM;  

 printf("Number of rows   (max.50) : ");
 scanf("%d", &L );
 printf("Number of columns (max.50) : ");
 scanf("%d", &C );
 for (I=0; I<L; I++)
    for (J=0; J<C; J++)
        {
         printf("Element[%d][%d] : ",I,J);
         scanf("%d", &T[I][J]);
        }
 printf("Given array :\n");
 for (I=0; I<L; I++)
    {
     for (J=0; J<C; J++)
          printf("%7d", T[I][J]);
     printf("\n");
    }
 for (I=0; I<L; I++)
     {
      for (SOM=0, J=0; J<C; J++)
             SOM += T[I][J];
      printf("Sum - rows %d : %ld\n",I,SOM);
     }
 for (J=0; J<C; J++)
     {
      for (SOM=0, I=0; I<L; I++)
             SOM += T[I][J];
      printf("Sum - column %d : %ld\n",J,SOM);
     }
  return 0;
}

التمرين 7.7

#include <stdio.h>

main()
{
 int M[10][10]; 
 int V[100];   
 int L, C;   
 int I, J;     

 printf("Number of rows   (max.10) : ");
 scanf("%d", &L );
 printf("Number of columns (max.10) : ");
 scanf("%d", &C );
 for (I=0; I<L; I++)
    for (J=0; J<C; J++)
        {
         printf("Element[%d][%d] : ",I,J);
         scanf("%d", &M[I][J]);
        }
 printf("Given array :\n");
 for (I=0; I<L; I++)
    {
     for (J=0; J<C; J++)
          printf("%7d", M[I][J]);
     printf("\n");
    }
 for (I=0; I<L; I++)
      for (J=0; J<C; J++)
             V[I*C+J] = M[I][J];
 printf("Resulted array : ");
 for (I=0; I<L*C; I++)
     printf("%d ", V[I]);
 printf("\n");
 return 0;
}

التمرين 7.8 

#include <stdio.h>

main()
{
 int U[50], V[50]; 
 int N;     
 int I;     
 long PS;  

 printf("Dimension of arrays (max.50) : ");
 scanf("%d", &N );
 printf("** First array **\n");
 for (I=0; I<N; I++)
    {
     printf("Element %d : ", I);
     scanf("%d", &U[I]);
    }
 printf("** Second array **\n");
 for (I=0; I<N; I++)
    {
     printf("Element %d : ", I);
     scanf("%d", &V[I]);
    }
 /* حساب الجداء السلمي */
 for (PS=0, I=0; I<N; I++)
      PS += (long)U[I]*V[I];
 printf("Dot product : %ld\n", PS);
 return 0;
}

التمرين 7.9

#include <stdio.h>
#include <math.h>

main()
{
 float A[20];
 int I;    
 int N;   
 float X;  
 float P;   

 printf("Give the degree  N of polynome (max.20) : ");
 scanf("%d", &N);
 printf("Give the Value X of the argument : ");
 scanf("%f", &X);
 for (I=0 ; I<N ; I++)
    {
     printf("Give the coefficient A%d : ", I);
     scanf("%f", &A[I]);
    }
 /*  pow بمساعدة الدالة
 for (P=0.0, I=0 ; I<N ; I++)
       P +=  A[I]*pow(X,I);      */
 
 /* Horner باستعمال*/
 for (P=0.0, I=0 ; I<N ; I++)
       P = P*X + A[I];
 
 printf("Value of polynome for X = %.2f : %.2f\n", X, P);
 return 0;
}

التمرين 7.10 

#include <stdio.h>

main()
{
 int A[50]; 
 int N;   
 int I;     
 int MIN;   
 int MAX;  

 printf("Dimension of the array (max.50) : ");
 scanf("%d", &N );
 for (I=0; I<N; I++)
    {
     printf("Element %d : ", I);
     scanf("%d", &A[I]);
    }
 printf("Given array :\n");
 for (I=0; I<N; I++)
     printf("%d ", A[I]);
 printf("\n");
 MIN=0;
 MAX=0;
 for (I=0; I<N; I++)
     {
      if(A[I]>A[MAX]) MAX=I;
      if(A[I]<A[MIN]) MIN=I;
     }
 printf("Position of the minimum : %d\n", MIN);
 printf("Position of the maximum : %d\n", MAX);
 printf("Minimum : %d\n", A[MIN]);
 printf("Maximum : %d\n", A[MAX]);
 return 0;
}

Advertising that works - yX Media