最近在学习使用符号函数,在此过程中遇到了许多问题,尤其是我不太清楚应该用什么函数来画符号函数的图。之后我问了我的老师,也看了很多博文,总结了一些符号函数画图的方法,希望可以帮到大家。我也非常欢迎大家来指出我的错误,或者有更好的方法的朋友要记得跟我交流交流哦~, ~
首先,要知道plot函数是画数值图像的,而函数、函数句柄根本就没有具体数值,人家还等着你去赋值呢!所以怎么能画出函数图呢。(函数句柄 创建函数句柄)
下面的函数就用一道统一的例题来讲解吧!
这是一道老师给我们布置的作业题,解题过程可以去百度,这里就只讲作图方法。
用常微分方程解答下面例题:
某种飞机在机场降落时,为了减少滑行距离,在触地的瞬间,飞机尾部张开减速伞,以增大阻力,使飞机迅速减速并停下。
现有一质量为9000kg的飞机,着陆时的水平速度为700km/h. 经测试,减速伞打开后,飞机所受的总阻力与飞机的速度成正比(比例系数为k=6.0e6). 问从着陆点算起,飞机滑行的最长距离是多少(要求得到最终结果以及时间-路程(t-s)的图像)
%方法一(v-t)
syms t v(t) x(t);
fun = 9000*diff(v,t) == -6.0e6 * v;
cond1 = v(0)==700;
v(t)=dsolve(fun,cond1,t);
%方法二(s-t)
fun2 = diff(x) == -(9000/6.0e6)*diff(v);%diff是差分和近似导数
cond2 = x(0)==0; %时间t=0是滑行距离x(t)=0,是方程的特解
x(t)=dsolve(fun2,cond2,t); %求常微分方程
%结果得到时间和飞机速度的关系式
I = limit(x(t),t,inf);%对t求极限得到飞机滑行的最长距离为1.05
%要画的图是时间t和滑行距离的图
fplot(x(t),t,[0 0.01]);
xlabel('距离');
ylabel('时间');
具体来看一下fplot有哪些用法:
(1)fplot(f)
在默认区间 [-5 5](对于 x)绘制由函数 y = f(x) 定义的曲线。
%在 x 的默认区间 [-5 5] 绘制 sin(x)。
fplot(@(x) sin(x))%匿名函数
%fplot(sin(x))%注意不要犯这样的错误,不信邪的你可以试试
%函数或变量'x'无法识别
syms x ;%符号数学计算
y=sin(x);
fplot(y);
(2)fplot(f,xinterval) 将在指定区间绘图。
将区间指定为 [xmin xmax] 形式的二元素向量,可以用于绘制分段函数。
(3)fplot(funx,funy)
在默认区间 [-5 5](对于 t)绘制由 x = funx(t) 和 y = funy(t) 定义的曲线。用于绘制参数化函数。
(4)fplot(funx,funy,tinterval) 将在指定区间绘图。将区间指定为 [tmin tmax] 形式的二元素向量。
%方法一
syms t v(t) x(t);
fun = 9000*diff(v,t) == -6.0e6 * v;
cond1 = v(0)==700;
v(t)=dsolve(fun,cond1,t);
%方法二
fun2 = diff(x) == -(9000/6.0e6)*diff(v);%diff是差分和近似导数
cond2 = x(0)==0; %时间t=0是滑行距离x(t)=0,是方程的特解
x(t)=dsolve(fun2,cond2,t); %求常微分方程
%结果得到时间和飞机速度的关系式
ezplot(x(t),[0,1.05])
xlabel('时间')
ylabel('距离')
你品,你仔细品,画出来的图真的太丑了!
但是,用ezplot函数画比较简单的函数出来的图还是好看的,比如:
ezplot('x^2')%在域 [−2π,2π] 中绘制显函数 x^2
具体来看一下ezplot有哪些用法:
(1)ezplot(fun)
绘制表达式 fun(x) 在默认定义域 -2π < x < 2π 上的图形,其中 fun(x) 仅是 x 的显函数。
fun 可以是函数句柄、字符向量或字符串。
(2)ezplot(fun,[xmin,xmax])
绘制 fun(x) 在以下域上的图形:xmin < x < xmax。
对于隐函数fun2(x,y):
(3)ezplot(fun2)
在默认域 -2π < x < 2π 和 -2π < y < 2π 中绘制 fun2(x,y) = 0。
(4)ezplot(fun2,[xymin,xymax])
在 xymin < x < xymax 和 xymin < y < xymax 域中绘制 fun2(x,y) = 0