数值计算方法大作业课案.docx
- 文档编号:23285040
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:32
- 大小:126.38KB
数值计算方法大作业课案.docx
《数值计算方法大作业课案.docx》由会员分享,可在线阅读,更多相关《数值计算方法大作业课案.docx(32页珍藏版)》请在冰豆网上搜索。
数值计算方法大作业课案
目录
第一章非线性方程求根····················3
1.1迭代法······································3
1.2牛顿法······································4
1.3弦截法······································5
1.4二分法······································6
第二章插值·······························7
2.1线性插值····································7
2.2二次插值····································8
2.3拉格朗日插值································9
2.4分段线性插值·······························10
2.5分段二次插值·······························11
第三章数值积分··························13
3.1复化矩形积分法·····························13
3.2复化梯形积分法·····························14
3.3辛普森积分法·······························15
3.4变步长梯形积分法···························16
第四章线性方程组数值法··················17
4.1约当消去法·································17
4.2高斯消去法·································18
4.3三角分解法·································20
4.4雅可比迭代法································21
4.5高斯—赛德尔迭代法··························23
第五章常积分方程数值法··················25
5.1显示欧拉公式法······························25
5.2欧拉公式预测校正法··························26
5.3改进欧拉公式法······························27
5.4四阶龙格—库塔法····························28
数值计算方法
第一章非线性方程求根
1.1迭代法
程序代码:
PrivateSubCommand1_Click()
x0=Val(InputBox("请输入初始值x0"))
ep=Val(InputBox(请输入误差限ep))
f=0
Whilef=0
X1=(Exp(2*x0)-x0)/5
IfAbs(X1-x0) PrintX1 f=1 Else x0=X1 EndIf Wend EndSub 例: 求f(x)=e2x-6x=0在x=0.5附近的根(ep=10-10) 1.2牛顿法 程序代码: PrivateSubCommand1_Click() b=Val(InputBox("请输入被开方数x0")) ep=Val(InputBox(请输入误差限ep)) f=0 Whilef=0 X1=x0-(x0^2-b)/(2*b) IfAbs(X1-x0) PrintX1 f=1 Else x0=X1 EndIf Wend EndSub 例: 求 的值。 (ep=10-10) 1.3弦截法 程序代码: PrivateSubCommand1_Click() x0=Val(InputBox("请输入第一个初始值x0")) X1=Val(InputBox("请输入第二个初始值x1")) ep=Val(InputBox("请输入误差限ep")) f=0 Whilef=0 X2=X1-(X1^8-13)*(X1-x0)/((X1^8-13)-(x0^8-13)) IfAbs(X2-X1) PrintX2 f=1 Else x0=X1 X1=X2 EndIf Wend EndSub 例: 求f(x)=x8-13的正根(初始值x1=1,x2=10,ep=10-10) 1.4二分法 程序代码: PrivateSubCommand1_Click() a=Val(InputBox("请输入区间端点a")) b=Val(InputBox("请输入区间端点b")) ep=Val(InputBox("请输入误差限ep")) f=0 Whilef=0 x=(a+b)/2 fx=Exp(-x/7)*(9-2*x)-8 fa=Exp(-a/7)*(9-2*a)-8 Iffx=0Then f=1 Print"方程的根是",x Else Iffa*fx>0Then a=x Else b=x EndIf IfAbs(b-a) x=(b+a)/2 f=1 Print"方程的根是",x EndIf EndIf Wend EndSub 例: 求方程f(x)=e-7/x(9-2x)-8在区间[0,1]内的实根。 (ep=10-10) 第2章插值 2.1线性插值 程序代码: PrivateSubCommand1_Click() X0=Val(InputBox("请输入第一个结点X: ")) Y0=Val(InputBox("请输入第一个结点Y: ")) X1=Val(InputBox("请输入第二个结点X: ")) Y1=Val(InputBox("请输入第二个结点Y: ")) f=0 Whilef=0 x=Val(InputBox("请输入未知点的自变量值X: ")) L0=(x-X1)/(X0-X1) L1=(x-X0)/(X1-X0) y=L0*Y0+L1*Y1 Print"x=";x,"y=";y f=Val(InputBox("是否继续(0/1): ")) Wend EndSub 例: 已知两点(13,1)、(49,8),求30处的值。 2.2二次插值 程序代码: PrivateSubCommand1_Click() X0=Val(InputBox("请输入第一个结点X: ")) Y0=Val(InputBox("请输入第一个结点Y: ")) X1=Val(InputBox("请输入第二个结点X: ")) Y1=Val(InputBox("请输入第二个结点Y: ")) X2=Val(InputBox("请输入第三个结点X: ")) Y2=Val(InputBox("请输入第三个结点Y: ")) f=0 Whilef=0 x=Val(InputBox("请输入未知点的自变量值X: ")) L0=(x-X1)*(x-X2)/(X0-X1)/(X0-X2) L1=(x-X0)*(x-X2)/(X1-X0)/(X1-X2) L2=(x-X0)*(x-X1)/(X2-X0)/(X2-X1) y=L0*Y0+L1*Y1+L2*Y2 Print"x=";x,"y=";y f=Val(InputBox("是否继续(0/1): ")) Wend EndSub 例: 已知三点(81,9)、(100,10)、(121,10),求98处的值。 2.3拉格朗日插值 程序代码: PrivateSubCommand1_Click() Dimx(),y() n=Val(InputBox("请输入插值节点数N")) ReDimx(n),y(n) Fori=0Ton x(i)=Val(InputBox("请输入插值节点x("+Str(i)+")")) y(i)=Val(InputBox("请输入插值节点y("+Str(i)+")")) Nexti f=0 Whilef=0 xx=Val(InputBox("请输入未知点的自变量x: ")) Sum=0 Fori=0Ton t=1 Forj=0Ton Ifj<>iThen t=t*(xx-x(j))/(x(i)-x(j)) EndIf Nextj Sum=Sum+t*y(i) Nexti Print"x=";xx,"y=";Sum f=Val(InputBox("是否继续(0/1)")) Wend EndSub 例: 已知四点(100,10)、(81,9)、(64,8)、(49,7),求87处的值。 2.4分段线性插值 程序代码: PrivateSubCommand1_Click() Dimx(),y() n=Val(InputBox("请输入插值节点数N")) ReDimx(n),y(n) Fori=0Ton x(i)=Val(InputBox("请输入插值节点x("+Str(i)+")")) y(i)=Val(InputBox("请输入插值节点y("+Str(i)+")")) Nexti f=0 Whilef=0 xx=Val(InputBox("请输入未知点的自变量x: ")) L=0 j=1 WhileL=0 Ifxx k=j+1 L=1 Else j=j+1 Ifj>n-1Then k=n-1 L=1 EndIf EndIf Wend l0=(xx-x(k))/(x(k-1)-x(k)) l1=(xx-x(k-1))/(x(k)-x(k-1)) yy=l0*y(k-1)+l1*y(k) Print"x=";xx,"y=";yy f=Val(InputBox("是否继续(0/1)")) Wend EndSub 例: 已知三点(361,19)、(324,18)、(289,17),N=2,求300处的值。 2.5分段二次插值 程序代码: PrivateSubCommand1_Click() Dimx(),y() n=Val(InputBox("请输入插值节点数N")) ReDimx(n),y(n) Fori=0Ton x(i)=Val(InputBox("请输入插值节点x("+Str(i)+")")) y(i)=Val(InputBox("请输入插值节点y("+Str(i)+")")) Nexti f=0 Whilef=0 xx=Val(InputBox("请输入未知点的自变量x: ")) Ifx0 (1)Then k=1 f=1 EndIf i=2 DoWhilef=0Andi>=n-1 Ifx0 Ifx0-x(i-1) k=i-1 f=1 Else k=i f=1 EndIf Else i=i+1 EndIf Loop Iff=0Then k=n-1 EndIf l1=(xx-x(k+1))*(xx-x(k))/((x(k-1)-x(k+1))*(x(k-1)-x(k))) l2=(xx-x(k+1))*(xx-x(k-1))/((x(k)-x(k+1))*(x(k)-x(k-1))) l3=(xx-x(k))*(xx-x(k-1))/((x(k+1)-x(k))*(x(k+1)-x(k-1))) yy=l1*y(k-1)+l2*y(k)+l3*y(k+1) Print"x=";xx,"y=";yy f=Val(InputBox("是否继续(0/1)")) Wend EndSub 例: 已知三点(225,15)、(196,14)、(169,13),求180处的值。 第3章数值积分 3.1复化矩形积分法 程序代码: PrivateSubCommand1_Click() a=Val(InputBox("请输入积分下限a")) b=Val(InputBox("请输入积分上限b")) n=Val(InputBox("请输入积分区间等分数N")) h=(b-a)/n Sum=0 Fori=1Ton Sum=Sum+(a+(i-0.5)*h)^2 Nexti r=h*Sum Print"复化矩形积分法计算结果: ";r EndSub 例: 求X2在区间[3,5]的积分值,等分区间为100。 3.2复化梯形积分法 程序代码: PrivateSubCommand1_Click() a=Val(InputBox("请输入积分下限a")) b=Val(InputBox("请输入积分上限b")) n=Val(InputBox("请输入积分区间等分数N")) h=(b-a)/n Sum=0 Fori=1Ton-1 Sum=Sum+(a+i*h)^2 Nexti t=h*(a^2+b^2)/2+h*Sum Print"复化梯形积分法计算结果: ";t EndSub 例: 求X2在区间[3,5]的积分值,等分区间为100。 3.3辛普生积分法 程序代码: PrivateSubCommand1_Click() a=Val(InputBox("请输入积分下限A: ")) b=Val(InputBox("请输入积分上限B: ")) n=Val(InputBox("请输入积分区间等分数N: ")) h=(b-a)/n Sum=0 w=a+h/2 Whilew Sum=Sum+(w-h/2)^2+4*w^2+(w+h/2)^2 w=w+h Wend s=Sum*h/6 Print"辛普生积分法计算结果: ";s EndSub 例: 求X2在区间[3,5]的积分值,等分区间为100。 3.4变步长梯形积分法 程序代码: PrivateSubCommand1_Click() a=Val(InputBox("请输入积分下限a: ")) b=Val(InputBox("请输入积分上限b: ")) ep=Val(InputBox("请输入误差限ep: ")) n=1 h=b-a t1=h*(a^2+b^2)/2 f=0 Whilef=0 Sum=0 Fori=1Ton-1 Sum=Sum+(a+(i-1/2)*h)^2 Nexti T2=t1/2+h*Sum/2 IfAbs(T2-t1) PrintT2 f=1 Else t1=T2 h=h/2 n=2*n EndIf Wend EndSub 例: 求X2在区间[3,5]的积分值,误差限ep=0.0001。 第4章线性方程组数值解法 4.1约当消去法 程序代码: PrivateSubCommand1_Click() Dima() n=Val(InputBox("请输入方程的个数N: ")) ReDima(n,n+1) Fori=1Ton Forj=1Ton+1 a(i,j)=Val(InputBox("请输入增广矩阵A("+Str(i)+","+Str(j)+")=")) Nextj Nexti Fork=1Ton m=a(k,k) Forj=kTon+1 a(k,j)=a(k,j)/m Nextj Fori=1Ton Ifi<>kThen m=a(i,k) Forj=kTon+1 a(i,j)=a(i,j)-a(k,j)*m Nextj EndIf Nexti Nextk Fori=1Ton Print"x("+Str(i)+")=";a(i,n+1) Nexti EndSub 例: 已知方程组,求X1X2X3的值。 X1+X2+X3=20 2X1+3X2+X3=38 X1+4X2+X3=35 4.2高斯消去法 程序代码: PrivateSubCommand1_Click() Dima(),x() n=Val(InputBox("请输入方程个数N: ")) ReDima(n,n+1),x(n) Fori=1Ton Forj=1Ton+1 a(i,j)=Val(InputBox("请输入增广矩阵A("+Str(i)+","+Str(j)+"): ")) Nextj Nexti Fork=1Ton-1 m=a(k,k) Forj=kTon+1 a(k,j)=a(k,j)/m Nextj Fori=k+1Ton m=a(i,k) Forj=kTon+1 a(i,j)=a(i,j)-a(k,j)*m Nextj Nexti Nextk x(n)=a(n,n+1)/a(n,n) Fori=n-1To1Step-1 Sum=0 Forj=i+1Ton Sum=Sum+a(i,j)*x(j) Nextj x(i)=a(i,n+1)-Sum Nexti Fori=1Ton Print"x("+Str(i)+")=";x(i) Nexti EndSub 例: 已知方程组,求X1X2X3的值。 2X1+5X2+X3=21 4X1+3X2+3X3=31 X1+3X2+2X3=16 4.3三角分解法 程序代码: PrivateSubCommand1_Click() Dima(),b(),l(),u(),x(),y() n=Val(InputBox("请输入方程个数N: ")) ReDima(n,n),b(n),l(n,n),u(n,n),x(n),y(n) Fori=1Ton Forj=1Ton a(i,j)=Val(InputBox("请输入系数矩阵A("+Str(i)+","+Str(j)+"): ")) Nextj b(i)=Val(InputBox("请输入右端常数项B("+Str(i)+"): ")) Nexti Fori=1Ton Forj=1Ton Ifi>jThen Sum=0 Fork=1Toj-1 Sum=Sum+l(i,k)*u(k,j) Nextk l(i,j)=(a(i,j)-Sum)/u(j,j) Else Sum=0 Fork=1Toi-1 Sum=Sum+l(i,k)*u(k,j) Nextk u(i,j)=a(i,j)-Sum EndIf Nextj Nexti Fori=1Ton Sum=0 Forj=1Toi-1 Sum=Sum+l(i,j)*y(j) Nextj y(i)=b(i)-Sum Nexti Fori=nTo1Step-1 Sum=0 Forj=i+1Ton Sum=Sum+u(i,j)*x(j) Nextj x(i)=(y(i)-Sum)/u(i,i) Nexti Fori=1Ton Print"x("+Str(i)+")=";x(i) Nexti EndSub 例: 已知方程组,求X1X2X3的值。 2X1+3X2+4X3=38 X1+7X2+3X3=65 5X1+2X2+X3=33 4.4雅可比迭代法 程序代码: Dima(),b(),x0(),x() n=Val(InputBox("请输入方程个数N: ")) ReDima(n,n),b(n),x0(n),x(n) ep=Val(InputBox("请输入误差限EP: ")) nmax=Val(InputBox("请输入最大迭代次数Nmax: ")) Fori=1Ton Forj=1Ton a(i,j)=Val(InputBox("请输入系数矩阵A("+Str(i)+","+Str(j)+"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 计算方法 作业