huright 发表于 2006-4-24 10:40

高手看看这段程序,怎么不行啊?急啊?

function mainfun=mainfun()
R_e=input('请输入砂轮大端半径R_e:[直接回车表示R_e=200]\n ');
if isempty(R_e), R_e=200; end
p=input('请输入螺旋参数p:[直接回车表示p=3]\n ');
if isempty(p), p=3; end
angle_a0=input('请输入砂轮产型角:[直接回车表示angle_a0=pi/6]\n');
if isempty(angle_a0), angle_a0=pi/6; end
a=input('请输入中心距:[直接回车表示a=40]\n');
if isempty(a), a=40; end
m=input('请输入蜗杆模数:[直接回车表示m=10]\n');
if isempty(m), m=10; end
z=input('请输入蜗杆齿数:[直接回车表示z=4]\n');
if isempty(z), z=4; end
d1=input('请输入蜗杆分度圆直径:[直接回车表示d1=90]\n');
if isempty(d1), d1=90; end
angle_gama=m*z/d1, d_a=d1+2*m, d_f=d1-2.4*m
for r=d_f/2:0.002:d_a/2
   R=[]; fai=[];
   fun1=(a-R*cos(fai))^2+(R*sin(fai)*cos(angle_gama)-(R_e-R)*tan(angle_a0)*sin(angle_gama))^2-r^2
   fun2=(a+p*tan(angle_gama)*sin(fai)*tan(angle_a0)-((R_e-R)*tan(angle_a0)*tan(angle_a0)-R))*tan(angle_gama)*cos(fai)+(p-a*tan(angle_gama))
   s=slove('fun1=0','fun2=0','R','fai')
end

关键是解方程组的那段,这样写程序不可以。应该怎么写啊?

[ 本帖最后由 ChaChing 于 2010-3-8 15:02 编辑 ]

suffer 发表于 2006-4-24 20:44

回复:(huright)高手看看这段程序,怎么不行啊?急啊...

仔细看看帮助吧,solve里边的eq应该是怎么写的,帮助里有很多例子

huright 发表于 2006-5-6 17:37

这段程序涉及非线性方程组的求解问题。现在还没想出比嵌套二分法还有效的方法

happy 发表于 2006-5-7 21:28

回复:(huright)高手看看这段程序,怎么不行啊?急啊...

嵌套二分法只是求解非线性方程的一种常见方法之一<BR>对于非线性问题的求解并不是说那种方法最有效,只能说对某一个具体问题那种方法比较有效
页: [1]
查看完整版本: 高手看看这段程序,怎么不行啊?急啊?