您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 计算机支挡建筑设计方程求解
计算机辅助支挡建筑设计高次方程求解计算机辅助支挡建筑设计1、通用函数的程序编写问题:如何求一个函数的解,而函数是可以随时替换的。例如:F(x)=x3+4x2+5F(x)=ex-5计算机辅助支挡建筑设计实现步骤:1在窗体上加一个Scriptcontrol控件2在工程中添加一个类模块class1.类模块中的代码:PublicK1AsDouble1、通用函数的程序编写计算机辅助支挡建筑设计PrivateFunctionHanshu(XAsDouble,Str1AsString)AsDoubleOnErrorResumeNextDimsharAsNewClass1ScriptControl1.AddObjectsh,sharScriptControl1.AddCodeFunctionF(x)&vbCrLf&kk=&Str1&vbCrLf&sh.k1=kk&vbCrLf&EndFunctionScriptControl1.Run“F,XHanshu=shar.K1ScriptControl1.ResetEndFunction1、通用函数的程序编写计算机辅助支挡建筑设计作业1:试设计一个工程,可以计算函数的值。2分别输出x=1,2,3……10函数的值。3测试替换了函数表达式后,你编写的程序是否有效。1、通用函数的程序编写计算机辅助支挡建筑设计课题2:高次方程求解:在解决科学研究和工程领域中的实际问题时,往往涉及到高次方程。高次方程解的个数和方程的次数相对应,即使只在实数范围内考虑,大多也有几个解。但是,对于从解决土木工程问题归纳得到的高次方程,其有意义的解大多仅有一个,并且是正数解。计算机辅助支挡建筑设计2.1高次方程求解原理计算机解高次方程的基本过程大致如下:以x2-2=0为例,令y=x2-2其函数图像如图。y=0时的x值(x=土20.5)即为原方程的解。在x=20.5附近y值由负变正。由于函数是连续的,所以必定存在y=0对应的点,该点即为原方程的一个解。其他方程也是如此,如果知道了一个解的区间,就可以通过代人不同的x值观察y的变化,从而逐次逼近该解。计算机辅助支挡建筑设计高次方程求解常用方法高次方程的常用解法有扫描法、对分法、优选法、迭代法、牛顿法等。计算机辅助支挡建筑设计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]。3.重复上述过程直至收敛,达到一定精度为止。计算机辅助支挡建筑设计2.2扫描法求解方程的根注意,求实际土木工程问题的解时,起始点a应取足够小(小于解)或干脆取a=0。由于其有意义的解是一个正数解,搜索方向只要向正向进行,甚至根据实际情况,直接选取适当区域[a,b],然后从步骤2开始求解。而一般的高次方程则要复杂些,解不一定比a值大,因此解的区域也可能在初始点的另一边,搜索方向需先判别。计算机辅助支挡建筑设计2.2扫描法求解方程的根扫描法程序流程图见图2-2,图中h为步长,e为要求的精度。扫描法程序中,因为要判断的是两函数的符号,而不是它们的大小,利用符号函数可使计算量减少,即用m=sgn(f(a)),n=sgn(f(b))替代原来的计算更合理。计算机辅助支挡建筑设计扫描法求方程根的流程图2.2扫描法求解方程的根计算机辅助支挡建筑设计用扫描法求方程x2-2=0的正数解,其计算结果见表2-12.2扫描法求解方程的根计算机辅助支挡建筑设计由计算结果知,方程x2-2=0的一个解在1.414至1.415之间,只要进一步缩小步长.重复上述过程,可获得更高精度。2.2扫描法求解方程的根计算机辅助支挡建筑设计DimM%,N%,iAsDoubleDimA#,B#,H#,E#,X#,Str2$DimStr1$i=1Str1=“计算次数a=b=m×n=&vbCrLfA=Val(Text2)’初始值H=Val(Text3)’求解步长E=Val(Text4)’求解精度Str2=Text1.Text’函数表达式M=Sgn(Hanshu(A,Str2))2.2扫描法求解方程的根计算机辅助支挡建筑设计DoB=A+HN=Sgn(Hanshu(B,Str2))Str1=Str1&i&Space(3)&A&Space(3)&B&Space(3)&M*N&vbCrLfIfM*N0ThenA=BM=Ni=i+1ElseIfM=0ThenX=AExitDoElseIfN=0ThenX=BExitDoElseIfH=EThenX=BExitDoElseH=0.1*HEndIfIfi5000ThenGoToerr1:EndIfLoop'UntilH=E2.2扫描法求解方程的根计算机辅助支挡建筑设计Text5=“方程的解为:x=&X&vbCrLf&Str1ExitSuberr1:MsgBox“找不到方程的根,计算次数已经超过了5000次,请确认输入的函数是否正确”,vbInformation,“找不到方程的根2.2扫描法求解方程的根计算机辅助支挡建筑设计2.2作业2:根据以上的基本步骤与程序流程图:(1)编写扫描法求解高次方程的根(2)程序能够通用化,即扫描法要用过程或函数来完成,供VB调用。(3)高次方程可以任意改变。计算机辅助支挡建筑设计2.3对分法求解对分法扫描法运算量大,为减少工作量可用对分法或优选法,其基本思想和扫描法相同,即逐次缩小解的区域范围。计算机辅助支挡建筑设计2.3对分法优选法求解实际操作时,初始区域可取足够大,使解被包含在内,这在解与实际化学问题相关的方程时很容易确定。在缩小区域[a,b]时则有所不同:在「a,b]取中点c。(即对分点),求f(c)值。并与f(a)或f(b))比较,舍弃符号相同的点,保留符号相反的点在新的区域内重复上述过程,直至达到要求的精度。用对分法求一元高次方程解的程序流程图见图2-32.3.1对分法计算机辅助支挡建筑设计2.3.2对分法流程图2.3对分法优选法求解计算机辅助支挡建筑设计2.3对分法优选法求解2.3.3示例计算机辅助支挡建筑设计2.3.4对分法关键程序PrivateSubErfenfa(Str1AsString,AAsDouble,BAsDouble,EpsAsDouble)DimFxAsDouble,FaAsDouble,FbAsDouble,XAsDouble,iAsIntegerDimStrtmpAsStringFa=Hanshu(A,Str1):Fb=Hanshu(B,Str1)IfFa*Fb0ThenText4=“方程根不在你规定的区间ExitSubEndIfIf(Fa=0OrFb=0)Then‘如果Fa,Fb=0,则就是方程的根If(Fa=0)ThenX=AGoTo20ElseX=BGoTo20‘结束程序EndIfEndIf2.3对分法优选法求解计算机辅助支挡建筑设计Strtmp=“计算次数I=A=B=中点X=函数值&vbCrLfi=1DoUntilAbs(A-B)=EpsX=(A+B)/2IfAbs(Hanshu(X,Str1))=0ThenGoTo20‘如果’Hanshu(X,Str1)=0,说明此时的x已经是方程的解IfHanshu(X,Str1)*Hanshu(A,Str1)0ThenB=(A+B)/2ElseIfHanshu(X,Str1)*Hanshu(B,Str1)0ThenA=(A+B)/2EndIfStrtmp=Strtmp&i&Space(3)&A&Space(3)&B&Space(3)&(A+B)/2&Space(3)&Hanshu(X,Str1)&vbCrLfi=i+1Ifi5000ThenText4=“达不到你所要求的精度,已经累加计算了5000次ExitDoEndIfLoop2.3.4对分法关键程序2.3对分法优选法求解计算机辅助支挡建筑设计2.3.5程序界面2.3对分法优选法求解计算机辅助支挡建筑设计2.3.6作业3:本节已经给出了对分的调用程序,请编写程序界面,完成输入和输出。要求求解时,列出每次求解时的中间过程。2.3对分法优选法求解计算机辅助支挡建筑设计2.4优选法优选法又叫0.618法,与对分法流程基本相同,但每次插人点。不是区域的中点,而是在区域的0.618处,即c=a+0.618(b-a)或c=b-0.618(b-a),一般收敛速率更快。用对分法求解方程x2-2=0时的计算结果见表2-2计算机辅助支挡建筑设计2.4.1优选法计算表2.4优选法计算机辅助支挡建筑设计2.4.2作业按照对分法求解方法,编写优化法求解方程根的程序,要求:每一个循环中间步骤要输出。2.4优选法计算机辅助支挡建筑设计2.5迭代法高次方程也可利用迭代方法求解。把原方程f(x)=0。进行适当变换,建立迭代方程xi+1=G(x)依次迭代,直至收敛。例2-1求方程x3-x-1=0在x=1.5附近的根。方程由f(x)=0形式改写成迭代方程:311iixx计算机辅助支挡建筑设计以1.5作x的初值x0,代入上式求出x1=1.3572,再以x1代入,进一步求出x2…..,直到计算结果见下表(ε=0.00001)iiixxx12.5迭代法(原理)计算机辅助支挡建筑设计2.5迭代法(原理)计算机辅助支挡建筑设计2.5.1注意事项迭代法的关键在于选定合适的迭代方程,要求迭代方程收敛,否则,因发散而得不到方程的解。如上例,若用x=x3-1为迭代方程,同样取x0=1.5,则x1=2.375,x2=12.3965..…显然xk的值越来越大,即迭代方程发散,正因为迭代法有此缺陷而限制了它的使用。确定迭代方程是否收敛,可以用|G'(x)|1进行判别,当x满足此式时一般收敛,否则发散。计算机辅助支挡建筑设计2.6牛顿法牛顿法又称弦切法,也是迭代法的一种。求f(x)=0的解,即求曲线f(x)与横坐标的交点a(如图2-5所示),在a点附近x0处的斜率0100)(0)('xxxfxydxdyxf所以)(')(0001xfxfxx)(')(111iiiixfxfxx所以迭代方程为:计算机辅助支挡建筑设计2.6牛顿法结束条件:直到f(xi)=0,即xi+1=xi或|xi+1-xi|ε为止。计算机辅助支挡建筑设计2.6.1牛顿法举例思考题1:用牛顿迭代法求解x2-25=0的正数解。自己用笔先计算。计算机辅助支挡建筑设计2.6.1牛顿法举例牛顿迭代收敛快,尤其是土木方程,总有一实数解,且知道解的基本范围,故使用很方便。计算机辅助支挡建筑设计2.6.3牛顿迭代法的近似解法有时,f'(x)的表达式很复杂或无法求时怎么办呢?计算机辅助支挡建筑设计2.6.3牛顿迭代法的近似解法可用数值近似法替代:式中,δ为远小于xi的一个小数。)()()('iiixfxfxf计算机辅助支挡建筑设计本节上机作业4.写出用0.618法求解一元三次方程的程序框图。按流程求出方程2x3+3x2-17x-30=0在[1,10]区域的解,精度为0.01.5,用迭代法解方程f(x)=x-sinx-0.5=0。精度0.0016.用牛顿近似迭代法求x2+10cosx=0的根要求能够输出每一步计算的结果。计算机辅助支挡建筑设计本节上机作
本文标题:计算机支挡建筑设计方程求解
链接地址:https://www.777doc.com/doc-211189 .html