批量求解基于电导率的植物半致死温度

1 问题的提出

问题:一批植物材料,设定了不同梯度的温度,每个处理重复3次,并测定了相对电导率,想计算各种基因型的半致死温度。
方法:采用文献《应用Logistic方程确定植物组织低温半致死温度的研究》的方法进行计算。

前言:很遗憾,R语言自带的nls函数(nls(ddl ~ SSlogis(temp, a, b, c))无法运行,主要缘故是数据问题。因此,根据查询的文献,从手动开始计算,到编程一次性完成。

2 文献所述求解方法

文献涉及的Logistic方程如下:
y = k / ( 1 + a ∗ e ( − b ∗ x ) ) y=k/(1+a*e^{(-b*x)}) y=k/(1+ae(bx))
问题改为涉及对参数 k , a 和 b k,a和b kab的求解,半致死温度的求解公式如下:
L t 50 = l n a / b Lt_{50}=ln{a}/b Lt50=lna/b

关键步:参考文献需要对原始的电导率作如下转换:
y ′ = ( k − y ) / y = a ∗ e ( − b ∗ x ) y'=(k-y)/y=a*e^{(-b*x)} y=(ky)/y=ae(bx)
上述方程进行对数转换:
l n y ′ = l n a − b ∗ x ln{y'}=ln{a}-b*x lny=lnabx
进一步
l n y ′ = l n ( k − y ) / y ln{y'}=ln{(k-y)/y} lny=ln(ky)/y
式中, y y y是原始的相对电导率(去掉%的值), k = 100 k=100 k=100
通过 l n y ′ ln{y'} lny即可对 x x x做普通的线性回归,获得 l n a 和 b ln{a}和b lnab的值。
最后要求解 k k k,采用等距离的3个 y y y值求解,方法如下:
k = ( y 2 2 ∗ ( y 1 + y 3 ) − 2 ∗ y 1 ∗ y 2 ∗ y 3 ) / ( y 2 2 − y 1 ∗ y 3 ) k=(y_{2}^2*(y_{1}+y_{3})-2*y_{1}*y_{2}*y_{3})/(y_{2}^2-y_{1}*y_{3}) k=(y22(y1+y3)2y1y2y3)/(y22y1y3)

通过上述的步骤,即可获得Logistic方程的各项参数值。之后就是利用R语言编程的事了,以及如何实现批量分析的目的。

3 R语言编程求解

3.1 数据读取和变换

对原始的电导率数据做所需的对数转换和均值计算:

df2<-readxl::read_excel('抗逆性.xls',sheet=1,skip=1)
df2$y<-log((100-df2$ddl)/df2$ddl)
df2a<-df2 %>% select(Clone,y,ddl,temp) %>% 
  group_by(Clone,temp) %>% summarise(dm=mean(ddl),ym=mean(y))
  

3.2 批量求解的函数

lgssf <- function(dat,mod=ym~temp,x=temp,y0=dm,tn=3:5,ts=3) {
  # mod: line regression
  # x: temperature, for plot
  # y0: orginal leakage, for plot
  # tn: used orginal leakage data, 3 points position
  # ts: orginal leakage variable
  
  x=deparse(substitute(x))
  y0=deparse(substitute(y0))
  
  m2<-lm(mod,data=dat)
  
  tt<-summary(m2)
  r2<-tt$r.squared
  Fv<-tt$fstatistic
  pv<-1-pf(Fv[1],df1=Fv[2],df2=Fv[3])
  
  fit<-list()
  fit$r2<-r2;fit$Fv<-Fv;fit$pv<-pv
  
  ln.a<-coef(m2)[1];a<-exp(ln.a)
  b<--coef(m2)[2]
  Lt50<-ln.a/b 

  y1=dat[tn[1],ts];y2=dat[tn[2],ts];y3=dat[tn[3],ts]
  k=(y2^2*(y1+y3)-2*y1*y2*y3)/(y2^2-y1*y3)
  
  lgss.cof<-c(k,a,b,Lt50)
  lgss.cof<-unlist(lgss.cof)
  names(lgss.cof)<-c('k','a','b','Lt50')
  lc<-lgss.cof<-round(lgss.cof,3) 
  
  equat<-paste0('y=',lc[1],'/','(1+',lc[2],'*exp^','(',lc[3],'*x))')
  
  fig<-ggplot(dat, aes_string(x=x,y=y0))+geom_point()+
    geom_smooth(method='auto',se=F)
    
  res<-list(equat,lc[4],lgss.cof,fit)
  names(res)<-c('equat','Lt50','coef','fit')
  res$fig<-fig
  return(res)
}
    

3.3 运行程序和查看结果

res2a <- plyr::dlply(df2a,"Clone",lgssf)
> names(res2a) # 各植物材料的基因型代码
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9"

# 第一个基因型的结果
> res2a$`1`[c('equat','Lt50','fit')]
$`equat`
[1] "y=21.713/(1+1.148*exp^(-0.127*x))"

$Lt50
  Lt50 
-1.089 

$fit
$fit$`r2`
[1] 0.8356973
$fit$Fv
   value    numdf    dendf 
20.34531  1.00000  4.00000
$fit$pv
     value 
0.01073532

图形查看res2a$`1`$fig
在这里插入图片描述
到此,所有求解和批量运算都结束了。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
石墨烯是一种由碳原子构成的二维晶格结构材料,具有独特的电子传输性质。石墨烯表面的电导率是指它在外加电场作用下的电导性能。 首先,需要了解石墨烯的电子传输机制。石墨烯中的电子呈现出特殊的色散关系,即费米能级附近的电子呈现出线性色散,而不像传统的金属或导体呈现抛物线色散。这种特殊的色散关系决定了石墨烯中的电子具有特殊的传输性质。 在石墨烯中,电子的传输主要受到两个因素的影响:散射和电场。散射是指电子在杂质、缺陷或晶格边界等不完美结构上发生的散射过程,它会限制石墨烯的电导性能。电场是指外加电压产生的电场,它可以调节石墨烯中的电子能级,从而对电子传输性能产生影响。 在Matlab软件中,可以通过建立适当的数学模型来模拟石墨烯的表面电导率。首先,可以考虑使用二维平面上的波动方程或电子耦合动力学方程描述石墨烯中的电子传输。其次,通过引入适当的散射项、电场项和边界条件,可以模拟出电子在石墨烯中的传输行为。最后,通过求解数学方程,可以计算出石墨烯表面的电导率。 需要注意的是,在模拟过程中,需要根据实际情况选择适当的参数和边界条件。具体可以根据石墨烯的结构、杂质或缺陷的分布情况来确定。另外,在计算过程中,可以利用Matlab强大的计算和可视化功能,对计算结果进行分析和展示。 总之,通过在Matlab中建立数学模型来模拟石墨烯的表面电导率,可以深入理解石墨烯的电子传输性能,并为石墨烯应用于电子器件等领域提供参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值