日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一般最小二乘法 c语言,最小二乘法C语言的实现(7页)-原创力文档

發(fā)布時間:2025/3/12 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一般最小二乘法 c语言,最小二乘法C语言的实现(7页)-原创力文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

實驗三 .最小二乘法C語言的實現(xiàn)

1.實驗?zāi)康?#xff1a;

進一步熟悉曲線擬合的最小二乘法。

掌握編程語言字符處理程序的設(shè)計和調(diào)試技術(shù)。

2.實驗要求:

輸入:已知點的數(shù)目以及各點坐標 。

輸出:根據(jù)最小二乘法原理以及各點坐標求出擬合曲線 。

3.程序流程:

(1)輸入已知點的個數(shù);

(2)分別輸入已知點的X坐標;

(3)分別輸入已知點的Y坐標;

(4)通過調(diào)用函數(shù),求出擬合曲線。

最小二乘法原理如下:

根據(jù)一組給定的實驗數(shù)據(jù),求出自變量x與因變量y的函數(shù)關(guān)系,只要求在給定點上的誤差的平方和最小.當時,即 (4.4.1)這里是線性無關(guān)的函數(shù)族,假定在上給出一組數(shù)據(jù),以及對應(yīng)的一組權(quán),這里為權(quán)系數(shù),要求使最小,其中  (4.4.2)

(4.4.2)中實際上是關(guān)于的多元函數(shù),求I的最小值就是求多元函數(shù)I的極值,由極值必要條件,可得   (4.4.3)根據(jù)內(nèi)積定義引入相應(yīng)帶權(quán)內(nèi)積記號 (4.4.4)則(4.4.3)可改寫為

這是關(guān)于參數(shù)的線性方程組,用矩陣表示為 (4.4.5)(4.4.5)稱為法方程.當線性無關(guān),且在點集上至多只有n個不同零點,則稱在X上滿足Haar條件,此時(4.4.5)的解存在唯一。記(4.4.5)的解為 從而得到最小二乘擬合曲線 (4.4.6)可以證明對,有  故(4.4.6)得到的即為所求的最小二乘解.它的平方誤差為 (4.4.7)均方誤差為   在最小二乘逼近中,若取,則,表示為    (4.4.8)此時關(guān)于系數(shù)的法方程(4.4.5)是病態(tài)方程,通常當n≥3時都不直接取作為基。?

程序流程圖:

開始

開始

輸入已知點個數(shù)n

輸入已知點個數(shù)n

輸入已知點的X坐標 ↓

輸入已知點的X坐標

輸入已知點的Y坐標↓

輸入已知點的Y坐標

輸出結(jié)果↓

輸出結(jié)果

程序:

#include

#include

#include

#include

float average(int n,float *x)

{int i;

float av;

av=0;

for(i=0;i

av+=*(x+i);

av=av/n;

return(av);

}

//平方和

float spfh(int n,float *x)

{int i;

float a,b;

a=0;

for(i=0;i

a+=(*(x+i))*(*(x+i));

return(a);

}

//和平方

float shpf(int n,float *x)

{int i;

float a,b;

a=0;

for(i=0;i

a=a+*(x+i);

b=a*a/n;

return(b);

}

//兩數(shù)先相乘,再相加

float dcj(int n,float *x,float *y)

{int i;

float a;

a=0;

for(i=0;i

a+=(*(x+i))*(*(y+i));

return(a);

}

//兩數(shù)先相加,再相乘

float djc(int n,float *x,float *y)

{int i;

float a=0,b=0;

for(i=0;i

{a=a+*(x+i);

b=b+*(y+i);

}

a=a*b/n;

return(a);

}

//系數(shù)a

float xsa(int n,float *x,float *y)

{float a,b,c,d,e;

a=spfh(n,x);

b=shpf(n,x);

c=dcj(n,x,y);

d=djc(n,x,y);

e=(c-d)/(a-b);

//printf("%f %f %f %f

總結(jié)

以上是生活随笔為你收集整理的一般最小二乘法 c语言,最小二乘法C语言的实现(7页)-原创力文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。