مدیریت زمان و مهندسی مکانیک
مدیریت زمان و مهندسی مکانیک

مدیریت زمان و مهندسی مکانیک

پرسش:خطای مطلق یا نسبی/اشتباه مرگبار

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

پاسخ:

دقت کنید

فرض کنید دمای نهایی یک گره درشبکه برابر 300 کلوین باشه و در یک تکرار سعی و خطا دما به دست میآد 301 اونوقت مقدار خطای نسبی چند میشه؟  

301 منهای 300 تقسیم بر 300 و ضرب در 100 یعنی 0.3 

حالا فرض کنید گره دیگری دماش در یک سعی و خطا بدست میآد برابر 500 کلوین.اونوقت باشرطی که اول برنامه دادید یعنی فرضا اگر خطای نسبی کمتر از 0.3 بود دیگه توقف کن.اونوقت دمای چند رو کامپیوتر گزارش میکنه؟؟؟ دمای 498.5 یعنی فاجعه!

یعنی شرط ارضا میشه اما اختلاف دماها زیادند(یک گره با اختلاف 1 درجه کلوین دیگری 1.5 و.....)

و حتی در پروسه سعی و خطاها ممکنه به دماهای کاملا غیر واقعی برسه که شرط خطای نسبی رو ارضا کنند ولی اشتباهات وحشتناکی رو درمحاسبات به همرا بیاره.

پس اینجا "باید" بی قید و شرط  از خطای مطلق استفاده کنی.

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

این ضعف از اونجا ناشی میشه که شما باید "پیش از" شروع حلقه سعی و خطا ها شرط توقف حلقه رو بدید به برنامه.

***************************مثال روشن تر و قابل فهم:

فرض کن محدوده خطا رو با شرط شما تعریف کردیم کمتر از 0.2

حالا:

برنامه میآد دمای یک گره رو در سعی n ام بدست میآره 501 و در سعی n+1 ام بدست میآره 500 خب 501 منهای 500 تقسیم بر 501 و ضرب در 100 میشه 0.19 پس چون کمتر از 0.2 هست شرط ارضا میشه یعنی در واقع ما میگیم

چون 1 در مقایسه با 501 خیلی کوچیک هست پس مقدار به حل دقیق خیلی نزدیکه و ارزش بیشتر پیش رفتن و هزینه کردن رو نداره

 اما گره دیگه ای رو دماش رو در سعی n ام بدست میآره 301 و در سعی n+1 ام بدست میآره 300.5 خب 301 منهای 300.5 تقسیم بر 301 و ضرب در 100 میشه چند؟میشه 0.16 پس باز هم از مقدار 0.2 که تلرانس ما هست کمتره و شرط ارضا میشه برنامه متوقف میشه و دمای یک گره بدست میآد 500 که از سعی قبلیش 1 واحد دمایی فاصله داره و گره دیگه 300.5 که از سعی قبلیش 0.5 واحد فاصله داره و این توزیع بسیار بدی هست...تو همون پی دی افی هم که گفتی نگاه کن سرعت نقاط مختلف با خطا های متفاوتی بدست اومده حال اینکه ما نیاز داریم که بگیم دمای نقاط  کل صفحه با اختلاف مثلاً 0.1 کلوین به شرح زیر است......نه اینکه یک نقطه با اختلاف 0.5 یکی دیگه 1 یکی دیگه .....

و ممکنه گره های دیگه ای هم پیدا کنی که انحرافشون بیشتر باشه....**********************************************************

پیروز و بهروز باشید.

نظرات 13 + ارسال نظر
mech شنبه 6 اردیبهشت‌ماه سال 1393 ساعت 12:25

ببخشید مثل این که قانع نشدم
ما در حل عددی فرض بر این است که حل دقیقشو نمیدونیم و در محاسبه خطای نسبی از دمای دقیق گره استفاده نمیکنیم که ...
تو محاسبه خطای نسبی تو این حالت میگیم دمای جدید که تو این گام حل بدست آوردیم منهای ""دمایی که در گام قبل بدست آوردیم""(نه دمایی که از حل دقیق بدست می آید) تقسیم بر ""دمایی که در گام قبل بدست آوردیم""
یعنی:
((Tnew-Told)/Told)*100
دقت کنید Told نه T دقیق

جواب شما در ادامه پست اضافه شده

mech شنبه 6 اردیبهشت‌ماه سال 1393 ساعت 12:28

مثلا تو اون پی دی افی که بود صفحات 4و5 شو مثلا ببینید از a_old استفاده کرده

جواب شما در ادامه پست اضافه شده

mech شنبه 6 اردیبهشت‌ماه سال 1393 ساعت 12:38

یعنی موقعی که T تو یه دمایی فیکس شد اونو گزارش بده مثلا وقتی نرم افزار میبینه t مقادیر زیر بدست میاد ، خروجی میده:
300.126,300.124.300.1,300.07,...
بستگی به اون خطای نسبی ممیز 300 میتونه متفاوت باشه
مثلا خطای نسبی رو 0.00000000000000000000000001 بدیم (البته اغراق آمیز ، این همه دقت شاید لازم نشه) دما رو دیگه 300 کامل میده و شاید ممیز هم نخوره

متوجه منظورم نشدید
گفتم فرض کنید دمایی که یک گره به مقادیر تلرانس کم میرسه 500 باشه(مقدار دقیقی که نداریم از ابتدا اما برنامه با محاسبات نزدیک میشه بش)
خب شما به من بگو اولا با شرطی که تعریف کردی چند میخوای بدی محدوده خطا رو؟(محدوده خطا نسبی با تعریف شما)
هر محدوده کم یا زیادی که بدی دمای گره ها چپ و چل میشه!
گفتم فرض کن یک گره با شرطت ارضا میشه اما گره دیگت ارضا میکنه شرط رو اما با مقدار دقیقش فاصله داره
مثالی که در پست زدم بهترین مثاله یه بار دیگه بخونش
در محاسبات عددی کی گفتیم از خطا نسبی استفاده میکنم حتماً؟هرگز نگفتیم "حتماً" از نسبی استفاده میکنیم
میگیری مطلب رو؟
اصلاً کلمه دقیق رو از پست حذف کن منظورم همون جواب نهایی همگرا شده بود
حالا پروسه زیر رو در نظر بگیر
فرض کن محدوده خطا رو با شرط شما تعریف کردیم کمتر از 0.2
حالا:
برنامه میآد دمای یک گره رو در سعی n ام بدست میآره 501 و در سعی n+1 ام بدست میآره 500 خب 501 منهای 500 تقسیم بر 501 و ضرب در 100 میشه 0.19 پس چون کمتر از 0.2 هست شرط ارضا میشه یعنی در واقع ما میگیم
چون 1 در مقایسه با 501 خیلی کوچیک هست پس مقدار به حل دقیق خیلی نزدیکه و ارزش بیشتر پیش رفتن و هزینه کردن رو نداره
اما گره دیگه ای رو دماش رو در سعی n ام بدست میآره 301 و در سعی n+1 ام بدست میآره 300.5 خب 301 منهای 300.5 تقسیم بر
301 و ضرب در 100 میشه چند؟میشه 0.16 پس باز هم از مقدار 0.2 که تلرانس ما هست کمتره و شرط ارضا میشه برنامه متوقف میشه و دمای یک گره بدست میآد 500 که از سعی قبلیش 1 واحد دمایی فاصله داره و گره دیگه 300.5 که از سعی قبلیش 0.5 واحد فاصله داره و این توزیع بسیار بدی هست...
و ممکنه گره های دیگه ای هم پیدا کنی که انحرافشون بیشتر باشه....
تو همون پی دی افی هم که گفتی نگاه کن سرعت نقاط مختلف با خطا های متفاوتی بدست اومده حال اینکه ما نیاز داریم که بگیم
دمای نقاط کل صفحه با اختلاف مثلاً 0.1 کلوین به شرح زیر است......نه اینکه یک نقطه با اختلاف 0.5 یکی دیگه 1 یکی دیگه .....
امیدوارم گرفته باشی مطلب رو....

mech شنبه 6 اردیبهشت‌ماه سال 1393 ساعت 23:41

دلیلتون جالب بود و قانع شدم
این اولین باری که اسفاده از خطای مطلق رو این همه مهم میبینم
تو درس محاسبات عددی که الان جزوشم جلومه استادمون یه مثالی زده بود و تو آخرش گفته بود که:
"این مثال نشان میدهد که برای چند خطای نسبی ، خطای مطلق کاملا متفاوت رخ می دهد در نتیجه خطای مطلق به عنوان شاخصی از دقت ممکن است گمراه کننده باشد بنابراین خطای نسبی مناسب تر است"
این جمله تو ذهن من بود و تو مراجع هم گاها از خطای نسبی استفاده کرده بودن و این ذهنیت تو من بود
اما دلیل شما قانع کننده بود
ببخشید حالا که این طوره میشه در مورد عبارت err = sum(sum(abs(Tnew - T))) یه خورده توضیح بدین چرا از دو تا sum استفاده کردین مگه یه دونه sum کافی نیست؟
البته برای روش گوس سایدل من جزوه نگاه میکردم تو جزومون همه Tnew - T را محاسبه کرده بود هر کدومو تک تک به توان دو رسونده بود بعد جمعشون کرده بود بعد از همه یه رادیکال گرفته بود...
این هم همون مفهوم خطای مطلق رو میرسونه؟

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

mech دوشنبه 8 اردیبهشت‌ماه سال 1393 ساعت 21:18

خیلی ممنون
استفاده کردم

mech جمعه 12 اردیبهشت‌ماه سال 1393 ساعت 19:31

آقای هخامنش خیلی شرمنده
یه سوالی بازم چند روز پیش تو ذهنم پیش اومد منتهی رفته بودیم المپیاد (جاتون خالی!) نتونستم بپرسم:
چرا این خطا های گره ها رو با هم جمع زدین؟
مگه نباید تک تک نقاط جداگانه بررسی بشه ؟ بس جمع چرا؟

خواهش میکنم ایشالا به سلامتی
مجموع خطای "تمام" نقاط کمتر از 0.1 هست یعنی 101*101=10201 نقطه جمع خطاشون کمتر از 0.1 شده
یعنی خیلی خوب و نزدیک به مقدار واقعی نه؟
شما باشرط خطای هر نقطه کمتر از 0.1 هم بنویس
برنامه زودتر همگرا میشه ولی بمقدار دقیق کمتر نزدیک میشه
حتما بنویسیا منتظرم خبرم کنی
پیروز و بهروز

mech دوشنبه 15 اردیبهشت‌ماه سال 1393 ساعت 11:15

بسیار متشکرم
ان شاء الله آخر هفته می نویسم (یعنی نوشتما خودشم با این فرترن منسوخ! کافیه خطاهاشو تصحیح کنم) و شما رو هم در جریان قرار میدم
فعلا به کار های دیگه ای مشغولم...

واااااااااااااای
اصلاً حرفشم نزن فرترن "خدای" زبانای برنامه نویسی واسه مکانیک
متلب و سی یا سی++ صحبتشون نیست اصلاً در برابر فرترن
یه پست جدا میذارم

mech پنج‌شنبه 18 اردیبهشت‌ماه سال 1393 ساعت 16:00

سلام
به روش شما یعنی جمع خطاها تو فرترن نوشتم
البته با روش adi
http://www.xum.ir/images/2014/05/08/1HC4Re.jpg

سلام
روش adi?
شرایط مرزیت چیه؟این طور که معلومه اضلاع بالا و راست رو عایق گرفتی آره؟
دمای اضلاع بالا پایین و چپ و راست؟
بعد از چند ثانیه هست؟

mech پنج‌شنبه 18 اردیبهشت‌ماه سال 1393 ساعت 17:19

راست و بالا 0
چپ و پایین 200
تو adi ِبه جای ماتریس 5 قطری سه قطری حل میشه
بعد 0.4ساعت
مثال مال هافمنه

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

mech پنج‌شنبه 18 اردیبهشت‌ماه سال 1393 ساعت 17:54

http://www.xum.ir/images/2014/05/08/3kSJQl.jpg
http://www.xum.ir/images/2014/05/08/2JL1Gw.jpg

با توجه به آلفای نسبتا کم کروم استیل میتونه معقول باشه اما کانتورات با کانتورای هافمن یه کم تفاوت داره نه؟
تونستی کد فرترنشو بفرست برام

mech دوشنبه 22 اردیبهشت‌ماه سال 1393 ساعت 10:25

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

ممنونم که بهم تبریک گفتین بابت کنکور. میشه شمام در مورد سوال اولی که از آقای راد پرسیدم یکم راهنماییم کنین؟ (واقعیتش اونقدر از شما سوال پرسیدم دیگه روم نشد بازم بپرسم!)
اینم اون کد ( اگه حرفه ای نوشته نشده باشه پیشاپیش معذرت میخوام چون یه خورده با کمبود وقت مواجهم سعی کردم در کمترین وقت بهترین برنامه رو بنویسم):
http://s5.picofile.com/file/8122980442/plate.f95.html
رمز عبور : Plate
خواهشا جایی (اینترنت و ...)منتشرش نکنید.نمی خوام دست نامحرم(کسی که فقط کپی پیست میکنه و از هیچ چی خبر نداره) بیفته البته این جور چیزا اگه دست کسی که واقعا اهل تفکره بیفته بد نیست .... !
کسی تو شرایط سخت میشینه مینویسه - کسی هم برمیداره راحت کپی میکنه :تفاوت ها در ظاهر مشخص نمیشه

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

mech دوشنبه 22 اردیبهشت‌ماه سال 1393 ساعت 13:15

پس نظر شما
شریف/تهران/امیر کبیر/علم و صنعت/تربیت مدرس/خواجه نصیر
هستش
یا این که
شریف/تهران/امیر کبیر/علم و صنعت/خواجه نصیر/تربیت مدرس

در مورد ایمیل هم این ایمیل گرچه ایمیل اصلیم نیست ولی کار میکنه ! ولی خب ایمیل اصلیمو تو فرصت مناسب ...

ممنون و متشکر

شما ایشالا به گزینه سوم نمیرسید....ولی همون اولی به نظرم خواجه عقیمه!
اگر کار میکنه همین ایمیل که هیچ
یا حق

ali پنج‌شنبه 24 مهر‌ماه سال 1393 ساعت 13:26

سلام
من اگر بخوام برنامه ای در متلب بنویسم که خطای مطلق و نسبی رو حساب کنه باید چکارکنم؟

salam
dargyram be formula numerical calculations negah bendaz

امکان ثبت نظر جدید برای این مطلب وجود ندارد.