Numpy 第二乐章,IVP和BVP混合,(即)y(0)和y';(五十) 。如何解决?

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

这是第二首有边界的颂歌,我正试图解决,但我不明白。这是一个传热问题。如果你有真知灼见,这将是非常可观的

基本上是边界问题,但位置不同。一个在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 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)