نمونه مثالهای جلسه چهارم آموزش متلب👆
#آموزش_متلب
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
#آموزش_متلب
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
تمرینات سری چهارم آموزش نرمافزار متلب👆
#آموزش_متلب
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
#آموزش_متلب
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
اعضای محترم کانال:
سال نو مبارک.🌺🌺🌺
انشاالله سالی پر از شادی و همراه با سلامتی برای خود و خانوادهها و تمام کسانی که دوست دارید، باشد.
بیایید با همدیگر دعا کنیم که در سال جدید، بلای کرونا هر چه زودتر از تمام مردم جهان علیالخصوص هموطنهای خوبمون در سراسر کشور دور شود و دیگر شاهد اخبار ناگوار این بیماری نباشیم.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
سال نو مبارک.🌺🌺🌺
انشاالله سالی پر از شادی و همراه با سلامتی برای خود و خانوادهها و تمام کسانی که دوست دارید، باشد.
بیایید با همدیگر دعا کنیم که در سال جدید، بلای کرونا هر چه زودتر از تمام مردم جهان علیالخصوص هموطنهای خوبمون در سراسر کشور دور شود و دیگر شاهد اخبار ناگوار این بیماری نباشیم.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
اعضای محترم کانال:
از آنجاییکه بیشتر مشکل برنامهنویسان کار با حلقههای کنترلی و شرطی میباشد، تا سه هفته آینده آموزشی ارائه نخواهد شد. اما به جای آن برای فهم بهتر آموزشهای ارائه شده تا جلسه چهارم، مثالهای جامع و کاربردی ارائه خواهد شد.
برنامه این سه هفته به این صورت خواهد بود، که یک روز مثال ارائه خواهد شد و روز بعد یک تمرین ارائه خواهد شد. تسلط بر موضوع حلقههای کنترلی و شرطی میتواند گام بسیار مهمی برای تبدیل شدن به یک برنامهنویس حرفهای در متلب باشد.
مثالهای ارائه شده و تمرینات بسیار کاربردی میباشند و در ارائه این مثالها نقاط ضعف برنامهنویسان درنظر گرفته شده است. بنابراین پیشنهاد این است که این مثالها را به دقت تحلیل نمایید. سپس تمرینات را حل نمایید. امیدوارم آموزشهای این کانال موثر باشد و بتواند کمکی برای حرفهای شدن اعضای کانال باشد.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
از آنجاییکه بیشتر مشکل برنامهنویسان کار با حلقههای کنترلی و شرطی میباشد، تا سه هفته آینده آموزشی ارائه نخواهد شد. اما به جای آن برای فهم بهتر آموزشهای ارائه شده تا جلسه چهارم، مثالهای جامع و کاربردی ارائه خواهد شد.
برنامه این سه هفته به این صورت خواهد بود، که یک روز مثال ارائه خواهد شد و روز بعد یک تمرین ارائه خواهد شد. تسلط بر موضوع حلقههای کنترلی و شرطی میتواند گام بسیار مهمی برای تبدیل شدن به یک برنامهنویس حرفهای در متلب باشد.
مثالهای ارائه شده و تمرینات بسیار کاربردی میباشند و در ارائه این مثالها نقاط ضعف برنامهنویسان درنظر گرفته شده است. بنابراین پیشنهاد این است که این مثالها را به دقت تحلیل نمایید. سپس تمرینات را حل نمایید. امیدوارم آموزشهای این کانال موثر باشد و بتواند کمکی برای حرفهای شدن اعضای کانال باشد.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
مثال۱) برنامهای بنویسید که نمرات ۲۰ دانشجو را به عنوان ورودی گرفته و تعداد قبولشدگان و تعداد مردودین را مشخص کرده، سپس نمرات بالای ۱۰ را در ماتریس a، نمرات زیر ۱۰ را در ماتریس b و نمرات بین ۱۷ تا ۲۰ را در ماتریس c و در نهایت نمرات سایر دانشجویان را در ماتریس d ذخیره کرده و تعداد دانشجویان را نشان دهد. در ادامه، بالاترین نمره و کمترین نمره و میانگین نمرات را نیز مشخص کرده، سپس نمودار میلهای نمرات را رسم کنید. (به عنوان تمرین این سوال را با استفاده از حلقههای کنترلی و شرطی حل نمایید.)
پاسخ) کدهای متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
% std_poi is a vector have 20 elements that % show points of students
std_poi = input(' std_poi = ' );
% main code
accept = length(find(std_poi >= 10));
refuse = length(find(std_poi < 10));
a = std_poi(find(std_poi > 10));
aa = length(a);
b = std_poi(find(std_poi < 10));
bb = length(b);
c = std_poi(find(std_poi >= 17));
cc = length(c);
d = std_poi(find(std_poi < 17));
dd = length(d);
max_poi = max(std_poi);
min_poi = min(std_poi);
avg_poi = mean(std_poi);
% show outputs
disp(' accept = ')
disp(num2str(accept))
disp(' refuse = ')
disp('num2str(refuse))
disp(' more than 10 = ')
disp(num2str(a))
disp(' number of more than 10 = ')
disp(num2str(aa))
disp(' less than 10 = ')
disp(num2str(bb))
disp(' between 17 and 20 = ')
disp(num2str(c))
disp(' number of between 17 and 20 = ')
disp(num2str(cc))
disp(' less than 17 = ')
disp(num2str(d))
disp(' number of less than 17 = ')
disp(num2str(dd))
disp(' maximum point = ')
disp(num2str(max_poi))
disp(' minimum point = ')
disp(num2str(min_poi))
disp(' average = ')
disp(num2str(avg_poi))
% figure of points
bar(std_poi)
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
پاسخ) کدهای متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
% std_poi is a vector have 20 elements that % show points of students
std_poi = input(' std_poi = ' );
% main code
accept = length(find(std_poi >= 10));
refuse = length(find(std_poi < 10));
a = std_poi(find(std_poi > 10));
aa = length(a);
b = std_poi(find(std_poi < 10));
bb = length(b);
c = std_poi(find(std_poi >= 17));
cc = length(c);
d = std_poi(find(std_poi < 17));
dd = length(d);
max_poi = max(std_poi);
min_poi = min(std_poi);
avg_poi = mean(std_poi);
% show outputs
disp(' accept = ')
disp(num2str(accept))
disp(' refuse = ')
disp('num2str(refuse))
disp(' more than 10 = ')
disp(num2str(a))
disp(' number of more than 10 = ')
disp(num2str(aa))
disp(' less than 10 = ')
disp(num2str(bb))
disp(' between 17 and 20 = ')
disp(num2str(c))
disp(' number of between 17 and 20 = ')
disp(num2str(cc))
disp(' less than 17 = ')
disp(num2str(d))
disp(' number of less than 17 = ')
disp(num2str(dd))
disp(' maximum point = ')
disp(num2str(max_poi))
disp(' minimum point = ')
disp(num2str(min_poi))
disp(' average = ')
disp(num2str(avg_poi))
% figure of points
bar(std_poi)
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
تمرین1) برنامهای بنویسید که یک عدد طبیعی از کاربر دریافت نموده، سپس این عدد را به دو عدد تجزیه نماید،
با این شرط که اعداد تجزیه شده به این صورت باشند که بیشترین نزدیکی را به هم داشته باشند. به عنوان مثال
اگر عدد 25 را تجزیه نماییم، باید اعداد تجزیه شده به صورت 5 و 5 باشند. به عنوان مثالی دیگر، اگر عدد 24 را
تجزیه نماییم، اعداد تجزیه شده به صورت 4 و 6 باشند.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
با این شرط که اعداد تجزیه شده به این صورت باشند که بیشترین نزدیکی را به هم داشته باشند. به عنوان مثال
اگر عدد 25 را تجزیه نماییم، باید اعداد تجزیه شده به صورت 5 و 5 باشند. به عنوان مثالی دیگر، اگر عدد 24 را
تجزیه نماییم، اعداد تجزیه شده به صورت 4 و 6 باشند.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
مثال۲) برنامهای بنویسید که ۱۰ عدد را از ورودی گرفته و تعداد اعداد اول آنها را در n ذخیره کند و در ماتریس a نمایش دهد. همچنین سینوس آنها را برحسب رادیان محاسبه کرده و در ماتریس b ذخیره کند، اعداد بزرگتر از ۵ را در ماتریس c ذخیره کرده و معکوس تانژانت آنها را در ماتریس d ذخیره کند. نهایتا بزرگترین مقسوم علیه مشترک و کوچکترین مضرب مشترک بین آنها را مشخص کرده و به ترتیب در متغیر G و L ذخیره کند.
کدهای متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
% inp is a vector have 10 elements
inp = input(' inp = ');
% main code
z = find(isprime(inp) == 1);
n = length(z);
a = inp(z);
b = sin(a);
c = inp(find(inp > 5));
d = atan(c);
for i = 1:length(inp)
for j = 1:length(inp)
G(i,j) = gcd(inp(i),inp(j));
end
end
for i = 1:length(inp)
for j = 1:length(inp)
L(i,j) = lcm(inp(i),inp(j));
end
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
کدهای متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
% inp is a vector have 10 elements
inp = input(' inp = ');
% main code
z = find(isprime(inp) == 1);
n = length(z);
a = inp(z);
b = sin(a);
c = inp(find(inp > 5));
d = atan(c);
for i = 1:length(inp)
for j = 1:length(inp)
G(i,j) = gcd(inp(i),inp(j));
end
end
for i = 1:length(inp)
for j = 1:length(inp)
L(i,j) = lcm(inp(i),inp(j));
end
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
تمرین۲) برنامهای بنویسید که مبلغ سپردهگذاری در یک بانک را همراه با مدت سپردهگذاری(به صورت ماه) از کاربر دریافت نموده، سپس اگر مبلغ سرمایهگذاری از ۵۰ میلیون ریال بیشتر باشد، سود سرمایهگذاری را با نسبت فرجه سوم تعداد ماههای سرمایهگذاری برگرداند و مبلغ سود و مبلغ کل را برای کل دوره سرمایهگذاری
محاسبه نماید. اگر مبلغ سرمایهگذاری بین ۵۰ تا ۲۰۰ میلیون ریال باشد، سود سرمایهگذاری را با نسبت جذر تعداد ماههای سرمایهگذاری برگرداند و مبلغ سود و مبلغ کل را برای دوره سرمایهگذاری محاسبه نماید. در نهایت اگر مبلغ سرمایهگذاری بیشتر از ۲۰۰ میلیون ریال باشد، سود سرمایهگذاری را با نسبت تعداد ماههای
سرمایهگذاری برگرداند و مبلغ سود و مبلغ کل را برای دوره سرمایهگذاری محاسبه نماید. (برای مثال اگر فردی ۱۰۰ میلیون ریال به صورت ۳ ماهه سرمایهگذاری کند، سود به ترتیب در ماههای اول، دوم و سوم برابر است با ۱ و ۱.۴۱ و ۱.۷۳ میباشد.) همچنین به ازای هر سال که از سرمایهگذاری میگذرد، در شروع سال جدید به سود آن ماه یک درصد هم اضافه میشود و این سود برای ماههای بعد هم باقی میماند و به ازای هر سال این
یک درصد اضافه میشود (به عنوان مثال، اگر سود در پایان سال اول ۱۲ درصد شود، و در سال جدید که ماه ۱۳م میباشد و سود باید ۱۳درصد باشد، یک درصد به آن اضافه میشود و تا پایان این سال این یک درصد اعمال میشود و در پایان ماه ۲۴م سود ۲۵ درصد خواهد بود. و در ماه ۲۵م که شروع سال سوم میباشد، و سود باید ۲۶ درصد باشد، یک درصد به آن اضافه میشود و ۲۷ درصد میشود. و این روند تا پایان زمان سپردهگذاری ادامه مییابد.)
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
محاسبه نماید. اگر مبلغ سرمایهگذاری بین ۵۰ تا ۲۰۰ میلیون ریال باشد، سود سرمایهگذاری را با نسبت جذر تعداد ماههای سرمایهگذاری برگرداند و مبلغ سود و مبلغ کل را برای دوره سرمایهگذاری محاسبه نماید. در نهایت اگر مبلغ سرمایهگذاری بیشتر از ۲۰۰ میلیون ریال باشد، سود سرمایهگذاری را با نسبت تعداد ماههای
سرمایهگذاری برگرداند و مبلغ سود و مبلغ کل را برای دوره سرمایهگذاری محاسبه نماید. (برای مثال اگر فردی ۱۰۰ میلیون ریال به صورت ۳ ماهه سرمایهگذاری کند، سود به ترتیب در ماههای اول، دوم و سوم برابر است با ۱ و ۱.۴۱ و ۱.۷۳ میباشد.) همچنین به ازای هر سال که از سرمایهگذاری میگذرد، در شروع سال جدید به سود آن ماه یک درصد هم اضافه میشود و این سود برای ماههای بعد هم باقی میماند و به ازای هر سال این
یک درصد اضافه میشود (به عنوان مثال، اگر سود در پایان سال اول ۱۲ درصد شود، و در سال جدید که ماه ۱۳م میباشد و سود باید ۱۳درصد باشد، یک درصد به آن اضافه میشود و تا پایان این سال این یک درصد اعمال میشود و در پایان ماه ۲۴م سود ۲۵ درصد خواهد بود. و در ماه ۲۵م که شروع سال سوم میباشد، و سود باید ۲۶ درصد باشد، یک درصد به آن اضافه میشود و ۲۷ درصد میشود. و این روند تا پایان زمان سپردهگذاری ادامه مییابد.)
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
اعضای محترم کانال متلب توجه داشته باشید که تمریناتی که در کانال گذاشته میشود، به این منظور هست که آموزشهایی که فراگرفتید را به چالش بکشید. بنابراین تمرینات را به فرد دیگری واگذار نکنید که برای شما حل کند، بهتر است بارها و بارها تلاش کنید تا بالاخره پاسخ را بیابید. قطعا در تمریناتی که گذاشته میشود نکاتی وجود دارد که فقط با درگیرشدن برای حل تمرین میتوانید این نکات را بیابید.
در صورتی که میخواهید برنامهنویس حرفهای شوید، تمرینات را اگر ده بار هم نتوانستید حل نمایید، باز سعی کنید خودتان حل نمایید. در این کانال پاسخ تمرینات گذاشته نمیشود، اما جهت آشنایی با حل تمرینات، فقط کد تمرین ۱ در کانال گذاشته میشود، اما از این پس دیگر پاسخ هیچ تمرینی گذاشته نمیشود.
همچنین توجه داشته باشید، برای حل یک سوال ممکن است چندین راهحل باشد بنابراین اگر کدی را نوشتید و پاسخ صحیح دریافت نمودید، بنابراین کد صحیح میباشد.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
در صورتی که میخواهید برنامهنویس حرفهای شوید، تمرینات را اگر ده بار هم نتوانستید حل نمایید، باز سعی کنید خودتان حل نمایید. در این کانال پاسخ تمرینات گذاشته نمیشود، اما جهت آشنایی با حل تمرینات، فقط کد تمرین ۱ در کانال گذاشته میشود، اما از این پس دیگر پاسخ هیچ تمرینی گذاشته نمیشود.
همچنین توجه داشته باشید، برای حل یک سوال ممکن است چندین راهحل باشد بنابراین اگر کدی را نوشتید و پاسخ صحیح دریافت نمودید، بنابراین کد صحیح میباشد.
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
PROGRAMMING - COMPUTER
تمرین1) برنامهای بنویسید که یک عدد طبیعی از کاربر دریافت نموده، سپس این عدد را به دو عدد تجزیه نماید، با این شرط که اعداد تجزیه شده به این صورت باشند که بیشترین نزدیکی را به هم داشته باشند. به عنوان مثال اگر عدد 25 را تجزیه نماییم، باید اعداد تجزیه شده…
کد تمرین۱)
n = input(' n = ');
for i = 1:n
if mod(n,i) == 0
x(i) = i;
y(i) = n/i;
elseif mod(n,i) ~= 0
x(i) = 0;
y(i) = n;
end
end
z = abs(x - y);
[a,b] = min(z);
w = [x(b),y(b)];
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
n = input(' n = ');
for i = 1:n
if mod(n,i) == 0
x(i) = i;
y(i) = n/i;
elseif mod(n,i) ~= 0
x(i) = 0;
y(i) = n;
end
end
z = abs(x - y);
[a,b] = min(z);
w = [x(b),y(b)];
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
مثال۳) یک ماتریس جادویی با ۶ سطر و ستون به نام a در نظر بگیرید. برای کل سطرها و ۵ ستون اول ماتریس، تک تک درایهها را به صورت جداگانه با یک عدد تصادفی در بازه (10,25-) جمع نمایید(توجه نمایید که نباید یک ماتریس از اعداد تصادفی ایجاد نمایید و سپس جمع کنید. بلکه باید درون حلقه تک تک درایهها را جداگانه با یک عدد تصادفی جمع نمایید). ماتریس جدید با ۶ سطر و ۵ ستون را b بنامید. سپس میانگین ماتریس b را به دست آورده و انحراف از میانگین تک تک درایهها از مقدار میانگین را محاسبه نموده و در ماتریس c ذخیره نمایید. سپس با ضرب درایه به درایه دو ماتریس b و c را در هم ضرب نموده و d بنامید. سپس دو ماتریس c و d را با هم مقایسه نموده و درایه هرکدام بزرگتر بود در ماتریس e ذخیره نمایید.
کد متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
a = magic(6);
for i = 1:6
for j = 1:5
b(i,j) = a(i,j) + 35*rand + (-10);
end
end
avg_b = mean(mean(b));
for i = 1:6
for j = 1:5
c(i,j) = b(i,j) - avg_b;
d(i,j) = b(i,j)*c(i,j);
if c(i,j) >= d(i,j)
e(i,j) = c(i,j);
else
e(i,j) = d(i,j);
end
end
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
کد متلب این مثال به صورت زیر میباشد.
clear all
clc
%%
a = magic(6);
for i = 1:6
for j = 1:5
b(i,j) = a(i,j) + 35*rand + (-10);
end
end
avg_b = mean(mean(b));
for i = 1:6
for j = 1:5
c(i,j) = b(i,j) - avg_b;
d(i,j) = b(i,j)*c(i,j);
if c(i,j) >= d(i,j)
e(i,j) = c(i,j);
else
e(i,j) = d(i,j);
end
end
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
مثال۴) برنامهای بنویسید که یک ماتریس مربعی به نام A از کاربر دریافت نمایید. سپس دترمینان ماتریس را محاسبه نموده، اگر دترمینان منفی باشد، یک ماتریس جدید به این صورت که ماتریس قبلی را از همان ماتریس قبلی که درایههای آن نصف شدهاند تفریق نماید و اینکار را آنقدر ادامه دهد تا دترمینان از عدد 6-1e -کمتر شود.
اگر دترمینان صفر شود، همان ماتریس را در خروجی نمایش دهد و اگر دترمینان مثبت شود، یک ماتریس جدید به این صورت که ماتریس قبلی را از همان ماتریس قبلی که درایههای آن نصف شدهاند تفریق نماید و اینکار را آنقدر ادامه دهد تا دترمینان از عدد 6-1e کمتر شود. در هر مرحله ماتریس خروجی را B بنامید.
کد این مثال به صورت زیر میباشد.
clear all
clc
%%
% A is a square matrix
A = input(' A = ');
determinan = det(A);
if determinan == 0
B = A;
elseif determinan < 0
i = 0;
while determinan < -1e-6
A = A - A/2;
determinan = det(A);
i = i + 1;
end
B = A;
else
i = 0;
while determinan > 1e-6
A = A - A/2;
determinan = det(A);
i = i + 1;
end
B = A;
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top
اگر دترمینان صفر شود، همان ماتریس را در خروجی نمایش دهد و اگر دترمینان مثبت شود، یک ماتریس جدید به این صورت که ماتریس قبلی را از همان ماتریس قبلی که درایههای آن نصف شدهاند تفریق نماید و اینکار را آنقدر ادامه دهد تا دترمینان از عدد 6-1e کمتر شود. در هر مرحله ماتریس خروجی را B بنامید.
کد این مثال به صورت زیر میباشد.
clear all
clc
%%
% A is a square matrix
A = input(' A = ');
determinan = det(A);
if determinan == 0
B = A;
elseif determinan < 0
i = 0;
while determinan < -1e-6
A = A - A/2;
determinan = det(A);
i = i + 1;
end
B = A;
else
i = 0;
while determinan > 1e-6
A = A - A/2;
determinan = det(A);
i = i + 1;
end
B = A;
end
کانال برنامهنویسی و کامپیوتر:
@programming_computer_top