2017-03-15 7 views
0

하나의 플롯에 ODE에 대한 근사 솔루션, ODE에 대한 정확한 솔루션 및 상대 오류를 표시하려고합니다. 내 함수는이 그래프 중 하나만 출력합니다. 한 번에 세 가지를 그리는 방법과 k에 대한 매개 변수를 변경하는 방법을 잘 모르므로 .02, .1 및 1.5로 k를 표시합니다.MATLAB에서 매개 변수 변경

이 기능은 별도의 파일에 있습니다. 대략적인 해결책은 다음과 같습니다.

function dydt = prblm1_fun(t,y) 
k = 0.02 
if t < 1 
dydt = y(1)*k + sin(pi*t); 
elseif t < 2 
dydt = y(1)*k + 0.5; 
else 
dydt=y(1)*k + exp(t-2)/2; 
end 

이 함수는 대략적인 값을 풀고 3 개를 구하는 방법입니다.

[T,Y] = ode45(@prblm1_fun,[0 2.5],0); 
plot(T,Y) 
k=0.02; 

for i =1:length(T) 
if T(i) < 1 
y_exact(i) = 1/(k^2+pi^2)*(pi*exp(k*T(i))-pi*cos(pi*T(i))- k*sin(pi*T(i))); 
elseif T(i) < 2 
y_exact(i) = 1/2/k*(exp(k*(T(i)-1))-1) + pi/(k^2+pi^2)*(exp(k*T(i)) +  exp(k*(T(i)-1))); 
else 
y_exact(i) = 1/2/k*(exp(k*(T(i)-1))-exp(k*(T(i)-2))) + pi/(k^2+pi^2)(exp(k*T(i)) + exp(k*(T(i)-1))) + 1/2/(k-1)*(exp(k*(T(i)-2)) - exp(T(i)-2)); 
end 
end 


rel_error = (y_exact - Y')./y_exact 

어디로 잘못 가고 있는데 어떻게 하나의 그래프에서 k의 매개 변수를 변경합니까?

답변

0

k 개의 심각한 값을 설정하려면 매개 변수로 ode 함수에 넣을 수 있습니다.

당신은 함수를 정의 할 때 : 당신이 K의 값을 설정하기 위해 루프를 사용할 수 있습니다, 지금은

[T,Y] = ode45(@(t,y) prblm1_fun(t, y,k), [0 2.5],0) 

와 플롯을 수행

function dydt = prblm1_fun(t,y,k) 

당신이 송시 함수를 호출 .

이 질문이 있으십니까?