|
本帖最后由 书生春秋 于 2011-9-28 12:18 编辑
这个问题很有实际意义,发上来求助各位老师。
关于求根的问题,搜索过版面,有几个帖子讨论过,但是一直没有很好的解决。
希望能有一个函数,可以像matlab里的roots一样,方便求解所有根。
excel里对多项式处理的函数似乎很好,只知道有个多项式拟合的函数。
没用过也不熟悉,加上数学功底差,不能确定是不是可以用来解决求根的问题
但是我觉得VBA一定是有办法解决这个问题的,因此求各位熟悉VBA的高手,不吝赐教,小弟拜谢!
已经实现功能的部分代码
- Public leng As Integer
- Public data As Variant
- Public datas As Variant
- Private Sub inputdata_Click() '输入系数 按钮
- Dim i As Integer
- Dim fc As String
- fc = "所求解的方程表达式为:"
- Do
- doo: datas = InputBox("请按降幂输入特征方程系数,用英文逗号分开", "提示:必须输入正数" _
- & "如:1,3,3,2", "1,3,3,2")
- data = Split(datas, ",")
- leng = UBound(data)
- If (StrPtr(datas) = 0) Or leng < 2 Then '????
- MsgBox "无效输入统", 0 + 64, "提示"
- Exit Sub
- Else
- If datas <> "" Then Exit Do
- End If
- Loop
- Range(Cells(7, leng + 1), Cells(8, 256)).ClearContents
- Cells(7, 1) = "方程系数"
- Cells(8, 1) = "方程的根"
- For i = 0 To leng
- Cells(7, i + 2) = data(i)
- If i = 0 Then
- fc = fc & Str(data(i)) & "*X^" & Str(leng)
- Else
- fc = fc & "+" & Str(data(i)) & "*X^" & Str(leng - i)
- End If
- Next
- Cells(10, 1).Clear
- Cells(10, 1) = fc
- End Sub
- Private Sub newin_Click() '在新窗口中显示 按钮
- '将区域Range(Cells(6, 1), Cells(7, leng + 2))在新窗口里显示
- End Sub
- Private Sub roots_Click() '求根 按钮
- '解出cells(10,1)单元格的方程,并将所有根写入第8行
- End Sub
复制代码
多项式求根.rar
(10.55 KB, 下载次数: 20)
|
|