找回密码
 注册
Simdroid-非首页
查看: 85|回复: 10

这个β怎么求?

[复制链接]
发表于 2009-4-12 15:08:04 | 显示全部楼层 |阅读模式 来自 甘肃兰州
β的值,tan(β)=d(y)/d(x)=--a/bctg(φ);
我用反正切函数直接求,fai从0到2π但是会出现无定义点,所以我想用求反正弦代替求反正切,sin(β)=dy/sqrt(dy^2+dx^2);可以么?
function beita=beita(xg,yg)
xg=a*cos(fai);
yg=b*sin(fai);
dx=diff(xg,'fai');
dy=diff(yg,'fai');
beita=asin(dy/sqrt(dy^2+dx^2));
这是我编的一个函数,可以么?
发表于 2009-4-12 17:45:50 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
你这个公式怎么倒出来的呀?没看懂
回复 不支持

使用道具 举报

 楼主| 发表于 2009-4-12 18:51:23 | 显示全部楼层 来自 甘肃兰州
tan(β)=d(y)/d(x)=--a/bctg(φ)这个公式就是我已知的一个条件,你就按这么算就行
回复 不支持

使用道具 举报

发表于 2009-4-12 19:26:22 | 显示全部楼层 来自 浙江杭州
我是说没明白sin(β)=dy/sqrt(dy^2+dx^2);怎么推倒出来的,算了,现在我明白怎么推倒出来的了。

觉得你直接用tan(β)=--a/bctg(φ)这个关系就可以

在matlab上试了一下,tan(pi/2)=1.633123935319537e+016,因为是数值计算,不会那么精确正好取在无意义的点上。

而且,正好取在无意义点上,也可以算,其实在matlab中,tan(pi/2)并非无意义,而是取值为无穷大,matlab中可以用Inf表示无穷大。试了一下atan(Inf)
ans =

   1.57079632679490
回复 不支持

使用道具 举报

 楼主| 发表于 2009-4-12 20:52:31 | 显示全部楼层 来自 甘肃兰州
因为我要算0到2π之间的间隔很小的值,所以一开始算的时候总提示出现奇点,我先试一试
回复 不支持

使用道具 举报

 楼主| 发表于 2009-4-12 20:54:54 | 显示全部楼层 来自 甘肃兰州
对了,我是根据三角形,直边比斜边,把dy,dx,分别当一个直角边,然后得sin值
回复 不支持

使用道具 举报

 楼主| 发表于 2009-4-12 21:08:50 | 显示全部楼层 来自 甘肃兰州
下面是我编的小函数,大家看看有毛病没有
function beita=beita()
a=40;b=30;fai=0;
for fai=0:0.01:2*pi
beita=atan(-a*cot(fai)/b);
hold on;
plot(beita,'r');
end
结果Warning: Divide by zero.
> In cot at 10
  In beita at 4
ans =

    1.5684
上面的那个兄弟姐妹说可以计算那些无定义点,是不是这个警告也就可以忽略呢?对么?
回复 不支持

使用道具 举报

 楼主| 发表于 2009-4-12 21:13:41 | 显示全部楼层 来自 甘肃兰州
下面是我编的小函数,大家看看有毛病没有
function beita=beita()
a=40;b=30;fai=0;
for fai=0:0.01:2*pi
beita=atan(-a*cot(fai)/b);
hold on;
plot(beita,'r');
end
结果Warning: Divide by zero.
> In cot at 10
  In beita at 4
ans =

    1.5684
上面的那个兄弟姐妹说可以计算那些无定义点,是不是这个警告也就可以忽略呢?对么?
回复 不支持

使用道具 举报

 楼主| 发表于 2009-4-12 21:17:00 | 显示全部楼层 来自 甘肃兰州
把上面的那个表达式替换为beita=asin(a*cos(fai)/sqrt(a^2*cos(fai)^2+b^2*sin(fai)^2));,这两种方法求beita,大家说那种方法好一些,可靠一些啊!有区别没有?
回复 不支持

使用道具 举报

 楼主| 发表于 2009-4-12 21:20:25 | 显示全部楼层 来自 甘肃兰州
本帖最后由 yaohonghui666 于 2009-4-12 21:24 编辑

我分别用上述两种方c法算,采用sin,和tan函数公式求β,得到的结果分别是ans =

    1.5684

Warning: Divide by zero.
> In cot at 10
  In beita at 4

ans =

    1.5684
回复 不支持

使用道具 举报

头像被屏蔽
 楼主| 发表于 2009-4-12 21:20:40 | 显示全部楼层 来自 甘肃兰州
提示: 该帖被管理员或版主屏蔽
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 11:21 , Processed in 0.043437 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表