?? zhukong.m
字號(hào):
if exist('f.m')==0
disp('沒(méi)有為方程創(chuàng)建名為f.m的函數(shù)文件,請(qǐng)參照下例建立它');
disp('function z=f(x,y)');
disp('z=y-2*x/y;');
disp('并將該文件保存在work文件夾下');
end
if exist('half.m')==0
disp('把work文件夾里沒(méi)有half.m文件');
end
eps=10^(-8);
x1=input('請(qǐng)輸入初始點(diǎn)x1=');
y1=input('請(qǐng)輸入初始條件y1=');
xn=input('請(qǐng)輸入終止條件xn=');
h1=input('請(qǐng)輸入初始步長(zhǎng)h1=');
h=h1;
fprintf('h=%10.8f,x=%10.8f,y=%10.8f\n',h,x1,y1); %輸出初始條件
if h>abs(x1-xn)
disp('初始步長(zhǎng)取得過(guò)大,超過(guò)了求解區(qū)間的長(zhǎng)度')
break
end
while x1<=xn
[u2,v2,h,err]=half(x1,y1,h);
H=h;
half_err=err;
double_err=err;
while half_err>eps %當(dāng)誤差過(guò)大時(shí),反復(fù)縮小步長(zhǎng)
H=h;
[u2,v2,h,err]=half(x1,y1,H);
half_err=err;
end
while double_err<eps %當(dāng)誤差過(guò)小時(shí),不斷將步長(zhǎng)增大
H=2*H;
[u2,v2,h,err]=half(x1,y1,H);
double_err=err;
end
if double_err>=eps %誤差合適,最后進(jìn)行調(diào)整運(yùn)算
H=H/2;
[u2,v2,h,err]=half(x1,y1,H);
end
fprintf('h=%10.8f,x=%10.8f,y=%10.8f\n',H,u2,v2); %輸出此點(diǎn)結(jié)果
x1=u2; %為下一節(jié)點(diǎn)的計(jì)算提供初始值
y1=v2;
h=h1;
end
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -