《MATLAB SYNTAX》第6章 符号计算

(6.1) 符号常量和符号变量

clc;clear;
a = sqrt(5) %创建double型常量根号5
class_a = class(a) %'double'
b = sym(sqrt(5)) %创建符号型常量根号5
class_b = class(b) %'sym'
c = double(b); %将符号型常量转换成double型常量
clc;clear;
%创建符号型变量a、b、c、x
a = sym('a');
b = sym('b');
c = sym('c');
x = sym('x');
f = a * x^2 + b * x + c
%第二种方法
syms a b c x;
g = a * x^2 + b * x + c

(6.2) 符号函数和符号方程

clc;clear;
syms x y;
f = sin(x + y) - exp(x + y) %建立符号函数
e = sin(x + y) == exp(x + y) %建立符号方程
clc;clear;
syms x y;
f(x) = sin(x);
g(y) = cos(y);
h(x,y) = f(x) + g(y);
h_0_0 = h(0,0); %1

(6.3) 符号向量和符号矩阵

clc;clear;
syms x y
a = [sin(x + y) == cos(x + y),exp(x + y) == exp(x - y)]
A = [sin(x + y),cos(x + y);exp(x + y),exp(x - y)]
>>
a =
    [ sin(x + y) == cos(x + y), exp(x + y) == exp(x - y)]
A =
    [ sin(x + y), cos(x + y)]
    [ exp(x + y), exp(x - y)]

(6.4) 符号表达式的基本操作

%符号变量的查找
clc;clear;
syms m n x y;
f = m + n + x + y
symvar(f) %查找符号表达式中所有的符号变量
symvar(f,2) %查找符号表达式中2个与x最接近的符号变量
>>
f =
    m + n + x + y
ans =
    [ m, n, x, y]
ans =
    [ x, y]
%符号变量的替代
clc;clear;
syms x y;
f = x^2 + y^2;
g1 = subs(f,y,3) %3替代y
g2 = subs(f,3) %3默认替代x
g3 = subs(f,{x,y},{1,2}) %12分别替代x和y
>>
g1 = x^2 + 9
g2 = y^2 + 9
g3 = 5  
%式子展开
clc;clear;
syms x y;
%多项式展开
f1 = (x - y)^2 + (x + y)^3
g1 = expand(f1)
 %三角函数展开
f2 = sin(x - 3 * y)
g2 = expand(f2)
%指数函数展开
f3 = exp(2 * x^2 + 4 * y)
g3 = expand(f3)
>>
f1 =
    (x - y)^2 + (x + y)^3
g1 =
    x^3 + 3*x^2*y + x^2 + 3*x*y^2 - 2*x*y + y^3 + y^2
f2 =
    sin(x - 3*y)
g2 =
    cos(x)*sin(y) - 3*cos(y)*sin(x) + 4*cos(y)^3*sin(x) - 4*cos(x)*cos(y)^2*sin(y)
f3 =
    exp(2*x^2 + 4*y)
g3 =
    exp(4*y)*exp(2*x^2)
%式子化简
clc;clear;
syms x y;
f1 = (2 * x^4 - 2 * x) / (2 * x^2 + 4 * x + 2)
sf1 = simplify(f1)
f2 = 2 * cos(x)^2 - 3 * sin(x)^2 - 2
sf2 = simplify(f2)
>>
f1 =
    -(- 2*x^4 + 2*x)/(2*x^2 + 4*x + 2)
sf1 =
    -(- x^4 + x)/(x + 1)^2
f2 =
    2*cos(x)^2 - 3*sin(x)^2 - 2
sf2 =
    -5*sin(x)^2
%式子因式分解
clc;clear;
syms x y;
f = x^2 - y^2
g = factor(x^2 - y^2)
y1 = factor(1234567890)
y2 = factor(sym('1234567890'))
>>
f = 
    x^2 - y^2
g =
    [ x - y, x + y]
y1 =
    2   3   3   5   3607   3803
y2 =
    [ 2, 3, 3, 5, 3607, 3803]
%式子合并同类项
clc;clear;
syms x y;
f = x^2 * y + y * x + 3 * y^2 * x^3 - 2 * x^2 - 2 * x
y1 = collect(x^2 * y + y * x + 3 * y^2 * x^3 - 2 * x^2 - 2 * x) %默认对x合并同类项
y2 = collect(x^2 * y + y * x + 3 * y^2 * x^3 - 2 * x^2 - 2 * x,'y') %对y合并同类项
>>
f =
    3*x^3*y^2 + x^2*y - 2*x^2 + x*y - 2*x
y1 =
    3*y^2*x^3 + (y - 2)*x^2 + (y - 2)*x
y2 =
    3*x^3*y^2 + (x^2 + x)*y - 2*x^2 - 2*x
%式子转化为嵌套形式
clc;clear;
syms x y;
f = x^4 + 6 * x^3 + 4 * x^2 - 4
g = horner(f)
>>
f = x^4 + 6*x^3 + 4*x^2 - 4
g = x^2*(x*(x + 6) + 4) - 4
%获取式子分子和分母
clc;clear;
syms x y;
f = (x / y + 3 * y / x)
[n,d] = numden(f)
>>
f =
    x/y + (3*y)/x
n =
    x^2 + 3*y^2
d =
    x*y
%反函数
clc;clear;
syms x y;
f = sin(x) + cos(y) + 5
g1 = finverse(f) %默认以x为自变量求反函数
g2 = finverse(f,y) %以y为自变量求反函数
>>
f =
    cos(y) + sin(x) + 5
g1 =
    -asin(cos(y) - x + 5)
g2 =
    acos(y - sin(x) - 5)
%复合函数
clc;clear;
syms x y z t u
fx = x + t
gx = y + u
fgx = compose(fx,gx,x)
>>
fx =
    t + x
gx =
    u + y
fgx =
    t + u + x
%极限
clc;clear;
syms x h;
f = (cos(x + h) - cos(x)) / h
y = limit(f,h,0) %求h趋于0的极限
>>
f =
    (cos(h + x) - cos(x))/h
y =
    -sin(x)
%导数
clc;clear;
syms x y;
f = sin(x - y)
df_dx_1 = diff(f) %默认对x求一阶导
df_dy_2 = diff(f,y,2) %对y求二阶导
df_dx_dy = diff(f,x,y) %先对x求导再对y求导
z = sym('z');
g = [sin(x + y + z),cos(x + y + z)]
%对多元函数组求雅可比矩阵
Jacobi_g = jacobian(g,[x,y,z])
>>
f =
    sin(x - y)
df_dx_1 =
    cos(x - y)
df_dy_2 =
    -sin(x - y)
df_dx_dy =
    sin(x - y)
g =
    [ sin(x + y + z), cos(x + y + z)]
Jacobi_g =
    [ cos(x + y + z), cos(x + y + z), cos(x + y + z)]
    [-sin(x + y + z), -sin(x + y + z), -sin(x + y + z)]
%积分
clc;clear;
syms x y;
indefinite_Integral = int(sin(x - y),'x') %对x求不定积分
definite_Integral = int(sin(x - y),'y',0,pi) %对y求[0,pi]上的定积分
>>
indefinite_Integral =
    -cos(x - y)
definite_Integral =
    -2*cos(x)
%级数
clc;clear;
syms x k;
y1 = symsum(sin(x)+cos(k),x,1,5) %对x求1~5项的和
y2 = symsum(1/k^2,1,Inf) %对k求1到正无穷项的和
f2 = taylor(exp(x),x,0,'order',8) %对x在0处按泰勒展开8>>
y1 =
    sin(1) + sin(2) + sin(3) + sin(4) + sin(5) + 5*cos(k)
y2 =
    pi^2/6
f2 =
    x^7/5040 + x^6/720 + x^5/120 + x^4/24 + x^3/6 + x^2/2 + x + 1
%代数方程求解
clc;clear;
syms a b c x;
y1 = solve(a * x^2 + b * x + c == 0)
y = sym('y');
e = y*sin(x)==5
g1 = solve(e) %默认解x
g2 = solve(e,y) %解y
>>
y1 =
    -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
    -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
e =
    y*sin(x) == 5
g1 =
    asin(5/y)
    pi - asin(5/y)
g2 =
    5/sin(x)
%代数方程组求解
clc;clear;
syms x y;
e1 = x^2 + 4 * x + y^2 + 5 * y-6 == 0
e2 = x^2 + 2 * x + y^2 - 4 == 0
g = solve(e1,e2,x,y) %解x、y
g.x
g.y
>>
e1 =
    x^2 + 4*x + y^2 + 5*y - 6 == 0
e2 =
    x^2 + 2*x + y^2 - 4 == 0
g = 
    包含以下字段的 struct:
        x: [2×1 sym]
        y: [2×1 sym]
ans =
    (5*129^(1/2))/29 - 21/29
    - (5*129^(1/2))/29 - 21/29
ans =
    20/29 - (2*129^(1/2))/29
    (2*129^(1/2))/29 + 20/29
%微分方程求解
clc;clear;
syms a y;
de1 = 'Dy==a*y' %也可以写成Dy=a*y
y_t = dsolve(de1) %默认解y(t)
y_x = dsolve(de1,'y(0)=1','x') %y(x),初值条件为y(0)=1
de2 = 'D2y == y'
y_s = dsolve(de2,'y(0)=1','y(1)=1','s')
>>
de1 =
    'Dy==a*y'
y_t =
    C5*exp(a*t)
y_x =
    exp(a*x)
de2 =
    'D2y == y'
y_s =
    exp(s)/(exp(1) + 1) + (exp(-s)*exp(1))/(exp(1) + 1)
%微分方程组求解
clc;clear;
[x1,y1] = dsolve('Dx=y','Dy=-x','t')
[x2,y2] = dsolve('Dx=y','Dy=-x','x(0)=3','y(0)=4','t')
>>
x1 =
    C30*cos(t) + C29*sin(t)
y1 =
    C29*cos(t) - C30*sin(t)
x2 =
    5*cos(t - atan(4/3))
y2 =
    5*cos(t + atan(3/4))

《 M A T L A B   S Y N T A X 》 系 列 博 客 创 作 参 考 资 料 来 源 《MATLAB\ SYNTAX》系列博客创作参考资料来源 MATLAB SYNTAX

  1. 《自动控制原理实验教程》.巨林仓.西安交通大学出版社.
  2. 《MATLAB工程与科学绘图》.周博.薛世峰.清华大学出版社.
  3. 《MATLAB R2018a完全自学一本通》.刘浩.韩晶.电子工业出版社.
  4. 《科学计算与MATLAB语言》.刘卫国.蔡旭晖.吕格莉.何小贤.中国大学MOOC.
  5. 《MATLAB软件与基础数学实验》.李换琴.朱旭.王勇茂.籍万新.西安交通大学出版社.
  6. 《Matlab教程 - 图像处理》@正月点灯笼.https://www.bilibili.com.
  7. 《MATLAB从入门到秃头》@古德谓尔.https://www.bilibili.com.

博 客 创 作 : A i d e n   L e e 博客创作:Aiden\ Lee Aiden Lee
特别声明:文章仅供学习参考,转载请注明出处,严禁盗用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值