📄 ex934_1.m
字号:
function ex934_1
clear;
Tol=0.5e-10; i=1; m(1)=0; m(2)=10; yn=35/3; h=0.02; N=1/h;
while 1
[x,y]=ode45(@f_shoot,[2 3],[8 m(i)]);
y1_end=y(end,1);
if (abs(y1_end-yn)<Tol) break, end
if i>=2
m(i+1)=m(i)-(m(i)-m(i-1))*(y1_end-yn)/(y1_end-y1_end_old);
end
y1_end_old=y1_end;
i=i+1;
end
m', [x,y],
plot(x,y(:,1),'-r',x,y(:,2),'.-b');
title('非线性打靶法求解微分方程边值问题')
legend('y(x)','y{\prime}(x)',0)
xlabel('x'),ylabel('y(x) and y{\prime}(x)')
text(2.1,7,['Guess for y{\prime}(2)=',num2str(m(i))])
text(2.6,7,['y(3)=',num2str(y1_end)])
%------------------------------------------------------------------
function f=f_shoot(x,y)
f=[y(2);-y(1)*y(2)/4+x^3/2+4];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -