振动加速度的一次积分得出速度,二次积分得出位移.但具体是怎样做呢? 假设加速度是2M/s^2,时间是500Ms,求

求速度和位移? 最好能用C语言贴出来我看看. 我找到很多求定积分的C源程序,但不知道怎样将加速度值代入进去得出速度和位移.被积函数,上限,下限.像下面这段程序:
如果要将加速度2M/s^2代入进去,应该将被积函数改成怎样?,上限和下限对应的是时间吗?
#include "stdio.h"
double f(double x)
{ double y;
y=1+x*x;
return y;
}
double sab(double a,double b,int n)
{
double h,s;
int i;
h=(b-a)/n;
s=0;
for(i=1;i<n;i++)
s+=h*f(a+i*h);
return s;
}

void main()
{
double a,b,q;
int n;
scanf("%lf,%lf,%d",&a,&b,&n);
q=sab(a,b,n);
printf("%lf",q);
}

1. 几个自由度? 2. 有无阻尼? 3. 受迫与否?
假如是最简单的“单自由度无阻尼简谐振动”:
那么,运动方程属于“二阶常系数线性微分方程”,其通解是三角函数,根本用不着采用积分;
直接输入数值,用C++自带的三角函数就能求出"位移";
同理,可以得到”速度“;
然后根据初相位、运动时间、周期的关系,编程判断出经过了几次平衡点,再结合振幅和先前求出的位移,就能求出“路程"。

另外,毕业好多年,这函数看得不甚理解。但里面明显只有下限a、上限b和迭代次数n这三个变量,只是一个单纯的数学函数的编程,缺少其他力学量的输入函数,所以和振动这个现象没有毛线的关系,所以你根本用不到这个程序。追问

电路里,我用的是压电式加速度传感器,所以可以通过一次积分得到速度,二次积分得到位移.
我想了解的是 通过什么条件,可以做一次积分得到速度,例如: 如果得到加速度的幅值,频率,周期,怎样建立对应的被积函数,然后做积分

追答

C语言程序做的是“叠加”,不是积分。
要想知道什么时候能积分,就要看高数:定积分存在的条件。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
直接积分不是实用方法,因实际数据都混有噪声,每次积分将累积这些噪声(你可以想象一个小的常量经长时间积分变得巨大、乃至无穷大),也就是形成所谓趋势项。
可参考频域积分法:王济,... Matlab在信号处理中的应用,超星上有的。追问

谢谢,可是我现在想知道的不是实用方法,而是某一方法的条件和过程.

追答

函数 sab(a, b, n) 定义很奇怪,如果 a b是 时间上下限,那么 f 是求位移吗?整个概念有些混乱,或者带有几个隐含的假设(初速度值、恒加速度值)。
按定义重新改写:dS = vi*dt + 1/2*ai*dt^2, S =S +dS, vi = vi + ai*dt, 其中
dS 微位移,dt 微时间;vi ai 为即时速度、加速度。
如果 ai 不是常数,对 dS 的定积分就不能简化成简单的公式。
建议你再研究一下微分方程及其数值解法(如龙格-库塔法)。

追问

被你这么一说,我似乎有点懂了. 你看看我的理解是否对?
加速度值是已知的常数,时间也是已知的常数,分别对应a[i],t[i]数组.
那么如果是要求速度,公式应该是:
被积函数 f(v=v0+at),v0是初速度,
函数 sab(a,b ,n) ,其中a,b 对应的是时间数组 t[i]中的上下限.
你看改成这样再代入进去求定积分对吗? 这样出来后就是速度的值了.

追答

大体上如此,但为了求得更精确的积分,有好几种改进的积分算法,可搜一下看。
另外,写函数是为了分离某些专用功能,但若不能通用化,势必要在今后不断修改或重复写基本雷同的代码,比如 f 函数(暂不说它是否正确),它只能供加速度为2时使用,就不如把加速度作为参数来得灵活通用。

本回答被提问者采纳
第2个回答  2012-10-22
如果是简谐振动,那只有在质点过零瞬间加速度达到最大值2m/s²,而并非所有时刻都是。其函数为正弦曲线,与位移曲线相差90°。所以速度也是变化的,位移也是变化的。除非你这500ms小于半个周期,否则积分算出来也是错的。追问

即使算出来是错的,起码知道怎么算.我现在连怎么算都不知道~你能告诉我,怎样代入进去程序里面计算吗

追答

呵呵,不好意思,我对程序不专业

追问

没关系,谢谢了. 按你说的,速度是变化的,位移是变化的,这是对的,因为振动加速度是不断变化的.那你知道按以上的假设条,加速度的条件函数应该是怎样吗?

追答

振动加速度值为2m/s²,只能理解为最大值。还必须知道振动频率,计算周期。知道了周期和幅值就能建立加速度的正弦函数。

第3个回答  2012-10-22
wsad sda