慕工大数值分析第六课第一题

clc;

clear;

%%

P_1(1) = 0;

P_2(1) = 0;

P_3(1) = 0;

timestep = 0.1; %更改timestep=0.2或0.4

M = 1;

B_1 = [-6, -6];

B_2 = [-6, -6, -6];

B_3 = [-6];

t = 0:0.1:2; %更改中间部分为0.2或0.4

C = t .^ 2 .* exp(-5 .* t);

n = 0;

for i = 1:2/timestep

P_1(i + 1) = P_1(i) + timestep * (n .^ 2 .* exp(-5 .* n) - 6 * P_1(i));

P_2(i + 1) = (P_2(i) + timestep * ((n + 0.1) .^ 2 .* exp(-5 .* (n + 0.1)))) ./ (1 + timestep * 6);

P_3(i + 1) = (P_3(i) + 1/2 * timestep * (((n + 0.1) .^ 2 .* exp(-5 .* (n + 0.1)) + n .^ 2 .* exp(-5 .* n) - 6 * P_3(i)))) / (1 + 1/2 * timestep * 6);

n = n + 0.1;

end

sol_1 = [1.9722e-04 0];

P_4 = [0 1.9722e-04];

for i=1:2/timestep-1

[L R]=AB2(timestep,M,B_1,[C(i+1),C(i)],sol_1);

P_4(i+2) = R/L;

sol_1 = [P_4(i+2) P_4(i+1)];

end

sol_2 = [1.9722e-04 0];

P_5=[0 1.9722e-04];

for i=1:2/timestep-1

[L5 R5] = AM3(timestep,M,B_2,[C(i+2),C(i+1),C(i)],sol_2);

P_5(i+2) = R5/L5;

sol_2 = [P_5(i+2) P_5(i+1)];

end

sol_3 = [1.9722e-04 0];

P_6 = [0 1.9722e-04];

for i = 1:2/timestep-1

[L6 R6] = BDF2(timestep, M, B_3, [C(i+2)],sol_3);

P_6(i+2) = R6/L6;

sol_3 = [P_6(i+2) P_6(i+1)];

end

P=exp(-5*t).*(t.*t-2*t+2)-2*exp(-6*t);

plot(t,P,'k--','LineWidth',2),hold on

plot(t,P_1),hold on

plot(t,P_2),hold on

plot(t,P_3),hold on

plot(t,P_4),hold on

plot(t,P_5),hold on

plot(t,P_6),grid on

axis([0 2 0 4*10^-3])

xlabel('t'),ylabel('Phi')

title('timestep=0.1')

%axis([10^-5,1,10^-20,10^10])

legend({'exakt','Euler Expl.','Euler Impl','Trapez','AB2','AM3','BDF2'},'Location','northeast')

function [LHS, RHS] = AB2(timestep, M, B, C, sol)

LHS = M;

RHS = (M + 3/2 * timestep * B(1)) * sol(1) + timestep/2 * (3 * C(1) - B(2) * sol(2) - C(2));

end

function [LHS, RHS] = AM3(timestep, M, B, C, sol)

LHS = M - 5/12 * timestep * B(1);

RHS = (M + 2/3 * timestep * B(2)) * sol(1) + 1/12 * timestep * (5 * C(1) + 8 * C(2) - B(3) * sol(2) - C(3));

end

function [LHS, RHS] = BDF2(timestep, M, B, C, sol)

LHS = 3/2 * M - timestep * B;

RHS = 2 * M * sol(1) - 1/2 * M * sol(2) + timestep * C;

end

function [LHS, RHS] = OST(theta, timestep, M, B, C, sol) %Kapitel6的13页

if size(M) == 1

LHS = M - theta * timestep * B(1);

RHS = (M + (1 - theta) * timestep * B(2)) * sol + timestep * (theta * C(1) + (1 - theta) * C(2));

else

LHS = M - theta * timestep * B;

RHS = (M + (1 - theta) * timestep * B) * sol + timestep * (theta * C + (1 - theta) * C);

end

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值