分享个解二元一次方程组的函数
本帖最后由 guosheyang 于 2022-6-3 08:51 编辑给大家分享个用交点函数求解二元一次方程组的代码,x y取值为无区段限制实数
;用交点法解二元一次方程组 ygs-羊羊羊
;函数名 ygs-bi-L-eqgr
;参数 a b c d e f分别为二元一次方程组的系数(ax+by+c=0 ;dx+ey+f=0)
;返回值:如果有解,则返回值 二元一次方程组的解
;测试(ygs-bi-L-eqgr 1 -2 -1 -2 3 -3)对应方程组x-2y-1=0 ;-2x+3y-3=0
(defun ygs-bi-L-eqgr (a b c d e f / P1 P2 P3 P4)
(if(and a b c d e f)
(if(or (and (= a 0) (= b 0)) (and (= d 0) (= e 0)))
(princ "\n 你输入的系数不是规范的二元一次方程组,请重输系数")
(progn
(setq p1 (if (/= b 0)
(list 0 (/ (- c) (float b)))
(list (/ (- c) (float a)) 10)
)
p2 (if (/= a 0)
(list (/ (- c) (float a)) 0)
(if (/= b 0)
(list 10 (/ (- c) (float b)))
)
)
p3 (if (/= e 0)
(list 0 (/ (- f) (float e)))
(list (/ (- f) (float d)) 10)
)
p4 (if (/= d 0)
(list (/ (- f) (float d)) 0)
(if (/= e 0)
(list 10 (/ (- f) (float e)))
)
)
)
(inters p1 p2 p3 p4 nil)
)
)
)
)
;; (abc 1 -2 -1 -2 3 -3)
(defun abc(a b c d e f)
(if(and a b c d e f)
(if(and(/= a b 0)(/= d e 0))
(inters
(if(= b 0)(list(/ c a -1.)1)(list 0(/ c b -1.)))
(if(= a 0)(if(/= b 0)(list 1(/ c b -1.)))(list(/ c a -1.)0))
(if(= e 0)(list(/ f d -1.)1)(list 0 (/ f e -1.)))
(if(= d 0)(if(/= e 0)(list 1(/ f e -1.)))(list(/ f d -1.)0))
nil
)
)
)
) 革天明 发表于 2022-6-7 10:35
楼主不必气馁,主要这个个需求太小众了,我以前写的支持2元N次,其实XYZ3元也没问题,只是这样复杂的不会 ...
大神 牛 !我写这个纯粹还是因为不想用矩阵相关的东西,那些代码太长了 ,这个简洁
楼主不必气馁,主要这个个需求太小众了,我以前写的支持2元N次,其实XYZ3元也没问题,只是这样复杂的不会在CAD中用,用户直接上三维画图软件了。
免费分享代码竟没有一个人回复支持下 不知道如何设置回复才可见 感谢分享,不知道什么地方用。 编程源于需求,可能是很少人有这样的需求。喜欢研究算法的纯粹lisper可能没有此看到帖。 东西是好东西,点赞。但是要的人少。 这个是好代码,不过不知道何时会用到,谢谢黄总分享! 感谢各位的支持! xyp1964 发表于 2022-6-3 22:38
谢谢院长的优化! :handshake:handshake:handshake:handshake:handshake:handshake
页:
[1]
2