PDA

View Full Version : سوال: راهنمایی برای نوشتن کدبرنامه توان رساندن ماتریس



soudabeh_20
جمعه 26 آبان 1391, 15:18 عصر
سلام

دوستان میخوام یه کد بنویسم به زبان c++ که یک ماتریس از ورودی بگیره و اونو به توان n برسانه

برای رسیدن به توان 2 میدانم که باید ماتریس را در ترانهاده اش ضرب کنیم اما وقتی به توان n باشه باید چیکار کنم؟:افسرده:

مسعود اقدسی فام
جمعه 26 آبان 1391, 15:21 عصر
یعنی چی که برای به توان دو رسیدن باید ماتریس رو در ترانهاده‌اش ضرب کنیم؟ توان دوم یعنی ضرب ماتریس در خودش. توان nام یعنی n - 1 بار ضرب ماتریس در خودش.

البته روش‌های سریغتر از n - 1 بار ضرب مستقیم وجود داره. من منظورتون رو از ضرب در ترانهاده متوجه نشدم.

soudabeh_20
شنبه 27 آبان 1391, 08:28 صبح
یعنی چی که برای به توان دو رسیدن باید ماتریس رو در ترانهاده‌اش ضرب کنیم؟ توان دوم یعنی ضرب ماتریس در خودش. توان nام یعنی n - 1 بار ضرب ماتریس در خودش.

البته روش‌های سریغتر از n - 1 بار ضرب مستقیم وجود داره. من منظورتون رو از ضرب در ترانهاده متوجه نشدم.
دوست گلم امکان نداره ماتریس را بتونی در خودش ضرب کنی چون برای ضرب ماتریس ها باید سطر ماتریس اول با ستون ماتریس دوم برابر باشه این جز قوانین ضرب ماتریس هاست

اون که شما میگید برای به توان رساندن دو عدد در همدیگه است نه دو ماتریس

تا جایی که به ذهنم رسیده باید یه تابع بازگشتی براش نوشته بشه اما چطوریشو نمیدانم

omidshaman
شنبه 27 آبان 1391, 10:14 صبح
فاقد محتوای فنی؛ لطفا قوانین فعالیت در سایت را مطالعه نمایید.
اقای صادقیان الان میشه بگین دقیقا کدوم قانون سایت؟! خوب این سوال مربوط به این قسمت نیست دیگه هست؟

دوست گلم امکان نداره ماتریس را بتونی در خودش ضرب کنی چون برای ضرب ماتریس ها باید سطر ماتریس اول با ستون ماتریس دوم برابر باشه این جز قوانین ضرب ماتریس هاست

یعنی الان یک ماتریس 3*3 رو نمیشه در خودش ضرب کرد؟!!!
در ضمن باید سطون اولی مساوی سطر دومی باشه!...

اون که شما میگید برای به توان رساندن دو عدد در همدیگه است نه دو ماتریس
این که باید مانریس رو n بار در خودش ضرب کنیم مربوط به توان رساندن 2 تا عدده؟! درست میگن دیگه!

تا جایی که به ذهنم رسیده باید یه تابع بازگشتی براش نوشته بشه اما چطوریشو نمیدانم
خسته نباشی:لبخند:
خوب شما با ضرب یک ماتریس 2*2 در یک ماتریس 2*2 دیگه شروع کن الگوریتمشو پیدا کن بعد برای n بار هم این کار باید n بار انجام بشه حالا اگر بیشتر هم بود(3*3 مثلا) فرقی نداره شیوش تقریبا شبیه ضرب 2*2 ست
به هر حال شما تا هر جایی که می تونی رو بنویساگر مشکلی داشتی کدتو بزار ...

soudabeh_20
شنبه 27 آبان 1391, 10:32 صبح
یعنی الان یک ماتریس 3*3 رو نمیشه در خودش ضرب کرد؟!!!
در ضمن باید سطون اولی مساوی سطر دومی باشه!...

این که باید مانریس رو n بار در خودش ضرب کنیم مربوط به توان رساندن 2 تا عدده؟! درست میگن دیگه!

خسته نباشی:لبخند:
خوب شما با ضرب یک ماتریس 2*2 در یک ماتریس 2*2 دیگه شروع کن الگوریتمشو پیدا کن بعد برای n بار هم این کار باید n بار انجام بشه حالا اگر بیشتر هم بود(3*3 مثلا) فرقی نداره شیوش تقریبا شبیه ضرب 2*2 ست
به هر حال شما تا هر جایی که می تونی رو بنویساگر مشکلی داشتی کدتو بزار ...


تعداد ستون های ماتریس اول برابر با تعداد سطرهای ماتریس دوم باشه...ببخشید اگر اشتباه گفتم

این ماتریس N*N که شما میگید یه ماتریس خاص مربعیه امکان داره ماتریس ورودی من مربعی نباشه اونوقت نباید جواب بده؟!

من تابع را برای همه نوع ماتریسی میخوام نه فقط ماتریس های مربعی

در انتها از همه بزرگان برنامه نویس عذرمیخوام من رشته ام ریاضیه و اطلاعات خوبی از برنامه نویسی ندارم ببخشید اگر سوالم ابتدایی بود

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

سپاسگزارم:قلب:

omidshaman
شنبه 27 آبان 1391, 10:56 صبح
این ماتریس N*N که شما میگید یه ماتریس خاص مربعیه امکان داره ماتریس ورودی من مربعی نباشه اونوقت نباید جواب بده؟!
گفتم اول 3*3 رو حساب کن چون میشه حالت خاص m*n چون ترانهادش مساوی خودشه و ساده تره شما اینو اول بنویسی دستت میاد چکار باید بکنی...
برای m*n کافیه قبل از ضرب ترانهادشو حساب کنی یعنی سطر و سطوناشو جابه جا کنی

مسعود اقدسی فام
شنبه 27 آبان 1391, 13:51 عصر
دوست گلم امکان نداره ماتریس را بتونی در خودش ضرب کنی چون برای ضرب ماتریس ها باید سطر ماتریس اول با ستون ماتریس دوم برابر باشه این جز قوانین ضرب ماتریس هاست

اون که شما میگید برای به توان رساندن دو عدد در همدیگه است نه دو ماتریس

تا جایی که به ذهنم رسیده باید یه تابع بازگشتی براش نوشته بشه اما چطوریشو نمیدانم

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

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

اینکه یه ماتریس غیر مربعی رو در ترانهاده ضرب کنی به توان رسوندن حساب نمی‌شه به معنای رسمی. منظورتون از به توان رسوندن دو ماتریس رو هم متوجه نشدم. من در مورد به توان n رسوندن یه ماتریس مربعی صحبت کرده بودم.

مسعود اقدسی فام
شنبه 27 آبان 1391, 14:02 عصر
نشه مثل اون بابایی که اومد گفت همونطور که دترمینان ماتریس دو در دو می‌شه حاصلضرب قطر اصلی منهای حاصلضرب قطر فرعی، مال هر ماتریس n در n هم همین می‌شه. بعد برنامه نوشته بود که حاصلضرب قطر اصلی یه ماتریس n در n رو منهای حاصلضرب قطر فرعی کرده بود و می‌گفت این یعنی دترمینان ماتریس n در n!!! سایر عناصر هم بوقن.
مفاهیم ریاضی رو با بحث الگوریتمی قاطی نکنیم. شاید استاد دلش خواسته ماتریس غیر مربعی رو در ترانهاده ضرب کنید. ولی این معنیش به توان رساندن نیست.