admin 管理员组

文章数量: 1087139


2024年1月23日发(作者:check18)

计算方法VB源代码000000

Private Sub Command1_Click()Dim n As Integer

000000

000000

000000Dim yi() As Single, xi() As Single, li() As SingleDim y0 As Single, x0 As Singlen=10

00000x0=Val(InputBox("输入要求点的x值"))y0=0.0000000

00000ReDim yi(n)ReDim xi(n)ReDim li(n)000000For i=1 To n

000000Yi(i)=Val(InputBox("输入第"&i&"个插值点的y值"))xi(i)=Val(InputBox("输入第"&i&"个插值点的x值"))00000

000000Next i

000000For i=1 To n

li(i)=1Next i000000

For i=1 To n

For j=1 To n

If i<>j Then li(i)=li(i)*(x0-xi(j))/(xi(i)-xi(j))Next jNext i000000

000000For i=1 To n

Next i000000y0=y0+li(i)*yi(i)Print "y0=";y0

000000

End Sub

000000

Rem 二分法

000000

000000Private Sub Command1_Click()Dim x1,x2,X,y1,y2,y,eer80 x1=InputBox("x1")x2=InputBox("x2")

y1=f(x1)y2=f(x2)

000000

000000

000000

000000

000000If y1*y2<0 Then

Goto 100Else

000000

000000Print("重新输入x1和x2")End Ify=f(x)000000

100 x=(x1+x2)/2

000000If Abs(y)<=0.000001 Then

Print("函数根为");x Print("y=");yElsex2=xy2=yIf y1*y<0 Then

00000

00000

000000

000000Goto 100Else

x1=xy1=y000000

000000Goto 100End If

End If

000000

End Sub

000000

Public Function f(x)Dim yf=y

REM 牛顿迭代法

x0=1x=x0

y=x^2-4*x-1

End Function

000000Private Sub Command1_Click()000000

000000Do Until Abs(x^3-x-1)<=0.

f=x^3-x-1g=3*x^2-1x0=x-f/gLoop

000000

Print("x0=");x0End Sub

000000REM 高斯消除法求解方程组

Dim i,j,m,n As Integer

Dim a(),z(),x(),wn=InputBox("n")For i=1 To n000000

Private Sub Command1_Click()

000000

00000

000000ReDim a(n+2,n+2),z(n+2,n+2),x(n+1)000000

For j=1 To n+100000 a(i,j)=InputBox("a")00000

Next jNext i000000

000000

For i=1 To n w=a(i,i) For j=1 to n+1 Next j000000 a(i,j)=a(i,j)/w

000000if i=n Then Goto 100For j=i+1 To nFor k=i+1 to n+1000000

00000 z(i,k)=a(i,k)*a(j,i) Next kNext jNext i100000000 a(j,k)=a(j,k)-z(i,k)

000000

x(n+1)=0s=0000000For k=n To 1 step-1

For j=k+1 To n Next j000000 s=s+a(k,j)*x(j)

x(k)=a(k,n+1)-s Next k

00000 Print"x";k;")=";x(k)

End Sub

000000REM Jacobi迭代源程序Dim n As Integer

000000

Private Sub Command1_Click()

Dim a(),y(),g(),b(),X1(),X2()n=Input("方程维数");ReDim a(n+1,n+1),y(n+1)Dim s,eer,t

k=0For i=1 To nX1(i)=1X2(i)=0Next i000000

000000

ReDim g(n+1),X1(n+1),X2(n+1),b(n+1,n+1)00000

000000

For i=1 To nFor j=1 To nPrint"输入A()";i,jNext jNext i000000a(i,j)=InputBox(a(i,j))

y(i)=InputBox(y(i))For i=1 To nNext i000000 g(i)=y(i)/a(i,i)For i=1 To nFor j=1 To n b(i,j)=0 Else

If i=j Then

000000

000000 b(i,j)=-a(i,j)/a(i,i) End IfNext jNext i000000

000000

00000050 eer=0000000For i=1 To n000000

eer=eer+Abs(X1(i)-X2(i))Next i

If eer<0.0001 Then

Goto 100Else

000000For i=1 To n X1(i)=X2(i)Next iEnd If

s=

000000

000000For i=1 To nFor j=1 To nNext jNext ik=k+1100

000000 s=s+b(i,j)*X1(j) X2(i)=s+g(i)

000000

Goto 50

For i=1 To n Print X2(i)Next iPrint "k=";kEnd Sub

00000

REM 高斯-塞迭尔 Gauss-SeidelPrivate Sub Command1_Click()Dim y(),t(),g(),X0(),X1(),kDim s,b(),a(),err00000

000000

Dim i As Integer,j As Integer

000000

Dim n As Integer00000

0000000n=Input("请输入n=")

For i=1 To nX0(i)=0Next iX1(i)=X0(i)000000ReDim y(n),t(n),a(n,n),X0(n),X1(n),b(n,n)000000

000000

For i=1 To nFor j=1 To nPrint"输入A()";i,jNext jNext i000000a(i,j)=InputBox(a(i,j))

y(i)=InputBox(y(i))For i=1 To nNext i000000 t(i)=y(i)/a(i,i)For i=1 To nFor j=1 To n b(i,j)=0 Else

If j=i Then

000000

000000 b(i,j)=-a(i,j)/a(i,i) End IfNext jNext ik=0Do000000

000000

000000

k=k+1s=0000000For i=1 To n

For j=1 To nNext jNext ieer=0000000

s=s+b(i,j)*X1(j)X1(i)=s+t(i)

00000

For i=1 To nNext i000000 eer=eer+Abs(x1(i)-x0(i))

For i=1 To n X0(i)=X1(i)Next i00000

000000Loop Until eer<=0.01For i=1 To n Print X1(i)Next iPrint "k=";kEnd Sub

000000

00000

000000

0 0

00 0


本文标签: 消除 计算方法 输入 迭代 维数