2017-12-19 22 views
-1

이것은 내가 해결하려고하는 경계가있는 두 번째 ODE이지만 알아 내지 못합니다. 열 전달 문제입니다. 통찰력을 가지고 있다면, 그것은 매우 감탄할 것입니다.IVP와 BVP가 혼합 된 두 번째 ODE (즉,) y (0)와 y '(L). 어떻게 해결할 수 있습니까?

기본적으로 경계 문제이지만 위치가 다릅니다. 하나는 0에, 다른 하나는 끝에 있습니다.

T (0) 알 수없는, y '(0)은 func입니다. T (0.06)이지만 T (0.06)가 주어진다. 키는 알려진 값 T (0.06) = 300을 연결하여 문제를 해결하는 방법입니다.

Y '= 0, Y (0) = T0, Y'(0) = (08 * 4.82e-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) 

답변

0

이것은 분명히 우아한 코드는 아니지만 원하는 답을 얻는 방법입니다. 하지만 더 나은 코드를 알고 있다면 자유롭게 포즈를 취하십시오.

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)