[CENTER]السلام عليكم ورحمة اللة وبركاتة…
الى اعضاء منتدى المهندس(الرائعين)…والى العضو(ايجبت)وفقة اللة….
شكرا لكم على ترحيبكم الرائع باي عضو جديد واجابتكم على كل متسأل حسب قدرتكم…شكرا لكم…[COLOR=Purple]
[/color]اخذنا درس على Back substitution و عرفتا كيف نعملة بالماتلاب على مصفوفة انا ادخل عناصرها وهذا هو الكود:
n=4; A=[3 -2 1 -1 ; 0 4 -1 2; 0 0 2 3 ; 0 0 0 5];
B=[8;-3;11;15]; x(n)=B(n)/A(n,n); for i=n-1:-1:1 sum=0; for j=i+1:n sum=sum+A(i,j)*x(j); end ; x(i)=(B(i)-sum)/A(i,i); end ; x
لكن لو اريد عمل هذا البرنامج بشكل عام على نفس الكود (يعني المستخدم يدخل عناصر المصفوفةو يدخل حجمها_المصفوفة طبعا لا بد مصفوفة مربعة)… فعندما يدخل المسخدم عدد الصفوف ومباشرة اعرف منها عدد الأعمدة : مباشرة اعمل مصفوفة (نصفر كل قيمها) ثم نطلب من المستخدم يدخل عناصر المصفوفة…فيدخل العناصر صف صف… فاستطيع تصفير القيم ب Zero matrix… لكن كيف… ارجو منكم مساعدتي وفقكم اللة جميعا وحفظكم من كل سوء.…
[/center]
هذا هو الجواب ولاكن مش عارف ليش انت تريد تصفر المصفوفه
n=input('input the order :');
B=input('input the marix B:');
A=input('input the marix A:');
A1=reshape(A,n,n)
B1=B'
x=inv(A1)*B1;
for i=n-1:-1:1
sum=0;
for j=i+1:n
sum=sum+A1(i,j)*x(j)
end ;
x(i)=(B1(i)-sum)/A1(i,i)
end ;
x
اولا:
شكرا للعضو الرائع دوما بسرعة ردودة…(ايجبت)….
شكرا للعضو الرائع و المبدع بردودة(عبد العزيز غالب)…
الف شكر لكم….
ثانيا:
مافهمتوا شو اقصد ، ذحين هذا الكود الي كتبتة اخذناه بالمعمل…التيتشر قالنا لو ابغى المستخدم يدخل عدد الصفوف يعني اقول للمستخدم:
n=input(‘Enter the number of rows’);
اقوم انا عاملة مصفوفة بالحجم الي يدخلة…ثم اصفر قيمها…ثم اطلب من المستخدم يدخل عناصر المصفوفة الأولى بعد مايخلص اطلب منة يدخل عناصر المصفوفة الثانية(وطبعا ويدخلهم صف صف)…ثم اعمل طريقة البك سبستيوشن يعني اكتب هذا الكود: [SIZE=4]x(n)=B(n)/A/size; for i=n-1:-1:1 sum=0; for j=i+1:n sum=sum+A(i,j)*x(j); end ; x(i)=(B(i)-sum)/A(i,i); end ; x
…
فاكون بكذا خليت كود ال Back substitutonعام (يعني اي مستخدم يدخل حجم المصفوفةو عناصر المصفوفتين وبهذا البرنامج ينعمل لهم Back substituton).…
[/size][/font]
[FONT=Arial Narrow][SIZE=5]n=input('input the order :'); ادخال حجم المصفوفه [/size][/font]
[FONT=Arial Narrow][SIZE=5]B=input('input the marix B:'); ادخال المصفوفه الاولى على شكل صف[/size][/font]
[FONT=Arial Narrow][SIZE=5]A=input('input the marix A:'); ادخال المصفوفه الثانيه على شكل صف واحد[/size][/font]
[FONT=Arial Narrow][SIZE=5]A1=reshape(A,n,n) تشكيل المصفوفه على شكل مصفوفه مربعه nxn [/size][/font]
[FONT=Arial Narrow][SIZE=5]B1=B' اعاده تشكيل المصفوفه الى شكل عمود بدلا من صف[/size][/font]
[FONT=Arial Narrow][SIZE=5]x=inv(A1)*B1;[/size][/font]
[FONT=Arial Narrow][SIZE=5]for i=n-1:-1:1[/size][/font]
[FONT=Arial Narrow][SIZE=5]sum=0;[/size][/font]
[FONT=Arial Narrow][SIZE=5]for j=i+1:n[/size][/font]
[FONT=Arial Narrow][SIZE=5]sum=sum+A1(i,j)*x(j)[/size][/font]
[FONT=Arial Narrow][SIZE=5]end ;[/size][/font]
[FONT=Arial Narrow][SIZE=5]x(i)=(B1(i)-sum)/A1(i,i)[/size][/font]
[FONT=Arial Narrow][SIZE=5]end ;[/size][/font]
[FONT=Arial Narrow][SIZE=5]
n=input('input the order :');
B=input('input the marix B:');
B=B';
for i=1:n
A(i,1:n)=input(['input the raw number(' num2str(i) ')in matrix A :']);
end
x(n)=B(n)/A(n,n);
for i=n-1:-1:1
sum=0;
for j=i+1:n
sum=sum+A(i,j)*x(j);
end ;
x(i)=(B(i)-sum)/A(i,i);
end ;
x
كما يمكنك الاستغناء عن الامر num2str لانه لا يؤثر علي الكود فيصبح الكود
n=input('input the order :');
B=input('input the marix B:');
B=B';
for i=1:n
A(i,1:n)=input(['input the matrix A by raw : ']);
end
x(n)=B(n)/A(n,n);
for i=n-1:-1:1
sum=0;
for j=i+1:n
sum=sum+A(i,j)*x(j);
end ;
x(i)=(B(i)-sum)/A(i,i);
end ;
x