حلقه تکرار در متلب | حلقه for و while
به نام خدا و سلام.
به جلسه هجدهم از سری جلسات آموزش متلب خوش آمدید. آموزش تخصصی نرم افزار متلب از وبسایت متلبپلاس ارائه میشود. در این جلسه به آموزش حلقه for و while در متلب میپردازیم. حلقههای تکرار بخش مهمی از برنامه نویسی در متلب را ایفا میکنند. ابتدا با ساختار و کاربرد حلقهها در متلب آشنا شده و سپس به حل مثالهای متنوع میپردازیم. ساختار حلقه for، ساختار حلقه while و… از مباحث این جلسه هستند.
با متلب پلاس همراه باشید.
فیلم آموزش متلب بصورت پروژه محور (حل 149 نمونه سوال برنامه نویسی❤️) در وبسایت متلبپلاس ارائه شده است. برای مشاهده این پکیج آموزشی روی 👈 حل نمونه سوال برنامه نویسی متلب 👉 کلیک نمائید.
مقدمهای بر حلقههای تکرار در متلب
یکی از پایههای برنامه نویسی در متلب و سایر زبانها، حلقههای تکرار میباشد. به طور مشابه در برخی مسائل ریاضی نیز میبینیم که بخش زیادی از محاسبات، تکراری اند. پیادهسازی این عملیاتهای تکراری در مواقعی که تعداد گذارهها زیاد باشد، بسیار طاقتفرساست. اینجاست که کاربرد حلقههای تکرار (Loop) اهمیت پیدا میکند. عملا درون یک حلقهی تکرار، عملیاتهای تکراری و مشخص انجام میشوند. یعنی هر تکرار مقدمهی تکرار بعدی و پایان تکرار قبلی است. این مفهوم از پایهایترین و قدرتمندترین مفاهیم برنامهنویسی محسوب میشود. در این جلسه از آموزش نرم افزار متلب، به طور کامل با حلقههای تکرار در متلب آشنا میشویم.
در یک دسته بندی جامع، دو نوع حلقهی تکراری داریم. حلقهی با شمارنده و حلقه بدون شمارنده. در زیر هریک از این موارد را شرح میدهیم.
حلقه تکرار با شمارنده
حلقههای با شمارنده حلقههایی هستند که در آن تعداد تکرارها مشخص و ثابت است. اگر تعداد تکرارها مشخص باشد و در حین حلقه نیز ثابت بماند، میتوانیم از این نوع حلقه استفاده کنیم. در غیر این صورت باید از حلقههای بدون شمارنده استفاده کنیم. تبدیل حلقه با شمارنده به نوع بدون شمارنده حتی در صورت امکان، اصلاً توصیه نمیشود.
حلقه تکرار بدون شمارنده
در این نوع حلقه، لزوماً تعداد تکرارها مشخص و یا ثابت نیست. یعنی میتوانیم تعداد تکرارها را با تعریف شمارنده محدود کنیم و یا حین اجرای حلقه، تعداد تکرارها تغییر بدهیم. این نوع حلقه محدود به شمارنده نیست اما با دستورات کنترلی میتوان آن را محدود کرد. مثلا شرط دقت محاسبه میتواند شرطی برای توقف حلقه باشد. ما نمیدانیم که پس از چه تعداد تکرار محاسبات این اتفاق میافتد، اما میدانیم که شرط توقف چیست.
حال به سراغ معرفی حلقههای تکرار در متلب میرویم. لطفا همین الان نرم افزار متلب را باز کنید و تمام مثالهایی که در ادامه میآیند را شما هم بنویسید!
بهتر است مثالهای این جلسه را در محیط editor متلب بنویسید.
ساختار حلقه for در متلب
حلقه for در متلب، یک حلقه با تعداد شمارنده مشخص است. تعداد تکرارهای حلقه for در ابتدای ساختار این حلقهی تکرار تعریف میشود. ساختار کلی حلقه for در نرم افزار متلب به صورت زیر است.
for index = values
statements
end
در این ساختار کاراکتری جز فاصله (Space) نمیتواند بعد از کلیدواژه for قرار گیرد. پس از فاصله، بردار index تعریف میشود. متغیر values معمولاً یک ماتریس 1×n (بردار افقی) است. بنابراین حلقه n بار تکرار میشود. در هر تکرار مقدار متغیر index برابر با مقدار متناظر تعداد تکرارها در متغیر values میشود. یعنی در تکرار k ام index برابر value(k) (مقدار k ام در values) است. برای درک بهتر یک مثال ساده ارائه میکنیم.
مثال از حلقه for
for i = [1 3 5 7]
disp(i^2)
pause(1)
end
در این حلقهی ساده، اعداد 1،3،5 و 7 بعنوان شمارنده وارد شدهاند. از متلب خواستهایم که در هر مرحله از تکرار، مجذور شمارنده را نمایش دهد. این کار با استفاده از دستور disp انجام شده. همچنین با استفاده از pause(1) به متلب میگوییم که پس از انجام هر تکرار، یک ثانیه توقف کند و مجددا ادامه دهد. پس از اجرای این کد خواهیم داشت.
1
9
25
49
در آموزش ایجاد آرایه در متلب دیدیم که یک روش ایجاد بردار یا ماتریس در متلب، استفاده از حلقهها است. در مثال زیر یک بردار با استفاده از حلقهها ایجاد میکنیم.
u = zeros(1,7);
for i = 1:7
u(i) = 2*i + 1;
end
disp(u)
در این مثال، ابتدا یک بردار خالی با استفاده از دستور zeros ایجاد میکنیم. سپس وارد حلقه میشویم. درون حلقه برای درایه i ام تعریف کردیم که برابر با 2i+1 است. یعنی مقدار هر درایه به محل قرارگیری آن درایه ارتباط دارد. پس از اجرا خواهیم داشت.
3 5 7 9 11 13 15
حلقه for تودرتو
در نرم افزار متلب، محدودیتی برای داشتن یک حلقه درون یک حلقهی دیگر وجود ندارد. با استفاده از حلقههای تودرتو میتوان عملیات ریاضی یا برنامه نویسی موردنظر را انجام داد. در حلقههای تودرتو به نام شمارنده (index) دقت داشته باشید. به هیچ عنوان نباید نام index حلقههای تودرتو یکسان باشد. اولیت انجام عملیات تکراری در حلقههای تودرتو، با حلقهی درونی است. پس از تکمیل شدن حلقهی درونی، حلقه بعدی (بیرونی) انجام میشود.
برای یک مثال از حلقههای تودرتو میتوان ایجاد ماتریس را درنظر گرفت. در مثال زیر با استفاده از حلقههای متلب یک ماتریس 3 در 4 میسازیم. مقدار هر درایه از این ماتریس، برابر است با ضرب شماره سطر در شماره ستون آن.
A = zeros(3,4);
for i = 1:3
for j = 1:4
A(i,j) = i*j;
end
end
disp(A)
همانطور که مشاهده میکنید، ابتدا یک ماتریس صفر با ابعاد موردنظر ایجاد میکنیم. این کار (Pre-allocation) باعث افزایش سرعت اجرا میشود. سپس شمارنده i را برای سطرها و شمارنده j را برای ستونها انتخاب میکنیم. متلب ابتدا به i مقدار یک را اختصاص داده و وارد حلقه دوم میشود. سپس این حلقه (حلقهی درونی) با مقادیر j از یک تا 4 انجام میشود. سپس i برابر با 2 میشود و حلقهی درونی دوباره از 1 تا 4 انجام میشود. این فرآیند تا آخرین مرحله تکرار میشود. در واقع کل مراحل تکرار برابر با ضرب حالتهای حلقه اول در حلقه دوم (و یا حلقههای بعد) است. در این مثال 12 بار تکرار داریم. نتیجه پس از اجرا به صورت زیر است:
1 2 3 4
2 4 6 8
3 6 9 12
ترکیب for و if در متلب
یک ترکیب بسیار رایج و محبوب در حلقهها، استفاده از دستورات شرطی و تصمیم گیری است. یکی از این ترکیبها، ترکیب حلقه for با دستور if در متلب است. با استفاده از این ترکیب میتوان یک عملیات شرطی را با تعداد تکرار مشخص، انجام داد. ضمنا جزئیات کامل به همراه مثال برای دستور if در متلب در جلسه قبل ارائه شدهاست. برای مشاهده، روی عبارت قرمز رنگ کلیک نمائید.
برای یک مثال از این موضوع، مسئله آرمسترانگ در ریاضی را درنظر میگیریم. مسئله به این صورت است که، در بین اعداد 3 رقمی عدد (یا اعدادی) بیابید که مجموع مکعب ارقامش برابر با خودش باشد. برای حل این مسئله ریاضی، نیاز به تحلیل همه اعداد 3 رقمی از 1 تا 999 داریم. هر عدد در این بازه باید به ارقام سازندهاش تفکیک شود و برابر بودن مکعب ارقامش با خودش بررسی شود. پس این مسئله را به صورت زیر مینویسیم.
for a = 0 : 9
for b = 0 : 9
for c = 0 : 9
f = a*100 + b*10 + c*1;
if f == a^3 + b^3 + c^3
disp(f)
end
end
end
end
از 3 حلقه for برای ایجاد اعداد 1 تا 999 استفاده شدهاست. نحوه ساخت هم بسیار سادهاست چرا که یک عدد 3 رقمی شامل یکان، دهگان و صدگان است. به همین شکل عدد را میسازیم. سپس با استفاده از if بررسی میکنیم که آیا این عدد با مجموع توان 3 ارقامش برابر است یا خیر. اگر برابر باشد، با استفاده از تابع disp آن را نمایش میدهیم. پس از اجرا داریم.
0
1
153
370
371
407
این مسئله جذاب و پیچیده ریاضی که حل آن با دست بسیار دشوار است، با حلقهها در متلب به آسانی حل شد.
نکاتی درباره حلقه for در متلب
در اینجا نکاتی در رابطه با استفاده از حلقه for در متلب بیان میکنیم.
- سعی کنید در یک برنامه متلب، از حلقههای for زیاد استفاده نکنید! حلقهها زمان اجرای برنامه را بسیار کند میکنند. بجای آن بهتر است از توابع استفاده کنیم.
- پیشتر گفتیم که معمولاً مقادیر مقابل for یک بردار افقی است. اما اگر ماتریس m*n باشد، شاخص حلقه ستونهای ماتریس خواهند بود. بهتر است از بردار استفاده کنید.
- توصیه میشود که به هیچ عنوان شمارندهی درون حلقهها را تغییر ندهید. گرچه این مورد ممکن است دشوار باشد، اما بازهم به سمت آن نروید! (مثلا اگر قرار است حلقه از 1 تا 20 برای شمارنده i تکرار شود، درون حلقه کاری نکنید که این بازه تغییر کند)
ساختار حلقه while در متلب
این حلقه از لحاظ عملکرد و نوشتار کاملاً مشابه حلقه while در دیگر زبانهای برنامه نویسی است. حلقه while از نوع بدون شمارنده است. یعنی (حداقل از لحاظ تئوری) محدودیتی در تعداد تکرار ندارد. نوشتار (syntax) این حلقه در متلب به صورت زیر است.
while condition
statements
end
مشابه حلقه For، در حلقه while دو کلیدواژه وجود دارد: while و end. محدوده بین خط بعد از کلیدواژه while و خط قبل از end، بلوک حلقه است. تمامی دستورات حلقه را در این محدوده مینویسیم. واژه while در اینجا به معنای “تا زمانیکه” است. این نامگذاری به این علت است که مفهوم ” تا زمانیکه عبارت (condition) صحیح (logical true) است” به خواننده القا شود. پس درمییابیم که condition باید مقداری برابر یا معادل true باشد تا حلقه آغاز و به تکرار ادامه دهد. قدرت حلقه while در انجام محاسباتی است که تعداد تکرار آنها مشخص نیست. با یک مثال ساده آغاز میکنیم.
میخواهیم با استفاده از حلقه while، در هر تکرار از مقدار متغیر x یک واحد کم کنیم. شرط توقف نیز تا زمانی است که مقدار x بزرگتر مساوی 2 باشد. تا آن زمان، مقدار x را در هر مرحله نمایش دهد.
x = 5;
while ge(x,2)
disp(x)
x = x - 1;
end
در خط دوم کد بالا، ge(x,2) معادل با x بزرگتر مساوی 2 است. پس از اجرا داریم:
5
4
3
2
مشاهده میشود که تا رسیدن به مقدار 2، حلقه تکرار while انجام شده و سپس متوقف میشود.
حال مثال پیشرفتهتری از حلقه while در متلب ارائه میشود.
مثال از حلقه while در متلب
در این مثال قصد داریم تا جذر یک عدد مثبت را با استفاده از الگوریتم نیوتن محاسبه کنیم. مبنایی که برای توقف حلقه داریم، دقت 10 به توان منفی 15 است. در واقع تولرانسی tol برای مقایسه پاسخ هر مرحله با مرحله قبل تعریف شدهاست. چنانچه این اختلاف کمتر از 10 به توان منفی 15 باشد، حلقه متوقف میشود. عددی که جذر آن محاسبه میشود a است. مثلا جذر عدد 10 را محاسبه میکنیم.
x_new = 1; x = 1;
tol = 1;
a = 10;
while gt(tol , 1e-15)
x = (x_new + x)/2;
x_new = a/x;
tol = abs(x_new-x);
disp(x)
end
خط چهارم کد بالا، gt(tol , 1e-15) معادل tol بزرگتر از 1e-15 است. پس از اجرا داریم:
1
5.5000
3.6591
3.1960
3.1625
3.1623
3.1623
اگر مقدار نهایی را با مقداری که ماشین حساب از جذر عدد 10 میدهد مقایسه کنید، هیچ اختلافی نمیبینید. به همین سادگی با یک الگوریتم ساده و حلقه while در متلب، برنامهای برای محاسبه جذر اعداد نوشتیم.
حلقه بینهایت در متلب
همواره به شرایطی که برای حلقه while در متلب تعریف میکنید دقت داشته باشید. اگر شرایط به نحوی باشد که همواره برقرار باشد، این حلقه تا بینهایت تکرار میشود. البته گاهی نیاز است یک حلقه بینهایت بار تکرار شود تا اینکه به صورت دستی جلوی اجرای آن را بگیریم. مثلا هر بار پس از اجرای حلقه بپرسد که تکرار شود یا نه؟ در این مورد یک شرط بدیهی در مقابل while بنویسید. مثلا (اگر 2 بزرگتر از یک باشد) یک شرط بدیهی بوده و همواره برقرار است. اما دستوراتی نیز برای کنترل حلقهها در متلب وجود دارد که در زیر به آنها میپردازیم.
دستورات کنترلی حلقهها
دستور break در متلب
دستور break باعث توقف اجرای حلقه میشود. هر دستوری که پس از break درون حلقه باشد، اجرا نخواهد شد و حلقه متوقف میشود. اگر این دستور در حلقههای تودرتو بکار رود، فقط حلقهای که در آن بکار رفته را متوقف میکند. در مثال زیر یک برنامه متلب مینویسیم که عملا شرط while بینهایت است اما پس از هربار اجرا، از کاربرد بپرسد که تکرار شود یا خیر.
c = 1;
while gt(2,1)
disp(['iteration ', num2str(c)])
c = c + 1;
pause(1)
Text = input('Do you want to continue? (Y or N) ','s');
if Text == 'n' || Text == 'N'
break
end
end
خروجی این برنامه، یک پیغام است که شماره تکرار را نمایش میدهد و یک ثانیه صبر میکند. سپس از کاربر میپرسد که ادامه میدهید یا خیر. در این مرحله شما بایستی یک حرف وارد کنید. اگر حرف وارد شده n یا N باشد، حلقه با دستور break به پایان میرسد. برای گرفتن ورودی از کاربر، از دستور input استفاده شدهاست. با توجه به اینکه ورودی یک رشته متنی است، حرف s در انتهای این دستور نوشته شدهاست. جزئیات بیشتر این دستور در جلسه آموزش دستور input در متلب ارائه شدهاست.
دستور continue در متلب
اگر بخواهیم مانع از اجرای دستورات در یک یا چند تکرار شویم، از دستور continue استفاده میکنیم. مشابه دستور break این دستور نیز فقط در محدوده حلقهای که در آن بکار رفته عمل میکند. بنابراین این دستور مشابه دستور break است با این تفاوت که حلقه را متوقف نمیکند. بلکه از آن تکرار عبور میکند و به تکرار بعد میرود. برای درک بهتر یک مثال ارائه میکنیم. میخواهیم بخش پذیری اعداد 1 تا 50 بر 7 را بررسی کنیم.
for n = 1:50
if mod(n,7)
continue
end
disp(['Divisible by 7: ' num2str(n)])
end
با استفاده از حلقه for، باقیمانده اعداد 1 تا 50 بر 7 بررسی میشود. اگر باقیمانده صفر باشد (یعنی شرط برقرار نباشد) متنی نمایش میدهد که این عدد بر 7 بخش پذیر است. اما اگر باقیمانده غیر از صفر باشد، یعنی شرط برقرار باشد، با continue از این تکرار رد میشود. پس از اجرا داریم:
Divisible by 7: 7
Divisible by 7: 14
Divisible by 7: 21
Divisible by 7: 28
Divisible by 7: 35
Divisible by 7: 42
Divisible by 7: 49
دستور pause در متلب
دستور pause(n) در متلب، عملیات را برای n ثانیه متوقف میکند. این توقف موقتی است و صرفا جنبه زیبایی یا نمایشی دارد. عدد درون این دستور بایستی حقیقی و مثبت باشد. در مثالهای قبل کاربرد این دستور را دیدیم.
حلقه بازگشتی در متلب
در مسائل ریاضی و برنامه نویسی گاهی با دنبالههای بازگشتی روبرو هستیم. در دنباله بازگشتی، مقدار هر جمله تابعی از مقدار(های) قبلی آن است. برای مثال دنباله فیبوناچی یک دنباله بازگشتی است. در دنباله فیبوناچی، هر مقدار، برابر با مجموع دو مقدار قبلی است. با این شرط که جمله اول و دوم برابر یک است. دنباله فیبوناچی را در مثال زیر با استفاده از حلقه for برای 15 جمله اول مینویسیم.
F(1) = 1;
F(2) = 1;
for n = 3 :15
F(n) = F(n-1) + F(n-2);
end
disp(F)
در این کد ساده از دنباله فیبوناچی، با استفاده از اندیسهای بردار، مجموع دو جمله قبل را ایجاد کردهایم. پس از اجرا داریم:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
تمرینات این جلسه
در انتهای این جلسه 3 تمرین متلب مربوط به مباحث این جلسه ارائه شده است. لطفا این تمرینها را حل کرده و با پاسخ آن مقایسه کنید. پاسخ تمرینات متلب این جلسه در کانال تلگرام متلب پلاس منتشر میشود. از آیکونهای سمت راست صفحه میتوانید در این کانال عضو شوید.
تمرین اول) با استفاده از حلقه for در متلب، درایههای روی قطر اصلی یک ماتریس را استخراج کنید. برنامه را طوری بنویسید که درایههای هر ماتریس مربعی با ابعاد n در n را استخراج کند. پاسخ نهایی را با پاسخ دستور diag مقایسه کنید.
تمرین دوم) با استفاده از ترکیب for و if در متلب، بخش پذیری بر 13 را برای اعداد 1 تا 100 بررسی کنید.
تمرین سوم) با استفاده از حلقه while در متلب، 15 جمله اول دنباله فیبوناچی را ایجاد کنید.
جمعبندی
جلسه هجدهم از سری جلسات آموزش متلب به پایان رسید. این جلسه درباره حلقههای تکرار در متلب صحبت کردیم. اساس برنامه نویسی و محاسبات ریاضی تکراری را حلقههای تکرار شکل میدهند. حتما مباحث این جلسه را به طور کامل و دقیق مطالعه و بررسی کنید. مثالهای مفهومی و دقیقی که در متن ارائه شده را نیز خودتان بنویسید. در انتها چند تمرین برای یادگیری بیشتر به شما واگذار کردیم که پاسخ آنها در کانال تلگرامی متلب پلاس وجود دارد. بی صبرانه منتظر نظرات، سوال و ابهامات شما عزیزان هستیم. سعی میکنیم تا هرگونه سوال یا ابهامی که در این باره دارید را پاسخ دهیم.
توصیه میشود که حتما تمرینات این جلسه را انجام بدید و اگر سوال و ابهامی دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست هم میتونید به بقیه جلسات دسترسی داشته باشید.
12 Comments
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
ببخشید من چندتا معادله دارم که با اندیسهای i و j مشخص شده. برای حل این معادلات با حلقه for باید چکار کنم؟
ممنون
سلام. باتوجه به اینکه دوتا شمارنده i و j دارید، به دو حلقه نیاز هست. حلقه اول رو برای اندیس i معادلات و حلقه دوم رو برای اندیس j معادلات تون بنویسید. اگر معادله جبری و ساده هست، میتونید در هربار تکرار حلقه، معادله رو با دستور solve حل کنید. پاسخ رو هم در یک بردار یا ماتریس براساس شمارندهی فعلی بنویسید. مثلا در کد زیر معادلات دارای m اندیس و n اندیس هستند.
for i = 1: m
for j = 1: n
eq = u(i,j) == A;
B(i,j)=solve(eq);
end
end
در هر تکرار، معادله حل شده و در مکان مشخص در ماتریس B قرار میگیرد.
برای الگوریتم نیوتن به نظرتون این درسته؟
clear all
close all
clc
a = input(‘a= ‘)
x_new = ceil(sqrt(a))
x = floor(sqrt(a))
tol = abs(x_new-x)
while gt(tol , 1e-15)
x = (x_new + x)/2;
x_new = a/x;
tol = abs(x_new-x);
disp(x)
end
برای هر الگوریتمی میشه چند نمونه کدنویسی کرد. اگر پاسخ درست میگیرید درسته. لزوما نباید یک پاسخ (کد نویسی) باشه.
سلام تفاوت for و while می شه لطف کنید ؟
سلام سینا جان اگر به ابتدای متن این جلسه یا ابتدای ویدیو دقت کنی توضیح دادیم که بطور کلی دو نوع حلقهی تکرار داریم. حلقهی با شمارنده (تعداد تکرارها مشخص است) و حلقه بدون شمارنده (تعداد دفعات تکرار مشخص نیست). حلقه for یک حلقه از نوع شمارنده و حلقه while از نوع بدون شمارنده است.
موفق باشید.
سلام وقتتون بخیر
من میخوام یک ماتریس رو اونقدر به توان برسونم که اعداد هر سطر ماتریس همگرا بشن. (یعنی اعداد هر سطر باهم برابر بشن). برای این کار باید از حلقه while استفاده کنم؟
سلام.خسته نباشید.
همانطور که میدونید، در بیشتر زبانهای برنامه نویسی دیگر نظیر بیسیک و سی یا پاسکال، دستور goto برای رفتن از یک خط به خط خاص از کد نوشته شده وجود دارد که بسیار کارآمد و مفید و گاهی واقعا ضروری است.
متاسفانه در متلب این دستور وجود ندارد.حال سوال من این است که در متلب ایا دستور معادلی برای این دستور وجود دارد؟
مثلا من یک کد با تعداد زیادی ورودی و خروجی دارم که میخواهم در انتها مورد و پارامتر خاصی را کترل کرده و اگر مقدار آن مثلا دارای شرایط یا مقدار خاصی بود، برنامه با حفظ اطلاعات ورودی و خروجی برنامه، بخشی از کد را از نقطه خاصی به بعد مجددا انجام داده و نتایح جدیدی بدست آورد اما چون دستور goto را ندارم، دچار مشکل شده ام. آیا امکان این کار هست؟به چه صورت.ممن.ن از راهنمایی شما
سلام و عرض ادب
بله در متلب دستوری دقیقا مطابق با Goto نداریم اما میتوانید از مکملهایی چون Break و Continue استفاده کنید. هردوی این دستورات در متن همین جلسه بطور کامل توضیح داده شده است.
موفق باشید.
سلام و احترام. ممنون از پاسختون. بله درسته .کاربرد این دو دستور و همینطور دستورات شزطی رو میدونم. ام این متاسفانه چیزی نیست که من به دنبالش هستم. نمیدونم چرا متلب این دستور هم رو نداره. البته شنیدم که یه منطق مشخصی در این باره هست.
اما من مثلا میخوام بعد از یک شرط ، برنامه به خط مشخصی بره و از اونجا به بعد با اطلاعات جدید بدست اومده در مرحله قبل ادامه پیدا کنه.
آیا واقعا در متلب موضوع به این مهمی راهی نداره؟ واقعا چطور ممکنه؟
clc ,clear
clf
%t=input(‘t= ‘)%
%t=[600; 1200; 1800]
no=1.005*10^(-6) % water no from trmodinamic coefficent
b=1
y=linspace(0,1,11)
etta=y/b;
iter=0
phi1=zeros(3,11)
for n=0:1:100
for et=0:0.1:1
gh=1-etta;
phi1=gh-(sum(((2/(pi.*n))*exp(-(n.^2)*(pi^2)*(no*600*sin(pi*etta.*n))))))
َ
%sdd=sum(dd);
%phi=gh-sdd;
end
iter=iter+1
end
disp(‘phi1’)
لذت بخش وعالی است کارتان. یک سوال دارم از حلقه for سه تا جواب مختلف می خواهیم. علت عدم نمایش پاسخ چیست؟
phi1
سلام و عرض ادب
حسین عزیز مشکل تون رو متوجه نمیشم. لطفا در گروه تلگرامی متلبپلاس به آدرس
https://t.me/matlab_discussion
سوالهاتون رو مطرح کنید تا بهتر بتونیم راهنمایی کنیم.
موفق باشید.