1、数值计算方法大作业第一章非线性方程求根 31.1迭代法 31.2牛顿法 41.3弦截法 51.4二分法 6第二章插值 72.1线性插值 72.2二次插值 82.3拉格朗日插值 92.4分段线性插值 102.5分段二次插值 11第三章数值积分 133.1复化矩形积分法 133.2复化梯形积分法 143.3辛普森积分法 153.4变步长梯形积分法 16第四章 线性方程组数值法 174.1约当消去法 174.2高斯消去法 184.3三角分解法 204.4雅可比迭代法 214.5高斯一赛德尔迭代法 23第五章常积分方程数值法 255.1显示欧拉公式法 255.2欧拉公式预测校正法 265.3改进欧拉公
2、式法 275.4四阶龙格一库塔法 28数值计算方法第一章非线性方程求根1.1迭代法程序代码:Private Sub Comma nd1_Click()x0 = Val(InputBox(请输入初始值 x0)ep = Val(InputBox(请输入误差限 ep)f = 0While f = 0X1 = (Exp(2 * x0) - x0) / 5If Abs(X1 - x0) I薄斗 H 達 XQ) ep H va-(-npu65ox(i5f!imep)70whi_e f H 0XI H xoxo 2 1 b)二2 * b) -f Abs(x_k xo) A el ThenPrinfXIf丄E
3、_seX0HX1End _fWendEnd Subs-说劎3血。(epHlo)1.3弦截法程序代码:Private Sub Comma nd1_Click()x0 = Val(InputBox(请输入第一个初始值 x0)X1 = Val(InputBox(请输入第二个初始值x1)ep = Val(InputBox(请输入误差限 ep) f = 0While f = 0X2 = X1 - (X1 A 8 - 13) * (X1 - x0) / (X1 A 8 - 13) - (x0 A 8 - 13)If Abs(X2 - X1) 0 The na = xElseb = xEnd IfIf Ab
4、s(b - a) ep The nx = (b + a) / 2f = 1Print方程的根是,xEnd IfEnd IfWendEnd Sub-10 (ep=10 )例:求方程f (x)=e-7/x(9-2x)-8在区间0,1内的实根。戸 FormlJitnplqt匕j.方程的根是.31555613OS24961三莊ii 1i ck第二章插值2.1线性插值程序代码:Private Sub Comma nd1_Click()X0 = Val(InputBox(请输入第一个结点 X:)Y0 = Val(InputBox(请输入第一个结点 丫:)X1 = Val(InputBox(请输入第二个结点
5、 X:)Y1 = Val(InputBox(请输入第二个结点 丫:)f = 0While f = 0x = Val(I nputBox(请输入未知点的自变量值 X:)L0 = (x - X1) / (X0 - X1)L1 = (x - X0) / (X1 - X0)y = L0 * Y0 + L1 * Y1Prin t x=; x, y=; yf = Val(InputBox(是否继续(0/1):)WendEnd Sub例:已知两点(13 , 1)、( 49,8),求30处的值r口 Forml1泸30尸 4. 305555S5555556:0r_统性插值|2.2二次插值程序代码:Private
6、 Sub Comma nd1_Click()X0 = Val(InputBox(请输入第一个结点 X:)Y0 = Val(InputBox(请输入第一个结点 丫:)X1 = Val(InputBox(请输入第二个结点 X:)Y1 = Val(InputBox(请输入第二个结点 丫:)X2 = Val(InputBox(请输入第三个结点 X:)Y2 = Val(InputBox(请输入第三个结点 丫:) f = 0While f = 0x = Val(I nputBox(请输入未知点的自变量值 X:)L0 = (x - X1) * (x - X2) / (X0 - X1) / (X0 - X2)
7、L1 = (x - X0) * (x - X2) / (X1 - X0) / (X1 - X2)L2 = (x - X0) * (x - X1) / (X2 - X0) / (X2 - X1)y = L0 * Y0 + L1 * 丫1 + L2 * Y2Prin t x=; x, y=; yf = Val(InputBox(是否继续(0/1):)WendEnd Sub例:已知三点(81,9)、( 100,10)、( 121,10),求 98处的值r鬥 FarrnlD 回 1! S398y= 9.朋旳 9749-373434mo I3ici2.3拉格朗日插值程序代码:Private Sub Co
8、mma nd1_Click()Dim x(), y()n = Val(InputBox(请输入插值节点数 N)ReDim x(n), y( n)For i = 0 To nx(i) = Val(InputBox(请输入插值节点 x( + Str(i) + ) y(i) = Val(InputBox(请输入插值节点 y( + Str(i) + ) Next if = 0While f = 0xx = Val(InputBox(请输入未知点的自变量 x:)Sum = 0For i = 0 To nt = 1For j = 0 To nIf j i The nt = t * (xx - x(j) /
9、 (x(i) - x(j)End IfNext jSum = Sum + t * y(i)Next iPrin t x=; xx, y=; Sumf = Val(InputBox(是否继续(0/1)WendEnd Sub例:已知四点(100,10)、(81,9)、(64,8)、(49,7),求 87 处的值。-I 0 Forrnl : u |.回 |! SjJ Ix= 67 y= 9.32563396692811拉格朗曰插值2.4分段线性插值程序代码:Private Sub Comma nd1_Click()Dim x(), y()n = Val(InputBox(请输入插值节点数 N)ReD
10、im x(n), y( n)For i = 0 To nx(i) = Val(InputBox(请输入插值节点 x( + Str(i) + ) y(i) = Val(InputBox(请输入插值节点 y( + Str(i) + ) Next if = 0While f = 0xx = Val(InputBox(请输入未知点的自变量 x:)L = 0j = 1While L = 0If xx n - 1 The nk = n - 1L = 1End IfEnd IfWend10 = (xx - x(k) / (x(k - 1) - x(k)11 = (xx - x(k - 1) / (x(k)
11、- x(k - 1)yy = l0 * y(k - 1) + l1 * y(k)Prin t x=; xx, y=; yyf = Val(InputBox(是否继续(0/1)WendEnd SubL Forml300尸 17,3142867142857例:已知三点(361 , 19)、(324 , 18)、(289 , 17), N=2,求 300 处的值分段线性插值2.5分段二次插值程序代码:Private Sub Comma nd1_Click()Dim x(), y()n = Val(InputBox(请输入插值节点数 N)ReDim x(n), y( n)For i = 0 To nx
12、(i) = Val(InputBox(请输入插值节点 x( + Str(i) + ) y(i) = Val(InputBox(请输入插值节点 y( + Str(i) + ) Next if = 0While f = 0xx = Val(InputBox(请输入未知点的自变量 x:)If x0 = n - 1If x0 x(i) The nIf x0 - x(i - 1) x(i) - x0 Thenk = i - 1f = 1Elsek = if = 1End IfElsei = i + 1End IfLoopIf f = 0 Thenk = n - 1End If11 = (xx - x(k
13、 + 1) * (xx - x(k) / (x(k - 1) - x(k + 1) * (x(k - 1) - x(k)12 = (xx - x(k + 1) * (xx - x(k - 1) / (x(k) - x(k + 1) * (x(k) - x(k - 1)13 = (xx - x(k) * (xx - x(k - 1) / (x(k + 1) - x(k) * (x(k + 1) - x(k - 1) yy = l1 * y(k - 1) + 12 * y(k) + 13 * y(k + 1)Prin t x=; xx, y=; yyf = Val(InputBox(是否继续(0/
14、1)WendEnd Sub例:已知三点(225,15)、(196 , 14)、(169 , 13),求 180 处的值1 芯専-c-rm L丨口 回云1泸180y= 13. 4154351395731I分段二次播值第三章 数值积分3.1复化矩形积分法程序代码:Private Sub Comma nd1_Click()a = Val(InputBox(请输入积分下限a)b = Val(InputBox(请输入积分上限b)n = Val(I nputBox(请输入积分区间等分数 N) h = (b - a) / nSum = 0For i = 1 To nSum = Sum + (a + (i -
15、 0.5) * h) A 2Next ir = h * SumPrint 复化矩形积分法计算结果:;rEnd Sub例:求X2在区间3,5的积分值,等分区间为100ClickForml cj复化梯形稅分法计算结果:32.&S6&程序代码:Private Sub Comma nd1_Click()a = Val(InputBox( 请输入积分下限a)b = Val(InputBox( 请输入积分上限b)n = Val(I nputBox( 请输入积分区间等分数 N)h = (b - a) / nSum = 0For i = 1 To n - 1Sum = Sum + (a + i * h) A
16、2Next it = h * (a a 2 + b a 2) / 2 + h * SumPrint 复化梯形积分法计算结果:;tEnd Sub例:求X2在区间3,5的积分值,等分区间为100。亘化梯形租分法计算结果;32 6B68亘化梯形枳分法程序代码:Private Sub Comma nd1_Click()a = Val(InputBox(请输入积分下限A:)b = Val(InputBox(请输入积分上限 B:)n = Val(I nputBox(请输入积分区间等分数 N:) h = (b - a) / nSum = 0w = a + h / 2While w bSum = Sum +
17、(w - h / 2) A 2 + 4 * w A 2 + (w + h / 2) A 2 w = w + hWends = Sum * h / 6Print 辛普生积分法计算结果:;sEnd Sub例:求X2在区间3,5的积分值,等分区间为100口 Fomnl1 e 21辛普生稅分法计算结果:32 6&6666666&6&Sn厂 -1辛普生稅分法程序代码:Private Sub Comma nd1_Click()a = Val(InputBox(请输入积分下限a:) b = Val(InputBox(请输入积分上限b:) ep = Val(InputBox(请输入误差限 ep:) n = 1
18、h = b - at1 = h * (a A 2 + b A 2) / 2f = 0While f = 0Sum = 0For i = 1 To n - 1Sum = Sum + (a + (i - 1 / 2) * h) a 2Next iT2 = t1 / 2 + h * Sum / 2If Abs(T2 - t1) ep ThenPrint T2f = 1Elset1 = T2h = h / 2n = 2 * nEnd IfWendEnd Sub例:求X2在区间3,5的积分值,误差限ep=0.0001第四章 线性方程组数值解法4.1约当消去法程序代码:Private Sub Comma
19、nd1_Click()Dim a()n = Val(InputBox( 请输入方程的个数 N:)ReDim a(n, n + 1)For i = 1 To nFor j = 1 To n + 1+ )=)a(i, j) = Val(InputBox( 请输入增广矩阵 A( + Str(i) + , + Str(j)Next jNext iFor k = 1 To nm = a(k, k)For j = k To n + 1a(k, j) = a(k, j) / mNext jFor i = 1 To nIf i k The nm = a(i, k)For j = k To n + 1a(i,
20、j) = a(i, j) - a(k, j) * mNext jEnd IfNext iNext kFor i = 1 To nPrin t x( + Str(i) + )=; a(i, n + 1)Next iEnd Sub例:已知方程组,求X X2 X3的值。厂 X1+ X2+ X3=202X+3X+ X3=38-X1+4X+ X3=35口 Fopmz4.2M驾羔a并H-private Sub commanslc=ck()Dim apx() n H va_ (一npu65ox25阱 厲就-達 N2)ReDim a(p n +)x(n)For i Hl To nForj Hl To n +
21、1a(L j) H va_ (一npu65ox(=逋鸯 迤書再 A(= + S艾 i) + - + sfre+ =)2) Nexf jNexf iFor k Hl To n 1m H a?k)Forj H k To n +ka(k二)H a(k二二 3Nexf jFor i H k + 1 To nm H a(L k)Forj H k To n +k a(L j) H a(L j) - a(k二)* mNexf jNexf iNexf koox(n) = a(n, n + 1) / a(n, n) For i = n - 1 To 1 Step -1 Sum = 0For j = i + 1
22、To nSum = Sum + a(i, j) * x(j) Next jx(i) = a(i, n + 1) - SumNext iFor i = 1 To nPrin t x( + Str(i) + )=; x(i) Next iEnd Sub例:已知方程组,求X1 X2 X3的值2X+5X+ X3=214X+3X+3X=31X1+3X+2X=16r 鬥 Form!1 口 茁亘xC 1)= 4 xC 2讥 3)= 31 高斯消去法E !F 4.3三角分解法程序代码:Private Sub Comma nd1_Click()Dim a(), b(), l(), u(), x(),()n =
23、Val(InputBox(请输入方程个数 N:)ReDim a(n, n), b( n), 1( n, n), u( n, n), x( n), y( n)For i = 1 To nForj = 1 To na(i, j) = Val(InputBox(请输入系数矩阵 A( + Str(i) + , + Str(j) + ):)Next jb(i) = Val(InputBox(请输入右端常数项 B( + Str(i) + ):)Next iFor i = 1 To nForj = 1 To nIf i j The nSum = 0For k = 1 To j - 1Sum = Sum +
24、l(i, k) * u(k, j)Next kl(i, j) = (a(i, j) - Sum) / u(j, j)ElseSum = 0For k = 1 To i - 1Sum = Sum + l(i, k) * u(k, j)Next ku(i, j) = a(i, j) - SumEnd IfNext jNext iFor i = 1 To nSum = 0For j = 1 To i - 1Sum = Sum + l(i, j) * y(j)Next jy(i) = b(i) - SumNext iFor i = n To 1 Step -1Sum = 0For j = i + 1
25、To nSum = Sum + u(i, j) * x(j)Next jx(i) = (y(i) - Sum) / u(i, i)Next iFor i = 1 To nPrin t x( + Str(i) + )=; x(i)Next iEnd Sub例:已知方程组,求Xi X2 X3的值2Xi+3X+4X=38Xi+7X+3X=655X+2X+ X3=33xC 1)= 3 nC z)= e x( 3)= 2i 三角分斛进 |4.4雅可比迭代法程序代码:Dim a(), b(), x0(), x()n = Val(lnputBox( 请输入方程个数 N:)ReDim a(n, n), b(n), x0(n), x(n)ep = Val(lnputBox(请输入误差限 EP:)nmax = Val(lnputBox( 请输入最大迭代次数Nmax:)For i = 1 To nForj = 1 To n+ ):)a(i, j) = Val(lnputBox( 请输入系数矩阵 A( + Str(i) + , + Str(j) Next jb(i) = Val(lnputBox( 请输入右端常数项 B( + Str(i) + ):)Next iFor i = 1 To nx0(i) = Val(lnputBox( 请输入初始解 X0(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1