计算方法实验指导书..docx

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算方法 实 验 指 导 书 彭彬 计算机技术实验中心 2012年3月 · 实验环境: VC++ 6.0 · 实验要求:在机房做实验只是对准备好的实验方案进行验证,因此上机前要检查实验准备情况,通过 检查后方可上机。没有认真准备的学生不能上机,本次实验没有分数。实验中要注意考察 和体会数值计算中出现的一些问题和现象:误差的估计 , 算法的稳定性、收敛性、收敛速度 以及迭代初值对收敛的影响等。 · 关于计算精度:如果没有特别说明,在计算的过程中,小数点后保留 5 位数字,最后四舍五入到小数 点后四位数字。迭代运算的结束条件统一为 1 10 5 。在 VC++ 6.0 中,可使用 2 setprecision 在流的输出中控制浮点数的显示(缺省显示 6 位)。演示如下: # includeiostream.h # includemath.h # includeiomanip.h // 输出 6 位精度,输出左对齐 coutsetprecision(6)setiosflags(ios::left); // 设置输出宽度为 12(不够将补充 0) coutsetw(12)coeff[i]; · 关于图形绘制 本课程个别实验要求画出函数的曲线,所有画图题目均要求用 MFC 完成。 利用 VC++6.0 的 MFC 画图,先要建立一个工程,然后在 ***View 中加入自定义变量、自定义函数等,最 后在 OnDraw ()方法中调用自定义函数。也可以把代码直接写入 OnDraw ()方法中。 画曲线有两种方法,(一)一句坐标逐个打点(用 SetPixel() 函数 ),(二)先把当前光标移动 MoveTo ()函数)到曲线的始点,再用 LineTo () 函数画线。线的样式由画笔决定。对封闭区域可以填充,填充的样式由画刷决定 。 在 VC++6.0 中 , 先新建一个 MFC AppWizard(exe) 类型的工程 ( 建立工程时,“ 应用程序类型 ”选择 “单文档”;“ 是否包含数据库 ”选择“不包含数据库”;其它选择缺省 ), 然后在“ ClassView ”中选择 XXView 类文件加以操作。图 1 是一个名为 test 的工程,在 CtestView 节点,点击右键,用户可以增加自定义变量,自定义函数。 第 1 页 图1 MFC工程 图 2 是一个自定义函数的例子,代码如下: void CTestView::drawOldLine(int N, CDC *pDC) //N —画线所用点的数目 { pDC-TextOut(250,10, 龙格现象 );// 文本输出 设置画笔,将影响画线的样式 CPen *pnewPen,*poldPen; pnewPen=new CPen(); pnewPen-CreatePen(PS_SOLID,10,RGB(0,0,0)); poldPen=pDC-SelectObject(pnewPen); 画坐标系 pDC-MoveTo(0,380); pDC-LineTo(640,380); pDC-MoveTo(320,0); pDC-LineTo(320,480); 画曲线 , 先移动到本曲线的第一个点 pDC-MoveTo(20,380); for(int i=0;i=N;i++){ // 原始坐标 float x0=-1+2.0/N*i;float y0=1.0/(1+4*x0*x0); 坐标放大 x0=x0*300;y0=-y0*300; 坐标转化为整型 int x1=(int)(320+x0);int y1=(int)(440+y0); pDC-LineTo(x1,y1); } 重置画笔 pDC-SelectObject(poldPen); } 第 2 页 图 2 自定义函数画函数 f (x ) 1 的图形 1 4 x2 图 3 是一个根据 Lagrange 插值多项式求函数值的自定义函数 Lagrange(float x, int n, float x1[], float y1[]) ,其中 n 是插值节点的个数,数组 X1,y1 存放插值节点的坐标, x 是待求点的 x 坐 标,函数根据插值多项式返回对应的 y 坐标。 float CTestView::Lagrange(float x, int n, float x1[], float y1[]) { float y=0;// 存放函数值 int k=0;// 控制变量 , 求 lagrange 基函数的值 for( k=0;kn;k++) { float t=1; for (int j=0;jn;j++) { if (j!=k) t=t*(x-x1[j])/(x1[k]-x1[j]); } y=y+t*y1

文档评论(0)

150****2023 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档