新人+新手请教,如何把一个WIN32应用的CPP合并到一个MFC里去?
新手+新人前来寻求各位大大帮助我要做一个程序,内容是获取点坐标信息最小二乘法拟合成曲线然后画图
下面是最小二乘法拟合曲线的程序(WIN32应用)
效果是把包含点信息的TXT文件拖进去,求出拟合多项式的系数
然后画图的程序(MFC程序)我也能运行了。
效果是把一个多项式画出来
但是因为基础不好,我完全不清楚怎样把两个合并起来
请问有没有擅长这方面的朋友来指点下我?谢谢啦
我C++初学,很多术语都不太了解,希望可以说具体点
#include<iostream>
#include<fstream>
#include<math.h>
#include <iomanip>
using namespace std;
double max(double array[4]);
double gt(double x[11],double y[11]);
double GS(double a[4][4],double b[4],double e[],double s[]);
void main()
{
double a[11]={1,1,1,1,1,1,1,1,1,1,1},b[11],c[11],d[11],e[11],f[11],g[11];
int i;
char strl[11];
cout<<"\n输入文件名:";
cin>>strl;
ifstream fin(strl);
if (!fin)
{cout<<"cant open"<<strl<<endl;exit(1);}
for(i=0;i<11;i++)//读入n个数据点
{fin>>b[i];fin>>e[i];//左列写入x,右列写入y
c[i]=b[i]*b[i];//x平方
d[i]=b[i]*b[i]*b[i];}//x立方
fin.close();//结束输入
f[0]=gt(a,a);f[1]=gt(a,b);f[2]=gt(a,c);f[3]=gt(a,d);f[4]=gt(b,b);f[5]=gt(b,c);f[6]=gt(b,d);
f[7]=gt(c,c);f[8]=gt(c,d);f[9]=gt(d,d);g[0]=gt(a,e);g[1]=gt(b,e);g[2]=gt(c,e);g[3]=gt(d,e);
double array[4][4]={{f[0],f[1],f[2],f[3]},{f[1],f[4],f[5],f[6]},{f[2],f[5],f[7],f[8]},{f[3],f[6],f[8],f[9]}};//生成4*4矩阵
GS(array,g,e,b);
/*
array[4][4]* x[i] = g[i]
1 x x^2 x^3 a0 y
x x^2 x^3 x^4 a1 y*x
x^2 x^3 x^4 x^5 a2 y*x^2
x^3 x^4 x^5 x^6 a3 y*x^3
x^n为11个x的n次方之和 多项式系数 y*x^n为11个y*x^n的和
主对角线优势,使用高斯-赛德尔迭代法求解x[i]
*/
}
double gt(double x[11],double y[11])
{
double sum=0;
for(int i=0;i<11;i++)
sum=x[i]*y[i]+sum;
return sum;
}//定义gt,累加之和。
double GS(double a[4][4],double b[4],double e[11],double s[11])
// GS( array[4][4] g[i] e[i] b[i]);
{
double c[4]={0};
double x0[4]={0};
int i,k,j;
double x[4];//多项式系数
double r,sum=0;
for(k=1;;k++)
{
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
sum=a[i][j]*x0[j]+sum;
}
x[i]=x0[i]+(b[i]-sum)/a[i][i];
c[i]=fabs(x[i]-x0[i]);//精度
x0[i]=x[i];
sum=0;
}
r=max(c);
if(r<0.00000001)//给定精度要求满足则结束迭代
{
cout<<"解得的三次拟合曲线系数为:\n";
for(i=0;i<4;i++)
cout<<"A"<<i<<"="<<x[i]<<endl;
break;
}
}
return 0;
}
double max(double array[4])
{
double a=array[0];
int i;
for(i=0;i<4;i++)
{if(a<array[i])
a=array[i];}
return a;}
最后得出的多项式系数就是x[i]里的四个数。
MFC程序文件比较多,我也不知道贴什么好,就截个图。图里那个f(float x)多项式对应上面那个程序拟合出的系数。
程序合并.rar
(34.4 KB)
求把他们合并起来,即把包含点坐标的TXT文档拖进去,然后直接得出拟合曲线图。
谢谢啦。
Draw.rar
(1.91 MB)
这个是画图的程序[ 本帖最后由 holylightsj 于 2013-8-16 12:55 编辑 ]