编程语言
首页 > 编程语言> > Euler在python中的方法

Euler在python中的方法

作者:互联网

我正在尝试实现euler’s method以接近python中e的值.这是我到目前为止:

def Euler(f, t0, y0, h, N):
    t = t0 + arange(N+1)*h
    y = zeros(N+1)
    y[0] = y0
    for n in range(N):
        y[n+1] = y[n] + h*f(t[n], y[n])
        f = (1+(1/N))^N
    return y

但是,当我尝试调用该函数时,我收到错误“ValueError:shape< = 0”.我怀疑这与我如何定义f有关?我在调用euler时尝试直接输入f,但是给了我与未定义的变量相关的错误.我也尝试将f定义为它自己的函数,这给了我一个除0错误.

def f(N):
    for n in range(N): 
        return (1+(1/n))^n

(不确定N是否适合在此使用…)

解决方法:

你确定你没有尝试实施牛顿方法吗?因为牛顿的方法用于近似根.

如果你决定使用牛顿方法,这里是一个稍微改变的代码版本,它近似于2的平方根.你可以用你在函数中使用的函数及其派生词来改变f(x)和fp(x)接近你想要的东西.

import numpy as np

def f(x):
    return x**2 - 2


def fp(x):
    return 2*x

def Newton(f, y0, N):
    y = np.zeros(N+1)
    y[0] = y0
    for n in range(N):
        y[n+1] = y[n] - f(y[n])/fp(y[n])
    return y

print Newton(f, 1, 10)

[1. 1.5 1.41666667 1.41421569 1.41421356 1.41421356
  1.41421356 1.41421356 1.41421356 1.41421356 1.41421356]

这是两个平方根的初始值和前十次迭代.

除此之外,一个很大的问题是使用^代替**代表权限,这是一个合法但在python中完全不同(按位)的操作.

标签:python,numpy,numerical-methods,differential-equations,approximation
来源: https://codeday.me/bug/20190628/1318855.html