用newlisp做数学统计

2023-11-27 00:08
文章标签 统计 数学 newlisp

本文主要是介绍用newlisp做数学统计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

标准函数

newlisp已经自带了一些统计函数

幂函数

(pow 100 2)      → 10000
(pow 100 0.5)    → 10
(pow 100 0.5 3)  → 1000(pow 3)  → 9

第一个是100^2
第二个是100^0.5
第三个是(100^0.5)^3
第四个是3^2

自定义函数

阶乘

;;@n integer or big integer
;;@return n!
(define (fac n)(if (= n 0)1(apply * (map bigint (sequence 1 n)) 2)))

stat模块

newlisp stat库提供了常用的统计函数

加载模块

> (module "stat.lsp")
(lambda (stat:lst) (append (join (map string stat:lst) "\r\n") "\r\n"))

求和

> (setf a '(1 2 3 1 4 5 7))
(1 2 3 1 4 5 7)
> (stat:sum a)
23

平均值

> (stat:mean a)
3.285714285714286

平方和

> (stat:sum-sq a)
105

也就是a的每个元素求平方,然后全部加起来的和

样本方差

> (stat:var a)
4.904761904761905
样本方差的文档参考:

http://baike.baidu.com/view/2100256.htm

公式是

经过公式推导,可以变形为下面的实现:

; variance of a data vector X
(define (var X)(div (sum-d2 X) (sub (length X) 1)))
; sum of sqared differenses of X to mean of X
(define (sum-d2 X)(sub (sum-sq X) (div (mul (sum X) (sum X)) (length X))))

注释说的是方差,但是其实是无偏样本方差的实现。

标准差(均方差)

standard variance or standard deviation

> (stat:sdev a)
2.214669705568283
其实就是var的平方根

; standard deviation of a data vector X
(define (sdev X)(sqrt (var X)))


最小二乘法

参考单独的博客文章 

最小二乘法数学原理和newlisp实现


这篇关于用newlisp做数学统计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426544

相关文章

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

hdu4267区间统计

题意:给一些数,有两种操作,一种是在[a,b] 区间内,对(i - a)% k == 0 的加value,另一种操作是询问某个位置的值。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import

hdu4417区间统计

给你一个数列{An},然后有m次查询,每次查询一段区间 [l,r] <= h 的值的个数。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamRead

hdu3333区间统计

题目大意:求一个区间内不重复数字的和,例如1 1 1 3,区间[1,4]的和为4。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |