凡科建站多少钱wordpress大前端5.0下载
- 作者: 五速梦信息网
- 时间: 2026年03月21日 11:18
当前位置: 首页 > news >正文
凡科建站多少钱,wordpress大前端5.0下载,网站的流量有什么用,网站开发都做什么C——多项式拟合 目标#xff1a;利用C对txt或者xml中的数据#xff0c;进行高阶或低阶多项式拟合 为方便以后查找#xff0c;代码以及详细资料已打包#xff0c;并上传至云盘#xff08;链接#xff1a;https://pan.baidu.com/s/1bvUBIoxv7Avxeq_Cz6xOZQ 密码#xff… C——多项式拟合 目标利用C对txt或者xml中的数据进行高阶或低阶多项式拟合 为方便以后查找代码以及详细资料已打包并上传至云盘链接https://pan.baidu.com/s/1bvUBIoxv7Avxeq_Cz6xOZQ 密码u9qe 打包的内容如下 运行结果 上图是C代码运行的结果在Matlab中显示的效果下图是Matlab中利用Curve Fitting Tool拟合的效果四阶多项式拟合。注意横坐标与纵坐标不一样额那是因为这里的原始数据与一般的数据不同一个x坐标可能对应多个y值。这种情况直接将横纵坐标反着写就行了。 C代码 一、cpp文件 1、主函数curveFittingMain.cpp #include iostream #include fstream #include Linequ.h #include LS.h #include Matrix.h #include vector #include fstream using namespace std;vectordouble fitCurve(vectordouble arr_1, vectordouble arr_2, int n); vectordouble getFitPoint(vectordouble coArr, vectordouble pointArr);int main(int argc, char* argv[]) {//step1: 读取txt文件中的数据string file_x C:\Users\Zhangwei\Desktop\TEST\多坐标点\Quadrant_finalX.txt;string file_y C:\Users\Zhangwei\Desktop\TEST\多坐标点\Quadrant_finalY.txt;ifstream infile_x,infile_y;infile_x.open(file_x);infile_y.open(file_y);if (!infile_x !infile_y) cout error endl;double temp;vectordouble Data_x, Data_y;while (infile_x temp){Data_x.push_back(temp);}while (infile_y temp){Data_y.push_back(temp);}//step2:调用拟合函数// CoArr 表示多项式拟合的系数// myRes 表示拟合的系数与拟合前的横坐标计算得到新的纵坐标vectordouble CoArr fitCurve(Data_y, Data_x, 4); //调用函数4表示阶数可以随意取1—线性拟合2—平方拟合3—立方拟合,4,高阶拟合vectordouble myRes getFitPoint(CoArr, Data_y); //生成拟合数据//step3:将myRes保存为txt文档ofstream outfile;outfile.open(C:\Users\Zhangwei\Desktop\TEST\多坐标点\Quadrant_Final.txt);for (int j 0; j myRes.size(); j){outfile myRes[j] endl;}outfile.close();//system(pause);return 0; }//getFitPoint函数用于获取拟合后的数据点 vectordouble getFitPoint(vectordouble coArr, vectordouble pointArr) {vectordouble finalPoint;if (pointArr.size() 0 || coArr.size() 0){cout 数据点有误 endl;}if (pointArr.size() 0 coArr.size() 0){for (int i 0; i pointArr.size(); i){double temp 0;for (int j 0; j coArr.size(); j){temp pow(pointArr[i], j)*coArr[j];}finalPoint.push_back(temp);}}return finalPoint; }//fitCurve函数用于曲线拟合 vectordouble fitCurve(vectordouble arr_1, vectordouble arr_2, int n) {CLS m_cls;vectordouble coefficientsSet;if (arr_1.size() ! arr_2.size()){cout 输入数据有误 endl;}if (arr_1.size() arr_2.size()){for (int i 0; i arr_1.size(); i){m_cls.addPoint(arr_1[i], arr_2[i]);}m_cls.setN(n);m_cls.Solve();double *t_paracof m_cls.getSolution();for (int i 0; i n 1; i){coefficientsSet.push_back(t_paracof[i]); //多项式的系数项第一项为常数项最后一项为x^n项}}return coefficientsSet; }2、Linequ.cpp // Linequ.cpp: implementation of the CLinequ class. // ////#include stdafx.h #include math.h #include Linequ.h#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[] FILE; //#define new DEBUG_NEW #endif// // Construction/Destruction //CLinequ::CLinequ(int dims) {index dims;sums new double[dims];MatrixA new double[dims * dims];solu new double[dims]; }CLinequ::~CLinequ() {delete[] sums;delete[] MatrixA;delete[] solu; }void CLinequ::setMatrix(double *rmatr) //设置矩阵 {for (int i 0; iindexindex; i){(MatrixA i) rmatr[i]; //矩阵成员赋初值} }void CLinequ::setLinequ(double *a, double *b) //设置线性方程组 {setMatrix(a); //调用基类函数for (int i 0; iindex; i)sums[i] b[i]; }int CLinequ::Solve() //全选主元高斯消去法求解方程 {int *js, l, k, i, j, is, p, q;double d, t;js new int[index];l 1;for (k 0; k index - 2; k){ //消去过程d 0.0;for (i k; i index - 1; i)for (j k; j index - 1; j){t fabs(MatrixA[i*index j]);if (td){d t; js[k] j; is i;}}if (d 1.0 1.0) l 0;else{if (js[k] ! k)for (i 0; i index - 1; i){p i*index k; q i*index js[k];t MatrixA[p]; MatrixA[p] MatrixA[q]; MatrixA[q] t;}if (is ! k){for (j k; j index - 1; j){p k*index j; q is*index j;t MatrixA[p]; MatrixA[p] MatrixA[q]; MatrixA[q] t;}t sums[k]; sums[k] sums[is]; sums[is] t;}}if (l 0){delete[] js;//fail to solvereturn(0);}d MatrixA[k*index k];for (j k 1; j index - 1; j){p k*index j; MatrixA[p] MatrixA[p] / d;}sums[k] sums[k] / d;for (i k 1; i index - 1; i){for (j k 1; j index - 1; j){p i*index j;MatrixA[p] MatrixA[p] - MatrixA[i*index k] * MatrixA[k*index j];}sums[i] sums[i] - MatrixA[i*index k] * sums[k];}}d MatrixA[(index - 1)*index index - 1];if (fabs(d) 1.0 1.0){delete[] js;//fail to solvereturn(0);}solu[index - 1] sums[index - 1] / d; //回代过程for (i index - 2; i 0; i–){t 0.0;for (j i 1; j index - 1; j)t t MatrixA[i*index j] * solu[j];solu[i] sums[i] - t;}js[index - 1] index - 1;for (k index - 1; k 0; k–)if (js[k] ! k){t solu[k]; solu[k] solu[js[k]]; solu[js[k]] t;}delete[] js;return(1); }double CLinequ::getSolution() const {return solu; } 3、LS.cpp // LS.cpp: implementation of the CLS class. // ////#include stdafx.h #include LS.h #include Matrix.h #include Linequ.h#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[] FILE; //#define new DEBUG_NEW #endif// // Construction/Destruction //CLS CLS::_instance 0;CLS::CLS() {pSolution 0;m 0;n 0;_instance this; }CLS::~CLS() {if (pSolution)delete[] pSolution; }CLS *CLS::getInstance() {if (!_instance)new CLS();return _instance; }void CLS::setN(int t) {n t 1;if (pSolution)delete[] pSolution;pSolution new double[n]; }void CLS::addPoint(double x, double y) {pVertex[m][0] x;pVertex[m][1] y;m; }bool CLS::Solve() {if (m 0 || n 0)return false;CMatrix *A new CMatrix(m, n);int i, j;for (j 0; j m; j)A-setData(j, 0, 1.0);for (i 1; i n; i){for (j 0; j m; j){A-setData(j, i, A-getData(j, i - 1) * pVertex[j][0]);}}CMatrix *B A-getRev();CMatrix *b new CMatrix(m, 1);for (i 0; i m; i)b-setData(i, 0, pVertex[i][1]);CMatrix *C B-getMul(A);CMatrix *d B-getMul(b);CLinequ *pL new CLinequ(n);pL-setLinequ(C-getMatrix(), d-getMatrix());pL-Solve();double *t pL-getSolution();for (i 0; i n; i)pSolution[i] t[i];return true; }double *CLS::getSolution() const {return pSolution; }double CLS::calcY(double x) {double y 0.0, temp 1.0;for (int i 0; i n; i){y pSolution[i] * temp;temp * x;}return y; }void CLS::restart() {m 0;if (pSolution)delete[] pSolution;pSolution 0;n 0; } 4、Matrix.cpp // Matrix.cpp: implementation of the CMatrix class. // ////#include stdafx.h #include Matrix.h#ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[] FILE; //#define new DEBUG_NEW #endif// // Construction/Destruction //void CMatrix::setMatrix(double *rmatr) //设置矩阵 {for (int i 0; i m * n; i){*(pMatrix i) rmatr[i]; //矩阵成员赋初值} }CMatrix::CMatrix(int a, int b) //矩阵Matrix类的构造函数 {m a; n b; //保护数据赋值pMatrix new double[m * n]; //动态分配内存 }CMatrix::~CMatrix() //矩阵Matrix类的析构函数 {delete[] pMatrix; //内存释放 }CMatrix *CMatrix::getRev() {CMatrix pR new CMatrix(n, m);for (int j 0; j n; j){for (int i 0; i m; i)(pR-pMatrix i m * j) *(pMatrix i * n j);}return pR; }CMatrix *CMatrix::getMul(CMatrix *b) {if (b-m ! n)return 0;CMatrix *pR new CMatrix(m, b-n);for (int i 0; i m; i){for (int j 0; j b-n; j){double temp 0.0;for (int k 0; k n; k)temp *(pMatrix i * n k) * *(b-pMatrix k * b-n j);*(pR-pMatrix i * b-n j) temp;}}return pR; }int CMatrix::getM() const {return m; }int CMatrix::getN() const {return n; }double *CMatrix::getMatrix() const {return pMatrix; }double CMatrix::getData(int i, int j) const {if (i m j n i 0 j 0)return *(pMatrix i * n j);elsereturn 0.0; }void CMatrix::setData(int i, int j, double t) {if (i m j n i 0 j 0){*(pMatrix i * n j) t;} } 二、头文件.h文件 1、Linequ.h // Linequ.h: interface for the CLinequ class. // //#if !defined(AFX_LINEQU_H3673E7FC_1154_436A_9D22_B472DD858F13INCLUDED_) #define AFX_LINEQU_H3673E7FC_1154_436A_9D22_B472DD858F13INCLUDED_#if _MSC_VER 1000 #pragma once #endif // _MSC_VER 1000class CLinequ { public: //外部接口CLinequ(int dims 2); //构造函数virtual ~CLinequ(); //析构函数void setLinequ(double *a, double *b); //方称赋值void setMatrix(double *rmatr);int Solve(); //全选主元高斯消去法求解方程double *getSolution() const;private:double *sums; //方程右端项double *MatrixA;double *solu; //方程的解int index; };#endif // !defined(AFX_LINEQU_H3673E7FC_1154_436A_9D22_B472DD858F13INCLUDED_)2、LS.h // LS.h: interface for the CLS class. // //#if !defined(AFX_LS_H208D279A_F391_4DA8_BBE3_3895A9800FFEINCLUDED_) #define AFX_LS_H208D279A_F391_4DA8_BBE3_3895A9800FFEINCLUDED_#if _MSC_VER 1000 #pragma once #endif // _MSC_VER 1000class CLS { private:static CLS *_instance;double pVertex[2000][2];//最多可以拟合2000个点int m; //点的个数int n; //多项式次数double *pSolution; //多项式系数public:CLS();virtual ~CLS();static CLS *getInstance();void setN(int t); //n次多项式拟合void addPoint(double x, double y); //添加一个点void restart();bool Solve();double *getSolution() const; //获得多项式系数double calcY(double x); //根据x坐标计算y };#endif // !defined(AFX_LS_H208D279A_F391_4DA8_BBE3_3895A9800FFEINCLUDED_)3、Matrix.h // Matrix.h: interface for the CMatrix class. // //#if !defined(AFX_MATRIX_HAEE89FA3_05E2_44AC_AA96_5FBCB3608C13INCLUDED_) #define AFX_MATRIX_HAEE89FA3_05E2_44AC_AA96_5FBCB3608C13INCLUDED_#if _MSC_VER 1000 #pragma once #endif // _MSC_VER 1000class CMatrix { public:CMatrix(int a 2, int b 2);virtual ~CMatrix();void setMatrix(double *rmatr);CMatrix *getRev();CMatrix *getMul(CMatrix *b);int getM() const; //获得行数int getN() const; //获得列数double getData(int i, int j) const;void setData(int i, int j, double t);double *getMatrix() const; //获得矩阵protected:int m, n;double *pMatrix; };#endif // !defined(AFX_MATRIX_HAEE89FA3_05E2_44AC_AA96_5FBCB3608C13INCLUDED_)
- 上一篇: 凡科建站电话咨询西安互联网公司
- 下一篇: 凡科建站多少钱青岛公司网站建设开发
相关文章
-
凡科建站电话咨询西安互联网公司
凡科建站电话咨询西安互联网公司
- 技术栈
- 2026年03月21日
-
凡科建站代理商登录网站设计接单
凡科建站代理商登录网站设计接单
- 技术栈
- 2026年03月21日
-
凡科建设网站如何对话框win7 iis配置网站 视频教程
凡科建设网站如何对话框win7 iis配置网站 视频教程
- 技术栈
- 2026年03月21日
-
凡科建站多少钱青岛公司网站建设开发
凡科建站多少钱青岛公司网站建设开发
- 技术栈
- 2026年03月21日
-
凡科建站模板丽水做企业网站的公司
凡科建站模板丽水做企业网站的公司
- 技术栈
- 2026年03月21日
-
凡科建站网江门网站推广优化
凡科建站网江门网站推广优化
- 技术栈
- 2026年03月21日






