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

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

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

997696

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

6!=6×5×4×3×2×1=7206!=6\times5\times4\times3\times2\times1=720

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

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

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

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

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

1n = 9
2% use function factorial
3factorial(n)

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

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

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

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

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

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

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

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

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

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

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) به صورت زیر است:

اگر nn زوج باشد:

n!!=n(n2)(n4)(n6)...(4)(2)n!! = n(n - 2)(n - 4)(n - 6)... (4)(2)

اگر nn فرد باشد:

n!!=n(n2)(n4)(n6)...(3)(1)n!! = n(n - 2)(n - 4)(n - 6) ...(3)(1)

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

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)

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

^^

بر اساس رای ۱۵ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
MATRIXLAB
۲ دیدگاه برای «فاکتوریل در متلب — راهنمای جامع»

خیلی عالی ممنون

نظر شما چیست؟

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