找回密码
 注册
Simdroid-非首页
查看: 125|回复: 2

[2.数值] 关于特征方程零点求解的问题

[复制链接]
发表于 2010-10-28 15:40:36 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
方程是:tanh(Kn)=w/Kn   其实是波动的色散方程,w为正的常数,Kn只有一个正的实数解,其余有无穷多个复数解
我想知道如何求出前10个复数解;
还有就是希望w给定是一个一维实常数数组,因此可以得到Kn是一个复矩阵形式,请问有没有办法得到这个矩阵?
谢谢!!
发表于 2010-11-7 17:59:06 | 显示全部楼层 来自 湖南湘潭
Simdroid开发平台
通常的fsolve函数难以解出这类方程,必须用到Analytic中的RootFinding等函数。

  1. g := (x, k) -> tanh(x)*x-k ;
  2. for k to 10 do
  3.   S1 := {k, RootFinding[Analytic](g(x, k), x, re = -.5 .. .5, im = 0 .. 100)};
  4.   #map(g,S1);
  5. end do
复制代码
方程根如下:
w from 1 to 10 by1
search region  0i~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}
回复 不支持

使用道具 举报

发表于 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://forum.simwe.com/thread-955804-2-1.html 24#
而通过RootFinding求解仅得出2个虚根。
  1. RootFinding[Analytic](tanh(x) x - 2, x, re = -0.5 .. 0.5,im = 0 .. 30)
复制代码
{2, 12.4065403639626*I, 15.5802941824244*I}

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-25 12:44 , Processed in 0.036940 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表