计算机辅助建筑设计-方程求解(ppt 61页).ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《计算机辅助建筑设计-方程求解(ppt 61页).ppt》由用户(欢乐马)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机辅助建筑设计-方程求解ppt 61页 计算机辅助 建筑设计 方程 求解 ppt 61
- 资源描述:
-
1、高次方程求解,1、 通用函数的程序编写,问题:如何求一个函数的解,而函数是可以随时替换的。 例如: F(x)=x3+4x2+5 F(x)=ex-5,实现步骤:,1在窗体上加一个Scriptcontrol控件 2 在工程中添加一个类模块class1. 类模块中的代码: Public K1 As Double,1、 通用函数的程序编写,Private Function Hanshu(X As Double, Str1 As String) As Double On Error Resume Next Dim shar As New Class1 ScriptControl1.AddObject “
2、sh“, shar ScriptControl1.AddCode “Function F(x)“ & vbCrLf & “kk=“ & Str1 & vbCrLf & “sh.k1 = kk “ & vbCrLf & “End Function“ ScriptControl1.Run “F“, X Hanshu = shar.K1 ScriptControl1.Reset End Function,1、 通用函数的程序编写,作业1: 试设计一个工程,可以计算函数的值。 2 分别输出x1,2,310函数的值。 3 测试替换了函数表达式后,你编写的程序是否有效。,1、 通用函数的程序编写,课题2
3、:高次方程求解:,在解决科学研究和工程领域中的实际问题时,往往涉及到高次方程。高次方程解的个数和方程的次数相对应,即使只在实数范围内考虑,大多也有几个解。但是,对于从解决土木工程问题归纳得到的高次方程,其有意义的解大多仅有一个,并且是正数解。,2.1 高次方程求解原理,计算机解高次方程的基本过程大致如下: 以x2-2=0为例,令y=x2-2 其函数图像如图。y=0时的x值(x=土20.5)即为原方程的解。在x =20.5附近y值由负变正。由于函数是连续的,所以必定存在y=0对应的点,该点即为原方程的一个解。其他方程也是如此,如果知道了一个解的区间,就可以通过代人不同的x值观察y的变化,从而逐次
4、逼近该解。,高次方程求解常用方法,高次方程的常用解法有扫描法、对分法、优选法、迭代法、牛顿法等。,2.2 扫描法求解方程的根,扫描法的主要过程是: 1.寻找方程解所在的区域a,b。由初始点a出发,根据步长h逐次迭代找到b点,使f (a ) X (b) = 0 ,前一点即为a,f(a)与f(b)的值为一正一负。由于从实际土木问题中提炼出的函数f(x)在a,b连续,所以在a,b内必有一解x0,使f(x0)=0。该过程也可固定a点不变,单纯扩大区域找b点.,2.2 扫描法求解方程的根,2.缩小解所在的区域a,b。十等分a,b,逐点求f(xi)值,直至相邻两点的值符号相反,这两点即为新的区域a,b。
5、3.重复上述过程直至收敛,达到一定精度为止。,2.2 扫描法求解方程的根,注意,求实际土木工程问题的解时,起始点a应取足够小(小于解)或干脆取a =0。由于其有意义的解是一个正数解,搜索方向只要向正向进行,甚至根据实际情况,直接选取适当区域a,b,然后从步骤2开始求解。而一般的高次方程则要复杂些,解不一定比a值大,因此解的区域也可能在初始点的另一边,搜索方向需先判别。,2.2 扫描法求解方程的根,扫描法程序流程图见图2-2,图中h为步长,e为要求的精度。 扫描法程序中,因为要判断的是两函数的符号,而不是它们的大小,利用符号函数可使计算量减少,即用msgn(f(a),n=sgn(f(b)替代原来
6、的计算更合理。,扫描法求方程根的流程图,2.2 扫描法求解方程的根,用扫描法求方程x2-2=0的正数解,其计算结果见表2-1,2.2 扫描法求解方程的根,由计算结果知,方程x2-2=0的一个解在1. 414至1. 415之间,只要进一步缩小步长.重复上述过程,可获得更高精度。,2.2 扫描法求解方程的根,Dim M%, N%, i As Double Dim A#, B#, H#, E#, X#, Str2$ Dim Str1$ i = 1 Str1 = “计算次数 a= b= mn “ & vbCrLf A = Val(Text2)初始值 H = Val(Text3)求解步长 E = Val
7、(Text4)求解精度 Str2 = Text1.Text函数表达式 M = Sgn(Hanshu(A, Str2),2.2 扫描法求解方程的根,Do B = A + H N = Sgn(Hanshu(B, Str2) Str1 = Str1 & i & Space(3) & A & Space(3) & B & Space(3) & M * N & vbCrLf If M * N 0 Then A = B M = N i = i + 1 ElseIf M = 0 Then X = A Exit Do ElseIf N = 0 Then X = B Exit Do,ElseIf H 5000
8、Then GoTo err1: End If Loop Until H = E,2.2 扫描法求解方程的根,Text5 = “方程的解为:x=“ & X & vbCrLf & Str1 Exit Sub err1: MsgBox “找不到方程的根,计算次数已经超过了5000次,请确认输入的函数是否正确 ”, vbInformation, “找不到方程的根“,2.2 扫描法求解方程的根,2.2 作业2:,根据以上的基本步骤与程序流程图: (1)编写扫描法求解高次方程的根 (2)程序能够通用化,即扫描法要用过程或函数来完成,供VB调用。 (3)高次方程可以任意改变。,2.3 对分法求解,对分法 扫
9、描法运算量大,为减少工作量可用对分法或优选法,其基本思想和扫描法相同,即逐次缩小解的区域范围。,2.3 对分法优选法求解,实际操作时,初始区域可取足够大,使解被包含在内,这在解与实际化学问题相关的方程时很容易确定。在缩小区域a,b时则有所不同:在a,b取中点c。 (即对分点),求f(c)值。并与f(a)或f(b)比较,舍弃符号相同的点,保留符号相反的点在新的区域内重复上述过程,直至达到要求的精度。 用对分法求一元高次方程解的程序流程图见图2-3,2.3.1 对分法,2.3.2对分法流程图,2.3 对分法优选法求解,2.3 对分法优选法求解,2.3.3 示例,2.3.4 对分法关键程序,Priv
10、ate Sub Erfenfa(Str1 As String, A As Double, B As Double, Eps As Double) Dim Fx As Double, Fa As Double, Fb As Double, X As Double, i As Integer Dim Strtmp As String Fa = Hanshu(A, Str1): Fb = Hanshu(B, Str1) If Fa * Fb 0 Then Text4 = “方程根不在你规定的区间“ Exit Sub End If,If (Fa = 0 Or Fb = 0) Then 如果Fa,Fb0
11、,则就是方程的根 If (Fa = 0) Then X = A GoTo 20 Else X = B GoTo 20结束程序 End If End If,2.3 对分法优选法求解,Strtmp = “计算次数I= A= B= 中点X= 函数值“ & vbCrLf i = 1 Do Until Abs(A - B) = Eps X = (A + B) / 2 If Abs(Hanshu(X, Str1) = 0 Then GoTo 20 如果Hanshu(X, Str1)=0,说明此时的x已经是方程的解 If Hanshu(X, Str1) * Hanshu(A, Str1) 0 Then B
展开阅读全文