4 MATLAB的符号运算
- 格式:ppt
- 大小:5.43 MB
- 文档页数:60
《深度探讨:从数值运算到符号运算的MATLAB应用》在科学计算领域中,MATLAB无疑是一个不可或缺的工具。
它被广泛应用于数学建模、数据分析、图形可视化和算法开发等领域。
在MATLAB中,数值运算和符号运算是两个核心概念,它们分别在不同的领域中发挥着重要作用。
本文将从数值运算和符号运算两个方面展开讨论,带您深入探索MATLAB的应用价值。
一、数值运算1. MATLAB中的数值数据类型在MATLAB中,常见的数值数据类型包括整数、浮点数和复数等。
它们在科学计算中有着广泛的应用,例如在矩阵运算、微分方程求解和优化算法中。
2. 数值计算函数的应用MATLAB提供了丰富的数值计算函数,包括线性代数运算、插值和拟合、统计分布和随机数生成等。
这些函数为科学计算提供了强大的支持,使得复杂的数值计算变得更加简单高效。
3. 数值方法在实际问题中的应用通过具体的案例,我们可以深入了解MATLAB在实际问题中的数值计算方法。
通过有限元分析解决结构力学问题、通过数值积分求解物理方程、通过数值微分求解工程问题等。
二、符号运算1. MATLAB中的符号计算工具MATLAB提供了符号计算工具包,可以进行符号变量的定义、代数运算、微分积分和方程求解等。
这为数学建模、符号推导和精确计算提供了强大的支持。
2. 符号计算函数的应用通过具体的例子,我们可以深入了解MATLAB中符号计算函数的应用。
利用符号计算求解微分方程、利用符号变量定义复杂的代数表达式等。
3. 符号计算在科学研究中的应用通过详细的案例,我们可以了解符号计算在科学研究中的应用。
利用符号计算推导物理模型、利用符号运算求解工程问题等。
总结与展望:通过本文的深度探讨,我们对MATLAB中的数值运算和符号运算有了全面的了解。
数值运算为我们提供了高效的数值计算工具,而符号运算则为我们提供了精确的符号计算工具。
这两者相辅相成,在不同的领域中发挥着重要的作用。
希望通过本文的阐述,读者可以更加深入地理解MATLAB中数值运算和符号运算的应用,提升科学计算的能力和水平。
实验四MATLAB符号运算实验四MATLAB符号运算⼀、实验⽬的:1、掌握定义符号对象的⽅法;2、掌握符号表达式的运算法则以及符号矩阵运算。
3、掌握求符号函数极限及导数的⽅法。
4、掌握求符号函数定积分和不定积分的⽅法。
⼆、实验原理1、符号常量、符号变量、符号表达式的创建(1) 使⽤sym( )创建输⼊以下命令,观察Workspace 中A、B、f是什么类型的数据,占⽤多少字节的内存空间。
>>A=sym('1') %符号常量>>B=sym('x') %符号变量>>f=sym('2*x^2+3y-1') %符号表达式>>clear>>f1=sym('1+2') %有单引号,表⽰字符串>>f2=sym(1+2) %⽆单引号>>f3=sym('2*x+3')>>f4=sym(2*x+3) %为什么会出错>>x=1>>f4=sym(2*x+3)通过看MATLAB 的帮助可知,sym( )的参数可以是字符串或数值类型,⽆论是哪种类型都会⽣成符号类型数据。
(2) 使⽤syms 创建>>clear>>syms x y z %注意观察x,y,z都是什么类型的,它们的内容是什么>>x,y,z>>f1=x^2+2*x+1>>f2=exp(y)+exp(z)^2>>f3=f1+f2通过以上实验,知道⽣成符号表达式的第⼆种⽅法:由符号类型的变量经过运算(加减乘除等)得到。
⼜如:>>f1=sym('x^2+y +sin(2)')>>syms x y>>f2=x^2+y+sin(2)>>x=sym('2') , y=sym('1')>>f3=x^2+y+sin(2)>>y=sym('w')>>f4=x^2+y+sin(2)(3)符号矩阵创建>>syms a1 a2 a3 a4>>A=[a1 a2;a3 a4]>>A(1),A(3)或者>>B=sym('[ b1 b2 ;b3 b4] ')>>c1=sym('sin(x) ')>>c2=sym('x^2')>>c3=sym('3*y+z')>>c4=sym('3 ')>>C=[c1 c2; c3 c4]2、符号算术运算(1) 符号量相乘、相除符号量相乘运算和数值量相乘⼀样,分成矩阵乘和数组乘。
第四节MATLAB符号计算在自然科学的各个领域不但需要解决数值分析和计算问题,同时也要解决符号运算的问题,MA TLAB中的符号计算功能是以Maple V为基础开发的。
MATLAB的符号数学工具箱的主要功能包括:符号表达式的创建、符号矩阵的运算,符号表达式的化简和替换、符号微积分、符号代数方程等。
一、符号表达式的创建MATLAB的符号数学工具箱提供了两个基本函数,用来创建符号变量和表达式,分别是sym 和syms。
●函数sym的调用形式为:x=sym(‘x’)创建一个符号变量x,它可以是字符、字符串、表达式或字符表达式。
●函数syms用于方便地一次创建多个符号变量,其调用形式为:syms a b c…例1 使用sym 和syms函数创建符号变量。
a=sym('a') %定义符号变量aa =ab=sym('1+sqrt(5)/2') %定义符号变量bb =1+sqrt(5)/2syms a b c d %定义4个符号变量使用函数可以创建符号矩阵,可以直接输入或从数值矩阵转换。
例2 创建一个循环矩阵。
syms a b c dn=[a b c d ;b c d a ; c d a b ; d a b c]输出结果为:n =[ a, b, c, d][ b, c, d, a][ c, d, a, b][ d, a, b, c]例3 将3阶的Hilbert 矩阵转化为符号矩阵。
h=hilb(3) %创建Hilbert矩阵h =1.0000 0.5000 0.33330.5000 0.3333 0.25000.3333 0.2500 0.2000h1=sym(h) %用函数sym转化为符号矩阵h1 =[ 1, 1/2, 1/3][ 1/2, 1/3, 1/4][ 1/3, 1/4, 1/5]注意:符号矩阵与普通数值矩阵的区别是:在命令窗口的显示中,数值矩阵只显示元素的数值,而符号矩阵的每行元素均放在一对方括号内;在工作空间窗口显示的变量图标也不同,数值图标为,符号矩阵的图标为。
MATLAB符号运算前⾔有时候,你可能会遇到较复杂的⽅程(组),希望⽤MATLAB来求解。
MATLAB的符号运算正好可⽤于求解⽅程(组)。
此外,它还有许多其他功能。
例如,展开和简化、因式分解以及微积分运算等。
MATLAB的符号运算虽然是数值运算的补充,但是它仍然是科学计算研究中不可替代的重要内容。
与数值运算相⽐,符号运算不需要预先对变量赋值,其运算结果以标准的符号形式表达。
⽐如说计算sin(π),数值运算的结果是1.2246e-16,符号运算的结果是0。
前者是近似的,后者是精确的。
正⽂MATLAB符号运算功能⾮常强⼤,本⽂只介绍⼤部分常⽤的符号运算功能。
注:本⽂代码的运⾏环境是MATLAB R2016b。
1. 创建符号数、符号变量和符号矩阵这⼀步骤是符号运算的第⼀步,后⾯的步骤都是在此基础上进⾏的。
%创建符号数 (只能⽤sym函数)s0 = 1 / sym(7) %符号数,不适合⼤型符号数s1 = sym('1/7') %符号数s2 = sym('3 + 4i') %符号复数%创建符号变量 (sym函数和syms函数都⾏)%--sym函数s3 = sym('x') %符号变量%--syms函数syms a b c %创建多个符号变量,值为本⾝syms(sym('[d e; e d]')) %⽤已存在的符号变量矩阵创建多个符号变量%创建符号矩阵 (sym函数和syms函数都⾏)s4 = sym('[2 5 6; 9 8 6]') %符号数矩阵s5 = sym('x', [2 3]) %符号变量矩阵,矩阵内的元素不会被创建为符号变量A = [a b c; c b a] %⽤已存在的符号变量创建符号变量矩阵% syms A B [2 3] %仅2017及以上版本⽀持,同时创建多个符号矩阵代码运⾏结果如下。
可以看到s5是⼀个2x3的符号变量矩阵,但矩阵内元素不会被创建成符号变量。
MATLAB符号运算运用MATLAB 是一种数值计算和编程环境,它可以进行符号运算,即对代数表达式进行操作和计算。
在 MATLAB 中,符号运算的主要工具是符号计算工具箱(Symbolic Math Toolbox),它提供了一系列函数和命令,用于处理和求解符号表达式。
1.创建符号表达式首先,我们可以通过使用符号变量来创建符号表达式。
符号变量可以使用 sym 函数定义。
例如,创建一个符号变量 x:```syms x```然后,可以使用这个符号变量来创建符号表达式。
例如,创建一个简单的二次多项式表达式:```f=x^2+2*x+1;```2.符号表达式运算一旦有了符号表达式,就可以对其进行各种运算,包括求导、积分、求解方程等。
- 求导:使用 diff 函数可以对符号表达式进行求导。
例如,对上述的 f 求导:```df = diff(f, x);```- 积分:使用 int 函数可以对符号表达式进行积分。
例如,对 f 在区间 [0, 1] 上进行积分:```I = int(f, 0, 1);```- 求解方程:使用 solve 函数可以对符号表达式进行求解。
例如,求解方程 f = 0:```sol = solve(f == 0, x);```3.简化符号表达式有时,符号表达式可能过于复杂,可以使用 simplify 函数对其进行简化。
例如,简化一个复杂的三角函数表达式:```syms xf = sin(x)^2 + cos(x)^2;sf = simplify(f);```4.数值近似符号表达式可以通过使用 vpa 函数进行数值近似。
例如,将一个符号表达式近似为 5 位小数:```syms xf = exp(x);f_num = vpa(f, 5);```在MATLAB中,符号运算可以应用于各种数学问题,包括求解方程、微积分、矩阵计算等。
它提供了一种便捷的方式来处理代数表达式,而不需要将其转化为数值形式进行计算。
第2章符号运算- Presentation Transcript1.第二章符号运算o MA TLAB 的数学计算=数值计算+符号计算o其中符号计算是指使用未定义的符号变量进行运算,而数值计算不允许使用未定义的变量。
2. 1. 符号变量、符号表达式和符号方程的生成o使用sym 函数定义符号变量和符号表达式o使用syms 函数定义符号变量和符号表达式3. 2 、用syms 创建符号变量o使用syms 命令创建符号变量和符号表达式o语法:o syms(‘arg1’, ‘arg2’, …, 参数) % 把字符变量定义为o% 符号变量o syms arg1 arg2 …, 参数% 把字符变量定义为符号变量的简洁形o% 式o说明:syms 用来创建多个符号变量,这两种方式创建的符号对象是相同的。
参数设置和前面的sym 命令相同,省略时符号表达式直接由各符号变量组成。
4.使用syms 函数定义符号变量和符号表达式▪>> syms a b c x▪>> f = a*x^2 + b*x + c▪ f =▪a*x^2 + b*x + c▪>> g=f^2+4*f-2▪g =▪(a*x^2+b*x+c)^2+4*a*x^2+4*b*x+4*c-2▪>>ex02015.符号方程的生成▪>> % 符号方程的生成▪>> % 使用sym 函数生成符号方程▪>> equation1='sin(x)+cos(x)=1'▪equation1 =▪sin(x)+cos(x)=1▪>>6. 2.2 符号形式与数值形式的转换o 1 、将符号形式转换为数值形式:o eval 与numerico例:a1='2*sqrt(5)+pi'o a1 =o2*sqrt(5)+pio b2=numeric(a2) % 转换为数值变量o b2 =o7.6137o b3=eval(a1)o b3 =o7.61377. 2.2 符号形式与数值形式的转换▪ 2 、数值形式转换为符号形式▪p=3.1416;▪q=sym(p)▪执行后屏幕显示:▪q=3927/1250▪numeric(q)▪屏幕显示:▪ans =▪ 3.14168. 2.2 符号形式与数值形式的转换3 、多项式与系数向量之间的转换3.1 sym2poly: 将多项式转化为对应的系数向量例:syms x p; p=x^3-4*x+5; sym2poly(p) 执行后屏幕显示:ans= 1 0 -4 5 9. 2.2 符号形式与数值形式的转换o 3 、多项式与系数向量之间的转换o 3.2 poly2sym: 将向量转化为对应的多项式o例o a=[1 0 -4 5];o poly2sym(a)o执行后屏幕显示o ans=o x^3-4*x+510. 3. 符号表达式( 符号函数) 的操作o(1) 符号表达式的四则运算o syms xo f=x^3-6*x^2+11*x-6;o g=(x-1)*(x-2)*(x-3);o h=x*(x*(x-6)+11)-6;o f+g-ho执行后输出:o ans =o x^3-6*x^2+11*x+(x-1)*(x-2)*(x-3)-x*(x*(x-6)+11)11.(1) 符号表达式的四则运算▪>> syms x y a b▪>> fun1=sin(x)+cos(y)▪fun1 =▪sin(x)+cos(y)▪>> fun2=a+b▪fun2 =▪a+b▪>> fun1+fun2▪sin(x)+cos(y)+a+b▪>>fun1*fun2▪ans =▪(sin(x)+cos(y))*(a+b)12.o(1) 将表达式中的括号进行展开: expando(2) 将表达式进行因式分解:factoro(3) 将一般的表达式变换为嵌套的形式:hornero(4) 将表达式按某一个变量的幂进行集项:collecto(5) 化简表达式:simplifyo(6) 化简表达式,使之成为书写长度最短的形式:simple13.o同一个数学函数的符号表达式的可以表示成三种形式,例如以下的f(x) 就可以分别表示为:o多项式形式的表达方式:o f(x)=x^3+6x^2+11x-6o因式形式的表达方式(factor) :o f(x)=(x-1)(x-2)(x-3)o嵌套形式的表达方式(horner) :o f(x)=x(x(x-6)+11)-614.集项-合并符号表达式的同类项o>> syms x y▪>> collect(x^2*y + y*x - x^2 - 2*x)▪ans =▪(y-1)*x^2+(y-2)*xo>> syms x y▪>> collect(x^2*y + y*x - x^2 - 2*x,y)▪ans =▪(x^2+x)*y-x^2-2*x15.符号多项式的嵌套(horner )▪>> syms x▪>> fun1=2*x^3+2*x^2-32*x+40▪fun1 =▪2*x^3+2*x^2-32*x+40▪>> horner(fun1)▪ans =▪40+(-32+(2+2*x)*x)*x▪>> fun2=x^3-6*x^2+11*x-6▪fun2 =▪x^3-6*x^2+11*x-6▪>> horner(fun2)▪ans =▪-6+(11+(-6+x)*x)*x16.符号表达式的化简(simplify)▪>> syms x▪>> fun1=(1/x+7/x^2+12/x+8)^(1/3)▪fun1 =▪(13/x+7/x^2+8)^(1/3)▪>> sfy1= simplify (fun1)▪sfy1 =▪((13*x+7+8*x^2)/x^2)^(1/3)▪>> sfy2= simple (sfy1)▪sfy2 =▪(13/x+7/x^2+8)^(1/3)17.subs 函数用于替换求值▪>> syms x y▪ f = x^2*y + 5*x*sqrt(y)▪ f =▪x^2*y+5*x*y^(1/2)▪>> subs(f, x, 3)▪ans =▪9*y+15*y^(1/2)▪>> subs(f, y, 3)▪ans =▪3*x^2+5*x*3^(1/2)▪>>subs(f,{x,y},{1,1})ex0202 ex0203 ex020418. 4 、反函数的运算(finverse )▪>> syms x y▪>> f = x^2+y▪ f =▪x^2+y▪>> finverse(f,y)▪ans =▪-x^2+y使用格式: 1 、g=finverse(f):f,g 均为单变量x 的符号函数; 2 、g=finverse(f,t) 返回值g 的自变量取为t ;19. 5 复合函数的运算(compose)▪>> syms x y z t u▪>> f = 1/(1 + x^2);▪>> g = sin(y);▪>> h = x^t;▪>> p = exp(-y/u) ;▪>> compose(f,g)▪ans =▪1/(1+sin(y)^2)▪>> compose(f,g,t)▪ans =▪1/(1+sin(t)^2)使用格式:Compose(f,g) % 返回当f=f(y) 和g=g(x) 时的复合函数f(g(x)) Compose(f,g,t) % 返回的复合函数以t 为自变量,即有f(g(t))20. 6 函数的极限、导数与积分o(1 )函数极限-limit 函数的使用o(2 )函数求导-diff 函数的使用o(3 )符号积分-int 函数的使用21.o符号极限(limit)假定符号表达式的极限存在,Symbolic Math Toolbox 提供了直接求表达式极限的函数limit ,函数limit 的基本用法如下表所示。
第3章MATLAB符号计算符号计算则是可以对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。
MATLAB具有符号数学工具箱(Symbolic Math Toolbox),将符号运算结合到MATLAB的数值运算环境。
符号数学工具箱是建立在Maple软件基础上的。
3.1 符号表达式的建立Symbolic Math Toolbox2.1版规定在进行符号计算时,首先要定义基本的符号对象然后才能进行符号运算。
3.1.1 创建符号常量符号常量是不含变量的符号表达式,用sym命令来创建符号常量。
语法:sym(‘常量’) %创建符号常量例如,创建符号常量,这种方式是绝对准确的符号数值表示:>> a=sym('sin(2)')a =sin(2)sym命令也可以把数值转换成某种格式的符号常量。
语法:sym(常量,参数) %把常量按某种格式转换为符号常量说明:参数可以选择为’d’、’f’、’e’或’r’四种格式,也可省略,其作用如表3.1所示。
表3.1 参数设置a=sym('sin(2)')a =sin(2)例如,把常量转换为符号常量,按系统默认格式转换:a=sym(sin(2))a =8190223105242182*2^(-53)【例3.1】创建数值常量和符号常量。
a1=2*sqrt(5)+pi %创建数值常量a1 =7.6137a2=sym('2*sqrt(5)+pi') %创建符号表达式a2 =2*sqrt(5)+pia3=sym(2*sqrt(5)+pi) %按最接近的有理数型表示符号常量a3 =8572296331135796*2^(-50)a4=sym(2*sqrt(5)+pi,'d') %按最接近的十进制浮点数表示符号常量a4 =7.6137286085893727261009189533070a31=a3-a1 %数值常量和符号常量的计算a31 =a5='2*sqrt(5)+pi' %字符串常量a5 =2*sqrt(5)+pi图3.1 工作空间窗口可以通过查看工作空间来查看各变量的数据类型和存储空间,工作空间如图3.1所示。