| 
那位老大会用matlab编程,看看下面这个怎么弄,wca221@163.com,不胜感激,谢谢
x
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。您需要 登录 才可以下载或查看,没有账号?我要加入 
  下面是我编的程序,帮忙看看,哪处错了?
 %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 编辑 ]
 |