allenfieldin 发表于 2010-10-28 15:40:36

关于特征方程零点求解的问题

方程是:tanh(Kn)=w/Kn   其实是波动的色散方程,w为正的常数,Kn只有一个正的实数解,其余有无穷多个复数解
我想知道如何求出前10个复数解;
还有就是希望w给定是一个一维实常数数组,因此可以得到Kn是一个复矩阵形式,请问有没有办法得到这个矩阵?
谢谢!!

lin2009 发表于 2010-11-7 17:59:06

通常的fsolve函数难以解出这类方程,必须用到Analytic中的RootFinding等函数。
g := (x, k) -> tanh(x)*x-k ;
for k to 10 do
S1 := {k, RootFinding(g(x, k), x, re = -.5 .. .5, im = 0 .. 100)};
#map(g,S1);
end do
方程根如下:
w from 1 to 10 by1
search region0i~100i

{1,
12.4864543952238 I, 25.0929104121121 I, 31.3840740178894 I,
34.5285657554614 I, 37.6725735651130 I, 43.9595528888955 I,
47.1026627703624 I, 50.2455828375745 I, 56.5309801938185 I,
62.8159348889735 I, 65.9582857893900 I, 69.1005677279810 I,
75.3849592185345 I, 78.5270825679420 I, 84.8112112993180 I,
87.9532251106725 I, 97.3791034786110 I}
{2,
12.4065403639626 I, 25.0530796624540 I, 37.6460352959305 I,
43.9368086315937 I, 50.2256832197935 I, 56.5132926241755 I,
62.8000167068325 I, 65.9431258539285 I, 69.0860970774095 I,
75.3716947511880 I, 78.5143487963625 I, 87.9418559209575 I,
91.0842327848165 I, 94.2265573558030 I}
{3,
12.3276555210990 I, 25.0133755606312 I, 37.6195344424891 I,
43.9140879217563 I, 50.2057993706110 I, 56.4956161262600 I,
62.7841065943840 I, 65.9279728888235 I, 69.0716324888295 I,
75.3584349525985 I, 78.5016191552100 I, 84.7876338830230 I,
87.9304896708770 I}
{4,
12.2507735848400 I, 24.9739230743402 I, 31.2887748651518 I,
37.5931082005962 I, 40.7428413601015 I, 50.1859470065460 I,
56.4779617429150 I, 62.7682126042700 I, 65.9128338510753 I,
69.0571800136490 I, 75.3451844846740 I, 78.4888977693290 I,
87.9191292968985 I, 91.0622891962695 I}
{5,
12.1767437424364 I, 24.9348432035910 I, 37.5667932419740 I,
43.8688106852038 I, 50.1661417196200 I, 56.4603404478785 I,
62.7523427483217 I, 65.8977156657053 I, 69.0427456779305 I,
72.1874773890115 I, 75.3319479929170 I, 87.9077777278970 I,
91.0513279722730 I, 94.1947478627435 I}
{6,
12.1062393987526 I, 24.8962507906113 I, 31.2260932182057 I,
37.5406254110239 I, 40.6943184378566 I, 50.1463989041630 I,
53.2949661725345 I, 56.4427631049785 I, 62.7365049733785 I,
65.8826252067820 I, 69.0283354673455 I, 75.3187300966690 I,
78.4634961879090 I, 87.8964378806310 I, 91.0403773006870 I}
{7,
12.0397337333033 I, 24.8582525915737 I, 31.1951893745341 I,
37.5146394375165 I, 40.6702585489339 I, 50.1267336857700 I,
53.2764332772510 I, 56.4252404282765 I, 62.7207071375790 I,
65.8675692787955 I, 69.0139553123605 I, 72.1599268636105 I,
75.3055353794790 I, 78.4508241434225 I, 87.8851126552615 I,
91.0294397942030 I, 94.1735852280325 I, 97.3175664683340 I}
{8,
5.29726367211935 I, 11.9775015618444 I, 21.6369999847963 I,
24.8209456867447 I, 37.4888686708530 I, 43.8016467602268 I,
50.1071608532220 I, 53.2579776022845 I, 56.4077829435205 I,
62.7049569872645 I, 65.8525545984510 I, 68.9996110737530 I,
75.2923683796545 I, 78.4381766407165 I, 84.7288619043400 I,
87.8738049309275 I}
{9,
5.23960089313855 I, 11.9196413348458 I, 21.5962965749862 I,
24.7844162794468 I, 31.1345289088926 I, 37.4633448407652 I,
43.7795463727384 I, 46.9344327466184 I, 50.0876947941265 I,
53.2396112686720 I, 56.3904009512510 I, 62.6892621346930 I,
65.8375877770520 I, 68.9853085285335 I, 72.1325021277050 I,
75.2792335810365 I, 78.4255576592840 I, 84.7171627710625 I,
87.8625175614055 I}
{10,
11.8661086721241 I, 18.3506049495567 I, 24.7487389059741 I,
31.1048698000164 I, 37.4380978483773 I, 40.5992015308660 I,
50.0683494349405 I, 53.2213460538360 I, 56.3731044918710 I,
62.6736300367005 I, 65.8226753035567 I, 68.9710533563670 I,
72.1188495687245 I, 75.2661354040425 I, 78.4129711267655 I,
84.7054894614400 I, 87.8512533708565 I}

lin2009 发表于 2010-11-9 20:02:26

本帖最后由 lin2009 于 2010-11-9 20:04 编辑

Maple的版块怎么这么冷清。

Maple的RootFinding等数值求根函数可能得不出全部解!

这道题(1#)虽然用RootFinding可以解。RootFinding帮助上说是可以得到多个解(several roots concurrently)
(The RootFinding package is a suite of advanced commands for finding roots numerically. The routines in this package augment the root-finding functionality provided by fsolve, especially with respect to finding several roots concurrently.)
但很难得到全部的解答,即发生了丢根的现象。

这里仅举一例
对于方程
tanh( x ) = 2 / x   ...........................................(1)
(即1#中的w=2的情况)在0i~30i范围内求虚数根。
经过下贴23#的推导(http://forum.simwe.com/thread-955804-2-1.html),
发现方程 tanh( x ) = 2 / x 的虚数根是
tan( x ) = -2 / x ............................................(2)
的实数根乘上虚部.。
即可以通过求方程tan( x ) = -2 / x的实数根来求解。
因此通过方程(2)可以判断方程(1)的解的个数
(实际上方程2的解乘上i就是方程1的解了)

而方程2的解的情况可以通过画图分析,得出在0~30范围内有9个解。
如下图所示
http://home.simwe.com/attachment/201011/8/418800_1289210310cSMz.jpg
见http://forum.simwe.com/thread-955804-2-1.html 24#
而通过RootFinding求解仅得出2个虚根。RootFinding(tanh(x) x - 2, x, re = -0.5 .. 0.5,im = 0 .. 30){2, 12.4065403639626*I, 15.5802941824244*I}
页: [1]
查看完整版本: 关于特征方程零点求解的问题