回 帖 发 新 帖 刷新版面

主题:求助超越方程组的解法

请问各位高手,下面的这个超越方程组能否用matlab求解,用什么函数解?其中sx1和sx2是未知数。
sx1=qs/(2*sqrt(qs^2+4*js*sx1+je*sx2)*tanh(sqrt(qs^2+4*js*sx1+je*sx2)/(2*k*t))
sx2=q/(2*sqrt(q^2+4*sx2+2*je*sx1)*tanh(sqrt(q^2+4*sx2+2*je*sx1)/(2*k*t))

回复列表 (共20个回复)

沙发

solve
不会用查帮助
>> help fsolve

板凳

一种办法:

生成这个MFILE:
function F = myfun(sx)
F = [qs/(2*sqrt(qs^2+4*js*sx1+je*sx2)*tanh(sqrt(qs^2+4*js*sx1+je*sx2)/(2*k*t)))-sx(1);
      q/(2*sqrt(q^2+4*sx2+2*je*sx1)*tanh(sqrt(q^2+4*sx2+2*je*sx1)/(2*k*t)))-sx(2)];

然后
x0=[-5; -5];     %猜一个方程组的解作为初始值     
[x,fval] = fsolve(@myfun,x0,options)

不知道管不管用,还有你的两个方程里好像少了个后括号

3 楼

谢谢!

4 楼

这个你可以用最小二乘法的
regress

5 楼

en ...其实我那么一妥东西就是REGRESS的算法了吧...
现在又知道个新FUNCTION..感谢.

6 楼


我用fsolve函数解出来的解,怎么和文献上的有差距,能是什么原因呢?

7 楼

方程和解都有了,你可以验算

8 楼


怎么演算,能说的详细点么,我是一个初学者!

9 楼

6楼说的其实是说你按fsolve算出来的解,和文献给出的解想比较,你的解虽然数值上能满足原来的方程,但是和原来文献值得到的解还不是同一个,对吧?

其实是方程存在多个解的原因。在fsolve中,输入参数可以包含一个给定的初值,你可以把文献里的解或者它的邻域中一点作为初值,再让Matlab用fsolve计算,那么得到的解就应该一致了。

其实你要解决的,只是对方程多解现象的解释。

f(x)=0 这样一个方程,看成f=f(x)这样一个函数,它与x轴的交点,也就是函数的零点、方程的解,可能会有多个,你给定x的一个范围,把这个f画出来看看就知道了。

比如sin(x)=0,你就画y=sin(x), x=[0,4pi]的曲线看看,发现图像有好多个过零点,比如0,pi,2pi,3pi,4pi

10 楼


我就是把文献上的解作为初值得,就是得不到文献上的解,真得很困扰,想好久了,exitflag有时值为负值,请高手明示!!万分感谢!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册