有谁可以解 sin(x)/x=C的方程,c为已知数值。
希望不用数值代入测试是否逼近的方法。如果你对速度和精度要求不高的话,可以试试这段代码
const PI=3.14159265Function 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 sin(x)的麦克劳林展开式为:x/1!-x^3/3!+x^5/5!-x^7/7!……(-1)^(2n-1)*x^(2n-1)/(2n-1)! 我写的:
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 好象只有叠代法 赞成2楼方法,一个个去试,是一元方程都能解 3、4楼的程序都是错的 赞成莫版主的说法,我在学校学数值分析,书中说这类问题最好用迭代法求解。 本帖最后由 作者 于 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时才有解(两解),还没仔细分析!
莫名发表于2004-1-12 22:56:00static/image/common/back.gif3、4楼的程序都是错的
3楼的好象不是程序,是一个数学公式而已。。。
页:
[1]