ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:125.26KB ,
资源ID:17395317      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17395317.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件编程课程设计Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件编程课程设计Word格式文档下载.docx

1、m; if (m MAX_N) coutThe input m is larger than MAX_N,please redefine the MAX_N. /输入点数超过设定的最大值,提示重新输入 return 1; if (m = 0)Please input a number between 1 and MAX_N /输入的点数=0,提示重新输入Now input the (x_i,y_i),i=,m-1 /输入数据 for (i = 0; i pointsi.x;pointsi.y; i+) /列出方程U(a,b) = c u21 += pointsi.x; /x的和 u22 +=

2、pointsi.x * pointsi.x; /x的平方和 c1 += pointsi.y; /y的和 c2 += pointsi.x * pointsi.y; /x*y的和 u12 = u21; u11 = m; /开始求解 a = (c1 * u22 - c2 * u12)/(u11 * u22 - u12 * u21); /求a b = (c1 * u21 -c2 * u11)/(u21 * u12 - u22 * u11); /求bSolve: p(x) = a+ bx return 0;(3)程序运行界面截图:(4)调试中出现的问题及解决方法:为了用最小二乘法计算拟合曲线的系数,一开

3、始定义了许多变量,使程序显得很乱,不简洁。后来改用结构体变量,把要求的系数放在一个结构体变量中,精简了程序。2.一般多项式观测数据:Xi:-3 -2 -1 0 1 2 3Yi:4 2 3 0 -1 -2 -5#include stdio.hmath.hstdlib.hwindows.h /引用头文件double sum(double * dNumarry,int n); /求和的函数double MutilSum(double* dX,double *dY,int n); /求乘法的函数double RelatePow(double *dx,int n,int ex); /计算x的y次幂的函数

4、double RelateMutiXY(double *dx,double*dy,int n,int ex); /关联xy的函数 void EMatrix(double *dx,double*dy,int n,int ex,double coefficient); /定义变量,确定多项式阶数void CalEquation(int exp,double coefficient );double F(double c,int l,int m);double Em1010; /所构造的多项式的系数 int main(int argc, char* argv) double arry17=-3,-2

5、,-1,0,1,2,3; double arry27=4,2,3,0,-1,-2,-5; /写入观测值 double coefficient10; ZeroMemory(coefficient,sizeof(double)*10);/ double dSumarry1= sum(arry1,7);/ printf(darry1=%lfn,dSumarry1);/ / double dSumarry2=sum(arry2,7);darry2=%lfn,dSumarry2);/ double dMultiarry1=MutilSum(arry1,arry1,7);dMultiarry1=%lfn,

6、dMultiarry1);/ double dMultiarry12=MutilSum(arry1,arry2,7);dMultiarry2=%lfn,dMultiarry12);/,coefficient4,coefficient5 /+ %lfx3 + %lfx4 EMatrix(arry1,arry2,7,3,coefficient); /给变量赋值,此处ex=3是拟合二次多项式 printf(拟合方程为:y = %lf + %lfx + %lfx2 n,coefficient1,coefficient2,coefficient3); double sum(double * dNumar

7、ry,int n) double *dTemp= new doublen; double dSum=0; dTemp=dNumarry; for (int i=0;in;i+) dSum+=dTempi; return dSum; /求和double MutilSum(double* dX,double *dY,int n) double * dXTemp= new double n; double * dYTemp= new double n; double dMultiSum=0; dXTemp=dX; dYTemp=dY; dMultiSum += dXi*dYi; return dMu

8、ltiSum; /求x和y的乘积double RelatePow(double *dx,int n,int ex) double * dTemp =new doublen; double ReSum=0; dTemp=dx; for (int j=0;jj+) ReSum+=pow(dTempj,ex); return ReSum; /计算x的幂double RelateMutiXY(double *dx,double*dy,int n,int ex) double dReMultiSum=0; dXTemp=dx; dYTemp=dy; dReMultiSum+=pow(dXTempi,ex

9、)*dYTempi; return dReMultiSum; /计算方程组的增广矩阵 void EMatrix(double *dx,double*dy,int n,int ex,double coefficient ) for(int i=1;=ex; for(int j=1; Emij=RelatePow(dXTemp,n,i+j-2); Emiex+1=RelateMutiXY(dXTemp,dYTemp,n,i-1); Em11=n; CalEquation(ex,coefficient); /x的系数/求解方程 void CalEquation(int exp,double coef

10、ficient ) for(int k=1;k=1;l-) /回代求解 coefficientl=(Emlexp+1-F(coefficient,l+1,exp)/Emll;double F(double c,int l,int m)/供CalEquation函数调用 double sum=0; for(int i=l;=m; sum+=Eml-1i*ci; return sum;通过网上资料查找首先了解什么是最小二乘法的多项式拟合。拟合过程中随着高阶逐渐增加拟合的曲线也会存在病态,所以有时候对比较高的高阶需要压缩后在拟合。这里是没有经过压缩的拟合,我会继续深入研究更高阶的曲线拟合。EMatr

11、ix这个函数的ex要加1,就是说如果要求四次就要ex要写5。二.用OpenGL的图形库设计长方体。 1.长方体的六个面对应六张不同的图像,可以通过键盘进行上下左右旋转。windows.h / Windows的头文件gl/glut.h / OpenGL32库的头文件stdio.hstdlib.h#pragma comment(lib, glaux.lib) / GLaux连接库glglaux.h / GLaux库的头文件static GLfloat xRot = 0.0f; /建立x轴的坐标static GLfloat yRot = 0.0f; /建立y轴的坐标GLuint texture6;

12、/纹理填充AUX_RGBImageRec *LoadBMP(char *FileName) /加载.bmp图像,返回该图像的指针 FILE *File = NULL; if(!FileName) return NULL; File = fopen(FileName,r); if (File) fclose(File); return auxDIBImageLoad(FileName);/载入.bmp格式的贴图纹理int LoadGLTextures() / 载入位图(调用上面的代码)并转换成纹理 int Status = FALSE; char *bmpFile6 = 1.bmp,2.bmp3

13、.bmp, /创建纹理的存储空间 4.bmp5.bmp6.bmp; AUX_RGBImageRec *TextureImage6 = NULL,NULL,NULL,NULL,NULL,NULL; for(int i = 0;i sizeX, TextureImagei-sizeY,0,GL_RGB,GL_UNSIGNED_BYTE, data); /指定纹理 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); /指定过滤模式 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FI

14、LTER,GL_LINEAR); if (TextureImagei) if (TextureImagei-data) free(TextureImagei- free(TextureImagei); return Status;void RenderScene(void) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST);LoadGLTextures(); glEnable(GL_TEXTURE_2D); LoadGLTextures(); /载入纹理贴图 glPushMatrix(); g

15、lRotatef(xRot, 1.0f, 0.0f, 0.0f); glRotatef(yRot, 0.0f, 1.0f, 0.0f); glBindTexture(GL_TEXTURE_2D,texture0); glBegin(GL_QUADS);/ glColor3f(1.0,0.0,0.0);/红色 glTexCoord2f(0.0f, 0.0f); glVertex3f( 10.0f, 10.0f,20.0f); /上面glTexCoord2f(1.0f, 0.0f); glVertex3f(-10.0f, 10.0f,20.0f); glTexCoord2f(1.0f, 1.0f)

16、;glVertex3f(-10.0f,-10.0f,20.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f( 10.0f,-10.0f,20.0f); glEnd(); glBindTexture(GL_TEXTURE_2D,texture1); glBegin(GL_POLYGON);/ glColor3f(0.0,1.0,0.0); /绿色 glVertex3f(10.0, 10.0,-10.0); /右面 glTexCoord2f(0.0f, 0.0f);glVertex3f(10.0, 10.0, 20.0); glVertex3f(10.0,-10.

17、0, 20.0); glVertex3f(10.0,-10.0,-10.0); glBindTexture(GL_TEXTURE_2D,texture2);/ glColor3f(0.0,0.0,1.0);/蓝色 glTexCoord2f(1.0f, 0.0f); glVertex3f( 10.0,-10.0,-10.0); /下面glVertex3f(-10.0,-10.0,-10.0); glVertex3f(-10.0, 10.0,-10.0); glTexCoord2f(0.0f, 0.0f); glVertex3f( 10.0, 10.0,-10.0); glBindTexture(

18、GL_TEXTURE_2D,texture3);/ glColor3f(1.0,1.0,0.0);/ 黄色 glVertex3f(-10.0, 10.0, 20.0); /左面 glVertex3f(-10.0,-10.0,-10.0); glVertex3f(-10.0,-10.0, 20.0); glBindTexture(GL_TEXTURE_2D,texture4); /glColor3f(0.0,1.0,1.0);glTexCoord2f(1.0f, 1.0f); glVertex3f( 10.0,10.0,-10.0); /后面 glVertex3f(-10.0,10.0,-10.

19、0);glVertex3f(-10.0,10.0, 20.0); glTexCoord2f(1.0f, 0.0f);glVertex3f( 10.0,10.0, 20.0); glBindTexture(GL_TEXTURE_2D,texture5);/ glColor3f(1.0,0.0,1.0); glVertex3f( 10.0,-10.0, 20.0); /前面glTexCoord2f(0.0f, 1.0f); glEnd(); glPopMatrix(); glutSwapBuffers();/*void SetupRC() /glClearColor(0.0f, 0.0f, 0.0

20、f, 1.0f ); glColor3f(0.0f, 1.0f, 0.0f); glShadeModel(GL_FLAT); /glFrontFace(GL_CW);*/void SpecialKeys(int key, int x, int y) /设置键盘控制 if(key = GLUT_KEY_UP) xRot-= 5.0f; if(key = GLUT_KEY_DOWN) xRot += 5.0f; if(key = GLUT_KEY_LEFT) yRot -= 5.0f; if(key = GLUT_KEY_RIGHT) yRot += 5.0f; if(key 356.0f) xR

21、ot = 0.0f; if(key -1.0f) xRot = 355.0f; yRot = 0.0f; yRot = 355.0f; glutPostRedisplay();void ChangeSize(int w, int h) GLfloat nRange = 25.0f; if(h = 0) h = 1; glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); /设置下面的操作矩阵为GL_MODELVIEW glLoadIdentity(); if (w = h) glOrtho (-nRange, nRange, -nRange*h/w, nRan

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1