فاکتوریل با حلقه for در متلب
نویسنده : محمد پارسایی | زمان انتشار : 03 دی 1400 ساعت 14:07
جهت انجام پروژه های دانشجویی و یا تمرینهای برنامه نویسی رشته کامپیوتر میتوانید به آی دی تلگرام زیر پیام دهید
@AlirezaSepand
در ریاضیات فاکتوریل یک عدد صحیح مثبت 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 %usefunctionfactorial factorial(n) |
جواب حاصل از اجرای برنامه فوق برابر با 362880 خواهد بود.
محاسبه فاکتوریل در متلب با تابع prod
راه حل دیگر استفاده از تابع «prod» است. برای یک بردار، مقدار $$\text{prod}(n)$$ برابر با حاصل ضرب تمام المانهای n است. در مورد ماتریسها، $$\text{prod}(x)$$ برابر با برداری سطری از حاصل ضرب ستونها است.
n=9 %usefunctionprod,whichmultiplicates %everyelementinavector prod([1:n]) |
جواب به دست آمده باز هم 362880 است.
روش تکرار
راه دیگر استفاده از روش تکرار برای به دست آوردن حاصل ضرب اعداد است، درست مانند آنچه در تعریف فاکتوریل آمده است. کد مربوط به این روش به صورت زیر است.
n=9 %useiterations f=1; fori=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)!}$$
بنابراین کد این تابع میتواند به صورت زیر نوشته شود.
functiony=special_fact(n,m) %using'prod'andappropriatevectors y=prod([m+1:n])/prod([1:n-m]); |
یک نمونه کد دیگر که پاسخی مشابه دارد، به صورت زیر است.
functiony=special_fact1(n,m) %usingloopstocalculatethenumerator f1=1; fori=m+1:n f1=f1*i; end %usingloopstocalculatethedenominator f2=1; fori=1:n-m f2=f2*i; end %assemblingtheappropriateterms 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; fori=n:-2:1 df=df *i; end str=['Double Factorial of 'num2str(n)' is 'num2str(df)]; disp(str) |
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزش های متلب MATLAB
- مجموعه آموزش های برنامه نویسی متلب برای علوم و مهندسی
- مجموعه آموزشهای ریاضیات
- آموزش ریاضی پایه دانشگاهی
- محاسبه فاکتوریل در جاوا — به زبان ساده
- برنامه نویسی در متلب (MATLAB) — راهنمای گام به گام
^^
«مرضیه آقایی» دانشآموخته مهندسی برق است. فعالیتهای کاری و پژوهشی او در زمینه کنترل پیشبین موتورهای الکتریکی بوده و در حال حاضر، آموزشهای مهندسی برق مجله فرادرس را مینویسد.
بر اساس رای 9 نفر
آیا این مطلب برای شما مفید بود؟
منبع: blog.faradars.org