嗨,我试图用欧拉方法在Python绘制一个正弦波函数sin(A)。
使用下面的算法:
在我的情况,我逼近函数sin(A),所以我的功能就是罪(A)的deriviative这是COS(A)。
我的代码如下实施它
def dSindt(A):
dSindt = cos(A) ;
return dSindt;
%matplotlib inline
import matplotlib.pyplot as plt
A0 = 0
t0 = 0;
tf = 3600
del_t = .1;
num_steps = int((tf - t0)/del_t);
A_mesh = [0]*(num_steps + 1);
time_mesh = [0]*(num_steps + 1);
A_mesh[0] = A0;
time_mesh[0] = t0;
for i in range(num_steps):
A_mesh[i+1] = A_mesh[i] + dTindt(A_mesh[i])*del_t
time_mesh[i+1] = time_mesh[i] + del_t;
plt.plot(time_mesh,A_mesh,color='b');
plt.title('Approx. Sin Wave');
plt.xlabel('Time (min)');
plt.ylabel('A')
好像无论我做什么,以步长衍生COS(A)向零头,但从来没有得到为负。它为负,使正弦波功能下降。因此它可以振荡。我erroneuos结果是这里拍照:
我必须做一些非常愚蠢的,但我不明白。
任何帮助表示赞赏。
您解决ODE
y'(t) = cos(y(t))
其在y=pi/2
的吸引稳定点,你达到t=10
所有图形宗旨,经过该解决方案是恒定的。正如你在图中得到。
您需要用一个系统
x' = -y
y' = x
或在一个有限的时间间隔
y' = sqrt(1-y^2)
或在一个简单的集成
y'(t) = cos(t).