无心人
发表于 2009-12-25 08:05:32
他是通过尝试解方程组
并引入共线条件来约束解
无心人
发表于 2009-12-25 08:06:00
似乎还有更复杂的约束
你要去看最原始的帖子
mathe
发表于 2009-12-25 08:29:18
能否解释一下各个点的坐标是怎么一般化的,我想在程序中引用,mathe给的文件中的所有方程的参数列表好像都挺杂乱的
wayne 发表于 2009-12-24 23:15 http://bbs.emath.ac.cn/images/common/back.gif
要理解这个坐标形式,首先需要知道射影几何里面的齐次坐标。
对于平面上任意一个笛卡儿坐标为(x,y)的点,它的其次坐标可以表示为(k*x,k*y,k),其中k是任意一个非0的数。也就是每个点的其次坐标表示不唯一。此外,任意两条平行的直线也定义了交点,这些点称为无穷远点,比如所有斜率为t的直线的交点的齐次坐标为(k,k*t,0).
那么在射影平面上面,任何两条直线有且只有一个交点。
同样,任何直线也可以用齐次坐标表示,比如直线就是笛卡儿坐标系中的a*x+b*y+c=0。而直线是无穷远直线(所有无穷远点构成的直线)
对于任意一个3*3可逆矩阵M,如果(x,y,z)是一个点的坐标,x*M就是投影变换以后的坐标。其中投影变换总是将直线变换成直线,将圆锥曲线变换成圆锥曲线(但是椭圆可以变成抛物线或双曲线)。
可以容易发现,对于果树问题中任意一个解,可以通过投影变换变换出许多看似不同的解,而这些解之间,我们可以认为它们都是等价的。
我现在正在考虑的另外一个问题是,对于一个给定的解,如何选择一些投影变换,将图像变换的更加漂亮一些(比如有更多的对称性)
在我给出的解中,如果一个点不是无穷远点,我只采用普通坐标,比如对于点M,只要知道M_x,M_y就可以了。但是还有4个点被预先定义为无穷远点,对于这些点,我们需要采用齐次坐标,所以写成类如
D=(0,1,0), I=(1,I_y,0)的形式,其中存在I_y表示这个点的坐标也需要方程求解来确定。
mathe
发表于 2009-12-25 08:34:01
呵呵,那也不成问题。。。
只是Mathematica语言比较特殊,变量名不能用下划线来表示,因为下划线在Mathematica里面有Pattern(模式)的意思。。。
Pattern Matching是Mathematica的有别于其他软件的一个比较高级 ...
wayne 发表于 2009-12-24 22:26 http://bbs.emath.ac.cn/images/common/back.gif
不知道你是否有c++编译器和gmp库,如果有,可以直接自己修改我的方程化简程序:
wayne
发表于 2009-12-25 09:28:28
呵呵,好,那我再回到Linux下试试,windows下gmp我还没配置成功
wayne
发表于 2009-12-25 10:14:10
猛的意识到mathe的工作环境也很专业,免费的软件免费的库,免费的linux系统
mathe
发表于 2009-12-25 11:37:04
不过显然,免费的数学软件(maxima)功能还是不够强大的
wayne
发表于 2009-12-25 12:16:30
唉,我水平有限啊,连Linux下的gmp都装不成功,:'(。。。
mathe
发表于 2009-12-25 12:23:01
如何安装的?通常很简单呀,先运行
./configure
然后
make
然后
make test
然后
make install
你那里报了什么错误信息?
wayne
发表于 2009-12-25 12:26:38
没通过啊,最开始说缺少m4这玩意,后来我装上了,等了很长时间,一切正常,直到make install ,就出错了,返回的是error(2)
页:
1
2
3
4
5
[6]
7
8
9
10
11
12
13