數學建模之擬合及其代碼

發現新天地,歡迎訪問Cr不是鉻的個人網站

引言

與插值問題不同,在擬合問題中不需要曲線一定經過給定的點。擬合問題的目標是尋求一個函數(曲線),使得該曲線在某種準則下與所有的數據點最為接近,即曲線擬合的最好(最小化損失函數)

最小二乘法

在一維線性擬合中,采用的是最小二乘法來求得最優擬合。

file

求解過程證明:

file

擬合好壞的評價

通過最小二乘法確定擬合方程后,怎么來評價擬合的好壞呢?

  • SST:總體平方和
  • SSE:誤差平方和
  • SSR: 回歸平方和

file

SST = SSE + SSR;

擬合優度:1 - SSE/SST.

R^2越接近1,說明誤差平方和越接近0,誤差越小說明擬合的越好

代碼部分

最小二乘

%% 開始擬合
%行數
n = size(x,1);
%計算擬合參數
k = (n*sum(x.*y) - sum(y)*sum(x))/(n*sum(x.^2)-sum(x)*sum(x));
b = (sum(x.^2)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.^2)-sum(x)*sum(x));hold on % 繼續在之前的圖形上來畫圖形
grid on % 顯示網格線
% % 畫出y=kx+b的函數圖像 plot(x,y)
% % 傳統的畫法:模擬生成x和y的序列,比如要畫出[0,5]上的圖形
% xx = 2.5: 0.1 :7 ; % 間隔設置的越小畫出來的圖形越準確
% yy = k * xx + b;  % k和b都是已知值
% plot(xx,yy,'-')

file

匿名函數用法

% 匿名函數的基本用法。
% handle = @(arglist) anonymous_function
% 其中handle為調用匿名函數時使用的名字。
% arglist為匿名函數的輸入參數,可以是一個,也可以是多個,用逗號分隔。
% anonymous_function為匿名函數的表達式。
% 舉個小例子
%  z=@(x,y) x^2+y^2; 
%  z(1,2) 
% % ans =  5
% fplot函數可用于畫出匿名一元函數的圖形。
% fplot(f,xinterval) 將匿名函數f在指定區間xinterval繪圖。xinterval =  [xmin xmax] 表示定義域的范圍% f=@(x) k*x+b;
% fplot(f,[2.5,7]);

file

擬合優度

%% 求擬合度
y_hat = k*x+b; % y的擬合值
SSR = sum((y_hat-mean(y)).^2)  % 回歸平方和
SSE = sum((y_hat-y).^2) % 誤差平方和
SST = sum((y-mean(y)).^2) % 總體平方和
SST-SSE-SSR   % 5.6843e-14  =   5.6843*10^-14   matlab浮點數計算的一個誤差
R_2 = SSR / SST

完整代碼

%% 導入數據
load data
%繪制原始散點圖
plot(x,y,'o')
%給x軸與y軸加上標簽
xlabel('自變量x')
ylabel('因變量y')
%% 開始擬合
%行數
n = size(x,1);
%計算擬合參數
k = (n*sum(x.*y) - sum(y)*sum(x))/(n*sum(x.^2)-sum(x)*sum(x));
b = (sum(x.^2)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.^2)-sum(x)*sum(x));hold on % 繼續在之前的圖形上來畫圖形
grid on % 顯示網格線
% % 畫出y=kx+b的函數圖像 plot(x,y)
% % 傳統的畫法:模擬生成x和y的序列,比如要畫出[0,5]上的圖形
% xx = 2.5: 0.1 :7 ; % 間隔設置的越小畫出來的圖形越準確
% yy = k * xx + b;  % k和b都是已知值
% plot(xx,yy,'-')% 匿名函數的基本用法。
% handle = @(arglist) anonymous_function
% 其中handle為調用匿名函數時使用的名字。
% arglist為匿名函數的輸入參數,可以是一個,也可以是多個,用逗號分隔。
% anonymous_function為匿名函數的表達式。
% 舉個小例子
%  z=@(x,y) x^2+y^2; 
%  z(1,2) 
% % ans =  5
% fplot函數可用于畫出匿名一元函數的圖形。
% fplot(f,xinterval) 將匿名函數f在指定區間xinterval繪圖。xinterval =  [xmin xmax] 表示定義域的范圍% f=@(x) k*x+b;
% fplot(f,[2.5,7]);f = @(x) k*x + b;
fplot(f,[2.5,7.0])
legend('原始點','擬合')
%% 求擬合度
y_hat = k*x+b; % y的擬合值
SSR = sum((y_hat-mean(y)).^2)  % 回歸平方和
SSE = sum((y_hat-y).^2) % 誤差平方和
SST = sum((y-mean(y)).^2) % 總體平方和
SST-SSE-SSR   % 5.6843e-14  =   5.6843*10^-14   matlab浮點數計算的一個誤差
R_2 = SSR / SST

本文由博客一文多發平臺 OpenWrite 發布!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160722.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160722.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160722.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于跳蛛算法優化概率神經網絡PNN的分類預測 - 附代碼

基于跳蛛算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于跳蛛算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于跳蛛優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要:針對PNN神經網絡的光滑…

7_畫圖常用代碼

plt.figure(dpi200) # 設置 dpi 為 200(可以根據需要調整這個值)

數據結構學習筆記——多維數組、矩陣與廣義表

目錄 一、多維數組(一)數組的定義(二)二維數組(三)多維數組的存儲(四)多維數組的下標的相關計算 二、矩陣(一)特殊矩陣和稀疏矩陣(二)…

從權限跳轉看Activity的data android:scheme

在應用申請懸浮窗權限的時候,可以跳轉到相應的設置界面,并且自動切換到應用的條目,高亮顯示一下, android懸浮窗權限怎么申請 在Android中,要申請懸浮窗權限,需要以下步驟: 在 AndroidManifes…

hp惠普Victus Gaming Laptop 15-fa1025TX/fa1005tx原裝出廠Win11系統ISO鏡像

光影精靈9筆記本電腦原廠W11系統22H2恢復出廠時開箱狀態一模一樣 適用型號:15-fa1003TX,15-fa1005TX,15-fa1007TX,15-fa1025TX 鏈接:https://pan.baidu.com/s/1fBPjed1bhOS_crGIo2tP1w?pwduzvz 提取碼&#xff1a…

每天一道算法題(十一)——滑動窗口最大值_困難(中等)

文章目錄 1、問題2、示例3、解決方法(1)方法1——雙指針 總結 1、問題 給你一個整數數組 nums,有一個大小為 k 的滑動窗口從數組的最左側移動到數組的最右側。你只可以看到在滑動窗口內的 k 個數字。滑動窗口每次只向右移動一位。 返回 滑動窗…

c++ 函數的申明

1 一個cpp中 兩種情況 1.1 定義 使用 1.2 聲明 使用 定義 2 按 定義 后 直接使用的順序 不用 聲明 函數 #include <iostream> using namespace std;int max(int a, int b) {int max a>b?a:b;return max; }int main() {int a 1;int b 2;cout << max(a, b…

解決vue中引入天地圖顯示不全問題,設置setTimeout即可解決!

index.html中引入天地圖api <script type"text/javascript" src"https://api.tianditu.gov.cn/api?v4.0&tk你的key"></script>map.vue中初始化天地圖 //初始化天地圖 initTMap() {const T window.T;// 3.初始化地圖對象this.tMap new…

flink1.13.6版本的應用程序(maven版)

問題 想要一個指定flink版本的java計算任務hello world最簡工程。 解決 mvn archetype:generate \-DarchetypeGroupIdorg.apache.flink \-DarchetypeArtifactIdflink-quickstart-java \-DarchetypeVersion1.13.6這里直接使用官方mave模版工程&#xff0c;指…

系統架構設計:13 論基于構件的軟件開發

論基于構件的軟件開發 軟件系統的復雜性不斷增長、軟件人員的頻繁流動和軟件行業的激烈竟爭迫使軟件企業提高軟件質量、積累和固化知識財富,并盡可能地縮短軟件產品的開發周期。 集軟件復用、分布式對象計算、企業級應用開發等技術為一體的“基于構件的軟件開發”應運而生,…

LeetCode 2304. 網格中的最小路徑代價:DP

【LetMeFly】2304.網格中的最小路徑代價&#xff1a;DP 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/minimum-path-cost-in-a-grid/ 給你一個下標從 0 開始的整數矩陣 grid &#xff0c;矩陣大小為 m x n &#xff0c;由從 0 到 m * n - 1 的不同整數組成。你可以…

【python基礎(二)】列表詳解

文章目錄 一. 訪問列表元素二. 使用列表中的各個值三. 修改、添加和刪除元素1. 修改列表元素2. 在列表中添加元素3. 從列表中刪除元素 四.組織列表1. sort()對列表永久排序2. sorted()對列表臨時排序3. 倒著打印列表4. 確定列表的長度 列表由一系列按特定順序排列的元素組成。可…

Django框架之Cookie和Session和CBV加裝飾器的三種方法

【一】Cookie與Session Cookie和Session是用來在Web應用程序中跟蹤用戶會話數據的兩種常用技術。 【1】Cookie和Session的發展史 【1】Cookie的發展史&#xff1a; 1994年&#xff0c;網景通信公司推出了第一個瀏覽器Cookie技術。Cookie是存儲在用戶計算機上的小型文本文件…

redis五種基本數據類型

redis存儲任何類型的數據都是以key-value形式保存&#xff0c;并且所有的key都是字符串&#xff0c;所以討論基礎數據結構都是基于value的數據類型 常見的5種數據類型是&#xff1a;String、List、Set、Zset、Hash 一) 字符串(String) String是redis最基本的類型&#xff0c;v…

linux日志不循環問題診斷

有一臺Linux虛擬機的messages日志文件自2023年7月下旬開始沒有按周為周期重新生成新的日志&#xff0c;一直累積在同一個messages文件中&#xff0c;如下所示&#xff1a; [root logrotate.d]# ls -l /var/log|grep me -rw-r--r-- 1 root root 107170 Nov 15 1…

地圖導航測試用例,你get了嗎?

地圖導航是我們經常使用的工具&#xff0c;能幫助我們指引前進的方向。 接下來&#xff0c;會從功能測試、UI測試、兼容測試、安全測試、網絡測試、性能測試、易用性測試、文檔和國際化語言測試8個方面來編寫地圖導航測試用例。 一 功能測試 輸入起點和終點&#xff0c;驗證…

python3.7升級為更高版本并遷移庫

創建虛擬環境 # 在進入當前的虛擬環境【py3.7的環境】使用pip導出全部包txt文件 pip freeze > all_package.txt# 創建虛擬環境 conda create -n py39 python3.9# 激活新創建的虛擬環境 conda activate py39# 用 pip 一鍵文件安裝 # pip install --help 查看-r命令的作用 # …

LeetCode48旋轉圖像

思路是沿對角線交換元素,之后沿矩陣中線交換元素 參考鏈接 &#x1f517;:【LeetCode 每日一題】48. 旋轉圖像 | 手寫圖解版思路 代碼講解-嗶哩嗶哩】 class Solution {public void rotate(int[][] matrix) {int i0,j0;if(matrixnull){return;}int n matrix.length;// int[]…

優先級隊列(priority_queue)

文章目錄 優先級隊列的定義定義&#xff1a;接口頭文件優先隊列和堆的關系使用&#xff1a;排序的規則容器 仿函數應用 隊列存指針問題&#xff1a; 優先級隊列的定義 定義&#xff1a; 黃色部分是仿函數 接口 頭文件 這里不需要包含其他的頭文件只需要使用隊列的頭文件就可以…

mysql 與 Oracle 的區別,oracle 與 mysql分頁查詢的區別

文章目錄 mysql 與 Oracle 的區別1、并發性2、一致性3、事務4、數據持久性5、提交方式6、邏輯備份7、熱備份8、sql語句的擴展和靈活性9、復制10、性能診斷11、權限與安全12、分區表和分區索引13、管理工具 oracle 與 mysql分頁查詢1.Oracle分頁查詢中提供了一個偽列&#xff1a…