主题:求助超越方程组的解法
小妮妮1
[专家分:0] 发布于 2007-07-18 09:42:00
请问各位高手,下面的这个超越方程组能否用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个回复)
沙发
Guassfans [专家分:4090] 发布于 2007-07-18 22:48:00
solve
不会用查帮助
>> help fsolve
板凳
hubinwi [专家分:140] 发布于 2007-07-18 22:52:00
一种办法:
生成这个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 楼
小妮妮1 [专家分:0] 发布于 2007-07-27 10:38:00
谢谢!
4 楼
qibbxxt [专家分:350] 发布于 2007-07-27 15:59:00
这个你可以用最小二乘法的
regress
5 楼
hubinwi [专家分:140] 发布于 2007-07-27 22:43:00
en ...其实我那么一妥东西就是REGRESS的算法了吧...
现在又知道个新FUNCTION..感谢.
6 楼
小妮妮1 [专家分:0] 发布于 2007-08-08 19:09:00
我用fsolve函数解出来的解,怎么和文献上的有差距,能是什么原因呢?
7 楼
sjohn [专家分:5600] 发布于 2007-08-09 10:52:00
方程和解都有了,你可以验算
8 楼
小妮妮1 [专家分:0] 发布于 2007-08-10 21:33:00
怎么演算,能说的详细点么,我是一个初学者!
9 楼
sjohn [专家分:5600] 发布于 2007-08-12 15:46:00
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 楼
小妮妮1 [专家分:0] 发布于 2007-08-23 21:30:00
我就是把文献上的解作为初值得,就是得不到文献上的解,真得很困扰,想好久了,exitflag有时值为负值,请高手明示!!万分感谢!!!
我来回复