Numpy 第二乐章,IVP和BVP混合,(即)y(0)和y';(五十) 。如何解决?
这是第二首有边界的颂歌,我正试图解决,但我不明白。这是一个传热问题。如果你有真知灼见,这将是非常可观的 基本上是边界问题,但位置不同。一个在0,另一个在末尾 T(0)未知,y'(0)是函数。T(0.06)的值,但给出了T(0.06)。 关键是如何连接已知值T(0.06)=300来解决问题。 y'=0,y(0)=t0,y'(0)=(4.82e-08*t0**4-208.0)/1.2,y(0.06)=300 我试过这个密码,但没有成功Numpy 第二乐章,IVP和BVP混合,(即)y(0)和y';(五十) 。如何解决?,numpy,ode,Numpy,Ode,这是第二首有边界的颂歌,我正试图解决,但我不明白。这是一个传热问题。如果你有真知灼见,这将是非常可观的 基本上是边界问题,但位置不同。一个在0,另一个在末尾 T(0)未知,y'(0)是函数。T(0.06)的值,但给出了T(0.06)。 关键是如何连接已知值T(0.06)=300来解决问题。 y'=0,y(0)=t0,y'(0)=(4.82e-08*t0**4-208.0)/1.2,y(0.06)=300 我试过这个密码,但没有成功 import numpy as np import matplo
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from scipy.integrate import odeint
def dU_dx(U, x):
return [U[1], 0]
#set initial values
y0 = T0
z0 = (4.82e-08*T0**4-208.0)/1.2
U0 = [y0, z0]
yL = 300 # how do I use this boundary condition?
L=0.006
#solve 2nd ode
xs = np.linspace(0, L, 100)
Us = odeint(dU_dx, U0, xs)
ys = Us[:,0]
plt.xlabel("x")
plt.ylabel("T")
plt.title("2nd ODE")
plt.plot(xs,ys);
from scipy.interpolate import interp1d
g = interp1d(xs,ys)
T=g(0)
print("Temp(at 0)=",T)
这绝对不是一个优雅的代码,但这是我得到我想要的答案的方式。但是,如果你知道更好的代码,请随意摆姿势
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from scipy.integrate import odeint
def dU_dx(U, x):
return [U[1], 0]
#Assume initial value
T0=292.75
y0 = T0
z0 = (4.82e-08*T0**4-208.0)/1.2
U0 = [y0, z0]
L=0.06
xs = np.linspace(0, L, 100)
Us = odeint(dU_dx, U0, xs)
ys = Us[:,0]
plt.xlabel("x")
plt.ylabel("T")
plt.title("2nd ODE")
plt.plot(xs,ys);
from scipy.interpolate import interp1d
g = interp1d(xs,ys)
#Repeat until see T(0.06)=300
T0=g(L)
print("Temp(0)=",T0)