如何进行二阶导数拟合?
请教:<BR> 我通过试验测得了位移x和力f(t)的相关数据,想根据公式:mx''+cx'+kx=f(t)作出f(t)-x的示功图。再通过二阶导数拟合f(t)-x得到相应的m、c和k。不知道用什么命令,哪位高手指点一下,很急呀! <P>顶。。<BR></P>回复:(gucansong)如何进行二阶导数拟合?
提一种想法,可行不可行自己斟酌<BR><BR>对x进行数值求导,得到x'和x",然后用最优化方法求m,c,k<BR>或者可以先对x进行拟合的到x(t),然后求得x'(t),x"(t),然后和上述方法一样求解 <P>谢谢happy!<BR>在matlab里没有直接的命令可以调用吗?这样做好麻烦哦!</P>回复:(gucansong)如何进行二阶导数拟合?
<P>没见过</P> <P>happy版主:<BR> 关于这个问题我查了很多的资料,总算找到了解决的方法了。在matlab6.5辅助优化计算与设计这本书里介绍了LSQCURVEFIT函数,利用此函数可以在最小二乘意义上解决非线性曲线拟合(数据拟合)问题。也就是说,给定输入数据x,以及观测的输出数据f,找到系数m、c、k,使得函数mx''+cx'+kx=f(t)能够最好的拟合向量值。<BR> 书中的例子代码如下,可是我运行的时候还是会出错,不知道该怎么办了,你再帮帮我!谢谢!<BR>function f=myfun(a,x)<BR>f=a(1)*x.^2+a(2)*sin(x)+a(3)*x.^3;<BR>x=;<BR>y=;<BR>a0=;<BR>=lsqcurvefit(@myfun,a0,x,y);<BR><BR>错误提示:<BR>??? Input argument 'a' is undefined.</P><P>Error in ==> d:\MATLAB6p5p1\work\myfun1.m<BR>On line 2==> f=a(1)*x.^2+a(2)*sin(x)+a(3)*x.^3;<BR><BR></P>
回复:(gucansong)happy版主: 关于这个问题我查...
<DIV class=quote><B>以下是引用<I>gucansong</I>在2006-4-5 10:27:56的发言:</B><BR><P>happy版主:<BR> 关于这个问题我查了很多的资料,总算找到了解决的方法了。在matlab6.5辅助优化计算与设计这本书里介绍了LSQCURVEFIT函数,利用此函数可以在最小二乘意义上解决非线性曲线拟合(数据拟合)问题。也就是说,给定输入数据x,以及观测的输出数据f,找到系数m、c、k,使得函数mx''+cx'+kx=f(t)能够最好的拟合向量值。<BR> 书中的例子代码如下,可是我运行的时候还是会出错,不知道该怎么办了,你再帮帮我!谢谢!<BR><FONT color=#ff0000>function f=myfun(a,x)<BR>f=a(1)*x.^2+a(2)*sin(x)+a(3)*x.^3;</FONT><BR>x=;<BR>y=;<BR>a0=;<BR>=lsqcurvefit(@myfun,a0,x,y);<BR><BR>错误提示:<BR>??? Input argument 'a' is undefined.</P>
<P>Error in ==> d:\MATLAB6p5p1\work\myfun1.m<BR>On line 2==> f=a(1)*x.^2+a(2)*sin(x)+a(3)*x.^3;<BR><BR></P></DIV>
<P>红色部分写在m文件中<BR>其他的在命令窗口运行,你写的没问题</P>
回复:(gucansong)如何进行二阶导数拟合?
程序是没问题,不过这个函数拟合的是你的函数吗?你在仔细看看回复:(gucansong)如何进行二阶导数拟合?
<DIV class=quote><B>以下是引用<I>gucansong</I>在2006-3-31 16:27:13的发言:</B><BR>请教:<BR> 我通过试验测得了位移x和力f(t)的相关数据,想根据公式:mx''+cx'+kx=f(t)作出f(t)-x的示功图。再通过二阶导数拟合f(t)-x得到相应的m、c和k。不知道用什么命令,哪位高手指点一下,很急呀!</DIV><br>呵呵,你的试验运不允许先将f(t)变换到频域F(w),这样位移x的导数就变成了含有角频率w的乘积因子,这时再进行拟合。
页:
[1]