怎么来对已经求出来的速度曲线进行求导?我现在通过状态空间法,求解出来一个结构的速度和位移曲线,现在想通过对速度求导的方式来得到加速度,请各位好手指点,具体的表达式是怎么样的,这是个动力系统,我希望能通过求导来画出加速度的曲线中心差分法:0.5*(diff(y(1:end-1)+diff(2:end))/dt这样比原始数据的头尾少两个点,可以自己补一下以试试根据数据用polyfit求出多项式拟合,然后再diff得到加速度表达式,再作图本帖最近评分记录lxq+182007-6-2211:28理由:启发引导性回答我用matlab求导后,用plot做曲线做不出来,总提示错误,不知道为什么,谁知道怎么出图啊?具体步骤说一下你直接对y数据求导得到的数据长度比原来少了一个plot肯定报错,x和y尺度不符对符号函数求导之后得到符号函数要么ezplot,要么代入数据再画图matlab的求导命令与求导法技术专区2009-03-1016:19阅读543评论1字号:大中小1.matlab命令.建立符号变量命令sym和syms调用格式:x=sym('x'),建立符号变量x;symsxyz,建立多个符号变量x,y,z;matlab求导命令diff调用格式:diff(函数),求的一阶导数;diff(函数,n),求的n阶导数(n是具体整数);diff(函数,变量名),求对的偏导数;diff(函数,变量名,n),求对的n阶偏导数;matlab求雅可比矩阵命令jacobian,调用格式:jacobian([函数;函数;函数],[])给出矩阵:2.导数概念.导数是函数的变化率,几何意义是曲线在一点处的切线斜率.(1)点导数是一个极限值.例1.设,用定义计算.解:在某一点的导数定义为极限:我们记,输入命令:symsh;limit((exp(0+h)-exp(0))/h,h,0)得结果:ans=1.可知(2)导数的几何意义是曲线的切线斜率.例2.画出在处()的切线及若干条割线,观察割线的变化趋势.解:在曲线上另取一点,则的方程是:.即取,分别作出几条割线.h=[3,2,1,0.1,0.01];a=(exp(h)-1)./h;x=-1:0.1:3;plot(x,exp(x),’r’);holdonfori=1:5;plot(h(i),exp(h(i)),’r.’)plot(x,a(i)*x+1)endaxissquare作出在处的切线plot(x,x+1,’r’)从图上看,随着与越来越接近,割线越来越接近曲线的割线.3.求一元函数的导数.(1)的一阶导数.例3.求的导数.解:打开matlab指令窗,输入指令:dy_dx=diff(sin(x)/x).得结果:dy_dx=cos(x)/x-sin(x)/x^2.matlab的函数名允许使用字母、空格、下划线及数字,不允许使用其他字符,在这里我们用dy_dx表示例4.求的导数.解:输入命令:dy_dx=diff(log(sin(x))).得结果:dy_dx=cos(x)/sin(x).在matlab中,函数用log(x)表示,而log10(x)表示例5.求的导数.解:输入命令:dy_dx=diff((x^2+2*x)^20).得结果:dy_dx=20*(x^2+2*x)^19*(2*x+2).注意输入时应为2*x.例6.求的导数.解:输入命令:dy_dx=diff(x^x).得结果:dy_dx=x^x*(log(x)+1).利用matlab命令diff一次可以求出若干个函数的导数.例7.求下列函数的导数:1.2.3.4.解:输入命令:a=diff([sqrt(x^2-2*x+5),cos(x^2)+2*cos(2*x),4^(sin(x)),log(log(x))]).得结果:a=[1/2/(x^2-2*x+5)^(1/2)*(2*x-2),-2*sin(x^2)*x-4*sin(2*x),4^sin(x)*cos(x)*log(4),1/x/log(x)].dy1_dx=a(1)dy1_dx=1/2/(x^2-2*x+5)^(1/2)*(2*x-2).dy2_dx=a(2)dy2_dx=-2*sin(x^2)*x-4*sin(2*x).dy3_dx=a(3)dy3_dx=4^sin(x)*cos(x)*log(4).dy4_dx=a(4)dy4_dx=1/x/log(x).由本例可以看出,matlab函数是对矩阵或向量进行操作的,a(i)表示向量a的第i个分量.(2)参数方程所确定的函数的导数.设参数方程确定函数,则的导数例8.设,求解:输入命令:dx_dt=diff(a*(t-sin(t)));dy_dt=diff(a*(1-cos(t)));dy_dx=dy_dt/dx_dt.得结果:dy_dx=sin(t)/(1-cos(t)).其中分号的作用是不显示结果.4.求多元函数的偏导数.例9.设求u的一阶偏导数.解:输入命令:diff((x^2+y^2+z^2)^(1/2),x).得结果:ans=1/(x^2+y^2+z^2)^(1/2)*x.在命令中将末尾的x换成y将给出y的偏导数:ans=1/(x^2+y^2+z^2)^(1/2)*y.也可以输入命令:jacobian((x^2+y^2+z^2)^(1/2),[xy]).得结果:ans=[1/(x^2+y^2+z^2)^(1/2)*x,1/(x^2+y^2+z^2)^(1/2)*y]给出矩阵例10.求下列函数的偏导数:1.2.解:输入命令:diff(atan(y/x).得结果:ans=-y/x^2/(1+y^2/x^2).输入命令:diff(atan(y/x),y).得结果:ans=1/x/(1+y^2/x^2).输入命令:diff(x^y,x).得结果:ans=x^y*y/x.输入命令:diff(x^y,y).得结果:ans=x^y*log(x).使用jacobian命令求偏导数更为方便.输入命令:jacobian([atan(y/x),x^y],[x,y]).得结果:ans=[-y/x^2/(1+y^2/x^2),1/x/(1+y^2/x^2)][x^y*y/x,x^y*log(x)].5.求高阶导数或高阶偏导数.例11.设,求.解:输入指令:diff(x^2*exp(2*x),x,20).得结果:ans=99614720*exp(2*x)+20971520*x*exp(2*x)+1048576*x^2*exp(2*x)例3.12.设,求,,解:输入命令:diff(x^6-3*y^4+2*x^2*y^2,x,2)可得到:ans=30*x^4+4*y^2.将命令中最后一个x换为y得:ans=-36*y^2+4*x^2.输入命令:diff(diff(x^6-3*y^4+2*x^2*y^2,x),y)可得:ans=8*x*y同学们可自己计算比较它们的结果.注意命令:diff(x^6-3*y^4+2*x^2*y^2,x,y),是对y求偏导数,不是求helpdiffIfXisavector,thendiff(X)returnsavector,oneelementshorterthanX,ofdifferencesbetweenadjacentelements:y=f(x),则x(i)点处的导数为(y(i+1)-y(i-1))/(x(i+1)-x(i-1))Re:【求助】怎样用matlab计算离散曲线上各点的曲率啊?导数用差分代替Re:【求助】怎样用matlab计算离散曲线上各点的曲率啊?版主说得也对,还可以用插值法先求出函数表达式,再求导】最优化计算之黄金搜索法matlab程序代码Author:aiaishike14八function[xo,fo]=Opt_Golden(f,a,b,TolX,TolFun,k)%%%%黄金搜索算法求在区间[a,b]上的最优化解%f为目标函数,TolX为x阈值,TolFun为函数阈值,k为迭代次数r=(sqrt(5)-1)/2;%r为黄金分割点值,h=b-a;%区间宽度rh=r*h;%%%取两点c、d,并计算相应的函数值fc和fdc=b-rh;d=a+rh;fc=feval(f,c);fd=feval(f,d);%%%算法第二步判断是否停止迭代ifk=0|(abs(h)TolX&abs(fc–fd)TolFun)iffc=fdxo=c;fo=fc;elsexo=d;fo=fd;endifk==0fprintf(’最好设定迭代次数大于0′);end%%%%算法第三步,进行新一轮迭代elseiffcfd[xo,fo]=Opt_Golden(f,a,d,TolX,TolFun,k-1);else[xo,fo]=Opt_Golden(f,c,b,TolX,TolFun,k-1);endend0CommentsFiledunder:Matlab算法集,专题学习资源库偏微分方程求解有限元法之得出基函数matlab程序代码Author:aiaishike14八functionShow_Basis()%N=[-11;11;1-1;-1-1;0.20.5];%节点集合N=[10;01;12;21;1.21.5];%节点集合N_n=size(N,1);%总节点数S=[125;235;345;145];%区域集合N_s=size(S,1);%总区域数figure(1),clffors=1:N_snodes=[S(s,:)S(s,1)];fori=1:3plot([N(nodes(i),1)N(nodes(i+1),1)],[N(nodes(i),2)N(nodes(i+1),2)]),holdonendendtext(0.8,0.6,’S1′);text(0.8,1.6,’S2′);text(1.4,1.5,’S3′),text(1.4,0.6,’S4′);%基函数p=fem_basis_ftn(N,S);%x0=-1;xf=1;y0=-1;yf=1;%graphicregionx0=0;xf=2;y0=0;yf=2;%graphicregionfigure(2),clfMx=50;My=50;c=[01230];%节点的值dx=(xf–x0)/Mx;dy=(yf–y0)/My;xi=x0+[0:Mx]*dx;yi=y0+[0:My]*dy;i_ns=[12345];%节点标号foritr=1:5i_n=i_ns(itr);ifitr==1fori=1:length(xi)forj=1:length(yi)Z(j,i)=0;fors=1:N_sifinpolygon(xi(i),yi(j),N(S(s,:),1),N(S(s,:),2))0Z(j,i)=p(i_n,s,1)+p(i_n,s,2)*xi(i)+p(i_n,s,3)*yi(j);break;endendendendsubplot(321),mesh(xi,yi,Z);title(itr)%节点1的基函数elsec1=zeros(size(c));c1(i_n)=1;subplot(320+itr)trimesh(S,N(:,1),N(:,2),c1)%节点2-5的基函数title(itr);endendc=[01230];subplot(326)trimesh(S,N(:,1),N(:,2),c);title(’基函数的线型组合’)0CommentsFiledunder:Matlab算法集,专题学习资源库偏微分方程求解有限元法之为每一个节点和子区域构造基函数matlab程序代码Author:aiaishike14八function[U,c]=fem_coef(f,g,p,c,N,S,N_i)%p(i,s,1:3):基函数ftnphi_i系数%c=[.11.00.]边界节点取1,内节点取0%N(n,1:2):第n个节点的x和y坐标%S(s,1:3):第s个子区域的节点#s%N_i:内节点个数%U(s,1:3):每个区域的p1+p2(s)x+p3(s)y的坐标N_n=