فاکتوریل در متلب — راهنمای جامع

۱۷۳۹ بازدید
آخرین به‌روزرسانی: ۲۳ اردیبهشت ۱۴۰۲
زمان مطالعه: ۲ دقیقه
فاکتوریل در متلب

در ریاضیات فاکتوریل یک عدد صحیح مثبت n، برابر با حاصل ضرب تمام اعداد صحیح کوچک‌تر یا مساوی با n است. در این مطلب قصد داریم روش‌های محاسبه فاکتوریل در متلب را ارائه کنیم.

فاکتوریل عدد n با نماد !n نشان داده می‌شود. برای مثال:

$$6!=6\times5\times4\times3\times2\times1=720$$

نکته: !0 یک مورد خاص است و برابر با 1 در نظر گرفته می‌شود.

عملگر فاکتوریل در بسیاری از حوزه‌های کاربردی در ریاضیات مانند آمار و احتمالات، ترکیبات، جبر و آنالیز داده مورد استفاده قرار می‌گیرد. !n روشی برای چیدن n المان مشخص به صورت رشته‌ای (مسئله جایگشت‌های هر مجموعه از اشیا) است.

در ادامه با ایده‌هایی برای نوشتن کدهای محاسبه فاکتوریل در MATLAB آشنا خواهیم شد. چند روش مختلف برای محاسبه فاکتوریل در MATLAB وجود دارد.

محاسبه فاکتوریل در متلب با تابع factorial

در نرم افزار MATLAB، تابعی توکار (Built-in) به نام «factorial» وجود دارد، که به سادگی قادر به محاسبه فاکتوریل یک عدد است. روش استفاده از این دستور در MATLAB به صورت زیر است:

n = 9
% use function factorial
factorial(n)

جواب حاصل از اجرای برنامه فوق برابر با 362880 خواهد بود.

محاسبه فاکتوریل در متلب با تابع prod

راه حل دیگر استفاده از تابع «prod» است. برای یک بردار، مقدار $$\text{prod}(n)$$ برابر با حاصل ضرب تمام المان‌های n است. در مورد ماتریس‌ها، $$\text{prod}(x)$$ برابر با برداری سطری از حاصل ضرب ستون‌ها است.

n = 9
% use function prod, which multiplicates
% every element in a vector
prod([1 : n])

جواب به دست آمده باز هم 362880 است.

روش تکرار

راه دیگر استفاده از روش تکرار برای به دست آوردن حاصل ضرب اعداد است، درست مانند آنچه در تعریف فاکتوریل آمده است. کد مربوط به این روش به صورت زیر است.

n = 9
% use iterations
f = 1;
for i = 1:n
    f = f*i;
end
f

فرمول اختصاصی

حال اگر بخواهیم فرمول خاصی که شامل عملگر فاکتوریل است را محاسبه کنیم، می‌توانیم کدی برای این منظور بنویسیم. فرض کنید لازم است تا فرمول زیر را محاسبه کنیم:

$$\frac{n!}{(n-m)!m!}$$

نمی‌خواهیم از تابع پیش آماده MATLAB استفاده کنیم و فرض می‌کنیم شروط مربوط به این محاسبه یعنی $$n>m$$ و نیز صحیح بودن متغیرهای $$n$$ و $$m$$، رعایت می‌شوند. از قبل می‌دانیم:

$$\frac{n!}{(n-m)!m!}=\frac{n(n-1)...(m+1)}{(n-m)!}$$

بنابراین کد این تابع می‌تواند به صورت زیر نوشته شود.

function y = special_fact(n, m)
% using 'prod' and appropriate vectors
y = prod([m+1 : n]) / prod([1 : n-m]); 

یک نمونه کد دیگر که پاسخی مشابه دارد، به صورت زیر است.

function y = special_fact1(n, m)
% using loops to calculate the numerator
f1 = 1;
for i = m+1 : n
    f1 = f1 * i;
end
% using loops to calculate the denominator
f2 = 1;
for i = 1 : n-m
    f2 = f2 * i;
end
% assembling the appropriate terms
y = f1/f2;

حال کدهای نوشته شده را تست می‌کنیم.

n = 19;
m = 13;
factorial(n)/(factorial(n-m)*factorial(m))
special_fact(n,m)
special_fact1(n,m)

هر سه جواب برابر با 27132 خواهند شد.

فاکتوریل دوگانه

فرمول ریاضی مربوط به فاکتوریل دوگانه (Double Factorial) به صورت زیر است:

اگر $$n$$ زوج باشد:

$$n!! = n(n - 2)(n - 4)(n - 6)... (4)(2)$$

اگر $$n$$ فرد باشد:

$$n!! = n(n - 2)(n - 4)(n - 6) ...(3)(1)$$

کدهای مربوط به محاسبه این نوع فاکتوریل به صورت زیر است.

n = input('Give me a number: ');
df = 1;
for i = n : -2 : 1
    df = df * i;
end
str = ['Double Factorial of ' num2str(n) ' is ' num2str(df)];
disp(str)

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای ۱۴ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
MATRIXLAB
۲ thoughts on “فاکتوریل در متلب — راهنمای جامع

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *