PDA

View Full Version : ماتریس



سه شنبه 07 مرداد 1382, 15:28 عصر
سلام به همه دوستان
1- در زبان برنامه نویسی c ما میتونیم عملگر تعریف کنیم آیا تو دلفی هم می شه این کارو کرد؟
2- در مورد تعریف آرایه دینامیک چه طور می شه بیشتر از 255 تعریف کرد؟
3- در مورد تعریف ماتریش بهترِین روش چیه؟ یعنی چه طور ماتریس را تعریف کنیم که موقع اعمال ماتریسی بهترین سرعت رو داشته باشیم؟
4- برای اعمال ماتریسی و آمار کامپاننت یا unit وجود داره که این الگوریتمها رو تعریف کنه؟

متشکرم.
سوالمو یه طور دیگه مطرح می کنم
من می خوام ماتریسی تعریف کنم که اندازش 100000*100000 باشه یا بزرگتر
و اعمال ماتریسی از قبیل inverce ، جمع، ضرب .... رو تعریف کنم البته سرعت خیلی مهمه
بعدش برای راحتر کار کردن با اونها یک سری عملگر تعریف کنم مثلا برای ضرب دو تا ماتریس از تابع استفاده نکنم بلکه وقتی نوشتم A*B وقتی A و B ماتریس باشه خودش بفهمه و ضرب ماتریسی انجام بده. یه ادیتوری شبیه به برنامه matlab اگه دیده باشین.
اگه کسی تو این زمینه تجربه یا اطلاعاتی داره ممنون می شم منو راهنمایی کنه.

سه شنبه 07 مرداد 1382, 16:20 عصر
سلام
در مورد سوال دوم:
با ارایه استاتیک که نه ولی با ارایه دینامیک چرا میشه اینجوری:
var MyFlexibleArray: array of Real;

SetLength(MyFlexibleArray, 20);
MyFlexibleArray[0]:=9;
بقیه رو نمیدونم :oops:

سه شنبه 07 مرداد 1382, 18:17 عصر
آقا یک اشتباه رخ داد منظورم از دینامیک استاتیک بود :wink: اتفاقاً در آرایه های استاتیک نمی شه بیشتر از 255 تعریف کرد :shock:

shaniaki
سه شنبه 07 مرداد 1382, 22:56 عصر
با عرض ادب:
فکر می کنم تنها زبان معروفی که امکان تحریف عملگرها(ونه تعریف) رو داد (و بعدا هم خیلی پشیمان شدند) سی پلاس پلاس بود که در زبان هایی مثل جاوا (و فکر کنم سی شارپ. مطمءن نیستم) که از سی به وجود آمده اند حذف شده است. در دلفی هم وجود ندارد(یا حداقل من هرگز ندیده ام) . راه های بهتری هم هست. یک ذره راحتی ظاهری کد به دردسرهای بعدی آن نمی ارزد.

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

چهارشنبه 08 مرداد 1382, 09:24 صبح
میشه یکم از مشکلاتش بگین :?:

پنج شنبه 09 مرداد 1382, 11:07 صبح
در دلفی هم وجود ندارد(عملگر)(یا حداقل من هرگز ندیده ام) . راه های بهتری هم هست. یک ذره راحتی ظاهری کد به دردسرهای بعدی آن نمی ارزد.
یه عشق برنامه نویسی خفن
و چه راه بهتری وجود داره می شه توضیح بدین؟ اگه منظورتون Procedure و Function هست
واقعاً پر دردسره و برای برنامه نویسی با ماتریسها اصلا جالب نیست و از خوانایی برنامه به شدت می کاهه.

شنبه 18 مرداد 1382, 14:00 عصر
سوالمو یه طور دیگه مطرح می کنم
من می خوام ماتریسی تعریف کنم که اندازش 100000*100000 باشه یا بزرگتر
و اعمال ماتریسی از قبیل inverce ، جمع، ضرب .... رو تعریف کنم البته سرعت خیلی مهمه
بعدش برای راحتر کار کردن با اونها یک سری عملگر تعریف کنم مثلا برای ضرب دو تا ماتریس از تابع استفاده نکنم بلکه وقتی نوشتم A*B وقتی A و B ماتریس باشه خودش بفهمه و ضرب ماتریسی انجام بده. یه ادیتوری شبیه به برنامه matlab اگه دیده باشین.
اگه کسی تو این زمینه تجربه یا اطلاعاتی داره ممنون می شم منو راهنمایی کنه.

شنبه 15 شهریور 1382, 16:36 عصر
:( چرا کسی جواب نمی ده
یه سوال دیگه هم برام پیش اومد چه تور می شه مثلاً 11 bit حافظه اختصاص داد بعد به تک تک Bit ها دسترسی داشت.

N_D
سه شنبه 18 شهریور 1382, 13:41 عصر
دوست عزیز برای چنین کارهای بزرگی باید به چند چیز تسلط داشته باشی تا بتونی مثل نرمافزارهای بزرگی از جمله MATLAB کد بنویسی
1- استفاده از Virtual Memory . زیرا طول آرایه شما زیاد است و اجبارا باید با فضای هارد بعنوان حافظه برخورد کنید.
2- در هنگام عملیات ماتریسی باید از روش های محاسبات عددی استفاده کنی که در کتابها آمده است

موفق باشید
ناصر

مهدی کرامتی
سه شنبه 18 شهریور 1382, 14:05 عصر
همانطور که در قوانین سایت ذکر شده است: "تیتر تاپیک باید بیانگر محتوای آن باشد".
لطفا تکرار نشود.

Mashatan
چهارشنبه 19 شهریور 1382, 23:50 عصر
دوست گرامی من تیتر رو اصلاح کردم ! هرچند این انتظار میرفت که بعد از تذکر DelphiAssistant این کار از طرف خود شما صورت بگیره که متاسفانه ...
در هر صورت امیدوارم دقت بیشتری کنید :)

شاد زی
مشاطان

پنج شنبه 20 شهریور 1382, 13:17 عصر
سلام آقای ماشاطان شرمنده من نبودم تا تیتر رو عوض کنم الان دیدم خلاصه ببخشید ولی خوب بود جواب سوال منو هم بدید ممنون

amirrf
جمعه 21 شهریور 1382, 23:33 عصر
در مورد تعریف آرایه دینامیک چه طور می شه بیشتر از 255 تعریف کرد؟
آقا یک اشتباه رخ داد منظورم از دینامیک استاتیک بود اتفاقاً در آرایه های استاتیک نمی شه بیشتر از 255 تعریف کرد
سایز آرایه محدود به 2 GB است، دینامیک یا استاتیک. یک آرایه دوبعدی از نوع Double می تواند حداکثر 16384×16384 باشد(<span dir=ltr>16384*16384*8 = 2147483648</span>).

var a&#58; array&#91;1..16384, 1..16384&#93; of double;

var a&#58; array of array of Double;
SetLength&#40;A, 10000, 10000&#41;;



بعدش برای راحتر کار کردن با اونها یک سری عملگر تعریف کنم مثلا برای ضرب دو تا ماتریس از تابع استفاده نکنم بلکه وقتی نوشتم A*B وقتی A و B ماتریس باشه خودش بفهمه و ضرب ماتریسی انجام بده. یه ادیتوری شبیه به برنامه matlab اگه دیده باشین.
اگه منظورتون Procedure و Function هست واقعاً پر دردسره و برای برنامه نویسی با ماتریسها اصلا جالب نیست و از خوانایی برنامه به شدت می کاهه.
این چه الگوریتم پیچیده ای است که استفاده از <span dir=ltr>M(A, B) </span> به جای A*B با کاهش خواناَیی مشکل ساز می شود؟!
ادیتور دلفی قرار است شبیه ادیتور Matlab شود یا شما قرار است این ادیتور را بنویسید؟ و چرا از خود Matlab استفاده نمی کنید؟


یه سوال دیگه هم برام پیش اومد چه تور می شه مثلاً 11 bit حافظه اختصاص داد بعد به تک تک Bit ها دسترسی داشت.
می توانید از set ها استفاده کنید. یا یک متغیر 16 بیتی تعریف کنید، به همه بیت ها هم دسترسی دارید.

سه شنبه 25 شهریور 1382, 01:03 صبح
اقا خیلی ممنون
رو اونا کار می کنم ببینم جواب می گیرم یا نه
ولی خوب در مورد ضرب دو ماتریس یعنی تعریف عملگر (مثلا ×) توضیح بدین ممنون میشم یا لااقل بگین از کجا میتونم یه منبع فارسی در این مورد گیر بیارم
ممنون