MATLAB【函数和图像】
目录一、常用的数学函数1.函数表示的几种写法 1.将函数变量定义为符号变量2.使用function命令3.使用匿名函数 二、分段函数的表示 三、使用函数绘制图形1.绘制绝对值的函数图像2.绘制取整函数的图像3.绘制分段函数4.绘制正态分布曲线5.绘制符号函数 6.绘制正负数的立方根 7.如何绘制含有无穷的图8.如何绘制隐函数 如何设置ezplot的格式9.使用meshgrid绘制多个
目录
如何设置ezplot的格式
一、常用的数学函数
名 称 | 含 义 | 名 称 | 含 义 | 名 称 | 含 义 |
abs | 绝对值 | asin | 反正弦 | coth | 双曲余切 |
exp | 指数 | acos | 反余弦 | asinh | 反双曲正弦 |
log | 对数 | atan | 反正切 | acosh | 反双曲余弦 |
log10 | 10为底对数 | acot | 反余切 | atanh | 反双曲正切 |
log2 | 2为底对数 | sec | 正割 | acoth | 反双曲余切 |
pow2 | 2次幂 | csc | 余割 | sech | 双曲正割 |
sqrt | 平方根 | asec | 反正割 | csch | 双曲余割 |
sin | 正弦 | acsc | 反余割 | asech | 反双曲正割 |
cos | 余弦 | sinh | 双曲正弦 | acsch | 反双曲余割 |
tan | 正切 | cosh | 双曲余弦 | ||
cot | 余切 | tanh | 双曲正切 |
简单举例
1.函数表示的几种写法
1.将函数变量定义为符号变量
syms x
fx=sqrt(1+x^2);
2.使用function命令
function f=myfun(x)
f=(3-2.*x).^2.*x;
3.使用匿名函数
fx=@(x) (x+10)
二、分段函数的表示
使用if-else判断能够帮助我们实现分段函数
function y= w(x)
if x<0
y=x+2;
else
y=x-3;
end
end
三、使用函数绘制图形
1.绘制绝对值的函数图像
#清屏
clear
#将我们的x设置为变量
syms x
#使用匿名方法创建我们的y
y=@(x) abs(x);
#使用fplot,第一个参数为我们的方法,第二个参数为我们的自变量x的范围
fplot(y,[-5,5])
#保持我们当前的图不被重置
hold on
#设置我们的x轴标签
xlabel('x')
#设置我们的y轴标签
ylabel('y')
#设置我们的整张图的标签
title('y|x|')
2.绘制取整函数的图像
clear
syms x
y=@(x) floor(x);
fplot(y,[-5,5])
hold on
xlabel('x')
ylabel('y')
3.绘制分段函数
clear
syms x y
y1=@(x) 2*sqrt(x);
#第三个参数为我们的绘制图线的样式
fplot(y1,[0,1], '-b')
hold on
y2=@(x) 1+x;
fplot(y2,[1,5], '--og')
#设置我们的图例
legend('y=2*sqrt(x) ', 'y=1+x');
title('分段函数')
xlabel('x')
ylabel('y')
#设置我们的坐标轴的范围,第一个参数和第二个参数表示x轴的范围
#第三个参数和第四个参数表示y轴的范围
axis([0,5,0,5])
4.绘制正态分布曲线
clear
x=-2:0.01:2;
y=(1/sqrt(2*pi))*exp(-x.^2/2);
#plot函数将我们的x,y传递进去就能够绘图
plot(x,y)
title('正态分布曲线')
5.绘制符号函数
clear
#设置我们x轴的最值
xm=5;
#设置我们的x取遍从最小值到最大值,并且间隔为0.01
x=-xm:0.01:xm;
#sign为我们符号函数
y=sign(x);
#将我们x==0时置空,就会形成断点
y(x==0)=nan;
figure
#画图,并且设置我们的线的宽度为2
plot(x,y,'LineWidth',2)
hold on
#绘制我们0,1处和0,-1处的两个空心点
plot(0,1,'o',0,-1,'o');
#在我们的原点处点上一个点
plot(0,0,'.','MarkerSize',24)
#给标题命名
title('符号函数','FontSize',16)
#设置我们的x轴标签和y轴标签
xlabel('\itx','FontSize',16)
ylabel('\ity','FontSize',16)
#绘制网格线
grid on
axis([-xm,xm,-2,2])
6.绘制正负数的立方根
clear
%设置x的max范围
xm=5;
%设置我们的x的范围为从-xm到xm,间距为0.01
x=-xm:0.01:xm;
%用对向量中每一个元素的乘法的方式让y=x的三次方根
y=x.^(1/3);
%绘图
figure
%创建两行一列的图标,并且将我们下面要画的图画在第一张图表
subplot(2,1,1)
%使用plot方法,并且将我们的对应的x,y值传入,并且设置我们的画的线的宽度为2
plot(x,y,'LineWidth',2)
%绘制我们的网格线
grid on
%给我们的图表打上标题
title('负数不正确的开立方','FontSize',16)
%分别根我们的x,y轴打上标题
xlabel('\itx','FontSize',16)
ylabel('\ity','FontSize',16)
%因为我们在图1中发现我们的立方根的负数范围不正确,
%所以我们需要单独将我们的符号取出来,然后乘以我们的原来函数的绝对值
y=sign(x).*abs(x).^(1/3);
subplot(2,1,2)
plot(x,y,'LineWidth',2)
grid on
title('负数正确的开立方','FontSize',16)
xlabel('\itx','FontSize',16)
ylabel('\ity','FontSize',16)
7.如何绘制含有无穷的图
如果我们直接这样绘制我们的tan(x)函数就会出现这样的情况
clear;
x=-5:0.01:5;
y=tan(x);
plot(x,y,'LineWidth',2)
使用ezplot,将我们的公式传入, 再传入我们的范围,就能够把图画出来。
clear;
syms x
y=tan(x);
y=inline(y);
ezplot(y,[-2*pi,2*pi]);
8.如何绘制隐函数
ezplot还可以绘制隐函数图像
clear;
syms x
ezplot("x^2/4+y^2/6=1");
使用axis([x轴下线,x轴上限,y轴下限,y轴上限]) 可以指定我们坐标轴的范围
axis("equal")可以让我们的坐标轴的x,y轴等距
如何设置ezplot的格式
将我们的ezplot之后的结果传递给一个参数,然后使用我们的set来设定我们的ezplot画的图的类型
clear;
syms x
h=ezplot("x^2/4+y^2/6=1");
set(h,'color','r','LineWidth',2);
9.使用meshgrid绘制多个函数
使用meshgrid能够让我们的x,y中的数实现一一对应,采用meshgrid能够让我们同时绘制多条曲线
%对数函数
clear %清除变量
xm=3; %最大自变量
x=0.1:0.1:xm; %自变量向量
a=[1/exp(1),0.5:0.5:2,exp(1),10]; %底数向量
[A,X]=meshgrid(a,x); %底数和自变量矩阵
Y=log(X)./log(A); %对数函数矩阵
figure %创建图形窗口
plot(x,Y,'LineWidth',2) %画函数曲线族
title('对数函数曲线族','FontSize',16) %加标题
xlabel('\itx','FontSize',16) %加横坐标
ylabel('\ity','FontSize',16) %加纵坐标
grid on %加网格
legend([repmat('\ita\rm=',length(a),1),num2str(a')],4)%复杂图例
hold on %保持属性
plot(x,-log(x),'*',x,log(x),'+',x,log10(x),'x')%补画自然对数和常用对数曲线
10.求反函数
使用y=finverse(y)即可以让y变成自身的反函数
syms x
y=x^2;
z=finverse(y);
z
11.求复合函数
1.使用compose求复合函数
g=compose(f,g)
syms x
y=x^2;
g=sin(x);
z=compose(y,g);
syms x z
f=sin(x);
g=x^2;
compose(g,f) %返回复合函数g(f(y))
compose(g,f,x,z) %返回自变量是z
2.使用subs求复合函数
syms x z
f=sin(x);
g=x^2;
subs(g,f) %返回复合函数f(g(y))
12.含有调制曲线的图像
在一些周期性函数前面,我们可以乘上一些函数来绘制我们的调制曲线,让我们的函数能够被约束在两条调制曲线中。在下面的代码中我们使用了e^(-x)作为我们的调制曲线
clc
clear
syms x
y=sin(pi*x)*exp(-x);
x=-5:0.01:5;
y=inline(y);
plot(x,y(x),x,exp(-x),x,-exp(-x),'LineWidth',2);
13.自动求解方程
syms x a b c %定义符号变量
x1=-2; y1=0; x2=0;y2=1; x3=1; y3=5; %3点的横、纵坐标
y=a*x^2+b*x+c; %二次符号函数
s1=subs(y,x,x1)-y1 %第1个代数方程
s2=subs(y,x,x2)-y2 %第2个代数方程
s3=subs(y,x,x3)-y3 %第3个代数方程
[a,b,c]=solve(s1,s2,s3)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)