使用Matlab绘制连续函数,通常先在一组离散自变量上计算相应的函数值,用点表示这组数据对,但离散点不能表现函数的连续性,为呈现离散点之间的函数情况,有以下两种常用方法:一是对区间进行更细的分割,计算更多的点,近似表现函数的连续变化;二是把两点用直线连接,近似表现两点间函数性状[^1]。
以下是不同场景下使用Matlab绘制连续函数的示例:
### 某连续函数的不连续导函数图像绘制
```matlab
%绘制区间[-1,0)上的函数图像
x=[-1:0.001:0];
%计算对应点处f(x)函数值
y=(-x).^(3/2).*sin(1./-x);
%计算对应点处f'(x)值
z=cos(1./x)./(-x).^(1/2) + (3.*(-x).^(1/2).*sin(1./x))/2;
%将图像分为两个坐标系,f(x)图像绘制在第一个图象内
subplot(2,1,1);
plot(x,y);
xlabel('y=f(x)');
%f'(x)图像绘制在第二个图象内
subplot(2,1,2);
plot(x,z);
xlabel('y=f`(x)');
%绘制点(0,0)上的函数图像
x=0;
y=0;
%在第一个区域内继续绘图
subplot(2,1,1);
hold on;
plot(x,y);
%在第二个区域内继续绘图
subplot(2,1,2);
hold on;
x=0;
z=0;
plot(x,z);
%绘制区间(0,1]上的函数图像
x=[0:0.001:1];
%计算对应点处f(x)函数值
y=x.^(3/2).*sin(1./x);
%计算对应点处f'(x)值
z=(3.*x.^(1/2).*sin(1./x))./2 - cos(1./x)./x.^(1/2);
%在第一个图象的(0,1]区间绘制f(x)的图像
subplot(2,1,1);
hold on;
plot(x,y);
%在第一个图象的(0,1]区间绘制f'(x)的图像
subplot(2,1,2);
plot(x,z);
```
### MATLAB绘制连续函数某一点处导数切线
```matlab
syms x;
s=0:0.1:10;
f=x^2;
Y=subs(f,x,s);%用实际数字将原函数中的数字替换
Y1=subs(diff(f),x,s);%用实际数字将导函数中是数字替换
plot(s,Y,s,Y1);%画线
hold on;
x0=3.2;%确认某一点
k=subs(diff(f),x,x0);
y0=subs(f,x,x0);
y=k*(x-x0)+y0;%点斜式求切线函数
res=subs(y,x,s);
plot(s,res,'r');%红线为3.2处切线,蓝线为原函数曲线,绿线为切线曲线
```
### 连续函数可视化——连续调制波形y=sin(t)sin(9t)
```matlab
t1=(0:11)/11*pi; %过少的采样点
t2=(0:400)/400*pi; %401个采样点,密集
t3=(0:50)/50*pi; %51个采样点已足够
y1=sin(t1).*sin(9*t1); %两个函数的数组运算
y2=sin(t2).*sin(9*t2);
y3=sin(t3).*sin(9*t3);
subplot(2,2,1),plot(t1,y1,'r.') %离散点图形
axis([0,pi,-1,1]),title('(1)采样点过少的离散图形')
subplot(2,2,2),plot(t1,y1,t1,y1,'r.') %离散点及其中的连线,可以看出线性插值
axis([0,pi,-1,1]),title('(2)采样点过少的线性插值连续图形')
subplot(2,2,3),plot(t2,y2,'r.') %密集的点可以直接绘制图形
axis([0,pi,-1,1]),title('(3)采样点密集的离散图形')
subplot(2,2,4),plot(t3,y3) %51个采样点,线性插值之后得到连续曲线
axis([0,pi,-1,1]),title('(4)采样点密集的离散图形连续化')
```