0
我有一個代碼,我想添加一個額外的情節。我想繪製兩個函數的相對誤差。我不確定在循環中放置這個的位置,以便它不會給我一個錯誤消息,並將所有三種情況繪製爲單個圖形。此外,我的相對錯誤代碼可能有一些錯誤,這可能是導致問題的原因。在MATLAB中繪圖
這是相對誤差的代碼:
rel_error = (y_exact1 - Y(:,2)')./y_exact; %relative error
figure()
plot(T,rel_error,'r')
這是我需要將其添加到
function ivp1()
clear;clc;close all;
t=linspace(0,2.5);
K=[.02 .1 1.5];
for i=1:3
k =K(i);
[T,Y] = ode45(@prblm1_fun,t,0); %Solving for the approximate solution to the IVP
figure()
plot(T,Y)
hold on
y_exact1 = 1/(k^2+pi^2)*(pi*exp(k*t)-pi*cos(pi*t)-k*sin(pi*t));
y_exact2 = 1/(2*k)*(exp(k*(t-1))-1) + pi/(k^2+pi^2)*(exp(k*t) + exp(k* (t-1)));
y_exact3 = 1/2/k*(exp(k*(t-1))-exp(k*(t-2))) + pi/(k^2+pi^2)*(exp(k*t) + exp(k*(t-1))) + 1/2/(k-1)*(exp(k*(t-2)) - exp(t-2));
for i=1:length(t)
if t(i)<1
plot(t(i),y_exact1(i),'mo')
hold on
elseif t(i)<2
plot(t(i),y_exact2(i),'mo')
hold on
else
plot (t(i),y_exact3(i),'mo')
hold on
end
end
end
function dy= prblm1_fun(t,y) %This is the function of the IVP for varying values of t
dy = zeros(1,1);
if t < 1
dy(1)= y(1)*k + sin(pi*t);
elseif t < 2
dy(1)= y(1)*k + 0.5;
else
dy(1)= y(1)*k + exp(t-2)/2;
end
end
end
功能這是k個值中的一個所期望的結果:
錯誤訊息你好嗎?你能附上一個期望結果的圖表(即使是_paint_中的原油)嗎? –
@ Dev-iL我剛剛添加了圖片 – Riya