kastin 发表于 2014-1-12 17:39:10

指定区间内的求解非线性方程所有零点的数值方法

对于单非线性方程,给定初始值(只要不是在导数为零的位置),一般能通过牛顿法或者其他方法数值求解出一个该点附近的根。

但是如果给定的是一个区间,想要求解该区间内的所有根,如何求解呢?假设给定绝对误差Tol,即最小分辨率为Tol(因此若两个相邻的根的距离如果小于Tol,则至多只有一个根能被搜索到)。

最近遇到这个问题。不知道有没有人看过相关论文?或是有什么好方法?

wayne 发表于 2014-1-16 19:40:48

你这个问题等价于求出非线性方程所有的解吧.

好像是没有通用的形式分析思路的, 即便是所有的数值解.

=========
但是呢,针对给定的情况,我们总是能通过分析其单调性,算出给定区间的所有解的.
(如果不单调,就细化该区间,分别判断单调性,直至所有细化的区间都满足单调性为止...)

kastin 发表于 2014-1-18 16:07:53

wayne 发表于 2014-1-16 19:40
你这个问题等价于求出非线性方程所有的解吧.

好像是没有通用的形式分析思路的, 即便是所有的数值解.


是的,关键是单调区间如何确定,这就涉及到导数的所有零点了。
如果采用求出的零点基础上加上步长递增的方式来作为初始点,不断使用牛顿法来求接下来的零点,这对于一些高振荡函数就不太理想了,因为无法准确知道这个步长到底该取多少合适。

鉴于所有的根求出来比较困难,有可能是无穷多个,所以问题应该这样叙述比较合适——求出给定区间内的所有根(当然这也不能排除某些函数在该区间内有无穷多个根的情形,这种特殊例子我们就不去考虑)。

wayne 发表于 2014-1-19 10:40:21

kastin 发表于 2014-1-18 16:07
是的,关键是单调区间如何确定,这就涉及到导数的所有零点了。
如果采用求出的零点基础上加上步长递增的 ...

可能我前面的意思没表达清楚,是这样的:
这种话题没有形式逻辑的解决方案,即我们无法用大一统的可以程序化的方法解决。
(通过抽象的数学符号完整的解决,或者是普适的,大一统的程序化算法解决)

但是给定了某个特定的例子(实例化了),我们总是能非常透彻的给出函数性态.
进而给出所有解的 (话可能说的有点绝了,是几乎所有解,但离“所有解”也无本质的差别了).

我借助各种数学工具就能轻松办到(不信,你抛出几道看看?,:sleepy: )

数学星空 发表于 2014-1-19 11:13:31

呵呵,我提供一个比较复杂的非线性方程组:你可以试一试
a^2*(cos(t_i)-cos(t_{i+1}))^2+b^2*(sin(t_i)-sin(t_{i+1}))^2=L^2 (i=1...n,t_{n+1}=t_1)
例如:
1.取n=5,a=5,b=3,L=4.7,t_1={pi*k}/{2*100},k=1~100时所有的解t_1<t_2<t_3<t_4<t_5<2*pi
2.取n=6,a=5,b=3,L=3.7,t_1={pi*k}/{2*100},k=1~100时所有的解t_1<t_2<t_3<t_4<t_5<t_6<2*pi
3.取n=7,a=5,b=3,L=3.1,t_1={pi*k}/{2*100},k=1~100时所有的解t_1<t_2<t_3<t_4<t_5<t_6<t_7<2*pi
当然你可以画图表达结果,此问题取自 http://bbs.emath.ac.cn/thread-4289-2-2.html


mathe 发表于 2014-1-19 11:47:31

数学星空 发表于 2014-1-19 11:13
呵呵,我提供一个比较复杂的非线性方程组:你可以试一试
例如:
1.取时所有的解


这个好像可以递推计算的。
应该不指定L,然后要求首尾重合

数学星空 发表于 2014-1-19 12:06:46

mathe
能试着计算一下吗?
对于N=5 我用maple曾经计算了一些点,见下图

mathe 发表于 2014-1-19 12:53:22

你的这个例子,根据几何意义,对L进行二分法显然可以比较容易求解

数学星空 发表于 2014-1-19 14:45:14

对于N=5, 我通过计算得到如下图形

似乎这些等五边形内切一个四次曲线,并且关于x,y轴对称,并且与在x,y轴上的截距相等
有谁能算出此曲线??
初步推测为此曲线为x^4+y^4+f_1(a,b)*x^2*y^2=f_2(a,b)???

mathe 发表于 2014-1-19 15:47:48

也就是椭圆上定长弦包络出来的曲线。
页: [1] 2
查看完整版本: 指定区间内的求解非线性方程所有零点的数值方法