Matlab 求解给定变量的超越方程?
我试图解这个超越方程 x=((g*T^2)/(2*pi))*tanh(2*pi*d/x) 在哪里 g=重力常数(9.81 m/s^2) T=我的信号周期 d=水深(m) 对于给定的g,T和d,我想解x 这是Matlab在运行代码后发给我的Matlab 求解给定变量的超越方程?,matlab,Matlab,我试图解这个超越方程 x=((g*T^2)/(2*pi))*tanh(2*pi*d/x) 在哪里 g=重力常数(9.81 m/s^2) T=我的信号周期 d=水深(m) 对于给定的g,T和d,我想解x 这是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 n
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)是因为我想要肯定的答案,但这并不重要。我查了很多关于超越方程的答案和问题,但什么也没找到。。但是,有一个答案与我的问题相同:
他得到了和我一样的“空符号”。我可以在代码中用g、T和d的数值来解方程,但一旦我放入变量,它就会给我同样的错误
救命
费利克斯·布莱斯我试过这个:
s='9.81*100*tanh(2*pi*3/x)-x=0'代码>
而不是
s='g*t*tanh(2*pi*d/x)-x=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
也是一个解决方案。是的,这正是我昨天所做的,而且很有效!(对不起,我忘了放解决方案,但看起来是你为我做的:P)非常感谢,老兄!d=3t=100f=@(x)9.81*周期^2*tanh(2*pi*深度/x)-x;z=f0(f,150);零=绝对值(z);看看“tchnvkng”的答案,我也做了同样的事情,它成功了!