موضوعات وبسایت : برنامه نویسی
سوالات امتحان آیین نامه رانندگی

فاکتوریل با حلقه for در متلب

فاکتوریل با حلقه 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)

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

^^

مرضیه آقایی (+)

«مرضیه آقایی» دانش‌آموخته مهندسی برق است. فعالیت‌های کاری و پژوهشی او در زمینه کنترل پیش‌بین موتورهای الکتریکی بوده و در حال حاضر، آموزش‌های مهندسی برق مجله فرادرس را می‌نویسد.

بر اساس رای 9 نفر

آیا این مطلب برای شما مفید بود؟

آیا این مطلب برای شما مفید بود؟


منبع: blog.faradars.org



ارسال نظر

نام


ایمیل


نظر