gpt4 book ai didi

python - 改进的欧拉方法

转载 作者:行者123 更新时间:2023-12-03 08:09:36 29 4
gpt4 key购买 nike

因此,我有下面的代码用于改进的Euler方法陶氏:

import numpy as np
import matplotlib.pyplot as plt


int = np.array([50, 256])

yt = lambda x: 2*x**4
f = lambda x,t: 4*y/x

x0 = 1.
xf = 3.

for i in range(len(int)):
x = np.linspace(x0, xf, int[i]+1)
h = (xf-x0)/int[i]

y = np.zeros(int[i]+1)
y[0] = yt(x0)

for k in range(1, len(y)):
fk = f(x[k-1], y[k-1])
fkh = f(x[k], y[k-1]+h* f(x[k-1], y[k-1]))
y[k] = y[k-1] + (h/2.)*(fk+fkh)

abserr = np.abs(yt(x) - y)

plt.semilogy(x,abserr,'*')
plt.show()



但是,当我运行它时,它给了我这个错误,我不知道如何解决。我在网上搜索过,并且看到有人对其进行矢量化处理,但我还没有使它起作用。任何建议或解决方案将不胜感激
TypeError: only size-1 arrays can be converted to Python scalars

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "noah.py", line 23, in <module>
y[k] = y[k-1] + (h/2.)*(fk+fkh)
ValueError: setting an array element with a sequence.

最佳答案

您在lambda函数f的定义中有错字。它应该是

f = lambda x,y: 4*y/x

由于输入错误,该函数返回了一个长度为51和257的数组,该数组来自x的定义。我发现的另一个问题是,将变量“int”更改为类似“int_1”的方法将是更好的编程实践。这是因为int是Python语言的一部分。

关于python - 改进的欧拉方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61447443/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com