注册 登录
编程论坛 Matlab

求助:过来帮小弟看看

hpl05 发布于 2008-05-21 20:06, 592 次点击
请高手指点一下,matlab中输入这样一段代码
u=168.2/180*pi;
p=39.63/180*pi;
xa=-76.5;
ya=-2.7;
xc=-3.6;yc=-14;
xd=-6;yd=-15;xb=-45.7;yb=-6.7;
AB=31.1;AC=42.0;BD=40.6;CD=30.0;
k=178.1/180*pi;
g=u:-0.2:p;
CBi=sqrt(BD^2+CD^2-2*CD*BD*cos(k-g));
s=acos((AC^2+CBi.^2-AB^2)./(2*AC*CBi))+asin((yd-yc+BD*sin(g))/CBi);

输入g输出结果为

g =

  Columns 1 through 8

    2.9356    2.7356    2.5356    2.3356    2.1356    1.9356    1.7356    1.5356

  Columns 9 through 12

    1.3356    1.1356    0.9356    0.7356


输入CBi输出结果为

CBi =

  Columns 1 through 8

   12.1915   16.7235   22.3866   28.3595   34.3059   40.0525   45.4880   50.5293

  Columns 9 through 12

   55.1096   59.1730   62.6724   65.5684


然后输入S,输出结果为

s =

  Columns 1 through 8

    1.1269    1.4301    1.5413    1.5661    1.5487    1.5085    1.4550    1.3935

  Columns 9 through 12

    1.3273    1.2585    1.1892    1.1215



我的理解是s结果中1.4301是在g中以2.7356代入计算后求得CBi中的16.7235再代入公式,通过matlab求出来

的,不知道对否?

但是如果是这样的话,小弟将2.7356直接以数值代入CBi计算公式中,即
CBi=sqrt(BD^2+CD^2-2*CD*BD*cos(k-2.7356));
这样输入CBi后,输出结果为16.7246

跟之前的16.7235接近,无法看出问题,暂且放着,但是当我把16.7235代入s计算公式中,即
s=acos((AC^2+16.7235^2-AB^2)./(2*AC*16.7235))+asin((yd-yc+BD*sin(2.7356))/16.7235);
这样输入s后,输出结果为1.8152,这与1.4301差别可是比较大的 ,小弟就搞不明白,望高手指教。
3 回复
#2
hitzhang2008-05-24 14:25
s=acos((AC^2+CBi.^2-AB^2)./(2*AC*CBi))+asin((yd-yc+BD*sin(g))/CBi);
改成
s=acos((AC^2+CBi.^2-AB^2)./(2*AC*CBi))+asin((yd-yc+BD*sin(g))./CBi);
#3
hpl052008-05-25 18:56
谢谢hitzhang,用你方法一试,就可以了,谢谢,小弟想问一下,为什么这样改
#4
hitzhang2008-05-26 09:40
g和CBi是矩阵,你要的是矩阵中的元素对应相除,所以用
./
而不是
/
1