南子 发表于 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 &ltrec 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


在莫名斑竹的指点下,我改正了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时才有解(两解),还没仔细分析!
http://bbs.mjtd.com/forum.php?mod=attachment&aid=NDAwMHw0Yjc0Y2M1OXwxNjU5MTgwMzg5fDczMjY5MTh8OTY4Mw%3D%3D&noupdate=yes&nothumb=yes

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


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