Matlab程序代码:
clear s t x0 y0 a b
syms s t
f=sin(s)*sin(t);
a=16.0;
b=16.0;
x0=-8;
y0=-8;
m=40;
n=40;
h1=a/m;
h2=b/n;
hold % 将新旧图形保持在同一个图中
for i=1:m % i 从1每次以1为距离差一直加到m
s=x0+(i-1)*h1;
for j=1:n % j 从1每次以1为距离差一直加到n
t=y0+(j-1)*h2;
d=eval(f); % 执行式子f
y1=t+2/3*h1*d;
if abs(y1-t)>2/3*h2 % 检查(y1-t)的绝对值是否大于2/3*h2
x1=s+1/d*h2*2/3; % 如果上面的if语句为真则执行
plot([s,x1],[t,t+h2*2/3]) % 以向量"[s,x1]"为x轴,以向量“[t,t+h2*2/3]”为y轴绘图
else
plot([s,s+h1*2/3],[t,y1]) % 以向量"[s,s+h1*2/3]"为x轴,以向量“[t,y1]”为y轴绘图
end
end
end
title('dy/dx=sinx*siny'); % 以“dy/dx=sinx*siny”为该图形的标题
xlabel('x'); % 标记x轴
ylabel('y') % 标记y轴
运行结果: