(求助)如何解如下形式的超越方程
最近几天碰到一个问题,一个复数形式的超越方程解不出来,希望论坛的各位朋友帮帮忙。函数形式:0.25 = i * x / sinh ( x )
上式中,未知数是x,i代表复数。根据文献,应该是有不止一个解。
MATLAB求解亦可。
万分感激。
(求助)如何求解如下超越方程,万分 感激。
最近几天碰到一个问题,一个复数形式的超越方程解不出来,希望论坛的各位朋友帮帮忙。函数形式:0.25 = i * x / sinh ( x )
上式中,未知数是x,i代表复数。根据文献,应该是有不止一个解。
最好是MATLAB求数值解,因为我数学方面的软件就学过这个。
本人是学激光的,第一次碰到这样的超越方程,不知道怎么解。希望得到高人指点,万分感激。
前几天发在另外一个区,但是久久未见回复。所以在这个区又发了一遍,希望版主手下留情,饶过我重复发帖的罪过。
:@) 嘿嘿,请高人来指点
回复 楼主 compaq0000 的帖子
期待高手路过!我只能帮忙顶一下,在复数 域的求解从来没有搞过 syms a b realx=a+i*b; ff=i*x/sinh(x)-0.25; ffr=real(ff); ffi=imag(ff);
sol=solve(ffr,ffi,'a','b');
zz=double(subs(x,{a,b},{sol.a,sol.b}))
i * zz / sinh(zz)
回复 板凳 ChaChing 的帖子
很好的 想法,但是不知道为什么,我这里运行的时候出错了。主任指导一下。谢谢哈,错误信息如下:
Warning: 1 equations in 3 variables. New variables might be introduced.
> In solve>mupadSolve at 203
In solve at 93
Warning: Explicit solution could not be found.
> In solve at 98
??? Error using ==> subsref
No appropriate method, property, or field a for class sym.
Error in ==> sym.subsref at 17
y = builtin('subsref',x,a);
回复 地板 无水1324 的帖子
3F是使用v5.3试的, 刚刚又试下2009a, 也没问题! 无水使用那版本?还有个人虽年长, 水平与LS无得比, 说指导太过, 大家互相讨论吧!
>> syms a b real
x=a+i*b; ff=i*x/sinh(x)-0.25; ffr=real(ff); ffi=imag(ff);
sol=solve(ffr,ffi,'a','b');
zz=double(subs(x,{a,b},{sol.a,sol.b}))
i * zz / sinh(zz)
zz =
7.4143e+000 -2.0731e+002i
ans =
0.2500 - 0.0000i 首先感谢大家对我的帮助,但是我发现楼上得到的结果和文献的结果出入挺大,所以把文献中这一部分的相关信息做了一个摘要,放在附件里面,希望对各位有用。
而且文献中点出了用数值计算(numerical evaluation)来求解该复超越方程(complex transcendental equation)。
各位再接再励啊:@) 刚才网速太慢,好像没发成功,补上附件如下 刚才附件好像没上传成功,再补一个。 汗, LZ的资料有看没看懂!:@L
不过早上也是怕算错, 有验证下i*zz/sinh(zz)是否为0.25!
我想需无水看看了:loveliness: 感谢楼上的 教研室主任
我的附件里面就是把文献中的一些数学方面的细节摘了出来。针对楼上教研室主任给出的那个解,我的两个问题是:第一,解应该不止一个;第二,主任给出的解虚部太大了,远超出附件中坐标的范围。
我当时自己做的时候,是使用 fsolve 函数,以 3-2*i 作为 fsolve 的迭代初值 x0 ,可以得到一个解为 3.4845±2.1177*i
(分别对应±0.25=i*x/sinh(x) ) ,然后代入到 x*coth(x)中,得到 3.4780±2.1217*i 。附件的图中,其实解应该是关于纵坐标对称的,但是原作者只保留了纵坐标右侧的解。上面的 3.4780±2.1217*i ,可以在 0.25 对应的虚折线和黑色实线的交点中看到。
另外,将上述的解 3.4845±2.1177*i 代入到 i*x/sinh(x) 中,得到的答案为 ±0.2500-0.0000*i ;而楼上主任的解 7.4143e+000 -2.0731e+002i 代入到 i*x/sinh(x) 中,得到的是 0.2500+0.0002*i 。
当然,并不是说我的解比楼上的好,只是我的信息比较多一点,毕竟原始文献在我手上。:@)
然后,最主要的问题就是,fsolve 这个函数,每次求解都要求输入初值,但是需要求出这么多解,还要画曲线,怎么可能一个一个初值手动输入呢?
我和大家一起努力,争取解决这个问题。文献是1971年贝尔电话实验室的一个人写的。1971年就能解决的问题,我相信现在我们也能解决,大家一起努力吧,一起多交流一下,一起进步。
非常感激:@)
回复 9楼 ChaChing 的帖子
ChaChing,您好,我送了朵花给您,收到没有。不知道您那天怎么得到的那个答案,我用相同的代码,得到的答案是图中可以找到的。那就证明方法没有错了。下一步,如何解决一个常数对应多个解的问题。
谢谢啦:@) 原帖由 compaq0000 于 2009-12-28 15:04 发表 http://www.chinavib.com/forum/images/common/back.gif
...不知道您那天怎么得到的那个答案...
5F
回复 12楼 ChaChing 的帖子
5F和3F的代码是一样的啊,我用的就是5F的代码。不知道是不是版本的问题,我实验室电脑用的是7.1,没用最新的版本。现在已经证明你的方法是正确的了,关键是怎样同时算出多于一个的根。
页:
[1]
2