我正试图解决这个超越方程式
x =((g * T ^ 2)/(2 * pi))* tanh(2 * pi * d / x)
哪里
g =重力常数(9.81 m / s ^ 2)
T =我的信号的périod
d =水深(m)
我想解决g,给定g,T和d的值。
这是Matlab在运行代码后发回给我的内容
g=9.81;
d=3;
t=100;
syms x
s='g*t*tanh(2*pi*d/x)-x=0';
-1*solve(s)
Warning: Explicit solution could not be found.
> In solve at 179
In Itteration at 6
ans =
[ empty sym ]
我写了-1 * solve(s)因为我想得到肯定答案,但这并不重要。我检查了关于超越方程的许多答案和问题,但我什么都没发现..但是,有一个答案与我有同样的问题:
how can I solve transcendental equation?
他得到了同样的''空sym''。我可以用代码中的g,T和d的数值来求解方程式,但是一旦我输入变量,它就会给出同样的错误。
帮助!!
FélixBlais
答案 0 :(得分:0)
我试过了:
s='9.81*100*tanh(2*pi*3/x)-x=0';
而不是
s='g*t*tanh(2*pi*d/x)-x=0';
哪个不起作用,没关系,但不知道为什么。
答案 1 :(得分:0)
我用fzero
做到了。我首先绘制了函数,以便近似从哪里开始查看。
g=9.81;
d=3;
t=100;
func=@(x)(g*t*tanh(2*pi*d*1./x)-x)
x0=fzero(func,-200); % find root
disp(x0) % x0 = -135.5475
disp(func(x0)) % func(x0)= -2.8422e-014
由于您的函数是反对称的,-x0 = 135.5475
也是一种解决方案。