数值计算编程20个_第1页
数值计算编程20个_第2页
数值计算编程20个_第3页
数值计算编程20个_第4页
数值计算编程20个_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、P11,第一题Private Sub Form_Click()Dim a, b, x, s As Doublea = 1b = 2s = 0.001Dox = (a + b) / 2If (x 3 - x - 1) * (a 3 - a - 1) 0 Thenb = xElsea = xEnd IfLoop Until Abs(x 3 - x - 1) sPrint xPrint x 3 - x - 1End Sub结果:1.324707031252、P12,第五题Private Sub Form_Click()Dim a, x, s As Doublea = 8s = 0.001x =

2、aDop = xx = (p + a / p) / 2Loop Until Abs(x - p) sPrint xEnd Sub结果:2.828427125049863、程序:Private Sub Form_Click()Dim i As IntegerDim t, a(0 To 3), p As Doublet = 2For i = 0 To 3a(i) = InputBox(x( & i & )=)Next ip = a(3)For i = 2 To 0 Step -1p = p * t + a(i)Next iPrint pEnd Sub结果:494、程序:Private Sub Fo

3、rm_Click()Dim a, b, s As Doublea = 0.2b = 1.34s = (a + b) / 2DoIf a * (1 - a) * s * (1 - s) 0 Thenb = sElsea = sEnd Ifs = (a + b) / 2Loop Until b - a 0.01Print sEnd Sub结果:0.9971093755、程序:Private Sub Form_click()Dim x, s, p As DoubleDim i As Integerx = 101s = 10p = 1 / 2 / 10i = 1Dos = s + pp = p / 2

4、 * (-1) / 100 * (2 * i - 1)i = i + 1Loop Until p 0.01Print sEnd Sub结果:10.056、拉格朗日:Private Sub Form_Click()Dim i, j, n As IntegerDim x(1 To 100), y(1 To 100), p, s, t As Doublet = 2.5n = 3For i = 1 To nx(i) = InputBox(x( & i & )=)y(i) = InputBox(y( & i & )=)Next is = 0For i = 1 To np = 1For j = 1 To

5、nIf i j Thenp = p * (t - x(j) / (x(i) - x(j)End IfNext js = s + p * y(i)Next iPrint sEnd Sub结果:67、课堂埃尔米特插值程序:Private Sub Form_Activate()Dim x0, y0, x1, y1, g0, g1 As Doublex0 = 0y0 = 0x1 = 1y1 = 1g0 = 0g1 = 2x = 0.5a0 = -2 / (x0 - x1) 3b0 = 1 / (x0 - x1) 2 + 2 * x0 / (x0 - x1) 3a1 = -2 / (x1 - x0) 3

6、b1 = 2 * x1 / (x1 - x0) 3 + 1 / (x1 - x0) 2k0 = 1 / (x0 - x1) 2k1 = 1 / (x1 - x0) 2l0 = (x - x1) 2 * (a0 * x + b0)l1 = (x - x0) 2 * (a1 * x + b1)gg0 = k0 * (x - x0) * (x - x1) 2gg1 = k1 * (x - x0) 2 * (x - x1)y = l0 * y0 + l1 * y1 + gg0 * g0 + gg1 * g1Print yEnd Sub结果:0.258、第一个:样条函数:Private Sub Form

7、_Activate()Dim x(3), y(3), m0, m1, m2 As DoubleDim i As IntegerFor i = 0 To 2x(i) = iy(i) = i * iNext im0 = 0m2 = 4h0 = x(1) - x(0)h1 = x(2) - x(1)a = 2 / h0b = 4 / h0 + 4 / h1c = 2 / h1d = (-6 * y(1) + 6 * y(2) / h1 2 - (6 * y(0) - 6 * y(1) / h0 2m1 = (d - a * m0 - c * m2) / bPrint m1End Sub结果:29、牛

8、顿插值:Dim k As IntegerPrivate Sub Combo1_Click()Dim i As Integerk = CInt(Combo1.Text)For i = 0 To 9Text1(2 * i).Visible = FalseText1(2 * i + 1).Visible = FalseLabel(i).Visible = FalseNext iFor i = 0 To k - 1With Label(i).Visible = True.Top = 1560 + 400 * i.Caption = 第 & i + 1 & 点:.Left = 120End WithWi

9、th Text1(2 * i).Visible = True.Left = 800.Top = 1500 + 400 * iEnd WithWith Text1(2 * i + 1).Visible = True.Left = 1500.Top = 1500 + 400 * iEnd WithNext iEnd SubPrivate Sub Command1_Click()Dim i As IntegerDim s As Doubles = 0For i = 0 To k - 1s = s + ff(i) * f1(Text3.Text, i)Next iText2.Text = sEnd S

10、ubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Load()Dim i As IntegerFor i = 2 To 10Combo1.AddItem iNext iEnd SubFunction ff(ByVal n As Integer)Dim i As IntegerDim s As Doubles = 0If n = 0 Thenff = Text1(1).TextExit FunctionEnd IfFor i = 0 To ns = s + Text1(2 * i + 1).Text / f(i, n)Next if

11、f = sEnd FunctionFunction f(ByVal p As Integer, ByVal n As Integer)Dim i As IntegerDim s As Doubles = 1For i = 0 To nIf i p Thens = s * (Text1(2 * p).Text - Text1(2 * i).Text)End IfNext if = sEnd FunctionFunction f1(ByVal x As Double, ByVal n As Integer)Dim i As IntegerDim s As DoubleIf n = 0 Thenf1

12、 = 1Exit FunctionEnd Ifs = 1For i = 0 To n - 1s = s * (x - Text1(2 * i).Text)Next if1 = sEnd Function结果:带入(1,1),(2,4),(3,7),(4,8),(5,6)得到变量为3.5时,插值结果为7.835937510、复化辛普生算法:Private Sub Command1_Click()Dim i, n As IntegerDim s, h, x As Doublea = InputBox(请输入左端点a:)b = InputBox(请输入右端点b:)n = InputBox(请输入分段

13、数n:)h = (b - a) / ns = f(b) - f(a)x = aFor i = 1 To nx = x + h / 2s = s + 4 * f(x)x = x + h / 2s = s + 2 * f(x)Next is = h / 6 * sText1.Text = sEnd SubFunction f(ByVal x As Double)If x = 0 Thenf = 1Exit FunctionEnd Iff = Sin(x) / xEnd Function结果:当输入区间为(0,1),分8段,运行结果是0.93947770975194311、p153 第6题Priva

14、te Sub Form_Load()Dim s, t, e As DoubleDim i, k As Integert = 0k = 0s = (t + 2) 0.5e = 0.001For i = 0 To 20If Abs(s - t) e Thenk = 1Exit ForEnd Ift = ss = (t + 2) 0.5Next iText1.Text = sEnd Sub结果:1.9998494036782912、p154 第18题Dim a As DoublePrivate Sub Form_Load()Dim x0, x, e As DoubleDim i As Integer

15、x = 5e = 0.000001a = InputBox(a=)For i = 0 To 20x0 = xText1.Text = Text1.Text & vbCrLf & f1(x0)If f1(x0) = 0 ThenExit ForEnd Ifx = x0 - f(x0) / f1(x0)If Abs(x - x0) e ThenExit ForEnd IfNext iIf i = 20 ThenMsgBox 迭代失败!EndEnd IfText1.Text = xEnd SubFunction f(ByVal x As Double)f = x 3 - aEnd FunctionF

16、unction f1(ByVal x As Double)f1 = 3 * x 2End Function结果:2.1544346900318813、p155 第24题牛顿法Private Sub Form_Load()Dim x0, e As DoubleDim i As Integerx0 = 0e = 0.000001n = 20If f1(x0) = 0 ThenMsgBox 奇异EndEnd IfFor i = o To 20x0 = xIf f1(x) = 0 ThenMsgBox 奇异EndEnd Ifx = x0 - f(x0) / f1(x0)If Abs(x - x0) e

17、 ThenExit ForEnd IfNext iIf i = 20 ThenMsgBox 迭代失败!EndEnd IfText1.Text = xEnd SubFunction f(ByVal x As Double)f = x 3 + 2 * x 2 + 10 * x - 20End FunctionFunction f1(ByVal x As Double)f1 = 3 * x 2 + 4 * x + 10End Function结果:1.3688081078213714、p155 第24题弦截法Private Sub Form_Load()Dim x0, x1, e As Double

18、Dim i As Integerx0 = 0e = 0.000001n = 20If f1(x0) = 0 ThenMsgBox 奇异EndEnd Ifx1 = x0 - f(x0) / f1(x0)For i = o To 20x = x1 - f(x1) / (f(x1) - f(x0) * (x1 - x0)If Abs(x - x1) e ThenExit ForEnd Ifx1 = xNext iIf i = 20 ThenMsgBox 迭代失败!EndEnd IfText1.Text = xEnd SubFunction f(ByVal x As Double)f = x 3 +

19、2 * x 2 + 10 * x - 20End FunctionFunction f1(ByVal x As Double)f1 = 3 * x 2 + 4 * x + 10End Function结果:1.3688083714056215、p155 第24题快速弦截法Private Sub Form_Load()Dim x0, x1, e As DoubleDim i As Integerx0 = 0e = 0.000001n = 20If f1(x0) = 0 ThenMsgBox 奇异EndEnd Ifx1 = x0 - f(x0) / f1(x0)For i = o To 20x0

20、= x1x1 = xx = x1 - f(x1) / (f(x1) - f(x0) * (x1 - x0)If Abs(x - x1) e ThenExit ForEnd IfNext iIf i = 20 ThenMsgBox 迭代失败!EndEnd IfText1.Text = xEnd SubFunction f(ByVal x As Double)f = x 3 + 2 * x 2 + 10 * x - 20End FunctionFunction f1(ByVal x As Double)f1 = 3 * x 2 + 4 * x + 10End Function结果:1.368808

21、1077549616、消去法Dim n As IntegerDim a(1 To 10, 1 To 10), b(1 To 10), x(1 To 10) As DoublePrivate Sub Combo1_Click()Dim i, j As IntegerFor i = 1 To 100Text1(i).Visible = FalseNext iFor i = 1 To 10Text2(i).Visible = FalseText3(i).Visible = FalseNext in = Combo1.TextFor i = 1 To nFor j = 1 To nWith Text1

22、(i - 1) * n + j).Visible = True.Top = 500 * i + 200.Left = 500 * j.Height = 300End WithNext jWith Text2(i).Visible = True.Top = 500 * i + 200.Left = 500 * n + 800.Height = 300End WithWith Text3(i).Visible = True.Top = 500 * i + 200.Left = 500 * n + 1800.Width = 700.Height = 300End WithNext iEnd SubP

23、rivate Sub Command1_Click()Dim i, j, k As IntegerDim s, r As DoubleFor i = 1 To nFor j = 1 To na(i, j) = Text1(i - 1) * n + j).TextNext jb(i) = Text2(i).TextNext iFor i = 1 To n - 1For j = i + 1 To nr = a(j, i) / a(i, i)For k = i To na(j, k) = a(j, k) - r * a(i, k)Next kb(j) = b(j) - r * b(i)Next jN

24、ext iFor i = n To 1 Step -1s = b(i)If i n ThenFor j = i To ns = s - a(i, j) * x(j)Next jEnd Ifx(i) = s / a(i, i)Text3(i).Text = x(i)Next iEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Load()Dim i As IntegerFor i = 2 To 10Combo1.AddItem iNext iEnd Sub结果:选择求解未知数个数为3,再依次输入A=2,-1,3;4,2,5

25、;1,2,0;B=1,4,7;得到x=9,-1,-617、 追赶法Private Sub Command1_Click()Dim i, j, k As IntegerDim aa(1 To 4), bb(1 To 4), cc(1 To 4), dd(1 To 4), xx(1 To 4), g(1 To 4), f(1 To 4) As DoubleDim s, r As DoubleFor i = 1 To 4If i = 1 Thenaa(i) = 0Elseaa(i) = a(i).TextEnd Ifbb(i) = b(i).TextIf i = 4 Thencc(i) = 0Els

26、ecc(i) = c(i).TextEnd Ifdd(i) = d(i).TextNext ig(1) = dd(1) / bb(1)f(1) = -cc(1) / bb(1)For i = 2 To 4g(i) = (dd(i) - aa(i) * g(i - 1) / (aa(i) * f(i - 1) + bb(i)f(i) = -cc(i) / (aa(i) * f(i - 1) + bb(i)Next ixx(4) = g(4)x(4).Text = xx(4)For i = 3 To 1 Step -1xx(i) = g(i) + f(i) * xx(i + 1)x(i).Text

27、 = xx(i)Next iEnd SubPrivate Sub Command2_Click()EndEnd Sub结果:依次输入方程组系数A=1,1;1,2,1;1,2,3;1,2;,B=3,8,20,11得到结果为X=1,2,3,4;18、高斯-赛德尔程序如下:Private Sub Command1_Click()Dim i, j As IntegerDim k, t(1 To 3), s, a(1 To 3, 1 To 3), b(1 To 3), x(1 To 3) As DoubleFor i = 1 To 3For j = 1 To 3a(i, j) = Text1(i * 3

28、 + j - 3).TextNext jb(i) = Text2(i).Textx(i) = 0Next ik = 1Do Until k 0.0001For i = 1 To 3s = b(i)For j = 1 To 3If j i ThenText4.Text = ss = s - a(i, j) * x(j)Text5.Text = sEnd IfNext jt(i) = s / a(i, i)If i = 1 Thenk = Abs(t(i) - x(i)ElseIf Abs(t(i) - x(i) k Thenk = Abs(t(i) - x(i)End Ifx(i) = t(i)

29、Next iLoopFor i = 1 To 3Text3(i).Text = x(i)Next iEnd Sub运行结果:输入系数A=7,5,-3;5,7,1;2,1,7; B=2,4,-11得到X=-1.727,2.000,-1.36319、迭代法程序如下:Private Sub Command1_Click()Dim i, j As IntegerDim k, t(1 To 3), s, a(1 To 3, 1 To 3), b(1 To 3), x(1 To 3) As DoubleFor i = 1 To 3For j = 1 To 3a(i, j) = Text1(i * 3 + j - 3).TextNext jb(i) = Text2(i).Textx(i) = 0Next ik = 1Do Until k 0.0001For i = 1 To 3s = b(i)F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论