plasmascience的个人博客分享 http://blog.sciencenet.cn/u/plasmascience

博文

lisp/scheme/guile做数值计算

已有 16892 次阅读 2020-5-28 22:25 |系统分类:科研笔记| 编程, lisp, scheme, guile, 数值计算

lisp/scheme据说是每个程序员在死之前必须要尝试的程序语言,也有人说它是上帝的编程语言。

一般人看到lisp满屏的括弧就放弃了。

我受到RMS的蛊惑, 2015年开始学一点lisp/scheme的东西,

偶尔闲来无事,喜欢捣鼓一点lisp/scheme。 lisp强调递归的重要性,不直接提供循环结构,因为循环可看作递归的一个特例。

lisp是仅次于fortran的第二老程序语言, 主要的强项是写解析器、编译器、符号计算相关的程序,用来做数值计算不是它的强项。 下面是一个二分法求函数的根的一个guile小程序, 纯为练练手, 每次写lisp程序都很快乐

#!/usr/bin/guile

!#

(define (root_finder f x1 x2)

    (let ((tmp (/ (+ x1 x2) 2))) 

    (if (<= (* (f tmp) (f x1)) 0) (set! x2 tmp)    (set! x1 tmp))

    (display tmp)

    (newline)

    (if (< (abs (- x1 x2)) 0.001) tmp     (root_finder f x1 x2) )

    ) )


(define (myfun x) (* (- x 1) (- x 2)))

(display (root_finder myfun 1.8 2.2))

(newline)





https://blog.sciencenet.cn/blog-620148-1235416.html

上一篇:托卡马克中的粒子轨道动画1
下一篇:gykinetic湍流模拟中的计算网格
收藏 IP: 202.127.204.*| 热度|

1 李振乾

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 23:23

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部