欧拉梯形格式C语言,关于欧拉梯形法计算数值微分

tixingfa[x_, y_] := Module[{h = 0.1, k, y0 = y, x0 = x, y1, y2, eps = 0.00001, a = 0},

For[k = 0, k <= 9,

x0 = a + h k;

y1 = y0 + h f[x0, y0];

y2 = y0 + h/2*(f[x0, y0] + f[x0 + h, y1]);

While[Abs[y2 - y1] >= eps,

y1 = y2; y2 = y0 + h/2*(f[x0, y0] + f[x0 + h, y1])]; Print["y2= ", y2]; y0 = y2,

k = k + 1]; y2]

f[x_, y_] := y - 2 x/y

tixingfa[0, 1]

(*

y2=    1.07516

y2=    1.14107

y2=    1.19838

y2=    1.24719

y2=    1.2872

y2=    1.31772

y2=    1.33755

y2=    1.34494

y2=    1.33737

y2=    1.31112

1.31112

*)

下面是用VB编的:

Sub tixingfa () *VB编程实现*

Dim y1 As Double, y0 As Double, h As Double, x0 As Double, k As Integer, n As Integer, \

y As Double

h = 0.1 : a = 0 : b = 1 : eps = 0.000001 : y0 = 1 : x0 = 0

k = (b - a)/h

Text1.Text = "n" & " " & "x0" & " " & "yn" & vbCrLf

For n = 0 To k - 1

x0 = a + n*h

y1 = y0 + h*f (x0, y0)

y = y0 + h/2*(f (x0, y0) + f (x0 + h, y1))

Do While Abs (y - y1) >= eps

y1 = y

y = y0 + h/2*(f (x0, y0) + f (x0 + h, y1))

Loop

Text1.Text =

Text1.Text & n & " " & Format (x0, "##0.000#########") & " " & y & vbCrLf

y0 = y

Next

End Sub

但是mathematica实现后,结果不一样,VB的答案正确,想知道哪里错了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值