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

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

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

y t = a 0 + a 1 x 1 t +...+ a n x nt + ε t .

داده های اولیه هنگام تخمین پارامترهای a 0, a 1,..., a n بردار مقادیر متغیر وابسته است. y= (y 1 , y 2 , ... , y T)" و ماتریس مقادیر متغیرهای مستقل

که در آن ستون اول، متشکل از یکی، با ضریب مدل مطابقت دارد.

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

نمونه هایی از حل مسائل به روش حداقل مربعات

مثال 2.1.شرکت تجاری دارای شبکه ای متشکل از 12 فروشگاه است که اطلاعات فعالیت های آن در جدول ارائه شده است. 2.1.

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

جدول 2.1

شماره مغازه

گردش مالی سالانه، میلیون روبل

منطقه تجاری، هزار متر مربع

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

شکل 2.1. Scatterplot برای مثال 2.1

برای تعیین شکل رابطه عملکردی بین متغیرها و ساختن نمودار پراکندگی (شکل 2.1).

بر اساس نمودار پراکندگی، می‌توان نتیجه گرفت که گردش مالی سالانه به طور مثبت به منطقه فروش وابسته است (یعنی با رشد y افزایش می‌یابد). مناسب ترین شکل اتصال عملکردی - است خطی.

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

جدول 2.2

بدین ترتیب،

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

مثال 2.2.مدیریت شرکت متوجه شد که گردش مالی سالانه نه تنها به منطقه فروش فروشگاه (نگاه کنید به مثال 2.1)، بلکه به میانگین تعداد بازدیدکنندگان نیز بستگی دارد. اطلاعات مربوطه در جدول ارائه شده است. 2.3.

جدول 2.3

راه حل.نشان می دهد - میانگین تعداد بازدیدکنندگان از فروشگاه هفتم در روز، هزار نفر.

برای تعیین شکل رابطه عملکردی بین متغیرها و ساختن یک نمودار پراکندگی (شکل 2.2).

بر اساس نمودار پراکندگی، می‌توان نتیجه گرفت که گردش مالی سالانه با میانگین تعداد بازدیدکنندگان در روز رابطه مثبت دارد (یعنی با رشد y افزایش می‌یابد). شکل وابستگی عملکردی خطی است.

برنج. 2.2. Scatterplot برای مثال 2.2

جدول 2.4

به طور کلی تعیین پارامترهای مدل اقتصادسنجی دو عاملی ضروری است

y t \u003d a 0 + a 1 x 1 t + a 2 x 2 t + ε t

اطلاعات مورد نیاز برای محاسبات بیشتر در جدول ارائه شده است. 2.4.

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

بدین ترتیب،

ارزیابی ضریب = 61.6583 نشان می دهد که با وجود مساوی بودن سایر موارد، با افزایش منطقه تجارت به میزان 1 هزار متر مربع، گردش مالی سالانه به طور متوسط ​​61.6583 میلیون روبل افزایش می یابد.

مثال.

داده های تجربی در مورد مقادیر متغیرها ایکسو دردر جدول آورده شده است.

در نتیجه تراز آنها، تابع

استفاده كردن روش حداقل مربع، این داده ها را با یک وابستگی خطی تقریبی کنید y=ax+b(گزینه ها را پیدا کنید آو ب). دریابید که کدام یک از دو خط بهتر است (به معنای روش حداقل مربعات) داده های تجربی را تراز می کند. یک نقاشی بکشید.

ماهیت روش حداقل مربعات (LSM).

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

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

استخراج فرمول برای یافتن ضرایب.

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

ما سیستم معادلات حاصل را با هر روشی حل می کنیم (مثلا روش جایگزینییا ) و فرمول هایی برای یافتن ضرایب با استفاده از روش حداقل مربعات (LSM) بدست آورید.

با داده آو بتابع کمترین مقدار را می گیرد. دلیل این واقعیت ارائه شده است.

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

وقت آن است که نمونه اصلی را به خاطر بسپارید.

راه حل.

در مثال ما n=5. برای راحتی محاسبه مقادیری که در فرمول های ضرایب مورد نیاز گنجانده شده است، جدول را پر می کنیم.

مقادیر سطر چهارم جدول با ضرب مقادیر سطر دوم در مقادیر سطر 3 برای هر عدد به دست می آید. من.

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

مقادیر آخرین ستون جدول مجموع مقادیر در سراسر سطرها است.

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

از این رو، y=0.165x+2.184خط مستقیم تقریبی مورد نظر است.

باقی مانده است که بفهمیم کدام یک از خطوط y=0.165x+2.184یا داده های اصلی را بهتر تقریب می کند، یعنی تخمینی را با استفاده از روش حداقل مربعات انجام می دهد.

برآورد خطای روش حداقل مربعات.

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

از آن زمان، پس از آن خط y=0.165x+2.184داده های اصلی را بهتر تقریب می کند.

تصویر گرافیکی روش حداقل مربعات (LSM).

همه چیز در نمودارها عالی به نظر می رسد. خط قرمز همان خط یافت شده است y=0.165x+2.184، خط آبی است ، نقاط صورتی داده های اصلی هستند.

برای چیست، این همه تقریب برای چیست؟

من شخصاً برای حل مسائل هموارسازی داده ها، مسائل درون یابی و برون یابی استفاده می کنم (در مثال اصلی، می توان از شما درخواست کرد که مقدار مقدار مشاهده شده را پیدا کنید. yدر x=3یا چه زمانی x=6طبق روش MNC). اما در ادامه در بخش دیگری از سایت در این مورد بیشتر صحبت خواهیم کرد.

اثبات

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

انتخاب نوع تابع رگرسیون، یعنی. نوع مدل در نظر گرفته شده وابستگی Y به X (یا X به Y)، به عنوان مثال، یک مدل خطی y x = a + bx، لازم است مقادیر خاص ضرایب مدل را تعیین کنید.

برای مقادیر مختلف a و b می توان تعداد بی نهایت وابستگی به شکل y x =a+bx ساخت، یعنی تعداد بی نهایت خط در صفحه مختصات وجود دارد، اما ما به چنین وابستگی نیاز داریم که به بهترین شکل با مقادیر مشاهده شده مطابقت دارد. بنابراین، مشکل به انتخاب بهترین ضرایب کاهش می یابد.

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

نشان دهید: Y i - مقدار محاسبه شده با معادله Y i =a+bx i . y i - مقدار اندازه گیری شده، ε i =y i -Y i - تفاوت بین مقادیر اندازه گیری شده و محاسبه شده، ε i =y i -a-bx i.

روش حداقل مربعات مستلزم این است که εi، تفاوت بین y i اندازه گیری شده و مقادیر Y i محاسبه شده از معادله، حداقل باشد. بنابراین، ضرایب a و b را پیدا می کنیم تا مجذور انحرافات مقادیر مشاهده شده از مقادیر روی خط رگرسیون مستقیم کوچکترین باشد:

با بررسی این تابع از آرگومان‌های a و با کمک مشتقات یک منتهی، می‌توان ثابت کرد که اگر ضرایب a و b جواب‌های سیستم باشند، تابع حداقل مقدار را به خود می‌گیرد:

(2)

اگر هر دو طرف معادلات عادی را بر n تقسیم کنیم، به دست می آید:

با توجه به اینکه (3)

گرفتن ، از اینجا، با جایگزینی مقدار a در معادله اول، به دست می آوریم:

در این حالت b ضریب رگرسیون نامیده می شود. a عضو آزاد معادله رگرسیون نامیده می شود و با فرمول محاسبه می شود:

خط مستقیم حاصل تخمینی برای خط رگرسیون نظری است. ما داریم:

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

رگرسیون می تواند مستقیم (b>0) و معکوس (b مثال 1) باشد. نتایج اندازه گیری مقادیر X و Y در جدول آورده شده است:

x i -2 0 1 2 4
y من 0.5 1 1.5 2 3

با فرض وجود رابطه خطی بین X و Y y=a+bx، ضرایب a و b را با استفاده از روش حداقل مربعات تعیین کنید.

راه حل. در اینجا n=5
x i =-2+0+1+2+4=5;
x i 2 =4+0+1+4+16=25
x i y i =-2 0.5+0 1+1 1.5+2 2+4 3=16.5
y i =0.5+1+1.5+2+3=8

و سیستم نرمال (2) دارای فرم است

با حل این سیستم به دست می آید: b=0.425، a=1.175. بنابراین y=1.175+0.425x.

مثال 2. یک نمونه 10 مشاهده ای از شاخص های اقتصادی (X) و (Y) وجود دارد.

x i 180 172 173 169 175 170 179 170 167 174
y من 186 180 176 171 182 166 182 172 169 177

لازم است یک معادله رگرسیون نمونه Y بر روی X پیدا کنید. یک خط رگرسیون نمونه Y بر روی X بسازید.

راه حل. 1. بیایید داده ها را بر اساس مقادیر x i و y i مرتب کنیم. ما یک جدول جدید دریافت می کنیم:

x i 167 169 170 170 172 173 174 175 179 180
y من 169 171 166 172 180 176 177 182 182 186

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

x i y من x i 2 x i y i
167 169 27889 28223
169 171 28561 28899
170 166 28900 28220
170 172 28900 29240
172 180 29584 30960
173 176 29929 30448
174 177 30276 30798
175 182 30625 31850
179 182 32041 32578
180 186 32400 33480
∑x i =1729 ∑y i =1761 ∑x i 2 299105 ∑x i y i =304696
x=172.9 y=176.1 x i 2 = 29910.5 xy=30469.6

طبق فرمول (4) ضریب رگرسیون را محاسبه می کنیم

و با فرمول (5)

بنابراین، معادله رگرسیون نمونه مانند y=-59.34+1.3804x است.
بیایید نقاط (x i ; y i) را در صفحه مختصات رسم کنیم و خط رگرسیون را مشخص کنیم.


شکل 4

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

x i y من Y من Y i -y i
167 169 168.055 -0.945
169 171 170.778 -0.222
170 166 172.140 6.140
170 172 172.140 0.140
172 180 174.863 -5.137
173 176 176.225 0.225
174 177 177.587 0.587
175 182 178.949 -3.051
179 182 184.395 2.395
180 186 185.757 -0.243

مقادیر Y i با توجه به معادله رگرسیون محاسبه می شود.

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

من یک برنامه نویس کامپیوتر هستم. زمانی که یاد گرفتم بگویم: "من هیچی نمیفهمم!"حالا خجالت نمی‌کشم به مرشد علم بگویم که برای من سخنرانی می‌کند، نمی‌فهمم آن بزرگوار با من از چه حرف می‌زند. و خیلی سخته بله، سخت و شرم آور است که اعتراف کنید که نمی دانید. کسی که دوست دارد اعتراف کند که اصول چیزی را نمی داند. به دلیل حرفه ام، مجبورم در تعداد زیادی سخنرانی و سخنرانی شرکت کنم، جایی که، اعتراف می کنم، در اکثر موارد احساس خواب آلودگی می کنم، زیرا چیزی نمی فهمم. و من نمی فهمم زیرا مشکل بزرگ وضعیت فعلی علم در ریاضیات نهفته است. فرض بر این است که همه دانش آموزان کاملاً با تمام زمینه های ریاضیات آشنا هستند (که پوچ است). اعتراف به اینکه نمی دانید مشتق چیست (که این کمی دیرتر است) شرم آور است.

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

آیا می دانید مشتق چیست؟ به احتمال زیاد در مورد حد و مرز رابطه تفاوت به من خواهید گفت. در سال اول ریاضیات در دانشگاه دولتی سنت پترزبورگ، ویکتور پتروویچ خاوین من تعریف شده استمشتق به عنوان ضریب اولین جمله از سری تیلور تابع در نقطه (این یک ژیمناستیک جداگانه برای تعیین سری تیلور بدون مشتقات بود). مدت زیادی به این تعریف خندیدم تا اینکه بالاخره فهمیدم در مورد چیست. مشتق چیزی بیش از اندازه گیری نیست که نشان می دهد چقدر تابعی که ما متمایز می کنیم به تابع y=x, y=x^2, y=x^3 شباهت دارد.

اکنون این افتخار را دارم که به دانشجویانی که می ترسدریاضیات اگر از ریاضیات می ترسید - ما در راه هستیم. به محض اینکه سعی کردید متنی را بخوانید و به نظرتان رسید که بیش از حد پیچیده است، بدانید که بد نوشته شده است. من استدلال می کنم که هیچ حوزه ای از ریاضیات وجود ندارد که نتوان در مورد آن "روی انگشتان دست" بدون از دست دادن دقت صحبت کرد.

چالش برای آینده نزدیک: به دانش‌آموزانم دستور دادم که بفهمند یک کنترل‌کننده خطی- درجه دوم چیست. خجالتی نباش، سه دقیقه از عمرت را هدر بده، لینک را دنبال کن. اگر چیزی متوجه نشدید، پس ما در راه هستیم. من (یک ریاضی دان-برنامه نویس حرفه ای) هم چیزی نفهمیدم. و من به شما اطمینان می دهم، این را می توان "بر روی انگشتان دست" مرتب کرد. در حال حاضر نمی‌دانم چیست، اما به شما اطمینان می‌دهم که می‌توانیم آن را کشف کنیم.

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

بنابراین، با توجه به دو نقطه (x0، y0)، (x1، y1)، به عنوان مثال، (1،1) و (3،2)، وظیفه پیدا کردن معادله یک خط مستقیم از این دو نقطه است:

تصویر

این خط مستقیم باید معادله ای مانند زیر داشته باشد:

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

می توانید این معادله را به صورت ماتریسی بنویسید:

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

بیایید ماتریس های خاص را با نمایش نمادین آنها جایگزین کنیم:

سپس (آلفا، بتا) را می توان به راحتی پیدا کرد:

به طور خاص برای داده های قبلی ما:

که منجر به معادله زیر خط مستقیمی می شود که از نقاط (1،1) و (3،2) می گذرد:

خوب، اینجا همه چیز روشن است. و بیایید معادله یک خط مستقیم را پیدا کنیم سهنقاط: (x0,y0)، (x1,y1) و (x2,y2):

اوه اوه، اما ما سه معادله برای دو مجهول داریم! ریاضیدان استاندارد خواهد گفت که هیچ راه حلی وجود ندارد. برنامه نویس چه خواهد گفت؟ و ابتدا سیستم معادلات قبلی را به شکل زیر بازنویسی می کند:

در مورد ما، بردارهای i، j، b سه بعدی هستند، بنابراین (در حالت کلی) هیچ راه حلی برای این سیستم وجود ندارد. هر بردار (alpha\*i + beta\*j) در صفحه ای قرار دارد که توسط بردارهای (i, j) پوشانده شده است. اگر b به این صفحه تعلق نداشته باشد، هیچ راه حلی وجود ندارد (برابری در معادله به دست نمی آید). چه باید کرد؟ بیایید به دنبال مصالحه باشیم. بیایید نشان دهیم e (آلفا، بتا)دقیقاً چگونه به برابری نرسیدیم:

و ما سعی خواهیم کرد این خطا را به حداقل برسانیم:

چرا مربع؟

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

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

تصویر

به عبارت دیگر: ما به دنبال خطی هستیم که مجموع مجذور طول فواصل تمام نقاط تا این خط حداقل باشد:

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

تصویر

در کلمات کاملاً متفاوت (با دقت، به طور ضعیف رسمی شده است، اما باید روی انگشتان مشخص باشد): ما همه خطوط ممکن را بین همه جفت نقاط می گیریم و به دنبال خط متوسط ​​بین همه می گردیم:

تصویر

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

حداقل فرم درجه دوم

بنابراین، با توجه به بردار بو صفحه ای که توسط ستون ها-بردارهای ماتریس پوشانده شده است آ(در این حالت (x0,x1,x2) و (1,1,1)) به دنبال یک بردار هستیم. هبا حداقل مربع طول بدیهی است که حداقل برای بردار قابل دستیابی است ه، متعامد به صفحه پوشیده شده توسط ستون ها-بردارهای ماتریس آ:

به عبارت دیگر، ما به دنبال یک بردار x=(آلفا، بتا) هستیم که:

یادآوری می کنم که این بردار x=(آلفا، بتا) مینیمم تابع درجه دوم است ||e(آلفا، بتا)||^2:

در اینجا یادآوری این نکته مفید است که ماتریس را می توان به خوبی شکل درجه دوم تفسیر کرد، برای مثال، ماتریس هویت ((1,0),(0,1)) را می توان به عنوان تابعی از x^2 + y تفسیر کرد. ^2:

فرم درجه دوم

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

معادله لاپلاس با شرط مرزی دیریکله

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

commit اصلی موجود است. برای به حداقل رساندن وابستگی‌های خارجی، کد رندر نرم‌افزارم را که قبلاً روی Habré بود، گرفتم. برای حل سیستم خطی، من از OpenNL استفاده می کنم، این یک حل کننده عالی است، اما نصب آن بسیار دشوار است: شما باید دو فایل (.h + .c) را در پوشه پروژه خود کپی کنید. تمام صاف کردن توسط کد زیر انجام می شود:

برای (int d=0; d<3; d++) { nlNewContext(); nlSolverParameteri(NL_NB_VARIABLES, verts.size()); nlSolverParameteri(NL_LEAST_SQUARES, NL_TRUE); nlBegin(NL_SYSTEM); nlBegin(NL_MATRIX); for (int i=0; i<(int)verts.size(); i++) { nlBegin(NL_ROW); nlCoefficient(i, 1); nlRightHandSide(verts[i][d]); nlEnd(NL_ROW); } for (unsigned int i=0; i&face = faces[i]; برای (int j=0; j<3; j++) { nlBegin(NL_ROW); nlCoefficient(face[ j ], 1); nlCoefficient(face[(j+1)%3], -1); nlEnd(NL_ROW); } } nlEnd(NL_MATRIX); nlEnd(NL_SYSTEM); nlSolve(); for (int i=0; i<(int)verts.size(); i++) { verts[i][d] = nlGetVariable(i); } }

مختصات X، Y و Z قابل جدا شدن هستند، من آنها را جداگانه صاف می کنم. یعنی من سه سیستم معادله خطی را حل می کنم که هر کدام به اندازه تعداد رئوس مدل من متغیر است. n سطر اول ماتریس A فقط یک 1 در هر سطر دارند و n سطر اول بردار b مختصات مدل اصلی دارند. یعنی، من بین موقعیت راس جدید و موقعیت راس قدیمی به فنری گره می زنم - موارد جدید نباید خیلی دور از راس های قدیمی باشند.

تمام ردیف های بعدی ماتریس A (faces.size()*3 = تعداد یال های همه مثلث ها در شبکه) یک رخداد 1 و یک وقوع 1- دارند، در حالی که بردار b دارای مولفه های صفر در مقابل است. این به این معنی است که من یک فنر در هر لبه مش مثلثی خود قرار می دهم: همه لبه ها سعی می کنند راس یکسانی را با نقطه شروع و پایان خود بدست آورند.

بار دیگر: همه رئوس متغیر هستند و نمی توانند از موقعیت اصلی خود فاصله بگیرند، اما در عین حال سعی می کنند شبیه یکدیگر شوند.

در اینجا نتیجه است:

همه چیز خوب خواهد بود، مدل واقعا صاف است، اما از لبه اصلی خود فاصله گرفت. بیایید کد را کمی تغییر دهیم:

برای (int i=0; i<(int)verts.size(); i++) { float scale = border[i] ? 1000: 1; nlBegin(NL_ROW); nlCoefficient(i, scale); nlRightHandSide(scale*verts[i][d]); nlEnd(NL_ROW); }

در ماتریس A، برای رئوس هایی که روی لبه هستند، یک ردیف از دسته v_i = verts[i][d] اضافه نمی کنم، بلکه 1000*v_i = 1000*verts[i][d] اضافه می کنم. چه چیزی را تغییر می دهد؟ و این شکل درجه دوم خطا را تغییر می دهد. اکنون یک انحراف از بالا در لبه نه یک واحد، مانند قبل، بلکه 1000 * 1000 واحد هزینه خواهد داشت. یعنی ما فنر قوی تری را روی راس های افراطی آویزان کردیم، راه حل ترجیح می دهد دیگران را قوی تر بکشد. در اینجا نتیجه است:

بیایید قدرت فنرهای بین رئوس را دو برابر کنیم:
nlCoefficient(face[j], 2); nlCoefficient(face[(j+1)%3], -2);

منطقی است که سطح صاف تر شده است:

و حالا حتی صد برابر قوی تر:

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

معادله پواسون

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

بیایید بگوییم که من تصویری مانند این دارم:

همه خوب هستند، اما من صندلی را دوست ندارم.

عکس رو نصف میکنم:



و من یک صندلی را با دستان خود انتخاب می کنم:

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

برای (int i=0; i

در اینجا نتیجه است:

مثال زندگی واقعی

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

من تعدادی عکس از نمونه های پارچه دارم مانند این:

وظیفه من ساختن بافت های بدون درز از عکس هایی با این کیفیت است. اول، من (به طور خودکار) به دنبال یک الگوی تکراری هستم:

اگر این چهار ضلعی را دقیقاً در اینجا برش دهم، به دلیل اعوجاج، لبه ها همگرا نمی شوند، در اینجا یک نمونه از یک الگوی است که چهار بار تکرار شده است:

متن پنهان

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

بنابراین، من در امتداد یک خط مستقیم نمی برم، در اینجا خط برش است:

متن پنهان

و در اینجا الگوی چهار بار تکرار شده است:

متن پنهان

و قطعه آن برای روشن تر شدن آن:

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

بافت کاملاً یکپارچه شد و همه اینها به طور خودکار از عکسی با کیفیت بسیار متوسط ​​بود. از ریاضیات نترسید، به دنبال توضیحات ساده باشید، در مهندسی خوش شانس خواهید بود.

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

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

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

سیستم معادلات حاصل را با هر روشی حل می کنیم (مثلاً روش جایگزینی یا روش کرامر) و فرمول هایی برای یافتن ضرایب با استفاده از روش حداقل مربعات (LSM) به دست می آوریم.

با داده آو بتابع کمترین مقدار را می گیرد.

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

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

ادغام و تمایز عددی مثال.

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

تمایز عددی- مجموعه ای از روش ها برای محاسبه مقدار مشتق یک تابع به طور مجزا.

ادغام

فرمول بندی مسئله.بیان ریاضی مسئله: یافتن مقدار یک انتگرال خاص ضروری است

جایی که a، b متناهی هستند، f(x) در [а، b] پیوسته است.

هنگام حل مسائل عملی، اغلب اتفاق می افتد که انتگرال به صورت تحلیلی ناخوشایند یا غیرممکن است: ممکن است در توابع ابتدایی بیان نشود، انتگرال را می توان به شکل جدول ارائه داد و غیره. در چنین مواردی، روش های انتگرال عددی عبارتند از: استفاده شده. روش‌های ادغام عددی از جایگزینی مساحت ذوزنقه منحنی با مجموع محدودی از مناطق اشکال هندسی ساده‌تر استفاده می‌کنند که می‌توان دقیقاً محاسبه کرد. در این معنا از استفاده از فرمول های تربیعی صحبت می شود.

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

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

سه گروه از روش ها را می توان تشخیص داد:

1. روش با تقسیم بخش ادغام به فواصل مساوی. تقسیم به فواصل از قبل انجام می شود، معمولاً فواصل مساوی انتخاب می شوند (برای سهولت محاسبه تابع در انتهای فواصل). مساحت ها را محاسبه کرده و آنها را جمع آوری کنید (روش های مستطیل، ذوزنقه، سیمپسون).

2. روش های پارتیشن بندی بخش ادغام با استفاده از نقاط خاص (روش گاوس).

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

روش مستطیل.اجازه دهید تابع (طراحی) به صورت عددی روی قطعه یکپارچه شود. قطعه را به N بازه مساوی تقسیم می کنیم. مساحت هر یک از ذوزنقه های منحنی N را می توان با مساحت یک مستطیل جایگزین کرد.

عرض همه مستطیل ها یکسان و برابر است با:

به عنوان انتخابی از ارتفاع مستطیل ها، می توانید مقدار تابع را در حاشیه سمت چپ انتخاب کنید. در این حالت، ارتفاع مستطیل اول f(a)، مستطیل دوم f(x 1)،…، N-f(N-1) خواهد بود.

اگر مقدار تابع روی حاشیه سمت راست را به عنوان انتخاب ارتفاع مستطیل در نظر بگیریم، در این حالت ارتفاع مستطیل اول f (x 1)، دومی - f (x 2)، خواهد بود. ..، N - f (x N).

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

تخمین خطای مطلق روش مستطیل ها (وسط)

تخمین خطای مطلق روش های مستطیل چپ و راست.

مثال.کل فاصله را محاسبه کنید و فاصله را به چهار بخش تقسیم کنید

راه حل.محاسبه تحلیلی این انتگرال I=arctg(1)–arctg(0)=0.7853981634 را به دست می دهد. در مورد ما:

1) h = 1; xo = 0; x1 = 1;

2) h = 0.25 (1/4); x0 = 0; x1 = 0.25; x2 = 0.5; x3 = 0.75; x4 = 1;

ما با روش مستطیل های چپ محاسبه می کنیم:

ما با روش مستطیل های قائم الزاویه محاسبه می کنیم:

با روش مستطیل های متوسط ​​محاسبه کنید:

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

در مورد N بخش ادغام برای همه گره ها، به جز نقاط انتهایی قطعه، مقدار تابع دو بار در مجموع کل گنجانده می شود (از آنجایی که ذوزنقه های همسایه یک ضلع مشترک دارند)

فرمول ذوزنقه ای را می توان با گرفتن نصف مجموع فرمول های مستطیل در امتداد لبه های راست و چپ قطعه به دست آورد:

بررسی پایداری محلولبه عنوان یک قاعده، طول هر بازه کوتاهتر است، یعنی. هرچه تعداد این بازه ها بیشتر باشد، تفاوت بین مقادیر تقریبی و دقیق انتگرال کمتر می شود. این برای اکثر توابع صادق است. در روش ذوزنقه ای، خطا در محاسبه انتگرال ϭ تقریباً متناسب با مربع مرحله انتگرال است (ϭ ~ h 2) بنابراین برای محاسبه انتگرال یک تابع معین در حدود a، b، لازم است قطعه را به فواصل N 0 تقسیم کنید و مجموع مساحت ذوزنقه را پیدا کنید. سپس باید تعداد فواصل N 1 را افزایش دهید، دوباره مجموع ذوزنقه را محاسبه کنید و مقدار حاصل را با نتیجه قبلی مقایسه کنید. این کار باید تا (N i) تکرار شود تا به دقت مشخص شده نتیجه (معیار همگرایی) برسد.

برای روش‌های مستطیل و ذوزنقه معمولاً در هر مرحله تکرار، تعداد بازه‌ها با ضریب 2 افزایش می‌یابد (Ni +1 =2N i).

معیار همگرایی:

مزیت اصلی قانون ذوزنقه سادگی آن است. با این حال، اگر ادغام نیاز به دقت بالایی داشته باشد، این روش ممکن است به تکرارهای زیادی نیاز داشته باشد.

خطای مطلق روش ذوزنقه ایرتبه بندی شده است
.

مثال.با استفاده از فرمول ذوزنقه یک انتگرال تقریبا معین را محاسبه کنید.

الف) تقسیم بخش ادغام به 3 قسمت.
ب) تقسیم بخش ادغام به 5 قسمت.

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

بنابراین، فرمول کلی ذوزنقه ها به اندازه دلپذیر کاهش می یابد:

سرانجام:

به شما یادآوری می کنم که مقدار حاصل مقدار تقریبی مساحت است.

ب) قطعه یکپارچه را به 5 قسمت مساوی تقسیم می کنیم، یعنی . با افزایش تعداد بخش ها، دقت محاسبات را افزایش می دهیم.

اگر، پس فرمول ذوزنقه ای شکل زیر را به خود می گیرد:

بیایید مرحله پارتیشن بندی را پیدا کنیم:
، یعنی طول هر قطعه میانی 0.6 است.

هنگام اتمام کار، راحت است که تمام محاسبات را با یک جدول محاسبه ترسیم کنید:

در خط اول می نویسیم "counter"

در نتیجه:

خوب، واقعاً یک توضیح وجود دارد، و یک توضیح جدی!
اگر برای 3 بخش از پارتیشن، سپس برای 5 بخش. اگر بخش بیشتری را انتخاب کنید => دقیق تر خواهد بود.

فرمول سیمپسونفرمول ذوزنقه ای نتیجه ای به دست می دهد که به شدت به اندازه گام h بستگی دارد، که بر دقت محاسبه یک انتگرال معین تأثیر می گذارد، به ویژه در مواردی که تابع غیر یکنواخت است. می توان افزایش دقت محاسبات را فرض کرد اگر به جای پاره های خطوط مستقیم که جایگزین قطعات منحنی نمودار تابع f(x) شوند، برای مثال از قطعات سهمی که از طریق سه نقطه همسایه نمودار داده شده اند استفاده کنیم. . تفسیر هندسی مشابهی زیربنای روش سیمپسون برای محاسبه انتگرال معین است. کل فاصله ادغام a,b به N بخش تقسیم می شود، طول قطعه نیز برابر با h=(b-a)/N خواهد بود.

فرمول سیمپسون این است:

مدت باقی مانده

با افزایش طول قطعات، دقت فرمول کاهش می یابد، بنابراین برای افزایش دقت از فرمول ترکیبی سیمپسون استفاده می شود. کل فاصله ادغام به تعداد زوج از بخش های یکسان N تقسیم می شود، طول قطعه نیز برابر با h=(b-a)/N خواهد بود. فرمول ترکیبی سیمپسون به صورت زیر است:

در فرمول، عبارات داخل پرانتز مجموع مقادیر انتگرال، به ترتیب، در انتهای بخش های فرد و زوج داخلی هستند.

عبارت باقی مانده از فرمول سیمپسون در حال حاضر با توان چهارم مرحله متناسب است:

مثال:انتگرال را با استفاده از قانون سیمپسون محاسبه کنید. (راه حل دقیق - 0.2)

روش گاوس

فرمول ربع گاوس. اصل اساسی فرمول های مربعی نوع دوم از شکل 1.12 قابل مشاهده است: لازم است نقاط را به گونه ای قرار دهیم. ایکس 0 و ایکس 1 در داخل بخش [ آ;ب] به طوری که مساحت «مثلث» در مجموع با مساحت «قطعه» برابر باشد. هنگام استفاده از فرمول گاوس، بخش اولیه [ آ;ب] با تغییر متغیر به بازه [-1;1] کاهش می یابد ایکسبر

0.5∙(بآ)∙تی+ 0.5∙(ب + آ).

سپس ، جایی که .

این جایگزینی در صورتی امکان پذیر است آو بمحدود هستند و تابع f(ایکس) پیوسته در [ آ;ب]. فرمول گاوس برای nنکته ها x i, من=0,1,..,n-1 در داخل قطعه [ آ;ب]:

, (1.27)

جایی که تی منو Aiبرای مختلف nدر کتاب های مرجع آورده شده است. مثلاً وقتی n=2 آ 0 =آ 1=1; در n=3: تی 0 =t 2" 0.775، تی 1 =0, آ 0 =A 2" 0.555، آ 1 اینچ 0.889.

فرمول ربع گاوس

با تابع وزنی برابر با یک به دست می آید p(x)= 1 و گره ها x i، که ریشه های چند جمله ای لژاندر هستند

شانس Aiبه راحتی با فرمول محاسبه می شود

من=0,1,2,...n.

مقادیر گره ها و ضرایب برای n=2،3،4،5 در جدول آورده شده است.

سفارش گره ها شانس
n=2 x 1=0 x 0 =-x2=0.7745966692 الف 1=8/9 A 0 = A 2=5/9
n=3 x 2 =-x 1=0.3399810436 x 3 =-x0=0.8611363116 A 1 = A 2=0.6521451549 A 0 = A 3=0.6521451549
n=4 ایکس 2 = 0 ایکس 3 = -ایکس 1 = 0.5384693101 ایکس 4 =-ایکس 0 =0.9061798459 آ 0 =0.568888899 آ 3 =آ 1 =0.4786286705 آ 0 =آ 4 =0.2869268851
n=5 ایکس 5 = -ایکس 0 =0.9324695142 ایکس 4 = -ایکس 1 =0.6612093865 ایکس 3 = -ایکس 2 =0.2386191861 آ 5 =A 0 =0.1713244924 آ 4 =A 1 =0.3607615730 آ 3 =A 2 =0.4679139346

مثال.مقدار را با استفاده از فرمول گاوس برای محاسبه کنید n=2:

ارزش دقیق: .

الگوریتم محاسبه انتگرال با توجه به فرمول گاوس، دو برابر کردن تعداد ریزبخش ها را فراهم نمی کند، بلکه برای افزایش تعداد ارتین ها با 1 و مقایسه مقادیر به دست آمده از انتگرال فراهم می کند. مزیت فرمول گاوس دقت بالا با تعداد نسبتاً کمی از ارتین است. معایب: ناخوشایند برای محاسبات دستی. باید در حافظه کامپیوتر ذخیره شود تی من, Aiبرای مختلف n.

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

فرمول های گاوس در حال حاضر با تعداد کمی از گره ها (از 4 تا 10) دقت بالایی ارائه می دهند.در این مورد، در محاسبات عملی، تعداد گره ها از چند صد تا چند هزار متغیر است. همچنین متذکر می شویم که اوزان ربع گاوسی همیشه مثبت هستند، که ثبات الگوریتم را برای محاسبه مجموع تضمین می کند.

بالا