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의 매개 변수를 변경합니까?