声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2065|回复: 8

[编程技巧] 求教高手这个非线形方程组怎么解

[复制链接]
发表于 2007-5-24 19:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我想用迭代法求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*[cot(dec)*cot(doc)+csc(dec)*csc(doc)]}/{2*[zoe*csc(dec)-zoo*csc(doc)]}+z0/tan[pi*fc/(2*f0)]=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 呢,这个程序有什么错误,我是新手哈
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-5-24 19:52 | 显示全部楼层
我把常量输进去,然后用这个命令解:
[w,l]=fsolve('w_l',[1.982,2.884],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 就是倒数第四个式子。
 楼主| 发表于 2007-5-24 19:55 | 显示全部楼层
对了。给出w 和 l的初值分别是1.982,2.884
发表于 2007-5-24 20:06 | 显示全部楼层
原帖由 rellaxe 于 2007-5-24 19:52 发表
我把常量输进去,然后用这个命令解:
[w,l]=fsolve('w_l',[1.982,2.884],optimset('display','off']))
出现错误:
??? Error: File: D:\software\matlab6\work\w_l.m Line: 39 Column: 101
Missing operato ...


matlab 的语法不允许 { 开头,如果是接着上一句,则需要在上一句句末添加...
 楼主| 发表于 2007-5-24 20:56 | 显示全部楼层
谢谢楼上的哈.可是我改成小括号也不行啊~~
 楼主| 发表于 2007-5-24 20:59 | 显示全部楼层
改了之后还是这个命令:
[w,l]=fsolve('w_l',[1.982,2.884],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{:});
发表于 2007-5-24 21:02 | 显示全部楼层
原帖由 rellaxe 于 2007-5-24 20:59 发表
改了之后还是这个命令:
[w,l]=fsolve('w_l',[1.982,2.884],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 这种语句根本不合法
 楼主| 发表于 2007-5-24 21:13 | 显示全部楼层
原帖由 eight 于 2007-5-24 21:02 发表


看看基础书吧,(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哈
发表于 2007-5-24 21:31 | 显示全部楼层
原帖由 rellaxe 于 2007-5-24 21:13 发表

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



如果是求解方程的问题,建议看看本版的帖子,有很多讨论,特别是 xjzuo 版主的回复,我对这类问题不在行
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 05:23 , Processed in 0.060567 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表