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

مرحله اول:گرفتن ورودی

در مرحله اول باید از کاربر ورودی ها را بگیریم.گرفتن ورودی در متلب با دستور input انجام می شود.پس باید کد زیر را وارد کنیم.

 

a=input('one:');

b=input('two:');

 

با این کد دو ورودی از کاربر گرفته شده و سپس در دو متغیر بالا دخیره می شوند.

مرحله دوم:به دست آوردن طول ماتریس ها

برای انجام محاسبات بعدی نیاز است که طول ماتریس ها را به دست آوریم.برای این کار از دستور length استفاده می کنیم.پس کد زیر را وارد می کنیم.

 

as=length(a);

bs=length(b);

 

مرحله ی سوم:به دست آوردن بزرگی و کوچکی:

باید تعیین کنیم که کدام ماتریس از دیگری بزرگ تر است.چون باید از آن در حلقه ها استفاده کنیم.برای این کار از دستور min و max استفاده می کنیم که باید کد زیر را وارد کنیم.

 

cs=max(as,bs);

ds=min(as,bs);

 

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

در این مرحله باید حاصل ضرب تک تک عناصر ماتریس ها در هم را در یک ماتریس دو بعدی ذخیره کنیم.که ابعاد ماتریس بستگی به ابعاد ماتریس های ورودی دارد.ابتدا اجازه دهید کد را وارد کنیم و سپس آن را توضیح می دهیم.

 

if(as>bs)

for k=1:ds

for l=1:cs

c(k,l)=a(l)*b(k);

end

end

else

for k=1:ds

for l=1:cs

c(k,l)=a(k)*b(l);

end

end

end

 

دستور بالا ابتدا بررسی می کند که کدام ماتریس بزرگتر است.این که آیا ماتریس اولی بزرگتر است با ماتریس دومی.سپس با دو حلقه ی تو در تو ماتریس حاصل ضرب ساخته می شود.خروجی این کد را در زیر می بینید.

 

 

پرداختن به جزئیات را به عهده ی شما می گذاریم.

برای به دست آوردن ماتریس نهایی باید بدانیم چگونه این ماتریس را از ماتریس c که با کد بالا تولید کردیم بسازیم. ابتدا باید تصویر این ماتریس را نسبت به محور x به دست آوریم.یعنی باید جای سطر اول را با سطر آخر عوض کنیم وبه همین ترتیب بقیه ی سطرها.این کار با دستور flipud انجام می شود.که با این کد خروجی زیر را داریم.

 

 

جمله ی اول ماتریس نهایی همان جمله ی سه و یک ماتریس تصویر شده است.جمله ی آخر ماتریس نهایی هم جمله ی یک و چهار ماتریس تصویر شده است.جمله های بین این دو هم با حاصل جمع قطر های ماتریس  تصویرشده ساخته می شود.اجازه دهید بر روی شکل توضیح دهیم.

 

اکنون که روش کار را فهمیدیم , کار را ادامه می دهیم.با دستور size تعداد سطر و ستون ماتریس تصویر شده را ذخیره می کنیم.

 

[o,p]=size(c);

 

در مرحله آخر باید ماتریس نهایی را با جمع قطر های ماتریس تصویر شده تولید کنیم.برای این کار ابتدا باید قطرهای ماتریس را مشخص کنیم که این کار با دستور diag انجام می شود که به فرم زیر است.

 

Diag(نام ماتریس,عدد مربوط به قطر)

 

عدد مربوط به قطر به این ترتیب مشخص می شود که عدد قطر اصلی صفر بوده و قطرهای زیری با عدد منفی و قطرهای رویی با عدد مثبت مشخص می شوند.

برای جمع کردن المان های قطرها هم از دستور sum استفاده می کنیم.و در نهایت با یک حلقه ی for و تعیین یک شمارنده ماتریس نهایی را تولید می کنیم.

 

h1=1;

for h=(-(o-1)):(p-1)

hasel(h1)=sum(diag(c,h));

h1=h1+1;

end

 

پرداختن به جزئیات حلقه را به عهده ی شما می گذاریم.

شما در نهایت باید کد زیر را داشته باشید.



clear all

clc

a=input('one:');

b=input('two:');

as=length(a);

bs=length(b);

cs=max(as,bs);

ds=min(as,bs);

if(as>bs)

    for k=1:ds

        for l=1:cs

        c(k,l)=a(l)*b(k);

        end

    end

else

 for k=1:ds

        for l=1:cs

        c(k,l)=a(k)*b(l);

        end

end  

end

c=flipud(c);

[o,p]=size(c);

h1=1;

for h=(-(o-1)):(p-1)

    hasel(h1)=sum(diag(c,h));

    h1=h1+1;

end

hasel



می توانید فایل مربوط به پروژه را از زیر دانلود کنید.
 

دانلود فایل پروژه
حجم: 651 بایت