跪求::::定积分公式算法

mm_cool 2004-12-28 10:26:03
例如:y(x)*WB(x) 从1到100 的定积分
y(x)-是从串口传递的数据。
WB(x)-是固定的列表值。如WB(1)=___,WB(2)=___
...全文
328 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
mm_cool 2004-12-30
  • 打赏
  • 举报
回复
几位兄台多谢了
laviewpbt 2004-12-29
  • 打赏
  • 举报
回复
是没有了才对,刚才没有删掉,方法是没有错的。
mm_cool 2004-12-29
  • 打赏
  • 举报
回复

是是,去掉 x(i) = a + h * i 就和'lyllxfly(Iamunknown)'的一样了
可是 x(i) = a + h * i 是什么?
应该没有吧?


我也觉得太简单了,好像不对
laviewpbt 2004-12-29
  • 打赏
  • 举报
回复
其实那两个公式本来就是对离散点求积分的,即知道了某些点的函数值,求积分值。但是这两个公式要求定步长,正好你的离散点也是定步长的。这样:
Public Function trap()
s=y(1)*WB(1)
For i = 2 To 99
x(i) = a + h * i
s = s + 2 * y(i)*WB(i)
Next
s = s + y(100)*WB(100)
trap = s / 2 '你的步长应该是1
End Function
艾,怎么这样简单,是不是错了。
好象和mm_cool的差不多。
mm_cool 2004-12-29
  • 打赏
  • 举报
回复
比如说 y(1)=XX.XX,y(2)=XX.XX,.....,y(100)=XX.XX 数值是不固定的

而且另一个函数WB(x)是一个固定的列表,比如WB(1)=XX.XX,WB(2)=XX.XX,.....,WB(100)=XX.XX
mm_cool 2004-12-29
  • 打赏
  • 举报
回复
有1点不明
Public Function expression(x As Single) As Single
=> expression = Sin(x) '需注意被0除的情况
End Function
为什么要用sin函数?? sin函数是原函数吧.

我的函数y(x)根本就 没有原函数,y(X)是机器传递的数据, X是整数1.到100
pbtincsu 2004-12-29
  • 打赏
  • 举报
回复
看看。
laviewpbt 2004-12-29
  • 打赏
  • 举报
回复
上面的For i = 0 To n - 1改为For i = 1 To n - 1。

'复化simpson公式求积分,它比复化梯形公式收敛的快。
'待求积分表达式
'x为表达式中变量值
Public Function expression(x As Single) As Single
expression = Sin(x) '需注意被0除的情况
End Function
'复化simpson公式求积分
'a为积分下限
'b为积分上限
'n为积分区间划分等份
Public Function simp(a As Single, b As Single, n As Integer)
Dim h As Single
Dim x() As Single
Dim s As Single
ReDim x(n) As Single
If n Mod 2 <> 0 Then Exit Function 'N必须为偶数
h = (b - a) / n '积分步长
s = expression(a)
For i = 1 To n - 1 Step 2 '复化simpson公式的精华部分
x(i) = a + h * i
s = s + 4 * expression(x(i))
Next
For i = 2 To n - 2 Step 2 '复化simpson公式的精华部分
x(i) = a + h * i
s = s + 2 * expression(x(i))
Next
s = s + expression(b)
simp = h * s / 3
End Function

Private Sub Command1_Click()
MsgBox simp(0, 3.1415926 / 4, 1000) '准确解为0.2928932
End Sub

laviewpbt 2004-12-29
  • 打赏
  • 举报
回复
帮你写了个复化梯形公式求积分的方法,希望有用

'待求积分表达式
'x为表达式中变量值
Public Function expression(x As Single) As Single
expression = Sin(x) '需注意被0除的情况
End Function
'复化梯形公式求积分
'a为积分下限
'b为积分上限
'n为积分区间划分等份
Public Function trap(a As Single, b As Single, n As Integer)
Dim h As Single
Dim x() As Single
Dim s As Single
ReDim x(n) As Single
h = (b - a) / n '积分步长
s = expression(a)
For i = 0 To n - 1 '复化梯形公式的精华部分
x(i) = a + h * i
s = s + 2 * expression(x(i))
Next
s = s + expression(b)
trap = h * s / 2
End Function

Private Sub Command1_Click()
MsgBox trap(0, 3.1415926 / 4, 1000) '准确解为0.2928932
End Sub
mm_cool 2004-12-29
  • 打赏
  • 举报
回复
laviewpbt(人一定要靠自己) 大哥,能不能说具体点
我(菜鸟)定积分不好,VB也不是很好
laviewpbt 2004-12-29
  • 打赏
  • 举报
回复
看看数值分析先,上面不是有好多算法吗,就用最简单Newton-Cotes公式或者GAUSS求积公式。
mm_cool 2004-12-29
  • 打赏
  • 举报
回复
回复人: lyllxfly(Iamunknown) ( ) 信誉:96

sum=(y(1)*wb(1)+y(100)*wb(100))*0.5
for i=2 to 99
sum=sum+y(i)*wb(i)
next

这种方法好像不可行,计算一个y(X)也许还行,计算结果好像也不是很准确
mm_cool 2004-12-29
  • 打赏
  • 举报
回复
Y 是针对X的函数,WB也是针对x的函数.
Y(X)*WB(X)

X取100次,每次都由串口输入,但是WB(X)是有固定的列表取值
lyllxfly 2004-12-29
  • 打赏
  • 举报
回复
sum=(y(1)*wb(1)+y(100)*wb(100))*0.5
for i=2 to 99
sum=sum+y(i)*wb(i)
next
laviewpbt 2004-12-29
  • 打赏
  • 举报
回复
没有错啊,怎么回事?
mm_cool 2004-12-29
  • 打赏
  • 举报
回复
看来是解决不了了.那我明天这时就封帖了
顺便顶一下
kmzs 2004-12-29
  • 打赏
  • 举报
回复
oh,no
  • 打赏
  • 举报
回复
感觉就是100个梯形面积相加
  • 打赏
  • 举报
回复
最好这样写Y(X)*WB(Y(X)),X取100次,每次都由串口输入
  • 打赏
  • 举报
回复
Y 是针对X的函数?还是直接Y=X?
或者你的意思是Y=∈Xi(i=1 TO 100)
加载更多回复(2)

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧