声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1939|回复: 8

如何进行二阶导数拟合?

[复制链接]
发表于 2006-3-31 16:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请教:<BR>      我通过试验测得了位移x和力f(t)的相关数据,想根据公式:mx''+cx'+kx=f(t)作出f(t)-x的示功图。再通过二阶导数拟合f(t)-x得到相应的m、c和k。不知道用什么命令,哪位高手指点一下,很急呀!
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-3-31 18:33 | 显示全部楼层
<P>顶。。<BR></P>
发表于 2006-3-31 18:43 | 显示全部楼层

回复:(gucansong)如何进行二阶导数拟合?

提一种想法,可行不可行自己斟酌<BR><BR>对x进行数值求导,得到x'和x",然后用最优化方法求m,c,k<BR>或者可以先对x进行拟合的到x(t),然后求得x'(t),x"(t),然后和上述方法一样求解
 楼主| 发表于 2006-4-2 19:33 | 显示全部楼层
<P>谢谢happy!<BR>在matlab里没有直接的命令可以调用吗?这样做好麻烦哦!</P>
发表于 2006-4-3 08:40 | 显示全部楼层

回复:(gucansong)如何进行二阶导数拟合?

<P>没见过</P>
 楼主| 发表于 2006-4-5 10:27 | 显示全部楼层
<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=[3.6,7.7,9.3,4.1,8.6,2.8,1.3,7.9,10.0,5.4];<BR>y=[16.5,150.6,263.1,24.7,208.5,9.9,2.7,163.9,325.0,54.3];<BR>a0=[10,10,10];<BR>[a,residual]=lsqcurvefit(@myfun,a0,x,y);<BR><BR>错误提示:<BR>??? Input argument 'a' is undefined.</P>
<P>Error in ==&gt; d:\MATLAB6p5p1\work\myfun1.m<BR>On line 2  ==&gt; f=a(1)*x.^2+a(2)*sin(x)+a(3)*x.^3;<BR><BR></P>
发表于 2006-4-5 14:50 | 显示全部楼层

回复:(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=[3.6,7.7,9.3,4.1,8.6,2.8,1.3,7.9,10.0,5.4];<BR>y=[16.5,150.6,263.1,24.7,208.5,9.9,2.7,163.9,325.0,54.3];<BR>a0=[10,10,10];<BR>[a,residual]=lsqcurvefit(@myfun,a0,x,y);<BR><BR>错误提示:<BR>??? Input argument 'a' is undefined.</P>
<P>Error in ==&gt; d:\MATLAB6p5p1\work\myfun1.m<BR>On line 2  ==&gt; f=a(1)*x.^2+a(2)*sin(x)+a(3)*x.^3;<BR><BR></P></DIV>
<P>红色部分写在m文件中<BR>其他的在命令窗口运行,你写的没问题</P>
发表于 2006-4-5 14:52 | 显示全部楼层

回复:(gucansong)如何进行二阶导数拟合?

程序是没问题,不过这个函数拟合的是你的函数吗?你在仔细看看
发表于 2006-4-5 15:12 | 显示全部楼层

回复:(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的乘积因子,这时再进行拟合。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-20 19:30 , Processed in 0.079822 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表