基于李庆扬所著《数值分析》。ps由于比较忙,只是编写出来,没有时间找bug和优化。

一、拉格朗日插值

lagrange

#依次为观测值的横坐标,纵坐标,自变量(n2维)取值

n1

result

for(i in 1:n2){

constant1[i]

for(j in

1:n1){

constant2[j]

temp

temp

result[i]

}

result[i]

}

return(result)

}

x

y

inv

lagrange(x,y,inv)

二、牛顿均差插值

niux

#定义函数

k

#定义循环次数为k

A

#定义均差表A

s

#定义最终结果为s

r

#式子中一个因子r

w

#式子中一个因子w

for(j in 1:k+1){

#均差表一共有k+1列

for(i in 1:k){

#均差表一共有k行

A[i,1]

#均差表第一列,第二列分别为x和f(x)

if(j<=2|j>=i+2){A[i,j]

#均差表左上角部分

else

{A[i,j]

#均差表内元素

}

}

for(i in 2:k) {w[i]

#牛顿插值公式的一个因子w

for(i in 1:k) {r[i]

#牛顿插值公式另一个因子r

s

#最终结果s

list(均差表=A,结果=s)

#输出均差表,结果

}

f

#函数值f

x

b

niux(x,f,b)

三、牛顿差分插值

#牛顿差分形式的插值

NewtonDiff

n1

result

for (i in 1:n2){

if (direct==1){

#向前差分

t

difftable

difftable[,1]

for(col in 2:n1){

for(row in

1:n1){

if

(row+col>(n1+1)) break

difftable[row,col]

}

}

ditui

for(j in 2:n1){

ditui[j]

}

result[i]

}

else

{t

difftable

difftable[,1]

for(col in 2:n1){

for(row in

1:n1){

if (row

difftable[row,col]

}

}

ditui

for(j in 2:n1){

ditui[j]

}

result[i]

}

}

return(result)

}

x

y

inv

direct

NewtonDiff(x,y,inv,direct)

四、分段线性插值

pw_li

ld1

result

juzhen

x

for(i in 1:ld2){

if

(inv[i]>x[ld1-1]){

result[i]

}

else if (inv[i]

result[i]

}

else {

for(j in

2:(ld1-2)){

if

(inv[i]

result[i]

}

}

}

}

return(result)

}

x

y

inv

pw_li(x,y,inv)

五、分段埃尔米特插值

#分段三次埃尔米特插值

hermite

#依次为自变量(增序),因变量,插值点导数,待计算自变量

ld1

result

for(i in 1:ld2){

if

(inv[i]>x[ld1-1]){

result[i]

((inv[i]-x[ld1-1])/(x[ld1]-x[ld1-1]))^2*y[ld1]*(1+2*(inv[i]-x[ld1])/(x[ld1-1]-x[ld1]))+

((inv[i]-x[ld1])/(x[ld1-1]-x[ld1]))^2*(inv[i]-x[ld1-1])*derv[ld1-1]+

((inv[i]-x[ld1-1])/(x[ld1]-x[ld1-1]))^2*(inv[i]-x[ld1])*derv[ld1]

}

else if (inv[i]

result[i]

((inv[i]-x[1])/(x[2]-x[1]))^2*y[2]*(1+2*(inv[i]-x[2])/(x[1]-x[2]))+

((inv[i]-x[2])/(x[1]-x[2]))^2*(inv[i]-x[1])*derv[1]+

((inv[i]-x[1])/(x[2]-x[1]))^2*(inv[i]-x[2])*derv[2]

}

else {

for(j in

2:(ld1-2)){

if

(inv[i]

result[i]

((inv[i]-x[j])/(x[j+1]-x[j]))^2*y[j+1]*(1+2*(inv[i]-x[j+1])/(x[j]-x[j+1]))+

((inv[i]-x[j+1])/(x[j]-x[j+1]))^2*(inv[i]-x[j])*derv[j]+

((inv[i]-x[j])/(x[j+1]-x[j]))^2*(inv[i]-x[j+1])*derv[j+1]

break

}

}

}

}

return(result)

}

x

y

derv

inv

hermite(x,y,derv,inv)

六、三次样条插值

#三次样条插值

cubicspline

#依次为自变量(增序),因变量,边界条件(1,2,3),边界取值(二行三列矩阵)和研究自变量

#关于边界条件,2行从上往下为首末端点,三列从左至右为函数值,一阶导数值,二阶导数值

n1

if (cond==1){

d

d[1]

d[n1]

for (i in 2:(n1-1)){

d[i]

((y[i+1]-y[i])/(x[i+1]-x[i])-(y[i]-y[i-1])/(x[i]-x[i-1]))/(x[i+1]-x[i-1])

)

}

#d-vector is finished

juzhen1=juzhen2=juzhen3

for(i in 1:(n1-2)){

juzhen1[i,i]

juzhen2[i,i+1]

juzhen3[i,i+2]

}

juzhen

juzhen

m

list(m=m)

}

if (cond==2){

d

d[1]

d[n1]

for (i in 2:(n1-1)){

d[i]

((y[i+1]-y[i])/(x[i+1]-x[i])-(y[i]-y[i-1])/(x[i]-x[i-1]))/(x[i+1]-x[i-1])

)

}

#d-vector is finished

juzhen1=juzhen2=juzhen3

for(i in 1:(n1-2)){

juzhen1[i,i]

juzhen2[i,i+1]

juzhen3[i,i+2]

}

juzhen

juzhen

m

list(m=m)

}

if (cond==3){

d

for(i in 1:(n1-1)){

d[i]

(y[2]-y[1])/(x[2]-x[1])-(y[i+1]-y[i])/(x[i+1]-x[i])

)/(x[2]-x[1]+x[i+1]-x[i])

}

#d-vector is finished

juzhen1=juzhen2=juzhen3

for (i in 1:(n1-3)){

juzhen1[i,i]

juzhen2[i,i+1]

juzhen3[i,i+2]

}

juzhen

juzhen

c(2,0.5,rep(0,n1-4),0.5),juzhen,c((x[2]-x[1])/(x[n1]-x[n1-1]+x[2]-x[1]),rep(0,n1-4),1-(x[2]-x[1])/(x[n1]-x[n1-1]+x[2]-x[1]),2)

)

m

list(m=m)

}

result

for(i in 1:n2){

if (inv[i]

result[i]

m[2]*(inv[i]-x[1])^3/(6*(x[2]-x[1]))+

(y[1]-m[1]*(x[2]-x[1])^2/6)*(x[2]-inv[i])/(x[2]-x[1])+

(y[2]-m[2]*(x[2]-x[1])^2/6)*(inv[i]-x[1])/(x[2]-x[1])

}

else if

(inv[i]>x[n1-1]){

result[i]

m[n1]*(inv[i]-x[n1-1])^3/(6*(x[n1]-x[n1-1]))+

(y[n1-1]-m[n1-1]*(x[n1]-x[n1-1])^2/6)*(x[n1]-inv[i])/(x[n1]-x[n1-1])+

(y[n1]-m[n1]*(x[n1]-x[n1-1])^2/6)*(inv[i]-x[n1-1])/(x[n1]-x[n1-1])

}

else {

for(j in

3:(n1-2)){

if

(inv[i]

result[i]

m[j]*(inv[i]-x[j-1])^3/(6*(x[j]-x[j-1]))+

(y[j-1]-m[j-1]*(x[j]-x[j-1])^2/6)*(x[j]-inv[i])/(x[j]-x[j-1])+

(y[j]-m[j]*(x[j]-x[j-1])^2/6)*(inv[i]-x[j-1])/(x[j]-x[j-1])

}

}

}

}

return(result)

}

x

y

cond

condv

inv

cubicspline(x,y,cond,condv,inv)

如若有兴趣或者提建议,欢迎关注微信公众号:R语言的那些事

r语言安装ipsolve_数值分析的R语言实现(插值部分)相关推荐

  1. linux系统下载r软件安装,在Linux系统安装R

    一.系统要求 最小1G RAM 具有sudo权限的非root用户. 如果满足这些条件的话我们就开始了. 二.安装R R更新速度较快,最新的稳定版本并不总是在Ubuntu的软件库,所以我们将开始通过添加 ...

  2. linux r服务安装失败,linux下R安装RMySQL不成功 configuration failed for package ‘RMySQL’...

    linux下R安装RMySQL不成功 configuration failed for package 'RMySQL'#install.packages('RMySQL') 报错: 将程序包安装入' ...

  3. R语言安装.tar.gz包

    R语言安装.tar.gz包 # 以ElemStatLearn包的安装为例 # "package 'ElemStatLearn' is not available for this versi ...

  4. Mac版R语言入门(一)R语言入门操作

    文章更新于2023年1月29日: 视频教程--微信公众号:R语言数据分析与实践                      bilibili: R语言数据分析与实践 CSDN:ZhenniLi 第一集: ...

  5. R数据分析——安装,数据类型转换,向量

    R数据分析 R中安装与使用包 卸载与移除包 基本数据类型(六种) 数据类型转换 运算符 R中的数据结构 向量 R中安装与使用包 R中的包存储在计算机上名为library的目录下 ✓ 使用函数libPa ...

  6. R语言-安装使用指南

    R语言 概述 R语言是用于统计分析,图形表示和报告的编程语言和软件环境. R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大学创建,目前由R语言开发核心团队开发. R语言的 ...

  7. R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型、分类预测器(分类变量)被自动替换为一组虚拟编码变量、summary函数查看检查模型、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型(Logistic regression).分类预测器(分类变量)被自动替换为一组虚拟编码变量.summary函数查看检查模型.使用t ...

  8. centos7 r语言安装_R 和 RStudio 的安装及 R Profile 的配置 amp; 初识 R 语言数据爬取...

    ❝ 本文更新至 R version 4.0.0 (2020-04-24) ❞ R 和 RStudio 的安装是非常简单的,这里提供一些安装 Tips.在文章的最后我还通过一个案例带大家走进奇幻的 R ...

  9. r语言查找是否存在空值_关于R包安装你知道多少?

    在R语言的学习过程中离不了各种R包的安装与使用,要使用某个R包首先得学会如何安装该R包.对于R包的安装你知道的有多少?你知道如何指定安装路径吗?为何你每次重新打开R绘画都需要重新安装R包?今天小编带你 ...

最新文章

  1. C错误异常处理,异常处理
  2. mongodb入门的几篇文章
  3. StringUtils之equals
  4. 根据姓名得到名字首字母
  5. how is odata metadata request served 故意把configuration file里的GM6改成GM61之后
  6. python爬虫-异常处理
  7. dataframe 排序_疯狂Spark之DataFrame创建方式详解一(九)
  8. 输入网址后到网页显示出来会发生什么?
  9. AngularJS之中级Route【二】(七)
  10. PyQt5学习笔记2-GUI编程基础-2
  11. python之数据运算、字典、列表
  12. 一劳永逸地激活NOD32,从此不需要NOD32激活码
  13. 基于文件夹目录生成CHM电子书
  14. android联动动画,Android双向列表左右联动效果
  15. matlab 读取ENVI中*.img格式图片代码
  16. Mybatis一对多和多对一联系处理
  17. 2022年ccpc威海站
  18. 【数据分析】搜索和非结构化数据分析值得关注的5大趋势
  19. VMware ESXi 8.0集成网卡驱动
  20. GET和POST请求的区别

热门文章

  1. 思考一个问题:如何重现主从备份失败的案例
  2. Visual Studio下载、安装、运行教程
  3. 学习SPI的一些疑惑
  4. ZYNQ中断示例修改
  5. php文件utf8编码转gbk编码格式,把phpwind utf8 转成 gbk 编码
  6. lingo变量无限制版本_【运筹学】用Lingo求解运输问题,兼谈Lingo语法
  7. JQuery: 实现筛选功能
  8. 数据结构与算法 / 字符串匹配 / Trie 树
  9. 计算数值二进制表达式中1的个数
  10. 74LS138译码器