Maybn 发表于 2011-6-16 12:49:48

maple解方程ch(x)cos(x)=1解的形式

现在求解方程cosh(x)*cos(x)-1=0;
solve(cosh(x)*cos(x)-1, x, allsolutions)
得到的解如图
RootOf(_Z-arccosh(1/cos(_Z))+2*arccosh(1/cos(_Z))*_B2-(2*I)*Pi*_Z2)
这个解的形式是怎么理解的,_Z怎么取
我现在想取前几个解的话,如何从maple给出的解表达式获得呢
期盼高手答疑,谢了

maplelab 发表于 2011-6-16 14:21:52

本帖最后由 maplelab 于 2011-6-16 14:59 编辑

超越方程一般不是用solve,
而是用fslove.
通过给定初值去搜索解.

比如:restart;
eq:=x->cosh(x)*cos(x)-1.0:
(p->(fsolve)(eq,p))~(
{
0.0,4.3,-4.3,7.8,-7.8
});


如果嫌初值设置麻烦,就用随机初值.
具体做法是确定一个合适的数值范围,然后以该范围内的一定数量的随机值作为
初值进行搜索,并合并给定误差限内的近似解.
这个方法当随机值达到适当规模时,可以得到稳定的解集.
不过,有时候有必要验证解的正确性.

对本题而言,

plot(eq,-8..8)
可知,有好几个解在范围-8..8之内.
因此可以做:
(p->(MmaTranslator@fsolve)(eq,p))~(
RandomTools(set(float(range=-8..8),50))
);

解为
0.000000
-7.853205
-4.730041
4.730041
7.853205

maplelab 发表于 2011-6-16 15:22:58

再比如
http://forum.simwe.com/thread-989561-1-1.html
的一个例子.
restart;
s:= 0.121;
p := 0.126;
v := 2.87;
P:=evalf(Pi);

f:=x->s/(x*sqrt(P)*exp(x^2)*erf(x)) + p/(v*x*sqrt(P)*exp(v^2*x^2)*erfc(v*x)) - 1.0;

(p->(MmaTranslator@fsolve)(f,p))~(
RandomTools(set(float(range=-1..1),10))
);


解集为:
-0.2367511667
+0.2661414185

Maybn 发表于 2011-6-16 16:15:13

版主热心人,多谢您的指导 2# maplelab

Maybn 发表于 2011-7-20 23:52:11

对于这个方程,教科书上有得出解的形式如图所示,不知道他们是怎么得出这种形式的解的,who knows? 3# maplelab

zsq-w 发表于 2011-7-29 10:10:12

6# Maybn
这个是级数解吧。

Maybn 发表于 2011-7-29 18:16:49

对啊,应该从级数解考虑。多谢zw提醒 7# zsq-w

TBE_Legend 发表于 2011-7-29 22:53:53

那解似乎不对。

Maybn 发表于 2011-7-30 07:53:28

本帖最后由 Maybn 于 2011-7-30 07:54 编辑

是错了,前两项。该是1.875,4.694 9# TBE_Legend
页: [1]
查看完整版本: maple解方程ch(x)cos(x)=1解的形式