MATLAB基础——subs函数

作用是将函数中的旧符号替换为新符号,用法如下:

subs(S,OLD,NEW)

表示将符号表达式S中的符号变量OLD替换为新的值NEW

一共四种用法,实例如下:

首先定义三个符号变量和一个符号表达式

 syms x y z
 S=x^2+y^2
 
S =
 
x^2 + y^2
  1. 将变量x替换为数值

>> subs(S,x,1)
 
ans =
 
y^2 + 1
  1. 将x替换为变量z

subs(S,x,z)
 
ans =
 
y^2 + z^2
  1. 同时将x和y分别替换为1和z

subs(S,{x,y},{1,z})
 
ans =
 
z^2 + 1
  1. 将单变量替换为数组

subs(S,x,[1 2;3 4])
 
ans =
 
[ y^2 + 1,  y^2 + 4]
[ y^2 + 9, y^2 + 16]

使用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)采样点密集的离散图形连续化') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值