好心人帮我看看这个程序的结果如何输出
这个程序是关于两条曲线求交点的,我能画出图来,但不知道交点的横坐标如何输出,请好心人指点一下,谢谢A=0.33*4/3*pi*(0.7e-3)^3/5e-9
h=1/20
r=0.7e-3
e=0.5
p=586.8
a=0.0001:0.01:1000;
y1=cot(a);
y2=(h*e*A*3)./(pi*4*r^3*a*p);
plot(a,y1,'r.'),axis()
axis normal, grid on,
hold on
plot(a,y2,'b.'),axis()
axis normal, grid on,
hold off
pause
j=1;
for i=1:0.00001:5
if abs(cot(i)-(h*e*A*3)/(pi*4*r^3*a*p))<1e-4
k(j)=i
j=j+1;
end
end
i=k
f=cot(i)-((h*e*A*3)./(pi*4*r^3*(i)*p))
[ 本帖最后由 ahqiu198357 于 2006-8-28 21:04 编辑 ] 参考http://forum.vibunion.com/forum/viewthread.php?tid=9707中的方法 不说怎么求交点,就你的代码说一下。
我觉得数组k里就是交点的横坐标,但是实际上我怀疑你的程序执行完后会不会有数组k。
因为if abs(cot(i)-(h*e*A*3)/(pi*4*r^3*a*p))<1e-4这句代码里(h*e*A*3)/(pi*4*r^3*a*p)是一个标量矩阵除一个横向量,维数是不对的。即使用点除恐怕也不行,因为cot(i)为标量,但另一个操作数是数组,那么运算后结果也是一个一维数组,也就是说if 语句的后面是一个数组,如果要执行k(j)=i j=j+1; 就要求这个数组里的元素全不为零,如果有一个元素为零则不会执行,显然这个数组里的元素不会同时都不为零。
另外你这个程序不需要用循环语句,下面的语句即可:
k=;
t=find(abs(cot(k)-(h*e*A*3)./(pi*4*r^3*k*p))<1e-4);
k(t) 即为横坐标。
再就,代码中不要对i、j赋值,特别是循环语句中容易像c语言一样用到i、j。因为matlab中i、j是代表虚单位,随意修改是不好的习惯。 恩
收获一些知识
谢谢你们
谢谢振动论坛
页:
[1]