混合了IVP和BVP的第二个常微分方程,(即)y(0)和y'(L)。如何解决?



这是我试图解决的边界的第二个颂歌,但我不知道。这是一个传热问题。如果您有见解,那将是非常明显的。

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

最新更新