马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
那位老大会用matlab编程,看看下面这个怎么弄,wca221@163.com,不胜感激,谢谢
下面是我编的程序,帮忙看看,哪处错了?
%f=input('Please Enter f=');
syms x;
f=0.4;
x1=0.01;
x2=0.002;
g=10;
pii=3.1415926;
mome_v=0;
for w=21:100
%to get fik
fy=8*x2*w*w*(sin(x)+x1/16/x2)^2 - 4*x2*w*w - x1*x1*w*w/32/x2-f*g;
fy=subs(fy);
fik=solve(fy,'x');
fik=subs(fik);
fik=fik(1)*isreal(fik(1))+fik(2)*isreal(fik(2));
time=10;
first=1;
while(first==1 | time>0 & fie>2*pii+fik)
first=0;
time=time-1;
%to get fim
fy=-w*x1*(cos(x)-cos(fik))-2*w*x2*(sin(2*x)-sin(2*fik))-f*g/w*(x-fik);
fy=subs(fy);
fim=solve(fy,'x');
fim=subs(fim);
fim=fim(1)*isreal(fim(1))+fim(2)*isreal(fim(2));
if(8*x2*w*w*(sin(fim)+x1/16/x2)^2 - 4*x2*w*w - x1*x1*w*w/32/x2>-f*g)
%to get fiq
fy=8*x2*w*w*(sin(x)+x1/16/x2)^2 - 4*x2*w*w - x1*x1*w*w/32/x2+f*g;
fy=subs(fy);
fiq=solve(fy,'x');
fiq=subs(fiq);
fiq=fiq(1)*(fiq(1)<0)+fiq(2)*(fiq(2)<0)+2*pi;
else
fiq=fim;
%to get fie
fy=-w*x1*(cos(x)-cos(fiq))-2*w*x2*(sin(2*x)-sin(2*fiq))+f*g/w*(x-fiq);
fy=subs(fy);
fie=solve(fy,'x');
fie=subs(fie);
fie=fie(1)*isreal(fie(1))+fie(2)*isreal(fie(2));
end
%break;
fik=fie-2*pi;
end
w
k=fik*180/3.1415926
m=fim*180/3.1415926
q=fiq*180/3.1415926
e=fie*180/3.1415926
vk=0.5/pii*( -w*x1*(sin(fim)-sin(fik))+w*x1*(fim-fik)*cos(fik)+w*x2*(cos(2*fim)-cos(2*fik)) + 2*w*x2*(fim-fik)*sin(2*fik)-f*g*(fim-fik)*(fim-fik)/2/w )
vq=0.5/pii*( -w*x1*(sin(fie)-sin(fiq))+w*x1*(fie-fiq)*cos(fiq)+w*x2*(cos(2*fie)-cos(2*fiq)) + 2*w*x2*(fie-fiq)*sin(2*fiq)+f*g*(fie-fiq)*(fie-fiq)/2/w )
v=vk+vq
if(v>mome_v)
mome_v=v;
mome_w=w;
end
end
mome_v
mome_w
要求
w取20--100,f=0.4,g=10, x1=0.01,x2=0.002
(1)由方程 w*w*x1*sin(fik)-4*w*w*x2*cos(2*fik)-f*g=0
求出 fik
(2)再由方程 -w*x1*(cos(fim)-cos(fik))-2*w*x2*(sin(2*fim)-sin(2*fik))-f*g(fim-fik)/w=0
求出 fim
(3)然后 当 -8*x2*w*w*(sin(fik)+x1/16/x2)*(sin(fik)+x1/16/x2)+4*x2*w*w+x1*x1*w*w/32/x2-f*g〈0 时
由方程 w*w*x1*sin(fiq)-4*w*w*x2*cos(2*fiq)+f*g=0
求出 fiq 且 fiq=fiq+2pi
如果-8*x2*w*w*(sin(fik)+x1/16/x2)*(sin(fik)+x1/16/x2)+4*x2*w*w+x1*x1*w*w/32/x2-f*g〈0 时
fiq=fim
(4)然后 由方程 -w*x1*(cos(fim)-cos(fik))-2*w*x2*(sin(2*fim)-sin(2*fik))+f*g(fim-fik)/w=0
求出 fie
(5)如果 fie>2*pi+fik
则 令 fik=fie-2*pi
然后 重复(2)-----(4) 10次
如果 fie<2*pi+fik
则 返回数据
(6) vk=0.5/pi*( -w*x1*(sin(fim)-sin(fik))+w*x1*(fim-fik)*cos(fik)+w*x2*(cos(2*fim)-cos(2*fik)) + 2*w*x2*(fim-fik)*sin(2*fik)-f*g*(fim-fik)*(fim-fik)/2/w )
vq=0.5/pi*( -w*x1*(sin(fie)-sin(fiq))+w*x1*(fie-fiq)*cos(fiq)+w*x2*(cos(2*fie)-cos(2*fiq)) + 2*w*x2*(fie-fiq)*sin(2*fiq)+f*g*(fie-fiq)*(fie-fiq)/2/w )
v=vk+vq
最后要得到一系列 fik fim fiq fie 以及vk,vq ,v
其中fik fim fiq fie 都是实数,且fik<pi/2,fiq<2*pi
[ 本帖最后由 xinyuxf 于 2007-5-21 14:58 编辑 ] |