心灯 发表于 2005-5-27 20:39

二分法matlab求解的程序 --给mm

发信人: zjliu (秋天的萝卜), 信区: Matlab
标 题: Re: 请教,这个方程怎么解
发信站: 哈工大紫丁香 (Fri May 27 20:01:33 2005), 转信
这是二分法求解的程序,结果x的值显示在figure上

function lushan
%
%
cos(alpha)=-3.8*w/sqrt((2.7*f)^2+(3.8w)^2);
%
cos(beta)=-2.7*f/sqrt((2.7*f)^2+(3.8w)^2);
% f=38+3.8*x*cos(alpha);
%
w=54+2.7*x*cos(beta);
% f*w-1140=0;
close
all
figure;
ezplot('2.7^2*f*(f-38)-3.8^2*w*(w-54)',[-1000,1000]);
p=get(gca,'Children');
set(p,'color','r');hold
on;
ezplot('w*f-1140',[-1000,1000]);
ha=gca;figure;copyobj(ha,gcf)
xlim([-60,40]);fl=10;fr=40;
W=solve('w*(w-54)-a=0','w');
while
abs(fl-fr)>1e-4;
f=(fl+fr)/2;
w1=1140/f;
a=2.7^2*f*(f-38)/3.8^2;
w2=subs(W(1),a);
if
w1>w2;
fl=f;
else
fr=f;
end
w=(w1+w2)/2;
end
text(f-25,w+300,
['(w=',num2str(w),',f=',num2str(f),')']);
alphaa=-3.8*w/sqrt((2.7*f)^2+(3.8*w)^2);
x=(f-38)
/(3.8*cos(cos(alphaa)));
text(f-25,w+200,['解一:
x=',num2str(f)],'fontsize',16,...
'color','r');
plot(f,w,'*');plot(f,w,'s');
%%%%%%%%%%%
第二个解
fl=-60;fr=-30;
W=solve('w*(w-54)-a=0','w');< BR>while
abs(fl-fr)>1e-4;
f=(fl+fr)/2;
w1=1140/f;
a=2.7^2*f*(f-38)/3.8^2;
w2=subs(W(2),a);
if
w1>w2;
fl=f;
else
fr=f;
end
w=(w1+w2)/2;
end
text(-50,-200,
['(w=',num2str(w),',f=',num2str(f),')']);
alphaa=-3.8*w/sqrt((2.7*f)^2+(3.8*w)^2);
x=(f-38)
/(3.8*cos(cos(alphaa)));
text(-50,-400,['解二:
x=',num2str(f)],'fontsize',16,...
'color','r');
plot(f,w,'*');plot(f,w,'s');

zjliu 发表于 2005-5-31 17:46

心灯抢我的程序,kick
给哪个mm阿?

luckyfox 发表于 2005-5-31 18:33

上传两篇模态的文章供大家参考

哈,上面不已经注明你的信息了么?:)
你声明不能转载了么?帮你宣传一下,没让你请客就是好的了。

ChaChing 发表于 2011-11-12 12:22

1F的程序好像没转贴好
无权编辑, 有权的人帮忙编辑1F下, 再删此帖!function zza
%
% cos(alpha)=-3.8*w/sqrt((2.7*f)^2+(3.8*w)^2);
% cos(beta)=-2.7*f/sqrt((2.7*f)^2+(3.8*w)^2);
% f=38+3.8*x*cos(alpha);
% w=54+2.7*x*cos(beta);
% f*w-1140=0;
close all; figure;
ezplot('2.7^2*f*(f-38)-3.8^2*w*(w-54)',[-1000,1000]);
p=get(gca,'Children'); set(p,'color','r'); hold on;
ezplot('w*f-1140',[-1000,1000]);
ha=gca; figure; copyobj(ha,gcf)
xlim([-60,40]); fl=10; fr=40;
W=solve('w*(w-54)-a=0','w');
while abs(fl-fr)>1e-4
   f=(fl+fr)/2; w1=1140/f; a=2.7^2*f*(f-38)/3.8^2; w2=subs(W(1),a);
   if w1>w2, fl=f; else fr=f; end
   w=(w1+w2)/2;
end
text(f-25,w+300, ['(w=',num2str(w),',f=',num2str(f),')']);
alphaa=-3.8*w/sqrt((2.7*f)^2+(3.8*w)^2);
x=(f-38)/(3.8*cos(cos(alphaa)));
text(f-25,w+200,['解一: x=',num2str(f)],'fontsize',16,'color','r');
plot(f,w,'*');plot(f,w,'s');
%%%%%%%%%%% 第二个解
fl=-60; fr=-30;
W=solve('w*(w-54)-a=0','w');
while abs(fl-fr)>1e-4,
   f=(fl+fr)/2; w1=1140/f; a=2.7^2*f*(f-38)/3.8^2; w2=subs(W(2),a);
   if w1>w2, fl=f; else fr=f; end
   w=(w1+w2)/2;
end
text(-50,-200, ['(w=',num2str(w),',f=',num2str(f),')']);
alphaa=-3.8*w/sqrt((2.7*f)^2+(3.8*w)^2);
x=(f-38)/(3.8*cos(cos(alphaa)));
text(-50,-400,['解二: x=',num2str(f)],'fontsize',16,'color','r');
plot(f,w,'*');plot(f,w,'s');
页: [1]
查看完整版本: 二分法matlab求解的程序 --给mm