MATLAB之(二)符号运算功能
matlab符号运算 多项式

matlab符号运算多项式【提纲】1.MATLAB符号运算简介MATLAB是一款功能强大的数学软件,其中符号运算功能允许用户进行高级数学计算、分析和可视化。
符号运算可以帮助工程师、科学家和数学家在各种领域解决问题,如线性代数、微积分、概率论等。
2.多项式基本概念与MATLAB表示多项式是数学中一个重要的概念,它表示为一个无穷级数,其中包含常数、变量及其幂次。
在MATLAB中,多项式可以用符号表达式表示,如:f(x) = 2x^3 + 4x^2 - 3x + 1。
3.多项式运算实例以下是几个MATLAB中进行多项式运算的实例:- 多项式加法:将两个多项式相加,如f(x) + g(x)。
- 多项式减法:将两个多项式相减,如f(x) - g(x)。
- 多项式乘法:将两个多项式相乘,如f(x) * g(x)。
- 多项式除法:将一个多项式除以另一个多项式,如f(x) / g(x)。
- 多项式求导:对一个多项式求导,如diff(f(x))。
- 多项式积分:对一个多项式进行积分,如int(f(x))。
4.多项式函数与应用MATLAB提供了许多与多项式相关的函数,如:- polyfit:根据一组数据拟合多项式。
- polyval:根据多项式系数计算多项式的值。
- roots:求多项式的根。
- legendre:勒让德多项式。
- laguerre:拉格朗日多项式。
这些函数在信号处理、控制系统、优化等领域具有广泛的应用。
5.总结与建议MATLAB的符号运算功能为多项式计算提供了便捷的工具和函数。
掌握这些功能和函数可以帮助用户在各种应用场景中解决问题。
matlab符号运算(共57张)

findsym确定的默认变量;在未指定目标值时,默认变量趋 近于0; (4)limit(F,x,a,’left’)或limit(F,x,a,’right’):分别计算 函数F的左极限和右极限。
17
第17页,共57页。
>> syms x t;
>> limit(sin(x)/x)
A= [ a, 2*b] [3*a, 0]
3、用函数syms创建矩阵
格式: syms arg1 arg2… 参数
A=[ ]
>> syms a b
A=
>>A=[a,2*b;3*a,0]
[ a, 2*b] [3*a, 0]
15
第15页,共57页。
4、将数值矩阵(jǔ zhèn)转化成符号矩阵
(jǔ zhèn)
ans =
11/15
3
第3页,共57页。
>> 3*sin(3)+pi/2
ans =
1.9942
>> sym('3*sin(3)+pi/2')
ans = 3*sin(3)+pi/2
>> sym(3*sin(3)+pi/2)
ans = 8980881799167258*2^(-52)
>> sym(3*sin(3)+pi/2,'d')
>> real(z) ans = x
>> syms x unreal >> real(z)
ans =
1/2*x+1/2*conj(x)
matlab符号运算(二)

因式分解、展开、合并、简化及通分等
计算极限 limit(f,x,a): 计算 lim f ( x )
xa
limit(f,a): 计算默认自变量趋向于a时f的极限 limit(f): 计算 a=0 时的极限 limit(f,x,a,’right’):右极限 limit(f,x,a,’left’):左极限
1 2 n 1 n
,以及其前10项的部分和。
>> syms n >> S=symsum(1/n^2,n,1,inf) >> S10=symsum(1/n^2,n,1,10)
x 2 n 1 n
S=1/6*pi^2 S10=1968329/1270080
例:求函数级数
S
>> syms n x >> S=symsum(x/n^2,n,1,inf)
符号矩阵中元素的引用和修改
>> A=sym(’[1+x, sin(x); 5, exp(x)]’) >> A(1,2) >> A(2,2)=sym(’cos(x)’)
Matlab 符号运算(二)
符号矩阵的基本运算
符号矩阵的基本运算与数值矩阵的基本运算相类似。
1) 基本运算符:+、-、*、\、/、
ans=10
ans=2*x+y
ans=10 ans=[2+y,4+y,6+y] ans=[7 10 13]
ans=3*a+b
?
Matlab 符号运算(二)
符号矩阵
使用sym函数直接生成
>> A=sym(’[1+x, sin(ห้องสมุดไป่ตู้); 5, exp(x)]’)
5 MATLAB 符号计算 (2)new

• d2z_dxdy=diff(diff(x^6-3*y^4+2*x^2*y^2,x),y)
• %给出关于x y的偏导数 • 可得到: • d2z_dxdy = • 8*x*y
• d2z_dydx=diff(diff(x^6-3*y^4+2*x^2*y^2,y),x)
• %给出关于y x的偏导数 • 可得到: • d2z_dydx = • 8*x*y
5 符号计算 (2)
• • • • •
5.4 符号微积分 5.4.1 符号极限 求函数极限的函数是limit,调用格式如下: limit(f,x,a) 求符号函数f(x)的极限值。即计算当自变量x趋 近于常数a时,f(x)函数的极限值。 • limit(f,a) • 求符号函数f(x)的极限值。由于没有指定符号 函数f(x)的自变量,则使用该格式时,符号函 数f(x)的变量为函数findsym(f)确定的默认自 变量,即变量x趋近于a。
• 执行结果为:
• The integral of f is • [ 2 • [1/2 a x • [ • [ log(x)
3] 1/3 b x ] ] -cos(x) ]
• 例5-49 求积分
• syms x y z; • F2=int(int(int(x^2+y^2+z^2,z ,sqrt(x*y),x^2*y),y,sqrt(x), x^2),x,1,2) • VF2=vpa(F2)
• • • • •
• • • •
输入语句: dz_dx=-a(1)/a(3) 求得: dz_dx = (-cos(x*y)*y-(1+tan(z*x)^2)*z)/(sin(y*z)*y+(1+tan(z*x)^2)*x) dz_dy=-a(2)/a(3) 求得: dz_dy = (-cos(x*y)*x+sin(y*z)*z)/(sin(y*z)*y+(1+tan(z*x)^2)*x)
MATLAB2符号说明

MATLAB的数值计算
Matlab的数据类型
变量
变量不需要事先声明,也不需要指定变量类型,它会自动根据 所赋予变量的值或对变量的操作来确定变量的类型;赋值过程中, 如果变量已存在,则用新值代替旧值,以新的类型代替旧的类型。 变量的命名规则: 变量名区分大小写; 变量名长度不超过31位,第31位之后的字符被忽略; 变量名以字母开头,变量名中可以包含字母、数字、下划线, 但不能使用标点。 变量一般为局部变量,即仅在其调用的M文件内部有效;若要 定义全局变量,须在变量前加关键字global。
A=
1 4 7 2 5 8 3 6 9
1 4 7
2 5 8
3 6 9
大型矩阵通借助M文件来输入。
x=rand(1,5) %产生的均布随机数组 x= 0.9501 0.2311 0.6068 0.4860 0.8913 x(3) %寻访数组x的第三个元素。 ans = 0.6068 x([1 2 5]) %寻访数组x的第一、二、五个元素组成的子数组。 ans = 0.9501 0.2311 0.8913 x(1:3) %寻访前三个元素组成的子数组 ans = 0.9501 0.2311 0.6068 x(3:end) %寻访除前2个元素外的全部其他元素。end是最后一 %个元素的下标。 ans = 0.6068 0.4860 0.8913
?format long;pi
ans =
3.14159265358979 ?format long e;pi ans = 3.141592653589793e+000 ?format long g;pi ans = 3.14159265358979
字符串 1、字符串的约定
第2章 matlab的符号运算

>>p0 = sym(‘(1+sqrt(5))/2’)
p0 = (1+sqrt(5))/2 >>pr = sym((1+sqrt(5))/2,'r') pr =7286977268806824*2^(-52) >>e32r = vpa(abs(p0-pr),16) e32r = 0
%广义有理表示
Matlab程序设计
Matlab程序设计
2.2 符号数字 sc = sym(‘Num’) %符号常数sc的值精确等于Num 例:a = pi + sqrt(5) %a为数值类常量 sa = sym(‘pi + sqrt(5)’) %sa为符号数字常量
% sa = pi + sqrt(5), sym型; eval(sa) 为5.3777, double型
k = sym('k','positive');
Matlab程序设计
2.4 符号变量
符号变量与符号参数的创建方法相同,但表达式或 方程中作用不同. 确定自由符号变量: findsym(EXPR , N) %确认EXPR中距离x最近的N个自由符号变
量, 略去N表示全部
例2.1-1 用符号计算研究方程uz2+vz+w=0的解 syms u v w z Eq=u*z^2+v*z+w; %符号方程 r_1=solve(Eq) %一个方程只能解一个未知数w(离x最近) findsym(Eq,1) %只找一个自由符号变量,则找到w r_2=solve(Eq,z)
3.3 符号表达式的操作 例:化简 S=(x2+y2)2+(x2-y2)2 syms x y; S=(x^2+y^2)^2+(x^2-y^2)^2 simple(S) %系统自动试探各种函数化简 simple(ans) %使用多次找到最少字母的简化式 例2.2-3:对符号矩阵进行特征向量分解. syms a b c d W [V,D]=eig([a b;c d]) [RVD,W]=subexpr([V;D],W)
MATLAB符号运算

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 是一种数值计算和编程环境,它可以进行符号运算,即对代数表达式进行操作和计算。
在 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中,符号运算可以应用于各种数学问题,包括求解方程、微积分、矩阵计算等。
它提供了一种便捷的方式来处理代数表达式,而不需要将其转化为数值形式进行计算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
又如,求下列微分方 程组的特解
du v dt 也可使用命令 dv w >> dt S=dsolve('Du=v','Dv=w','D dw w-u','u(0)=0,v(0)=0,w(0)=1') u dt 查看解 u (0) 0, v(0) 0, w(0) 1 >> S.u
limit(f,x,a) 计算符号表达式f在x→a时的极限 limit(f) 计算符号表达式f在x→0时的极限 >> syms x t; >> limit((1+2*t*sin(1/x))^(3*x),x,inf) ans = exp(6*t) 2.符号积分 积分函数int函数的调用格式为: int(S,t) 计算符号表达式S对符号变量t的不定积分 int(S,a,b) 计算符号表达式S对默认符号变量从a到 b的不定积分 >> syms x y t; >> A=[cos(x*t),sin(x+t);exp(t/x),log(x-t)]
2.幂级数
(1)用函数symsum求幂级数
n 1
x 2 n 1 的和函数。 2n 1
>> syms x n >> symsum(x^(2*n-1)/(2*n-1),n,1,inf) ans = 1/2*log((1+x)/(1-x)) (2)用taylor将函数展成泰勒级数,其调用格式为: Taylor(f,n) 求函数f的n-1阶麦克劳林级数 Taylor(f,n,x0,x) 求函数f在x0处的以x为变量的n-1阶泰勒 级数。 注:后面3个参数的次序可以任意打乱,在不引起混淆的 情况下均能给出正确结果。
ans = [ -6*x-2*x^3-7*x^2, 3/2*x^2+x+1/2*x^3] [ 6+2*x^3+10*x^2+14*x, 1/2*x^3-2*x^2-3/2*x] (2)求逆运算“inv”,行列式运 算“det”,幂运算“^”、求秩运算 “rank”、指数运算“exp”和对 数运算“log” >> inv(a) ans = [ 1/2*x*(x+1)*(x+2), 1/2*x*(x+3)*(x+2)] [ -1/2*x*(x+3)*(x+1), 1/2*(x+3)*(x+1)*(x+2)]
六、符号微分方程求解
y |x0 1,y |x0 3 的特解。
常微分方程及微分方程组的符号求解由函数dsolve来实 现,其调用格式为: dsolve(‘equ1’, ‘equ2’,…) 例如,求微分方程 y(t dsolve('(t^2+1)*D2y=2*t*Dy','y(0)=1,Dy(0)=3') ans = 1+t^3+3*t x e 又如,求微分方程 y 2 y y 的通解。 x >> dsolve('D2y-2*Dy+y=exp(x)/x','x') ans = -exp(x)*x+log(x)*exp(x)*x+C1*exp(x)+C2*exp(x)*x
2.反函数的运算 反函数运算可通过功能函数finverse(f)来实现,其调用 格式为: (1)g=finverse(f) 符号函数f的反函数。 (2)g=finverse(f,z) 返回符号函数的自变量为z。
>> f=x^3+y; >> finverse(f,y) ans = -x^3+y >> finverse(f) Warning: finverse(x^3+y) is not unique.
A= [ cos(x*t), sin(x+t)] [ exp(t/x), log(x-t)] >> int(A,t) ans = [ 1/x*sin(x*t), -cos(x+t)] [ exp(t/x)*x, -log(x-t)*(x-t)+x-t] >> int(sqrt(1+y^2),y) ans = 1/2*y*(1+y^2)^(1/2)+1/2*asinh(y) >> int(sqrt(1+y^2),0,1) ans = 1/2*2^(1/2)-1/2*log(2^(1/2)-1) 如,计算二次积分
X=fsolve(‘fun’,X0,options,’gradfun’)
例如
x1 0.7 sin x1 0.2 cos x 2 0 x 2 0.7 cos x1 0.2 sin x 2 0
function y=fc(x) y(1)=x(1)-0.7*sin(x(1))-0.2*cos(x(2)); y(2)=x(2)-0.7*cos(x(1))-0.2*sin(x(2)); y=[y(1),y(2)]; >> x0=[0.5,0.5]; >> fsolve('fc',x0) ans = 0.4442 0.7715
§14.2 符号运算功能
一、符号表达式的生成 1.用单引号设定后输入或赋值 例如,创建符号函数
>> f='log(x)' f= log(x) 2.用命令sym(生成符号对象) 例如,创建符号方程
>> eqation=sym('a*x^2+b*x+c=0') eqation = a*x^2+b*x+c=0
> In C:\MATLAB6P1\toolbox\s ymbolic\@sym\finverse. m at line 43 ans = (-y+x)^(1/3)
三、符号的矩阵的创立与运算 1.符号矩阵的创立 符号矩阵的创立与和创立数值矩阵的方法相似,只不过要 用到符号定义函数sym。我们可以使用sym函数直接建立 符号矩阵;可以通过建立子矩阵的方法建立符号矩阵;也 可以使用sym函数将数值矩阵转化为符号矩阵。 >> a=sym('[1 1/s+x sin(x);y/x 1+1/y,tan(x+y);3+4,exp(x^2+y^2),log(tanh(y))]') a= [ 1, 1/s+x, sin(x)] [ y/x, 1+1/y, tan(x+y)] [ 3+4, exp(x^2+y^2), log(tanh(y))]
1.复合函数的运算
复合函数运算可通过功能函数compose来实现,其调用 格式为: (1)compose(f,g) 返回当f=f(x)和g=g(y)时的复合 函数f(g(y))。 (2)compose(f,g,z) 返回复合函数以z为自变 量。 (3)compose(f,g,x,z) 返回复合函数f(g(z)), 且使x为f的独立变量。 1/(1+sin(y)^2) 例如 >> compose(f,g,z) >> syms x y z t ans = >> f=1/(1+x^2); 1/(1+sin(z)^2) >> g=sin(y); >> compose(h,g,x,z) >> h=x^t; ans = >> compose(f,g) sin(z)^t ans =
S= u: [1x1 sym] v: [1x1 sym] w: [1x1 sym
七、级数 1.常数项级数 级数求和用函数symsum来实现,其调用格式为: symsum(一般项) symsum(一般项,变量) symsum(一般项,变量,起始,终止) 1 例如,求级数 2 的前10项和及无穷和。 n 1 n >> syms n; >> symsum(1/n^2,n,1,10) ans = 1968329/1270080 >> symsum(1/n^2,n,1,inf) ans = 1/6*pi^2
0
1
dy
1 y
( x 2 y 2 )dx
>> int(int((x^2+y^2),x,sqrt(y),1),y,0,1) ans =26/105
3.符号微分 微分diff,其调用格式为 diff(S) 表示对表达式S的微分。 diff(S,’v’) 或diff(S,sym(’v’)) 表示对变量v,求 表达式S的微分。 diff(S,n) 对整数n,对表达式S微分n次。 diff(S,’v’,n) 和diff(S,n,’v’) 都表示对变量v, 求表达式S的微分n次。 >> syms x t; >> diff(sin(x^2)) ans = 2*cos(x^2)*x
设
3z z x ln( xy),求 xy 2
>> syms x y; >> z=x*log(x*y); >> diff(diff(z,'x'),'y',2) ans = -1/y^2
五、符号代数方程求解 1.符号线性方程组的求解方法 可用linsolve和solve得到方程组的精确解。所得到的 精确解可由函数vpa转换成浮点近似数值。 >> a=sym([10 -1 0;-1 10 -2;0 -2 10]); >> b=('[9;7;6]');