在matlab中进行区分

时间:2011-11-27 10:45:27

标签: math matlab numerical-methods differential-equations

我需要找到对象的加速度,文本中给出的公式是a = d ^ 2(L)/ d(T)^ 2,其中L =长度,T =时间 我在matlab中使用这个等式计算了这个

a = (1/(T3-T1))*(((L3-L2)/(T3-T2))-((L2-L1)/(T2-T1))) 

a = (v2-v1)/(T2-T1) 

但我没有得到正确答案,任何机构都可以通过matlab中的任何其他方法告诉我如何找到(a)。

1 个答案:

答案 0 :(得分:5)

这与matlab无关,你只是想在数字上区分两次函数。根据函数的较高(第3,第4)个导数的行为,这将产生或不会产生合理的结果。假设L是可微分的四倍,您还必须使用类似于您正在使用的公式来预期订单|T3 - T1|^2的错误。您可以尝试使用

等对称近似值,而不是使用不同大小的间隔
v (x) = (L(x-h) - L(x+h))/ 2h
a (x) = (L(x-h) - 2 L(x) + L(x+h))/ h^2 

从我的数学数学讲座回忆起,这更适合于高阶导数的数值计算。您仍会收到订单错误

C |h|^2, with C = O( ||d^4 L / dt^4 || )

||.||表示函数的上限范数(也就是说,L的四阶导数需要有界)。如果这是真的,您可以使用该公式来计算必须选择小h以产生您愿意接受的结果。但是请注意,这只是理论误差,这是对L的泰勒近似的分析的结果,见[1]或[2] - 这是我从刚才那里得到的 - 或任何其他数学数学入门书。根据L的评估质量,您可能会得到其他错误;另外,如果|L(x-h) - L(x)|非常小,则数字减法可能会受到限制。

[1] Knabner,Angermann; Numerik partieller Differentialgleichungen;施普林格

[2] http://math.fullerton.edu/mathews/n2003/numericaldiffmod.html