فاکتوریل در متلب — راهنمای جامع
در ریاضیات فاکتوریل یک عدد صحیح مثبت n، برابر با حاصل ضرب تمام اعداد صحیح کوچکتر یا مساوی با n است. در این مطلب قصد داریم روشهای محاسبه فاکتوریل در متلب را ارائه کنیم.
فاکتوریل عدد n با نماد !n نشان داده میشود. برای مثال:
نکته: !0 یک مورد خاص است و برابر با 1 در نظر گرفته میشود.
عملگر فاکتوریل در بسیاری از حوزههای کاربردی در ریاضیات مانند آمار و احتمالات، ترکیبات، جبر و آنالیز داده مورد استفاده قرار میگیرد. !n روشی برای چیدن n المان مشخص به صورت رشتهای (مسئله جایگشتهای هر مجموعه از اشیا) است.
در ادامه با ایدههایی برای نوشتن کدهای محاسبه فاکتوریل در MATLAB آشنا خواهیم شد. چند روش مختلف برای محاسبه فاکتوریل در MATLAB وجود دارد.
محاسبه فاکتوریل در متلب با تابع factorial
در نرم افزار MATLAB، تابعی توکار (Built-in) به نام «factorial» وجود دارد، که به سادگی قادر به محاسبه فاکتوریل یک عدد است. روش استفاده از این دستور در MATLAB به صورت زیر است:
1n = 9
2% use function factorial
3factorial(n)
جواب حاصل از اجرای برنامه فوق برابر با 362880 خواهد بود.
محاسبه فاکتوریل در متلب با تابع prod
راه حل دیگر استفاده از تابع «prod» است. برای یک بردار، مقدار برابر با حاصل ضرب تمام المانهای n است. در مورد ماتریسها، برابر با برداری سطری از حاصل ضرب ستونها است.
1n = 9
2% use function prod, which multiplicates
3% every element in a vector
4prod([1 : n])
جواب به دست آمده باز هم 362880 است.
روش تکرار
راه دیگر استفاده از روش تکرار برای به دست آوردن حاصل ضرب اعداد است، درست مانند آنچه در تعریف فاکتوریل آمده است. کد مربوط به این روش به صورت زیر است.
1n = 9
2% use iterations
3f = 1;
4for i = 1:n
5 f = f*i;
6end
7f
فرمول اختصاصی
حال اگر بخواهیم فرمول خاصی که شامل عملگر فاکتوریل است را محاسبه کنیم، میتوانیم کدی برای این منظور بنویسیم. فرض کنید لازم است تا فرمول زیر را محاسبه کنیم:
نمیخواهیم از تابع پیش آماده MATLAB استفاده کنیم و فرض میکنیم شروط مربوط به این محاسبه یعنی و نیز صحیح بودن متغیرهای و ، رعایت میشوند. از قبل میدانیم:
بنابراین کد این تابع میتواند به صورت زیر نوشته شود.
1function y = special_fact(n, m)
2% using 'prod' and appropriate vectors
3y = prod([m+1 : n]) / prod([1 : n-m]);
4
یک نمونه کد دیگر که پاسخی مشابه دارد، به صورت زیر است.
1function y = special_fact1(n, m)
2% using loops to calculate the numerator
3f1 = 1;
4for i = m+1 : n
5 f1 = f1 * i;
6end
7% using loops to calculate the denominator
8f2 = 1;
9for i = 1 : n-m
10 f2 = f2 * i;
11end
12% assembling the appropriate terms
13y = f1/f2;
حال کدهای نوشته شده را تست میکنیم.
1n = 19;
2m = 13;
3factorial(n)/(factorial(n-m)*factorial(m))
4special_fact(n,m)
5special_fact1(n,m)
هر سه جواب برابر با 27132 خواهند شد.
فاکتوریل دوگانه
فرمول ریاضی مربوط به فاکتوریل دوگانه (Double Factorial) به صورت زیر است:
اگر زوج باشد:
اگر فرد باشد:
کدهای مربوط به محاسبه این نوع فاکتوریل به صورت زیر است.
1n = input('Give me a number: ');
2df = 1;
3for i = n : -2 : 1
4 df = df * i;
5end
6str = ['Double Factorial of ' num2str(n) ' is ' num2str(df)];
7disp(str)
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزش های متلب MATLAB
- مجموعه آموزش های برنامه نویسی متلب برای علوم و مهندسی
- مجموعه آموزشهای ریاضیات
- آموزش ریاضی پایه دانشگاهی
- محاسبه فاکتوریل در جاوا — به زبان ساده
- برنامه نویسی در متلب (MATLAB) — راهنمای گام به گام
^^
عالی
خیلی عالی ممنون