y=4x-x^2; % 定义了一个符号表达式
diff(y,x)一阶求导
subs(s,x,1) 就表示把表达式S中x换为1
所以意思是求x=1处的斜率k
y1=@(x)k(x-1)+3;利用匿名函数创建切线贡献y1=k(x-1)+3;@用于获取函数句柄,(x)表示变量
fplot(x,y)、fplot(x,y1)是生成方程曲线和切线图
hold on 英文上 握住 等一下
如果没有hold on 会把前面的方程图直接覆盖,所以他是用来实现后面的图和前面的图在一个图里共存
legeng %给注释
axsi 用于控制横纵坐标轴的范围
这是函数运算部分最简单基础的,你要是连这也不会,我也是惊了
点击画图工具栏上的“直线”工具,然后再点击捕捉工具栏上的“捕捉到切点”工具,然后将“光标”移到你要的那个图(圆)附近,就会有提示(显示)或自动捕捉到切点,点击一下左键!
再点击一下捕捉工具栏上的“捕捉到切点”工具,再将光标移到另一个图(圆)(显示)或自动捕捉到切点,点击一下左键! OK
其实你的问题文字打的太少了!只说了大概!让别人不好完全理解你要问的(问题)的意思!这样很难在最短的时间内得到一个满意的答案!最好是把问题说详细一点!或粘一张图!
要想在某点画出曲线的切线,首先要知道该点的切线方向。由于曲线是你根据样本点连接而成的,matlab本身不知道曲线的参数。
需要你自己根据前后若干点的坐标,计算该点的方向。
最简单的方法:对于第k点,使用k-1,k+1两点相连直线的方向作为k点的切线方向。
而后过该点,做上述方向的直线。
matlab没有现成的函数。在matlab中输入两组数据:
>> x=[0 30 60 90 120 150 180 210 240 270 300 330 360];
>> y=[148 142 136 129 124 119 112 107 103 099 094 090 086];
打开曲线拟合工具箱(Curve Fiting Tool),载入相关数据,进行拟合,拟合的时候采用自己输入拟合公式的方法,一般用多项式进行拟合用sympy+matplot:fromsympyimportPoint,Circle,Line,varimportmatplotlibpyplotaspltvar('t')c1=Circle(Point(0,0),2)c2=Circle(Point(4,4),3)l1=Line(c1center,c2center)p1=l1arbitrary_point(t)subs({t:-c1radius/(c2radius-c1radius)})p2=l1arbitrary_point(t)subs({t:c1radius/(c1radius+c2radius)})t1=c1tangent_lines(p1)t2=c1tangent_lines(p2)ta=t1+t2fig=pltgcf()ax=figgca()axset_xlim((-10,10))axset_ylim((-10,10))axset_aspect(1)cp1=pltCircle((c1centerx,c1centery),c1radius,fill=False)cp2=pltCircle((c2centerx,c2centery),c2radius,fill=False)tp=[0foriinrange(4)]foriinrange(4):start=ta[i]arbitrary_point(t)subs({t:-10})end=ta[i]arbitrary_point(t)subs({t:10})tp[i]=pltLine2D([startx,endx],[starty,endy],lw=2)axadd_artist(cp1)axadd_artist(cp2)foriinrange(4):axadd_artist(tp[i])
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)