3.1用解析法解决问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

教学难点
(1) 解析式的导出或方程(组)的列出并求解。这些 工作要求对问题所涉及的领域有比较深的认识,它 的困难是外在的,是由问题的性质决定的。 (2) 算法的合理设计。不论是使用重复结构还是寻 找的运算顺序,对于经验不足的初学者是有困难的, 特别是计算过程中可能会遇到计算误差的积累影响 运行结果的情况,需要有较多的编程经验才能加以 解决。 (3) VB的数据类型。
(3)设计界面
设计测量高度问题程序的窗口
对象属性表
对象名 属性名 [ 名称 ] 标签 Caption 属性值 label1 Label2 Label3 Label4 基线长 a= 仰角 α= 仰角 β= 被测物体高度= Text1 textbox Text2 textbox Text3 textbox Text4 textbox 全部设置成空 command1 计算 功能 标签的名称
钻石图案
Private Sub Command1_Click() '定义常量π Const PI = 3.14159265
'以下定义变量 Dim i As Integer, j As Integer Dim sngX1 As Single, sngY1 As Single, sngX2 As Single, sngY2 As Single
1、用解析法求解问题的基本过程
测量高度问题的求解
问题: 如图所示,MN是竖直于地面的物体,其底部N不可到达。为了测量 MN的高度,在地面上选取一条与MN在同一平面的水平线线段AB为基 线,测得AB的长为a=20米,在A点向M点张望的仰角 A=38.40,在B 点向M点张望的仰角B=22.80。试设计程序计算高度MN。
设置标签显示的内容
文本框
Enabled text [ 名称 ]
文本框的名称 设置text的值 命令按钮的名称 设置命令按钮显示的内容
按钮
Caption
(4)编写代码
参考程序
Private Sub Command1_Click() a = Val(Text1.Text) Alpha = Val(Text2.Text) bata = Val(Text3.Text) pi = 3.14159265 COTA = 1 / Tan(Alpha * pi / 180) COTB = 1 / Tan(bata * pi / 180) MN = a / (COTB - COTA) Text4.Text = MN End Sub
(4)调试程序(运行源程序) (5)检验结果
探究:
在本问题里,如果输入的两个仰角相等,或 其中一个仰角是900,都会导致程序非正常 结束。如果,甚至会使输出的结果是负数! 请讨论一下使用者输入数据时比较常见的错 误会有哪些?我们在程序中可以怎样防范?
2、总结
解析法的基本概念 通过分析问题中各要素之间的关系,用最简 练的语言或形式化的符号来表达它们的关系, 得出解决问题所需的表达式,然后设计程序 求解问题的方法称为解析法。
'用sngAngle表示单位弧度 Dim sngAngle As Single '用sngRadius表示圆周半径 Dim sngRadius As Single '用intNodes表示顶点数 Dim intNodes As Integer
钻石图案
'设置屏幕坐标系,使其圆点位于窗体中心 frmDraw.Scale (-1.5, -1.5)-(1.5, 1.5) frmDraw.Cls '以下对变量进行初始化 '半径设为单位坐标 sngRadius = 1 intNodes = 15 sngAngle = 2 * PI / intNodes
第三章 算法的程序实现
3.1 用解析法解决问题
教学重点
(1) 理解解析法的基本概念。要培养学生善于 综合运用数学、物理、化学等各学科的知识和思考 方法,寻找问题中各要素之间的关系,导出解决问 题的解析式或列出相关的方程,然后设计程序求解。 (2) 根据算法写出程序代码并且调试程序求得 问题的正确解答的能力。当算法确定之后,应当能 够熟练地根据算法写出程序代码,并且通过调试程 序发现并改正错误,得出正确的解答。 (3) 根据问题的特点,找到系统提供的资源(如 各种数据类型、内部函数等等),简化问题的求解 过程。
(2)设计算法
① 设计输入输出界面,从三个文本框中输入基线 长 a ,仰角A0用Alpha代替、B0用Bata代替 ② 计算tan A0的倒数(用COTA表示), 即 COTA=1/tan(A0*3.14159/180); ③ 计算tan B0的倒数(用COTB表示), 即 COTB=1/tan(B0*3.14159/180); ④ 计算a/(COTB-COTA); ⑤ 输出结果
钻石图案
'画出每个顶点到其它顶点间的线段 For i = 1 To intNodes sngX1 = sngRadius * Cos(i * sngAnቤተ መጻሕፍቲ ባይዱle) sngY1 = sngRadius * Sin(i * sngAngle)
For j = 1 To intNodes '如果i=j表示是同一个顶点 If i <> j Then sngX2 = sngRadius * Cos(j * sngAngle) sngY2 = sngRadius * Sin(j * sngAngle) frmDraw.Line (sngX1, sngY1)-(sngX2, sngY2), vbBlue End If Next j Next i End Sub
(1)分析问题 我们不可能直接求出物体的高度。 但我们可以利用所学的知识(三角函数)来完成该工作。
在直角三角形ANM中可以得到: tanA0=MN/AN 即:AN=MN/ tan A0
在直角三角形BNM中可以得到: tan B0=MN/BN 即:BN=MN/ tan B0 所以: AB=BN-AN =MN/tan B0-MN/tan A0 =MN(1/ tan B0-1/tan A0 )
相关文档
最新文档