• matlab基础功能实践


    一、matlab在高等数学中的应用(《数学建模算法与应用》P453)

    1、求极限

    syms x
    b=limit((sqrt(1+x^2)-1)/(1-cos(x)))
    
    syms x a
    b=limit((1+a/x)^2,x,inf)

    2、求导数

    syms x
    dy=diff(log((x+2)/(1-x)),3)
    dy=simplify(dy)   %对符号函数进行化简
    pretty(dy)        %分数线居中显示,这部一般不需要
    

     差分:

    a=[0,0.5,2,4];
    da=diff(a)
    

     3、求极值

    syms x
    y=x^3+6*x^2+8*x-1;
    dy=diff(y);
    dy_zero=solve(dy)  %表达式类型
    dy_zero_num=double(dy_zero) %变成数值类型
    ezplot(y)
    
    syms x
    y=x^3+6*x^2+8*x-1;
    dy=diff(y);
    dy_zero=solve(dy)  %表达式类型
    dy_zero_num=double(dy_zero) %变成数值类型
    ezplot(y)  %符号曲线画图
    

     4、求积分

    不定积分:

    syms x
    I=int(1/(1+sqrt(1-x^2)))
    pretty(I)
    

    定积分 (符号解、数值解):

    符号解:

    syms x
    I=int(cos(x)*cos(2*x),-pi/2,pi/2)
    

     数值解:

    I=quadl(@(t)(t-3*t.^2+2*t.^3).^(-1/3),eps,0.5)
    

     (积分上下限不能为inf,可以不变换而直接设一个很大的数

    syms t  %不加也可以
    I=quadl('(t-3*t.^2+2*t.^3).^(-1/3)',eps,0.5) %后面两项分别为积分上下限,eps认为是0
    

     二重数值积分:

    I=dblquad(@(x,y)sqrt(1-x.^2-y.^2).*(x.^2+y.^2<=x),0,1,-0.5,0.5)
    

     (matlab中的log就是ln

    三重数值积分:

    fun3=@(x,y,z)z.^2*log(x.^2+y.^2+z.^2+1)./(x.^2+y.^2+z.^2+1).*(z>=0&...
        z<=sqrt(1-x.^2-y.^2)); %...是续航符
    I=triplequad(fun3,-1,1,-1,1,0,1)
    

     注意把范围不等式点乘一下,最后的上下限只能为数字

    5、级数求和

    级数的上下限可以带inf

    syms n
    f1=(2*n-1)/2^n;
    s1=symsum(f1,n,1,inf)
    
    syms n
    f2=1/n^2
    s2=symsum(f2,n,1,inf)
    

    二、matlab绘图命令(《数学建模算法与应用P449》)

     1、二维绘图命令

    title('my title')
    xlabel('x-axis label')
    ylabel('y-scid label')
    text(x,y,'text for annotation')
    gtext('text for annotation')
    grid  %网格的打开与关闭
    subplot(r,c,p)
    plot(t,[x1,x2,x3])
    plot(t1,x1,t2,x2,t3,x3)
    plot(x,y,'r-*')
    

     2、显函数、符号函数或隐函数的绘图

    function y=Afun1(x);
    if x<1
        y=x+1;
    else 
        y=1+1/x;
    end
    
    fplot('Afun1',[-3,3])

    匿名函数:

    Afun2=@(x)(x+1)*(x<1)+(1+1/x)*(x>=1);
    fplot(Afun2,[-3,3]);
    

    符号函数:

    ezplot('tan(x)')
    ezplot('x^2+y^2/4=1')
    

     ezplot可以用来绘制隐函数

    3、三维图形

    三维曲线图:plot3

    三维网格图:mesh

    三维表面图:surf

    1)三维曲线:

    t=0:pi/50:10*pi
    plot3(sin(t),cos(t),t);
    xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t')
    

     2)网格图

    clc,clear
    x=-3:0.1:3;y=-5:0.1:5;
    [x,y]=meshgrid(x,y);   %生成网格数据,自变量
    z=(sin(x.*y)+eps)./(x.*y+eps);   %为避免0/0,分子分母都加eps
    mesh(x,y,z);

     3)表面图

    [x,y]=meshgrid([-3:0.2:3]);
    z=(sin(x.*y)+eps)./(x.*y+eps);
    surf(x,y,z);
    

     4)旋转曲面(绕x轴旋转一周所得的图像

    x=0:10:600;
    [X,Y,Z]=cylinder(30*exp(-x/400).*sin((x+25*pi)/100)+130);
    surf(X,Y,Z)
    

     r为母线,n为沿周长的格数

    alpha=[0:0.1:2*pi]';
    beta=0:0.1:2*pi;
    x=4*cos(alpha)*ones(size(beta));
    y=(5+4*sin(alpha))*cos(beta);
    z=(5+4*sin(alpha))*sin(beta);
    surf(x,y,z)
    

    emmm,上面这段代码不太理解。。。

    下面这段是参数方程的常用画图方法,用函数句柄以及ezsurf完成

    x=@(alpha,beta)4*cos(alpha);
    y=@(alpha,beta)(5+4*sin(alpha)).*cos(beta);
    z=@(alpha,beta)(5+4*sin(alpha)).*sin(beta);
    ezsurf(x,y,z)
    

     5、其他二次曲面

    (1)旋转单叶双曲面

    x=@(s,t)3*sec(s).*cos(t);
    y=@(s,t)3*sec(s).*sin(t);
    z=@(s,t)2*tan(s);
    ezmesh(x,y,z);
    

     (2)旋转双叶双曲面

    x=@(s,t)3*sec(s);
    y=@(s,t)3*tan(s).*cos(t);
    z=@(s,t)2*tan(s).*cos(t);
    ezmesh(x,y,z);
    

     (3)抛物柱面

    ezsurf(@(y,z)y.^2,50);
    

     (4)椭圆锥面

    x=@(s,t)3*tan(s).*cos(t);
    y=@(s,t)2*tan(s).*sin(t);
    z=@(s,t)tan(s);
    ezsurf(x,y,z);
    

     (5)椭球面

    ellipsoid(0,0,0,3,2,sqrt(6));
    

    使用matlab内置的绘制椭球的函数 ellipsoid(xc,yc,zc,xr,yr,zr,n),其中:

      xc,yc,zc分别表示椭球中心的x,y,z坐标。

      xr,yr,zr分别表示椭球x,y,z半轴的长度。

      n表示绘图时,沿着经度和纬度方向划分的曲面片数量,n越大则数据越密集,曲面越光滑。

    (6)马鞍面

    ezsurf(@(x,y)x.*y);
    

     (7)椭圆柱面

    x=@(s,t)3*cos(s);
    y=@(s,t)2*sin(s);
    z=@(s,t)t;
    ezmesh(x,y,z)
    

     4、3-D可视化图形

    [x,y,z,v]=flow;
    isosurface(x,y,z,v);
    
    x=1:20;y=1:10;z=-10:10;
    [x,y,z]=meshgrid(x,y,z);
    v=x.^2.*y.*(z+1);
    isosurface(x,y,z,v);
    

     isosurface与ezplot对应,可以绘制三维隐函数图像。ezmesh与ezsurf必须显函数或转化为参数方程。isosurface默认值不确定。

    isosurface与ezmesh、ezsurf的作用相同,但是表达式不同。

  • 相关阅读:
    数据结构-栈与队列
    数据结构-选择排序
    数据结构-冒泡排序
    数据结构-插入排序
    mysql安装最后一步不响应解决
    ScvQ常用的网站(持续更新...)
    排序算法(二)
    排序算法(一)
    原码、反码、补码
    进制转换
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/8376160.html
Copyright © 2020-2023  润新知