声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3920|回复: 8

[其他相关] 这个不等式方程组应该怎么解!

[复制链接]
发表于 2010-8-2 08:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
已知,x1,y1;x2,y2;x3,y3;r1,r2,r3;求x,y;
这个不等式方程组应该怎么解?
用什么MATLAB函数?
1.jpg
回复
分享到:

使用道具 举报

发表于 2010-8-2 22:54 | 显示全部楼层
第一/二式各表示一个圆! 两个圆有四种可能, 无交点, 一点, 两点, 无限点
判断条件为(x1,y1)与(x2,y2)的距离, d^2=(x1-x2)^2+(y1-y2)^2, 与r1/r2的关系, 分别如下
1) d>r1+r2 or d<abs(r1-r2) => 无交点 => 无解
2) d=r1+r2 or d=abs(r1-r2) => 一点
3) abs(r1-r2)<d<r1+r2 => 两点
4) d=0 and r1=r2 => 无限点
若有解(有交点), 再判断第三式是否成立即可

还有matlab应该不会有现成的函数:@)

[ 本帖最后由 ChaChing 于 2010-8-2 22:56 编辑 ]
 楼主| 发表于 2010-8-3 10:35 | 显示全部楼层

回复 沙发 ChaChing 的帖子

谢谢ChaChing哥提示,我就想把第三种情况解除来!
这其实也是我另个帖子说的多圆交点问题。
手算感觉太复杂啦,想用MATLAB解,但是刚接触MATLAB不久,感觉有点无从下手!
发表于 2010-8-3 22:57 | 显示全部楼层
syms x y
x1=-3; y1=0; r1=5; x2=3; y2=0; r2=5;
ff1=(x1-x)^2+(y1-y)^2-r1^2; ff2=(x2-x)^2+(y2-y)^2-r2^2;
aa=solve(ff1,ff2); xx=double(aa.x); yy=double(aa.y);
ezplot(ff1,[-10,10,-8,8]); hold on; ezplot(ff2,[-10,10,-8,8]); title('')
plot(xx,yy,'ro'); grid on; axis equal
 楼主| 发表于 2010-8-4 09:07 | 显示全部楼层

回复 地板 ChaChing 的帖子

Thank you! :@)  让您费心啦~!
不知道,如果x1,y1,r1,x2,y2,r2都是符号量,是否也能接出x,y?
发表于 2010-8-4 11:06 | 显示全部楼层

回复 5楼 cbufeng 的帖子

个人也不确定? 楼主先试试看吧! 我也是得试!:@)
发表于 2010-8-4 23:21 | 显示全部楼层

回复 楼主 cbufeng 的帖子

理论上应该是可以求得的, 两方程,两未知数, 第三个方程只要判断就可以了.
> assume(x1,constant,y1,constant,r1,constant,x2,constant,y2,constant,r2,constant);
> solve({(x1-x)^2+(y1-y)^2-r1^2,(x2-x)^2+(y2-y)^2-r2^2},{x,y});
可以得到符号解,但是事实上恐怕要给出具体的值才能求得,符号解直接会有Rootof函数,参看allvalues.
结果太长,不贴全了,第三式子,直接与0比较即可

                               
登录/注册后可看大图

代码如下
> x1:=10;
> y1:=10;
> x2:=20;
> y2:=20;
> r1:=20;
> r2:=20;
> solve({(x1-x)^2+(y1-y)^2-r1^2,(x2-x)^2+(y2-y)^2-r2^2},{x,y});
                               x1 := 10
                               y1 := 10
                               x2 := 20
                               y2 := 20
                               r1 := 20
                               r2 := 20
                             2
  {y = 5 RootOf(2 - 6 _Z + _Z , label = _L1),
                                       2
        x = 30 - 5 RootOf(2 - 6 _Z + _Z , label = _L1)}
> allvalues(%);
               1/2              1/2
  {y = 15 + 5 7   , x = 15 - 5 7   },
                     1/2              1/2
        {x = 15 + 5 7   , y = 15 - 5 7   }
> xy := %;
                     1/2              1/2
  xy := {y = 15 + 5 7   , x = 15 - 5 7   },
                     1/2              1/2
        {x = 15 + 5 7   , y = 15 - 5 7   }
> xy[1];
                               1/2              1/2
                  {y = 15 + 5 7   , x = 15 - 5 7   }
> xy[1,1];
                                       1/2
                           y = 15 + 5 7
> x:=rhs(xy[1,1]);
                                        1/2
                           x := 15 + 5 7
> y:=rhs(xy[1,2]);
                                        1/2
                           y := 15 - 5 7
> r3:=20;
                               r3 := 20
> x3:=15;
                               x3 := 15
> y3:=15;
                               y3 := 15
> is(((x3-x)^2+(y3-y)^2)<=r3^2);
                                 true
>

[ 本帖最后由 alljoyland 于 2010-8-4 23:47 编辑 ]
两圆交点.jpg
 楼主| 发表于 2010-8-5 10:46 | 显示全部楼层

回复 7楼 alljoyland 的帖子

谢谢大哥!:handshake
不过我MATLAB,里怎么不识别assume, allvalues,RootOf。版本不一样吗!我的是7.1.0的。帮助里也没有这些函数!
发表于 2010-8-7 17:45 | 显示全部楼层

回复 8楼 cbufeng 的帖子

mhelp才可以看到,你用maple("");就可以了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-19 14:20 , Processed in 0.106733 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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