明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 586|回复: 8

[函数] 二分法求函数解

  [复制链接]
发表于 2021-8-7 00:19 | 显示全部楼层 |阅读模式
  1. (defun binSea (fun minx maxx any pre)
  2.   (cond        ((equal (fun (* 0.5 (+ minx maxx))) any pre)
  3.          (* 0.5 (+ minx maxx))
  4.         )
  5.         ((< (* (- any (fun (* 0.5 (+ minx maxx)))) (- any (fun maxx)))
  6.             0
  7.          )
  8.          (binsea fun (* 0.5 (+ minx maxx)) maxx any pre)
  9.         )
  10.         ((< (* (- any (fun (* 0.5 (+ minx maxx)))) (- any (fun minx)))
  11.             0
  12.          )
  13.          (binsea fun minx (* 0.5 (+ minx maxx)) any pre)
  14.         )
  15.   )
  16. )

函数名 binsea
参数
fun  要求的函数名 用defun lambda 等自定义
minx maxx 求解范围最大值 最小值
any 目标值
pre 精度
说明:函数必须在给定范围里单调 且解必须在范围里
示例:求根号5
  1. (defun tt()
  2.   (setq fun (lambda (x) (* x x)))
  3.   (binsea fun 1.0 10.0 5 0.001)
  4.   )

(tt)----->2.23596

评分

参与人数 2明经币 +2 金钱 +50 收起 理由
tryhi + 1 + 50 挺有意思的
guosheyang + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-8-7 14:12 | 显示全部楼层
具体有啥用途?
 楼主| 发表于 2021-8-7 15:38 | 显示全部楼层

下面 有示例
发表于 2021-8-8 11:56 | 显示全部楼层

_$ (defun tt()
  (setq fun (lambda (x) (sin x)))
  (binsea fun 1.0 10.0 0.9 0.001)
  )
TT
_$ (tt)
nil
 楼主| 发表于 2021-8-8 12:51 | 显示全部楼层
mahuan1279 发表于 2021-8-8 11:56
_$ (defun tt()
  (setq fun (lambda (x) (sin x)))
  (binsea fun 1.0 10.0 0.9 0.001)

函数必须在给定范围里单调 且解必须在范围里
 楼主| 发表于 2021-8-8 12:53 | 显示全部楼层
mahuan1279 发表于 2021-8-8 11:56
_$ (defun tt()
  (setq fun (lambda (x) (sin x)))
  (binsea fun 1.0 10.0 0.9 0.001)

命令: (defun tt()
(_>   (setq fun (lambda (x) (sin x)))
(_>   (binsea fun 0.0 (* 0.5 pi) 0.9 0.001)
(_>   )
TT
命令: (tt)
1.11981
命令: (sin 1.11981)
0.900018
发表于 2021-8-8 14:46 来自手机 | 显示全部楼层
谢谢楼主分享,lisp对数学的求解我接触比较少
发表于 2021-8-8 14:54 | 显示全部楼层
看起来挺有趣,但是好像看不出具体应用,开方有sqrt,asin也可以atan反求,都比二分法快上百倍的性能,不知什么情况下需要用到
 楼主| 发表于 2021-8-8 15:17 | 显示全部楼层
本帖最后由 kkq0305 于 2021-8-8 16:03 编辑
tryhi 发表于 2021-8-8 14:54
看起来挺有趣,但是好像看不出具体应用,开方有sqrt,asin也可以atan反求,都比二分法快上百倍的性能,不知 ...

那是因为你没有用到 要用二分法求解的是复杂的方程 比如说水文方面 已知河道截面求解河道流量确定时的水深

评分

参与人数 1明经币 +1 金钱 +50 收起 理由
tryhi + 1 + 50 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-6 11:08 , Processed in 0.462024 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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