在matlab中进行区分

use*_*252 -1 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))) 
Run Code Online (Sandbox Code Playgroud)

要么

a = (v2-v1)/(T2-T1) 
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*mas 5

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

v (x) = (L(x-h) - L(x+h))/ 2h
a (x) = (L(x-h) - 2 L(x) + L(x+h))/ h^2 
Run Code Online (Sandbox Code Playgroud)

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

C |h|^2, with C = O( ||d^4 L / dt^4 || )
Run Code Online (Sandbox Code Playgroud)

||.||表示一个函数的上确界范数(即,需要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