【发布时间】:2010-07-18 16:41:07
【问题描述】:
我有以下 2 个方程组:
对于a、b、c、d:
0 = a * r1_x + b * r1_x * r1_y + c * r1_y + d
1 = a * r2_x + b * r2_x * r2_y + c * r2_y + d
0 = a * r3_x + b * r3_x * r3_y + c * r3_y + d
1 = a * r4_x + b * r4_x * r4_y + c * r4_y + d
对于 e,f,g,h:
0 = e * r1_x + f * r1_x * r1_y + g * r1_y + h
0 = e * r2_x + f * r2_x * r2_y + g * r2_y + h
1 = e * r3_x + f * r3_x * r3_y + g * r3_y + h
1 = e * r4_x + f * r4_x * r4_y + g * r4_y + h
我知道 r1_x、r1_y、r2_x、r2_y、r3_x、r3_y、r4_x、r4_y 的值, 并且需要在第一个中求解 a,b,c,d,在第二个中求解 ,e,f,g,h。
我知道如何用铅笔和纸解决这些问题,但我真的不确定如何编程。我如何用 C 或 C++(或伪代码)求解上述方程。
谢谢
【问题讨论】:
-
@ShreevatsaR - 这个问题更为笼统。这个有更简单的解决方案。
-
@IVlad:两者都是“线性方程组”,对吧?我认为没有什么比使用一般的线性方程组求解器更简单的了(顺便说一句,这并不难)。
-
@ShreevatsaR:对于这个特定的问题,Cramer 的规则可能更快,更不容易出错;但我认为使用一般线性方程求解器会更好。
-
@jpalacek:然而,Cramer 的规则也适用于一般的线性方程组(并且可能被这样的求解器用于小输入)。 :-) 我认为这里真正的问题是另一个问题的答案很差,在这种情况下,应该将这个问题重定向到那里,并且必须在那里发布更好的答案。至少我认为 Stack Overflow 的目标是,为代表永恒的问题汇编一组好的答案。
-
因为这是我在这里写的方程式的副本:stackoverflow.com/questions/3273155/…,您可以简单地查看我在该答案中给出的链接,看看 AGG 是如何解决它的 - 它就在源代码上:antigrain.com/__code/include/agg_simul_eq.h.html