编写一个matlab程序,但是算出了的结果不是一个数值,而是一大堆算式……具体程序如下

i%给圆心(a,b)返回安全系数K
function output=damnk(a,b)
syms cita h r c gama fi n i Tn Rn jiajiao l z n1
cita=50;
h=50;
c=20;
gama=18;
fi=35;
n=10;
r=(a^2+b^2)^(1/2);

n1=(a+(r^2-(h-b)^2)^(1/2))/n;

i=1;
Tn=0;
Rn=0;
while(i<=n)
Ri=int('(x*tand(cita)+0-b+(r^2-(x-a)^2)^(1/2))*(r^2-(x-a)^2)^(1/2)/r','x',(i-1)*n1,i*n1);
Ti=int('x*tand(cita)+0-b+(r^2-(x-a)^2)^(1/2)','x',(i-1)*n1,i*n1);
Rn=Rn+Ri;
Tn=Tn+Ti;
i=i+1;
end

jiajiao=acosd(dot([0-a,0-b],[(a+(r^2-(h-b)^2)^(1/2))-a,h-b])/(norm([0-a,0-b])*norm([0-a,h-b])));

l=2*pi*r*(jiajiao/360);

z=(Rn*tand(fi)+c*l/gama)/Tn;

output=z;

%给圆心(a,b)返回安全系数K
function output=damnk(a,b)

cita=50;
h=50;
c=20;
gama=18;
fi=35;
n=10;
r=(a^2+b^2)^(1/2);

n1=(a+(r^2-(h-b)^2)^(1/2))/n;

i=1;
Tn=0;
Rn=0;
while(i<=n)
Ri=quad(@(x)(x*tand(cita)+0-b+(r^2-(x-a).^2).^(1/2)).*(r^2-(x-a).^2).^(1/2)/r,(i-1)*n1,i*n1);
Ti=quad(@(x) x*tand(cita)+0-b+(r^2-(x-a).^2).^(1/2),(i-1)*n1,i*n1);
Rn=Rn+Ri;
Tn=Tn+Ti;
i=i+1;
end

jiajiao=acosd(dot([0-a,0-b],[(a+(r^2-(h-b)^2)^(1/2))-a,h-b])/(norm([0-a,0-b])*norm([0-a,h-b])));

l=2*pi*r*(jiajiao/360);

z=(Rn*tand(fi)+c*l/gama)/Tn;

output=z;

但是你的(r^2-(h-b)^2)^(1/2)这项巨容易成为虚数,注意参数a,b的选择
其次,你要算出个数,怎么能用符号计算呢。。。 一般直接数值积分~有些可以先符号再赋值计算,这里貌似不是很好~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-28
%给圆心(a,b)返回安全系数K
function output=damnk(a,b)

cita=50;
h=50;
c=20;
gama=18;
fi=35;
n=10;
r=(a^2+b^2)^(1/2);

n1=(a+(r^2-(h-b)^2)^(1/2))/n;

i=1;
Tn=0;
Rn=0;
while(i<=n)
Ri=quad(@(x)(x*tand(cita)+0-b+(r^2-(x-a).^2).^(1/2)).*(r^2-(x-a).^2).^(1/2)/r,(i-1)*n1,i*n1);
Ti=quad(@(x) x*tand(cita)+0-b+(r^2-(x-a).^2).^(1/2),(i-1)*n1,i*n1);
Rn=Rn+Ri;
Tn=Tn+Ti;
i=i+1;
end

jiajiao=acosd(dot([0-a,0-b],[(a+(r^2-(h-b)^2)^(1/2))-a,h-b])/(norm([0-a,0-b])*norm([0-a,h-b])));

l=2*pi*r*(jiajiao/360);

z=(Rn*tand(fi)+c*l/gama)/Tn;

output=z;

但是你的(r^2-(h-b)^2)^(1/2)这项巨容易成为虚数,注意参数a,b的选择
其次,你要算出个数,怎么能用符号计算呢。。。 一般直接数值积分~有些可以先符号再赋值计算,这里貌似不是很好~ 赞同0| 评论 2011-10-28 20:33 li771089961 | 一级
unction output=damnk(a,b)
syms cita h r c gama fi n i Tn Rn jiajiao l z n1
cita=50;
h=50;
c=20;
gama=18;
fi=35;
n=10;
r=(a^2+b^2)^(1/2);

n1=(a+(r^2-(h-b)^2)^(1/2))/n;

i=1;
Tn=0;
Rn=0;
while(i<=n)
Ri=int('(x*tand(cita)+0-b+(r^2-(x-a)^2)^(1/2))*(r^2-(x-a)^2)^(1/2)/r','x',(i-1)*n1,i*n1);
Ti=int('x*tand(cita)+0-b+(r^2-(x-a)^2)^(1/2)','x',(i-1)*n1,i*n1);
Rn=Rn+Ri;
Tn=Tn+Ti;
i=i+1;
end

jiajiao=acosd(dot([0-a,0-b],[(a+(r^2-(h-b)^2)^(1/2))-a,h-b])/(norm([0-a,0-b])*norm([0-a,h-b])));

l=2*pi*r*(jiajiao/360);

z=(Rn*tand(fi)+c*l/gama)/Tn;

output=z;
第2个回答  2011-11-08
1.多台主机同时上线的问题,可以使用反连接方式!网上有相关的远程控制源代码,可以参考一下
2.打开对方主机摄像头,一台和多台的方式一样,很简单,可是传输速度和效果有待研究.关于打开对方已占用的摄像头,这个问题没有研究过.很早以前搞过一段时间远程控制.已经很久没弄过了本回答被提问者采纳
第3个回答  2011-10-28
unction output=damnk(a,b)
syms cita h r c gama fi n i Tn Rn jiajiao l z n1
cita=50;
h=50;
c=20;
gama=18;
fi=35;
n=10;
r=(a^2+b^2)^(1/2);

n1=(a+(r^2-(h-b)^2)^(1/2))/n;

i=1;
Tn=0;
Rn=0;
while(i<=n)
Ri=int('(x*tand(cita)+0-b+(r^2-(x-a)^2)^(1/2))*(r^2-(x-a)^2)^(1/2)/r','x',(i-1)*n1,i*n1);
Ti=int('x*tand(cita)+0-b+(r^2-(x-a)^2)^(1/2)','x',(i-1)*n1,i*n1);
Rn=Rn+Ri;
Tn=Tn+Ti;
i=i+1;
end

jiajiao=acosd(dot([0-a,0-b],[(a+(r^2-(h-b)^2)^(1/2))-a,h-b])/(norm([0-a,0-b])*norm([0-a,h-b])));

l=2*pi*r*(jiajiao/360);

z=(Rn*tand(fi)+c*l/gama)/Tn;

output=z;