رفتن به مطلب

بررسی صحت کد


ehsan_faal

ارسال های توصیه شده

سلام دوستان.من قراره مقاله ی ضمیمه رو تو متلب پیاده سازی کنم.توی کد نویسی متلب هم مشکلی ندارم.منتها چون نتایج عددی مقاله رو ندارم که نتایج خودمو با اونا چک کنم، میخواستم دوستان لطف کنن و کد زیر رو که مربوط به معادله 3 تو مقاله هست رو چک کنن ، اگه جایی لازم هست که تغییر کنه بهم بگید لطفا.

با تشکر

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

فقط توضیحاتی که لازمه رو هم بگم:

اندیس K تا 2 بیشتر نمیتونه بره، چون سومین K در حقیقت مجهولی هستش که از حل معادله 3 بدست میاد.

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه
سلام دوستان.من قراره مقاله ی ضمیمه رو تو متلب پیاده سازی کنم.توی کد نویسی متلب هم مشکلی ندارم.منتها چون نتایج عددی مقاله رو ندارم که نتایج خودمو با اونا چک کنم، میخواستم دوستان لطف کنن و کد زیر رو که مربوط به معادله 3 تو مقاله هست رو چک کنن ، اگه جایی لازم هست که تغییر کنه بهم بگید لطفا.

با تشکر

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

فقط توضیحاتی که لازمه رو هم بگم:

اندیس K تا 2 بیشتر نمیتونه بره، چون سومین K در حقیقت مجهولی هستش که از حل معادله 3 بدست میاد.

 

سلام

اینجا هم باز از فانکشن استفاده کردین، اینجوری کدنویسی سخت تر نیست براتون، متغییر ها رو چطوری چک می کنین. به نظر من اول به صورت عادی با ورودی های مشخص بدین، بعد که مطمئن شدین به فانکشن تبدیلش کنین.

 

در مورد متغیر های global هم توصیه میشه که استفاده نکنین، کد رو پیچیده می کنه، می تونین برای فانکشنتون به صورت ورودی و خروجی تعریف کنین. توی این لینک هم اشاره شده:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

I و J و K رو اینجوری تعریف کردیف که مساوی هم نباشن، درسته؟

یه سوال چرا این Counter ها برای هر کدوم از جمله ها تغییر می کنه؟

 

البته مطمئنا خیلی هم نمی تونم سر دربیارم. یه ورودی بهش بدین چند تا breakpoint هم داخل فایل بذارین، اینجوری فکر کنم راحت تر بتونین چکش کنین.

لینک به دیدگاه
سلام

اینجا هم باز از فانکشن استفاده کردین، اینجوری کدنویسی سخت تر نیست براتون، متغییر ها رو چطوری چک می کنین. به نظر من اول به صورت عادی با ورودی های مشخص بدین، بعد که مطمئن شدین به فانکشن تبدیلش کنین.

 

در مورد متغیر های global هم توصیه میشه که استفاده نکنین، کد رو پیچیده می کنه، می تونین برای فانکشنتون به صورت ورودی و خروجی تعریف کنین. توی این لینک هم اشاره شده:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

I و J و K رو اینجوری تعریف کردیف که مساوی هم نباشن، درسته؟

یه سوال چرا این Counter ها برای هر کدوم از جمله ها تغییر می کنه؟

 

البته مطمئنا خیلی هم نمی تونم سر دربیارم. یه ورودی بهش بدین چند تا breakpoint هم داخل فایل بذارین، اینجوری فکر کنم راحت تر بتونین چکش کنین.

 

شاید اینطوری بگم بهتر باشه.

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

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

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه
شاید اینطوری بگم بهتر باشه.

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

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

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

احسان جان کدت رو دیدم، میگی بردار K دو درایه اول مشخصه، ولی سومی از همین معادله بدست میاد:

qlmfeycebx96tf7u6yz.png

 

یه راهش اینه که معادله رو پارامتری حل کنی، عبارت معادل این عنصر سوم رو بردار K بدست بیاری. بعد دیگه میشه فقط یه جای گذاری، حلقه و اینا هم نمی خواد، با متلب هم شاید بشه، یعنی همه رو سیمبولیک تعریف کنی، یه بار حلش کنه، بعد دیگه از اون عبارتی که بدست میاد استفاده کنی. توان این مجهوات 2 و 4 میشه، درسته؟

 

اون اول کد بدون سیمولینک، فقط واسه i در نظر گرفتی، k که اندیس l هم داره تو معادله، برای اونم چیزی در نظر گرفتی؟ البته فقط اولش رو نگاه کردم.

لینک به دیدگاه

ممنون از لطفتون .قراره که توانشون همینطور که شما میگی بشه ولی بعضی وقتا توان 1 و 3 هم بدست آوردم.این راهی که شما میگی یه جورایی درونیابیه که واسه کار من شدنی نیست چون ضرایب اپسیلون و میو متغیرند(به عنوان ورودی به تابع رد میشن) پس این که من بیام با اعدادی که برای یه اپسیلون و میو معادله سمبلیک نهایی رو به یه Polynomial تبدیل کنم کارایی نداره واسه این کد. از طرفی هم چون این تابع قراره توی دوتا حلقه تودرتوی دیگه که حداقل 1000 بار اجرا میشن قرار بگیره پس استفاده از سمبل کد رو کند میکنه.من خواستم که همین تابع رو به Mex تبدیل کنم ولی حقیقتش اصلا تجربه این کار رو ندارم و ویندوزم هم 64 بیتیه و طبق آموزش شما هم که پیش رفتم به نتیجه ای نرسیدم.الان فقط میدونم که جوابای حالت سمبلیک درسته ولی محدودیت سرعت داره و نمیدونم چه جوری اون رو رفع کنم!

لینک به دیدگاه
ممنون از لطفتون .قراره که توانشون همینطور که شما میگی بشه ولی بعضی وقتا توان 1 و 3 هم بدست آوردم.این راهی که شما میگی یه جورایی درونیابیه که واسه کار من شدنی نیست چون ضرایب اپسیلون و میو متغیرند(به عنوان ورودی به تابع رد میشن) پس این که من بیام با اعدادی که برای یه اپسیلون و میو معادله سمبلیک نهایی رو به یه Polynomial تبدیل کنم کارایی نداره واسه این کد. از طرفی هم چون این تابع قراره توی دوتا حلقه تودرتوی دیگه که حداقل 1000 بار اجرا میشن قرار بگیره پس استفاده از سمبل کد رو کند میکنه.من خواستم که همین تابع رو به Mex تبدیل کنم ولی حقیقتش اصلا تجربه این کار رو ندارم و ویندوزم هم 64 بیتیه و طبق آموزش شما هم که پیش رفتم به نتیجه ای نرسیدم.الان فقط میدونم که جوابای حالت سمبلیک درسته ولی محدودیت سرعت داره و نمیدونم چه جوری اون رو رفع کنم!

 

خواهش می کنم، نه منظورم اینه ورودی های این تابعت رو به عنوان سمبولیک تعریف کن، بعد معادله رو که نوشتی، i و j و l هم که تغییر نمی کنه، با solve مقدار مولفه سوم k رو بر حسب این متغیر ها بدست بیار، ببین چه فرمولی میده.

 

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

 

توی معادله که فقط توان 2 و 4 داری، چجوری 1 و 3 هم بهت میده؟

 

برای سمبولیک مگه میشه از mex استفاده کرد؟

لینک به دیدگاه

آره حق با شماست.راه هوشمندانه ایه. در مورد توان های kهم ممکنه من اشتباه کرده باشم از بس این کد رو چک کردم ممکنه اشتباه دیده باشم.بازم ممنون مهندس.

لینک به دیدگاه

مهندس من این کد رو تغییر دادم تا راهی که شما میگی رو انجام بدم،فقط اینکه من قبلا با دستور Save ماتریس ها یا متغیرهای عددی رو توی یه فایل ذخیره میکردم.و چون جوابی که از این کد میگیرم خیلی طولانیه میخواستم توی یه فایل تکست ذخیرش کنم بعد با دقت کد جدید رو از روی اون بنویسم ولی ظاهرا نمیشه متغیرها رو در حالت سمبولیک ذخیره کرد، شما راهی داری واسه این کار؟

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

با تشکر

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه
مهندس من این کد رو تغییر دادم تا راهی که شما میگی رو انجام بدم،فقط اینکه من قبلا با دستور Save ماتریس ها یا متغیرهای عددی رو توی یه فایل ذخیره میکردم.و چون جوابی که از این کد میگیرم خیلی طولانیه میخواستم توی یه فایل تکست ذخیرش کنم بعد با دقت کد جدید رو از روی اون بنویسم ولی ظاهرا نمیشه متغیرها رو در حالت سمبولیک ذخیره کرد، شما راهی داری واسه این کار؟

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

با تشکر

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

توی command window نشون میده که، می تونی از همونجا کپی کنی:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

با دستور digits هم می تونی تعداد ارقامی که توی محاسبات استفاده میشه رو کمتر کنی، دفالتش 32 هست:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...