Ошибка only size-1 arrays can be converted to Python scalars, не могу разобраться, как исправить
import matplotlib.pyplot as plt
import numpy as np
import math
t1 = 600
t2 = 3600
t3 = 18000
t4 = 36000
t5 = 72000
T = 924
C0 = 0.024
Cs = 1.4
D = 9.79e-14
x = np.arange(0.0, 0.13, 0.1)
def a(x, t, D, Cs, C0):
return ((Cs - C0)*math.erfc(((x*0.01)*0.01)/(2*((D*t)**0.5))) + C0)*100
C1 = a(x,t1,D,Cs,C0)
fig, ax = plt.subplots()
ax.plot(x,C1)
plt.show()
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Вам нужно использовать векторизированный аналог скалярной функции math.erfc - scipy.special.erfc, которая умеет работать с векторами:
from scipy.special import erfc
def a(x, t, D, Cs, C0):
return ((Cs - C0)*erfc(((x*0.01)*0.01)/(2*((D*t)**0.5))) + C0)*100
C1 = a(x,t1,D,Cs,C0)
fig, ax = plt.subplots()
ax.plot(x,C1)
PS ваш вектор x состоит всего из двух элементов, поэтому и график такой...
In [161]: x = np.linspace(0, 0.5, 200)
In [162]: C1 = a(x,t1,D,Cs,C0)
...: fig, ax = plt.subplots()
...: ax.plot(x,C1)

