資源簡介
最小二乘法擬合 用高斯牛頓法
一個指數(shù)函數(shù) 一個拋物線擬合 能運行 有結(jié)果
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
void?about();
void?Gauss(double?*?matrixint?widthint?height);
void?showMatrix(double?**?tempint?widthint?height);
void?DrawPlots(double?*xdouble?*yint?num_xint?num_y);
const?int?N=15M=2M2=1;
void?main(){
?double?x[15]={1??1.5?2?2.5?3?3.5?4?4.5??5??5.5??6??6.5??7??7.5??8}
??y[15]={33.4??79.5??122.65??159.05??189.15???214.15??238.65??252.5??267.55??280.5??296.65??301.4??310.4??318.15??325.15};
????/*x[]={12345678910111213141516}
???y[]={4??6.4??8??8.8??9.22??9.5??9.7??9.86??10???10.2??10.32?10.42?10.5?10.55?10.58?10.6};*/
?
?int?ijkl;
?
?cout<<“\n\n實驗5?第1題??拋物線擬合\n“< ?double?matrix[M+1][M+2]={0};matrix[0][0]=N;
?for(i=0;i ??k=1;matrix[0][M+1]+=y[i];
??for(j=1;j<2*M+1;j++){
???k*=x[i];
???for(l=0;l<(j>M?2*M+1-j:j+1);l++)
????matrix[?j>M?j-M+l:l][?j>M?M-l:j-l]+=k;
???if(j ??}
?}
?double?*p=(double?*)&matrix;
?Gauss(pM+2M+1);
?cout<<“\n\n指數(shù)擬合\n“< ?double?matrix2[M2+1][M2+2]={0};matrix2[0][0]=N;
?for(i=0;i ??k=1;
??matrix2[0][M2+1]+=y[i];
??for(j=1;j<2*M2+1;j++){
???k*=x[i];
???for(l=0;l<(j>M2?2*M2+1-j:j+1);l++)
????matrix2[?j>M2?j-M2+l:l][?j>M2?M
評論
共有 條評論