• matlab符号函数


    一、符号函数简介

    符号函数是matlab的一个重要功能,可以用来表示数学上的函数,同时也可以用来进行数值计算
    创建符号函数的方法:

    • 利用syms定义符号变量生成符号函数
    • 利用sym和@生成符号函数
    • 利用函数文件生成符号函数

    1.1 syms方法

    首先利用syms命令定义自变量,然后再生成符号函数

    syms sigamn m ft sigam3;
    sigamn = (12*m*ft + (12*m+5)*sigam3) / (24*m -1); % sigamn 就是一个符号函数
    
    • 1
    • 2

    1.2 利用sym和@方法

    首先使用@声明变量,在其后写符号函数表达式,之后使用sym转换成符号函数,就可以进行其他符号运算。

    y = @(t) sin(t) - cos(t) + exp(t);
    ys = sym(y);
    
    y1 = @(a,b) cos(a) + cos(b);
    ys1 = sym(y1)
    • 1
    • 2
    • 3
    • 4
    • 5

    1.3 函数文件法

    利用函数文件来生成符号函数。(实际上,也是用1.1或者1.2的方法实现)

    function output = xpower(n)
        syms x
        output = x^n;
    end
    
    • 1
    • 2
    • 3
    • 4

    二、符号函数操作

    2.1 符号函数的数值运算

    对于符号函数,可以计算符号函数在某些点处的函数值,此时需要使用matlabFunction命令做一次转换。

    syms x;
    y = sin(x) - cos(x) + exp(x);
    y_f = matlabFunction(y1);
    x0 = [0, pi];
    y_v = y_f(x0); % 计算符号函数y_f在x0处的函数值,x0可以是单个值,也可以是数组 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.2 符号函数化简

    • 合并同类项
      使用collect(f)函数来合并多项式中相同的项。
      syms x t;
      f=(1+x)*t+x*t;
      collect(f)
      
      • 1
      • 2
      • 3
    • 因式分解
      使用factor(f)对多项式进行因式分解,如果无法在有理数的范围内作分解, 那么返回的结果还是输入值。
      syms f;
      f=x^3-6*x^2+11*x-6;
      factor(f);
      
      • 1
      • 2
      • 3
    • 多项式展开
      使用expand(f)实现多项式展开。
      syms x
      f=x*(x*(x-1)+3)+2;
      expand(f);
      
      • 1
      • 2
      • 3
    • 符号函数化简
      使用simplify(f)函数和simple(f)函数对符号函数进行化简
      syms a b c;   %定义为符号变量
      r = 2;
      ss = a^r/((a-b)*(a-c))+b^r/((b-c)*(b-a))+c^r/((c-a)*(c-b)); %多项式公式
      simplify(ss); %%简化多项式
      simple(ss);
      % simple是通过对表达式尝试多种不同的方法(包括simplify)进行化简
      % 以寻求符号表达式的最简形式。
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    2.3 方程求解

    solve()函数可以求解代数方程(多项式方程)的符号解析解。

    syms x;
    y = x*sin(x)-x; 
    solve(y, x);  % 只有一个自变量,可以省略自变量,同solve(y)
    solve(y==0);
    
    • 1
    • 2
    • 3
    • 4

    2.4 符号函数求导

    2.4.1 一元符号函数求导

    可以使用命令diff对符号函数进行求导,并且当diff作用到向量或者矩阵使可以求差分。

    syms x;
    y = x^4 - 5*x^2 +6;
    
    diff(y,1); % 求1阶导,同diff(y)
    diff(y,2); % 求2阶导
    
    • 1
    • 2
    • 3
    • 4
    • 5

    当diff作用于符号函数上时,可以对符号函数进行求导。

    • 第一个参数传入符号函数
    • 第二个参数传入要求几阶导,默认求1阶导。

    2.4.2 多元符号函数求导

    • 第一个参数为待求导符号函数
    • 第二个参数为要对哪个自变量求偏导
    • 第三个参数为要求几阶导数
      当连续对自变量求偏导时,放在前面的自变量先求偏导,后面的自变量后求偏导。
    syms x1 x2 x3;
    y = x1^5*x2 + x2*x3 - x1^2*x3;
    py1 = diff(y,x1,1); % 对x1求一阶偏导
    py2 = diff(y,x1,2); % 对x1求二阶偏导
    py3 = diff(y,x1,x2); % 先对x1求偏导,再对x2求偏导
    py4 = diff(y,x2,x1); % 先对x2求偏导,再对x1求偏导
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果diff函数作用的对象不是符号函数,而是矩阵,那么对应的功能就是求差分。

    2.5 符号函数定积分

    使用int()函数,可以对符号函数进行定积分计算。

    % 使用形式: 
    int(被积函数,积分变量,积分下限,积分上限); 
    % 如果只有一个参量,可以省略第2项
    
    • 1
    • 2
    • 3
    syms x b;
    f = b + 2*x;
    int_f = int(f,x,-6,6);
    
    • 1
    • 2
    • 3
  • 相关阅读:
    JavaScript-BOM中window对象的常见事件
    数据结构·单链表
    在线编程教学技术解决方案,覆盖所有授课场景需求
    对于pytorch和对应pytorch网站的探索
    基于JAVA疫情物质管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    高阶数据结构学习之跳表
    WPF开发随笔收录-心电图曲线绘制
    评价——模糊综合评价
    python 科学计算三维可视化笔记(第一周 基础运用)
    方法区(Method Area)
  • 原文地址:https://blog.csdn.net/first_bug/article/details/133185424