南子 发表于 2003-8-20 17:59:00

有谁可以解 sin(x)/x=C的方程,c为已知数值。

希望不用数值代入测试是否逼近的方法。

leeyeafu 发表于 2003-8-21 09:14:00

如果你对速度和精度要求不高的话,可以试试这段代码

const PI=3.14159265
Function Sinx_c(c As Double, Prec As Double)'Prec为精度,例如0.00001
Dim x As Double
For x = 0 To PI Step Prec
    If Sin(x)/x - c > -Prec And Sin(x)/x - c <Prec Then
      Sinx_c = x
      Exit Function
    End If
Next x
End Function

南子 发表于 2003-8-21 18:59:00

sin(x)的麦克劳林展开式为:x/1!-x^3/3!+x^5/5!-x^7/7!……(-1)^(2n-1)*x^(2n-1)/(2n-1)!

ahlzl 发表于 2003-8-29 13:25:00

我写的:
Sub ddARC()
'本程序能精确到小数点9位
Dim x, xx, c, fx, flx As Double
c = ThisDrawing.Utility.GetReal(" 请输入c的值:")
x = 0.000001
xx = x
Do
x = xx
fx = Sin(x) / x
flx = 1 - Sin(x) / x / x
xx = x - fx / flx
Loop While Abs(xx - x) > 0.000000001
ThisDrawing.Utility.Prompt "x= " & x
ZoomExtents
End Sub

莫名 发表于 2004-1-12 22:47:00

好象只有叠代法

mikewolf2k 发表于 2004-1-12 22:54:00

赞成2楼方法,一个个去试,是一元方程都能解

莫名 发表于 2004-1-12 22:56:00

3、4楼的程序都是错的

zfbj 发表于 2004-1-13 00:11:00

赞成莫版主的说法,我在学校学数值分析,书中说这类问题最好用迭代法求解。

ahlzl 发表于 2004-1-13 14:12:00

本帖最后由 作者 于 2004-1-13 19:42:51 编辑

在莫名斑竹的指点下,我改正了4楼的代码.
Sub uhku()
'本程序能精确到小数点9位
Dim x, xx, c, fx, flx As Double
c = ThisDrawing.Utility.GetReal(" 请输入c的值:")
x = 1
xx = x
Do
x = xx
fx = Sin(x) - c * x
flx = Cos(x) - c
xx = x - fx / flx
Loop While Abs(xx - x) > 0.000000001
ThisDrawing.Utility.Prompt "x= " & x
End Sub


哦,我画出了y=sinx/x-c的曲线,c小于1时才有解(两解),还没仔细分析!











meflying 发表于 2004-1-13 16:33:00

莫名发表于2004-1-12 22:56:00static/image/common/back.gif3、4楼的程序都是错的



3楼的好象不是程序,是一个数学公式而已。。。
页: [1]
查看完整版本: 有谁可以解 sin(x)/x=C的方程,c为已知数值。