matlab求数值微分有一系列散点数据,要求第一列对第二列求导,求各点的导数,请问如何用matlab求?
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/11 21:32:31
matlab求数值微分有一系列散点数据,要求第一列对第二列求导,求各点的导数,请问如何用matlab求?
matlab求数值微分
有一系列散点数据,要求第一列对第二列求导,求各点的导数,请问如何用matlab求?
matlab求数值微分有一系列散点数据,要求第一列对第二列求导,求各点的导数,请问如何用matlab求?
用差分来求即可,你这个问题,最好用相邻2点连线的斜率来代替.
顺便说一句,你的问题是不是回归啊,离散的数据是没有导数的啊,一元函数导数里面一条重要的定理就是:可导必连续.
如果是回归的话,命令regress即可.
matlab有向前差分函数diff,可以采用中心差商算法计算数值导数。
function [dy,dx]=diff_ctr(y,Dt,n)
yx1=[y,0,0,0,0,0];yx2=[0,y,0,0,0,0];yx3=[0,0,y,0,0,0];
yx4=[0,0,0,y,0,0];yx5=[0,0,0,0,y,0];yx6=[0,0,0,0,0,y];
swit...
全部展开
matlab有向前差分函数diff,可以采用中心差商算法计算数值导数。
function [dy,dx]=diff_ctr(y,Dt,n)
yx1=[y,0,0,0,0,0];yx2=[0,y,0,0,0,0];yx3=[0,0,y,0,0,0];
yx4=[0,0,0,y,0,0];yx5=[0,0,0,0,y,0];yx6=[0,0,0,0,0,y];
switch n
case 1
dy=(-diff(yx1)+7*diff(yx2)+7*diff(yx3)-diff(yx4))/(12*Dt);L0=3;
case 2
dy=(-diff(yx1)+15*diff(yx2)-15*diff(yx3)+diff(yx4))/(12*Dt^2);L0=3;
case 3
dy=(-diff(yx1)+7*diff(yx2)-6*diff(yx3)-6*diff(yx4)+...7*diff(yx5)-diff(yx6))/(8*Dt^3);L0=5;
end
dy=dy(L0+1;end-L0);dx=([1:length(dy)]+L0-2-(n>2))*Dt;
其中,y为等间距的实测数据构成的向量,Dt为自变量的间距,n为导数的阶次(n<=3)。dy为导数向量,dx为自变量向量。
收起
help diff