R 语言案例
函数知识#
seq 函数#
用于生成一段步长相等的序列,看例子即可理解
> seq(5)
[1] 1 2 3 4 5
> seq(2,5)
[1] 2 3 4 5
> seq(2,10,2)
[1] 2 4 6 8 10
sapply 函数#
将列表或向量作为输入,并以向量或矩阵形式输出
# 先创建一个函数,这个函数的作用是让 x 除以 2
func1 <- function(x) x / 2
# 用 c() 函数创建向量,并赋值给 nums
nums <- c(10,8,6,4,2)
# sappky(x,y) 的 x 代表向量,y 代表函数
result <- sapply(nums,func1)
# 结果就是生成一个全部除以 2 了的序列
[1] 5 4 3 2 1
length 函数#
# 第一个是一个普通的例子
> temp <- c(1,2,3,4,5)
> length(temp)
[1] 5
# 下面的例子比较特殊
> temp <- c(1,2,3,4,5)
> temp[2]
[1] 2
> temp[length(temp)]
[1] 5
# 这里相当于向量 temp 除去了 5,并打印剩下的序列
> temp[-length(temp)]
[1] 1 2 3 4
梯形积分法 与 Simpson#
公式#
复化梯形公式#
若将区间 等分, 有 个等距结点 , 在每一个小区间采用梯形公式可以得到:
复化辛卜生公式#
若将区间 等分, 有 个等距结点 , 在每一个小区间采用辛卜生公式可以得到:
全部代码#
func1 <- function(x) sin(x) / x
# 梯形积分法
Trapezoid <- function(func, a, b, n = 100) {
h <- (b - a) / n
add_by <- seq(a, b, by = h)
f_x <- sapply(add_by, func)
x <- h * sum(f_x[1] / 2, f_x[2:n], f_x[n + 1] / 2)
return(x)
}
# Simpson
Simpson <- function(func, a, b, n = 100) {
h <- (b - a) / n
# 奇数项
add_by_1 <- seq(a + h, b - h, by = 2 * h)
# 偶数项
add_by_2 <- add_by_1 + h
add_by_2 <- add_by_2[-length(add_by_2)]
x <- h / 3 * sum(func(a), 4 * sapply(add_by_1, func), 2 * sapply(add_by_2, func), func(b))
return(x)
}
代码逐步分析 -- 梯型积分法#
Trapezoid <- function(func, a, b, n = 100)
Trapezoid
是梯型(函数名字),传入的函数 func
是 (由 func1 <- function(x) sin(x) / x
可知)
h <- (b - a) / n
add_by <- seq(a, b, by = h)
f_x <- sapply(add_by, func)
x <- h * sum(f_x[1] / 2, f_x[2:n], f_x[n + 1] / 2)
return(x)
返回结果 x
代码逐步分析 -- Simpson#
Simpson <- function(func, a, b, n = 100)
Simpson
是辛卜生(函数名字),传入的函数 func
是 (由 func1 <- function(x) sin(x) / x
可知)
h <- (b - a) / n
# 奇数项
add_by_1 <- seq(a + h, b - h, by = 2 * h)
# 偶数项
add_by_2 <- add_by_1 + h
add_by_2 <- add_by_2[-length(add_by_2)]
x <- h / 3 * sum(func(a), 4 * sapply(add_by_1, func), 2 * sapply(add_by_2, func), func(b))
最后的结果和公式不太一致,你可以思考为什么可以这样做?【提示:】
return(x)
返回结果 x
作者: 筱团
出处:https://www.cnblogs.com/CourserLi/p/15426338.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了