mathematica 发表于 2012-7-24 12:23:04

对称的公式是:

http://en.wikipedia.org/wiki/Circumscribed_circle

4103
wayne 发表于 2012-7-24 11:44 http://bbs.emath.ac.cn/images/common/back.gif
gxqcn,为什么赞叹wayne的结果,而不赞叹我的求解结果?
难道你不觉得我在11楼的回复是正确的吗?
这个公式当中应该有一个奇排列和偶排列的符号,但是我就是直接推出来了!
我坦白地说,我的回复是正确的,如果mathematica软件计算正确的话!

mathematica 发表于 2012-7-24 12:38:14

本帖最后由 mathematica 于 2012-7-24 12:41 编辑


b=x1^2(y2-y3)+x2^2(-y1+y3)+x3^2(y1-y2) +(y1 - y2) (y1 - y3) (y2 - y3)
d=-y1^2(x2-x3)-y2^2(-x1+x3)-y3^2(x1-x2) -(x1 - x2) (x1 - x3) (x2 - x3)

a=2 (x1(y2-y3)+x2 (-y1+y3)+x3 (y1-y2) )
横坐标是
b/a
纵坐标是
d/a
mathematica 发表于 2012-7-24 10:17 http://bbs.emath.ac.cn/static/image/common/back.gif
这个结果难道不好不直接吗?
如果有人不相信可以验算一下

mathematica 发表于 2012-7-24 12:47:00


b= x1^2(y2-y3)+x2^2(-y1+y3)+x3^2(y1-y2)+(y1-y2)(y1-y3)(y2-y3)
d=-y1^2(x2-x3)-y2^2(-x1+x3)-y3^2(x1-x2)-(x1-x2)(x1-x3)(x2-x3)
a= 2(x1(y2-y3)+x2(-y1+y3)+x3(y1-y2))
=-2(y1(x2-x3)+y2(-x1+x3)+y3(x1-x2))

横坐标是b/a,纵坐标是d/a
还有比这更直接的结果吗?

mathematica 发表于 2012-7-24 12:51:08

如果有人能联想到两个三维矢量的矢量积的行列式的形式的展开的求解结果,
就能想明白为什么上面的看起来不对称!其实是对称的

gxqcn 发表于 2012-7-24 13:13:41

当然,明眼人一下子就可看出是轮换对称式,
只是,直接利用你推导的公式,似乎并不利于编程计算。

mathematica 发表于 2012-7-24 13:39:10

当然,明眼人一下子就可看出是轮换对称式,
只是,直接利用你推导的公式,似乎并不利于编程计算。
gxqcn 发表于 2012-7-24 13:13 http://bbs.emath.ac.cn/static/image/common/back.gif

怎么个不利法?
公式直接带进去,然后不就行了吗?
不就是给出三个点,然后求出横坐标纵坐标就行了吗?
不是很简单,我不明白怎么个不利于编程!
要是我用matlab的话,四五行代码就够了!
不能明白你说的不利于

gxqcn 发表于 2012-7-24 13:50:04

这么说吧,我们仅看乘法指令的次数,
你的b和d各需8次,a需要3次,共需 8*2+3=19 次乘法运算。

而若用3#的方案,则需 3+3+3*2=12次乘法运算。

wayne 发表于 2012-7-24 14:34:45

26# mathematica
mathematica给的公式刚好在我给的那个链接里有.
应该是一致的,我没做进一步的核实.
===========
不过mathematica要注意,gxqcn老大在这里关注的是运算的高效性和模块的简洁性.
并不是什么MATLAB几行代码的事情.

mathematica 发表于 2012-7-24 14:41:38

这么说吧,我们仅看乘法指令的次数,
你的b和d各需8次,a需要3次,共需 8*2+3=19 次乘法运算。

而若用3#的方案,则需 3+3+3*2=12次乘法运算。
gxqcn 发表于 2012-7-24 13:50 http://bbs.emath.ac.cn/static/image/common/back.gif
P1,P2,P3 为三角形三顶点,

d1 = - (P2–P1)·(P1–P3)    // 此为矢量运算:减法、内积;
d2 = - (P3–P2)·(P2–P1)    // 所得为标量
d3 = - (P1–P3)·(P3–P2)      
这儿每次内积用了两次乘法,共计6次
c1 = d2*d3
c2 = d3*d1
c3 = d1*d2
c = c1 + c2 + c3
这儿用了3次乘法
则,其外接圆半径及圆心为:
r = 1/2 sqrt( (d1+d2)*(d2+d3)*(d3+d1)/c )   
center = {(c2+c3)P1 + (c3+c1)P2 + (c1+c2)P3}/2c
这儿至少用了7次乘法(除以2c算一次乘法,每个点有两个分量)

总计6+3+7=16次乘法

gxqcn 发表于 2012-7-24 14:48:11

哦,确实,一次内积需要两次乘法。我少算了。
除法我们都有,就没做统计了。
我比较追求形式上的简洁,便于记忆,甚至手算。
页: 1 2 [3] 4 5 6 7 8
查看完整版本: 三角形外心坐标公式