rellaxe 发表于 2007-5-24 19:50

求教高手这个非线形方程组怎么解

我想用迭代法求w 和 l ,fc=2,f0=6,z0=32.62,n0=120*pi,zg=47,er=2.22,b=3,s=0.127
程序如下:
function xuanzhixian=w_l(w,l)
fc=2,f0=6,z0=32.62,n0=120*pi,zg=47,er=2.22,b=3,s=0.127
ss=s/er^0.5
bb=b-ss*(1-1/er^0.5)
d=ss/bb
cfo=(log(1/(1-d))+d/(1-d)*log(1/d))/(d*pi)
cfe=0.4413+d*cfo
z00=60*log(3*s/w+((s/w)^2+1)^0.5)
p2=270*(1-tanh(0.28+1.2*((b-s)/s)^0.5))
p1=1-1/(tanh(0.48*(2*w/s-1)^0.5/(1+(b-s)/s)^2))
if w/s<=0.5
    zo=p2
else
    zo=p2*p1
end
zooa=z00-zo
k=tanh(293.9*d/zooa)
k1=(1-k^2)^0.5
if k^2<=0.5
    k2=pi/log(2*(1+k1^0.5)/(1-k1^0.5))
else
k2=log(2*(1+k^0.5)/(1-k^0.5))/pi
end
zoea=60*pi/k2
a1=(0.8145-0.05824*log(s/b))^8
b1=(0.7581-0.07143*log(s/b))^8
qc=tanh(1.043+0.121*(b-s)/s-1.164*s/(b-s))
u=2*w/ss
ber=0.564*((er-0.9)/(er+3))^0.053
au=1+log((u^4+(u/52)^2)/(u^4+0.432))/49+log(1+(u/18.1)^3)/18.7
qoo=(1+5*s/w)^(-au*ber)
q1=qoo*qc
eee=(1+s/b*(a1-b1*log(w/b))*(er^0.5-1))^2
zoe=zoea/eee^0.5
eeo=0.5*(er+1)+0.5*q1*(er-1)
zoo=zooa/eeo^0.5
dec=2*pi*fc/300*(1+w*cfe*zoe/n0/eee^0.5)*eee^0.5
doc=2*pi*fc/300*(1+w*cfo*zoo/n0/eeo^0.5)*eeo^0.5
{zoe^2+zoo^2-2*zoe*zoo*}/{2*}+z0/tan=0
deo=2*pi*f0/300*(1+w*cfe*zoe/n0/eee^0.5)*eee^0.5
doo=2*pi*f0/300*(1+w*cfo*zoo/n0/eeo^0.5)*eeo^0.5
(zoe^2+zoo^2-2*zoe*zoo*(cot(deo)*cot(doo)+csc(deo)*csc(doo)))/(2*(zoe*csc(deo)-zoo*csc(doo)))-2*zg^2/(zoe*csc(deo)-zoo*csc(doo))=0
怎么可以解出w和 l 呢,这个程序有什么错误,我是新手哈

rellaxe 发表于 2007-5-24 19:52

我把常量输进去,然后用这个命令解:
=fsolve('w_l',,optimset('display','off']))
出现错误:
??? Error: File: D:\software\matlab6\work\w_l.m Line: 39 Column: 101
Missing operator, comma, or semicolon.

Error in ==> D:\software\matlab6\toolbox\optim\fsolve.m
On line 162==>       fuser = feval(funfcn{3},x,varargin{:});
Line: 39 就是倒数第四个式子。

rellaxe 发表于 2007-5-24 19:55

对了。给出w 和 l的初值分别是1.982,2.884

eight 发表于 2007-5-24 20:06

原帖由 rellaxe 于 2007-5-24 19:52 发表 http://www.chinavib.com/forum/images/common/back.gif
我把常量输进去,然后用这个命令解:
=fsolve('w_l',,optimset('display','off']))
出现错误:
??? Error: File: D:\software\matlab6\work\w_l.m Line: 39 Column: 101
Missing operato ...

matlab 的语法不允许 { 开头,如果是接着上一句,则需要在上一句句末添加...

rellaxe 发表于 2007-5-24 20:56

谢谢楼上的哈.可是我改成小括号也不行啊~~

rellaxe 发表于 2007-5-24 20:59

改了之后还是这个命令:
=fsolve('w_l',,optimset('display','off'))
??? Error: File: D:\software\matlab6\work\w_l.m Line: 42 Column: 129
Missing operator, comma, or semicolon.

Error in ==> D:\software\matlab6\toolbox\optim\fsolve.m
On line 162==>       fuser = feval(funfcn{3},x,varargin{:});

eight 发表于 2007-5-24 21:02

原帖由 rellaxe 于 2007-5-24 20:59 发表 http://www.chinavib.com/forum/images/common/back.gif
改了之后还是这个命令:
=fsolve('w_l',,optimset('display','off'))
??? Error: File: D:\software\matlab6\work\w_l.m Line: 42 Column: 129
Missing operator, comma, or semicolon.

...

看看基础书吧,(zoe^2+zoo^2-2*zoe*zoo*(cot(deo)*cot(doo)+csc(deo)*csc(doo)))/(2*(zoe*csc(deo)-zoo*csc(doo)))-2*zg^2/(zoe*csc(deo)-zoo*csc(doo))=0 这种语句根本不合法

rellaxe 发表于 2007-5-24 21:13

原帖由 eight 于 2007-5-24 21:02 发表 http://www.chinavib.com/forum/images/common/back.gif


看看基础书吧,(zoe^2+zoo^2-2*zoe*zoo*(cot(deo)*cot(doo)+csc(deo)*csc(doo)))/(2*(zoe*csc(deo)-zoo*csc(doo)))-2*zg^2/(zoe*csc(deo)-zoo*csc(doo))=0 这种语句根本不合法
那我的那个命令合法么??思路对不对呢~我刚开始学..谢谢EIGHT哈

eight 发表于 2007-5-24 21:31

原帖由 rellaxe 于 2007-5-24 21:13 发表 http://www.chinavib.com/forum/images/common/back.gif

那我的那个命令合法么??思路对不对呢~我刚开始学..谢谢EIGHT哈


如果是求解方程的问题,建议看看本版的帖子,有很多讨论,特别是 xjzuo 版主的回复,我对这类问题不在行
页: [1]
查看完整版本: 求教高手这个非线形方程组怎么解