杀千刀和挨千刀:请教matlab的解带参数的线性方程的方法

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/09 03:52:13
欲求sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d))=0的解
其中a,b,c,d,e,f为参数
想定义一个函数,只要调用它就可以求得解
我用z=solve(sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d)))
方法结果是零
想不通
高手指教,急!
先谢谢化学工程的回答
是不是说解不出来
rootof指方程的根的意思
那matlab不是和没说一样
还有其他解法吗

我定义了这么一个函数fc.m
function z=f(a,b,c,d,e,f)
syms x
z=fzero(sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d)),2000,[],a,b,c,d,e,f)
end
在command窗口定义
a=2.1e6
b=12.57
c=2.1e6
d=86.44
e=2254.5
f=2320.5
然后调用fc(a,b,c,d,e,f)提示错误
怎么办

有没有可能将fc和func写成一个函数,因为我要在vb里面调用

不是一般的非线性啊,我试了试,只好调用maple了。

clc;clear
syms x a b c d e f
fx='sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d))=0'

z=maple('solve',fx,'x')

运行结果:
fx =
sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d))=0

z=

RootOf(tan(_Z)*c*d-(c*d*a*b)^(1/2)*tan(e*(_Z^2/f^2*c*d/a/b)^(1/2)))^2/f^2*c*d, RootOf(tan(_Z)*c*d+(c*d*a*b)^(1/2)*tan(e*(_Z^2/f^2*c*d/a/b)^(1/2)))^2/f^2*c*d, 0

你知道RootOf和*_Z吗?见
http://zhidao.baidu.com/question/2558360.html

补充:
fzero的函数调用格式看help,我把它调试好了,x=19.7264
说明了尽管用maple得到了无用的解,如果能给出abcdef的具体值,还是可解的。

function fc
clc;clear
x0=1; %初值
x = fzero(@func,x0)

function z=func(x)
a=2.1e6;b=12.57;c=2.1e6;d=86.44;e=2254.5;f=2320.5 ;
z=sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d));

运行结果:
x =
19.7264