2.数值计算的通用函数(一)

符号计算基础

创建符号对象

sym

符号变量名=sym('符号字符串')
例一:符号运算解方程

clear;clc;
a=sym('a');b=sym('b');x=sym('x');y=sym('y');
[x,y]=solve(a*x-b*y-1,a*x+b*y-4);%这里要把等式右边都换成零
x
y

在这里插入图片描述

syms

syms 符号变量名1 符号变量名2 …… 符号变量名n
使用方法和sym函数类似
但是现在已经过时了,被替换成了str2sym

运算符和运算

常用运算

提取分子和分母

%提取分子和分母
clear;clc;
syms x y;
f=x/2*y+2*y/x;
[n,d]=numden(f)

在这里插入图片描述

变量替换

%变量替换
clear;clc;
syms x x1 x2 x3;
y=1+2*x+3^x;
subs(y,'x','x1+2*x2+3*x3')

这样会报错,MATLAB虽好用,但有时候报错莫名其妙的。所以选参考书一定要选最新的,不然很多函数都被抛弃了。
报错内容:
Error using sym>convertChar (line 1448)
Character vectors and strings in the first argument can only specify a variable or number. To evaluate
character vectors and strings representing symbolic expressions, use ‘str2sym’.

Error in sym>tomupad (line 1214)
S = convertChar(x);

Error in sym (line 211)
S.s = tomupad(x);
需要这样改:

%变量替换
clear;clc;
syms x x1 x2 x3;
y=sym(1+2*x+3^x);
subs(y,'x',sym(x1+2*x2+3*x3))

也就是不能用字符串符号计算,需要使用符号计算函数才行。
在这里插入图片描述

因式分解和展开

函数说明
factor(s)对s分解因式
horner(s)将多项式s转换成嵌套形式
expand(s)对s进行展开
%因式分解和展开
clear;clc;
syms x y;
y1=x^2+2*x+1;
y2=x^3+2*x^2+4;
y3=(x+2*y)^3;
factor(y1)
horner(y2)
expand(y3)

在这里插入图片描述

化简

函数说明
simplify(s)化简,s可以是多项式也可以是符号表达式矩阵
%化简
syms x;
y=2*sin(x)*cos(x);
%直接化简得最终表达式
simplify(y)

在这里插入图片描述

符号矩阵运算函数

代数运算函数

符号矩阵的立方和指数

%符号矩阵的立方和指数
a=sym([1 2 3;4 5 6;7 8 9]);
a^3
exp(a)

在这里插入图片描述

矩阵求逆、行列式、秩、列空间的基和转置

%矩阵求逆、行列式、秩、列空间的基和转置
a=magic(3);
a=sym(a);
%逆
inv=inv(a)
%行列式
det=det(a)
%秩
rank=rank(a)
%列空间的基
col=colspace(a)
%转置
tran=transpose(a)

在这里插入图片描述

取矩阵对角线、上三角、下三角

b=hilb(5);
b=sym(b);
%求矩阵的第二条对角线
diag(b,2);
%求矩阵c 上三角
c=triu(b,1);
%求矩阵d 下三角
d=tril(a);
a,b,c,d

在这里插入图片描述
在这里插入图片描述

rref函数

求符号矩阵的简化行阶梯矩阵(高斯-若尔当消元法)

%简化行阶梯矩阵
a=rand(4);
a=sym(a);
x=rref(a);
a,x

在这里插入图片描述

null函数

零空间正交基

%零空间正交基
a=[1 2 3;4 5 6;7 8 9];
a=sym(a);
n=null(a);
n

在这里插入图片描述

eig函数

特征值和特征向量

%特征值和特征向量
a=magic(4);
e=eig(a);
[V,D]=eig(a);
a,e,V,D

在这里插入图片描述

jordan函数

将矩阵变换为若尔当形式并求特征值和特征向量

%将矩阵变换为若尔当形式并求特征值和特征向量
a=magic(4);
a=sym(a);
[b,c]=jordan(a);
a,b,c

在这里插入图片描述

svd函数

%矩阵的奇异值分解
x=[1 2 3 4 ;5 6 7 8 ;9 10 11 12; 13 14 15 16];
digits(30);%设置运算精度
[a b c]=svd(x);
x,a,b,c

在这里插入图片描述

科学运算函数

极限

函数说明
limit(f,x,a)当变量x趋于a时,计算f(x)的极限
limit(f,a)当变量x趋于a时,计算f(x)的极限
limit(f)当变量x趋于0时,计算f(x)的极限
limit(f,a,x,‘right’)当变量x从右边趋于a时,计算f(x)的极限
limit(f,a,x,‘left’)当变量x从左边趋于a时,计算f(x)的极限
%算极限
syms x;
f=(x^2-x+1)/(x-1)^2;
limit(f,x,1)

在这里插入图片描述

微分

diff函数

调用格式参数说明
diff(s)求s的一阶微分
diff(s,‘a’)指定以a为变量,求s的一阶微分
diff(s,n)求s的n阶微分
diff(s,‘a’,n)指定以a为变量,求s的n阶微分
%微分
y=sym((x^2+3*x+1)/4*x^2);
dy=diff(y);
dyy=diff(y,2);
dy,dyy

在这里插入图片描述

%偏微分
clear;clc;
syms x y;
z=sym(5+4*x*(y^3)+3*(x^2)*(y^2)+2*(x^3)*y+(x^4));%指数运算优先级不够
dzx=diff(z,'x');
dzy=diff(z,'y');
dzxx=diff(z,'x',2);
dzyy=diff(z,'y',2);
dzx,dzy,dzxx,dzyy

在这里插入图片描述

积分

int函数

调用方式说明
int(f)使用默认变量进行不定积分运算(感觉不太安全)
int(f,a)以a为自变量对f求不定积分
int(f,a,b)对f求a到b的定积分,a<b
int(f,v,a,b)求以v为自变量的,a到b的定积分
%求积分
f=sym(x^4/(1+x^2));
int(f)

在这里插入图片描述

级数求和

symsum函数,调用方法和int函数很像

调用方式说明
symsum(f)自变量默认为k,计算表达式f从0到k-1的和
symsum(f,v)计算表达式f从0到v-1的和
symsum(f,a,b)在默认变量的情况下,计算表达式f从a到b的和
symsum(f,v,a,b)以v为变量,计算表达式f从a到b的和
%级数求和
clear;clc;
syms a b x;
f=a*x^2+2*b*x;
symsum(f,1,10)%默认变量是x
symsum(f,a,1,10)

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值