0

我正在尝试使用二分法来求解两个高度非线性的方程。让我们说; f(x,y) = 0八级和g(x,y) = 0六级;

我需要二维二等分法的 matlab 代码来解决f(x,y) = 0g(x,y) = 0找到所有可能的根

4

1 回答 1

0

你的想法行不通。通过两个变量中的两个多项式,您进入了具有 Gröbner 基、结果、Bezout 定理和无穷大解的代数领域。

Bezout 定理告诉你最多有 6*8=48 个解,实数和复数。我不认为 matlab 有 Gröbner 包,为此使用 Maple、Magma 或 Singular。

使用结果可以减少变量的数量。f 和 g 的 x 的结果是 y 中的单变量多项式,然后可以通过标准方法求解。它是包含 y 多项式的 Sylvester 矩阵的行列式,原则上应该能够在 matlab 中对此进行评估,但它不是很实用。


结果式的想法(通过不那么明显的弯路)适用于同伦方法。Verschelde、Wampler 等人对全数值方法进行了广泛的研究。

如果我没记错的话,同伦的初始可解问题是通过考虑构建的

g0(x,y)=(y-a1*x-b1)*...*(y-a6*x-b6) 

具有随机系数 a1,..,a6,b1,...,b6。然后可以从单变量多项式中确定 g0 的每个线性因子的初始解

0=f1(x)=f(x,a1*x+b1),..., 0=f6(x)=f(x,a6*x+b6)

使用 Jenkins-Traub 或 Laguerre,给出根 xjk 和 yjk=aj*xjk+bj。复平面的二等分或四等分不是很有帮助,但存在。参见 Yakoubsohn 和 Didieu 的工作。

现在引入一个同伦参数 t 从 0 到 1 的直线或曲线 t=s+c*s*(1-s), s 在 [0,1], c 随机小虚数, 在复平面和考虑系统

0=f(x(t),y(t)),
0=t*g(x(t),y(t))+(1-t)*g0(x(t),y(t)),

对于所有 j=1,...,6, k=1,...,8,从 x(0)=xjk 和 y(0)=yjk 开始。

对于一般的系数值,所遵循的路径不会相交,因此从头到尾都是规则的,并且可以找到所有的根。一个棘手的部分是确定路径何时漂移,如果它是因为一个非常大的解决方案或无限处的非解决方案。


另一个同伦从计算 f(x,y0) 的根 x1,...,x8 为固定的任意 y0 开始,然后计算根 y11,...,y61,y12,...,y68 的 g(x1, y),...,g(x8,y)。然后将同伦给出为

0=f( x(t), (1-t)*y0+t*y(t)), 
0=g( x(t), y(t)),

其中 x(0)=xk 和 y(0)=yjk。

于 2014-01-17T16:04:47.017 回答