一起涨姿势

符号计算

1》符号变量定义

s = sym('name');

%s:返回的符号变量或表达式

%name:输入的名称或表达式

%变量不多时,

%建议把s和name写成一样,

%以免混淆

s = sym(var,flag);

%var:数值变量名(数或矩阵)

%flag:指定var的具体类型

%       'r'-默认值,有理数

%       'f'-浮点型数据

%       'd'-十进制数

%       'e'-估计误差

%该式还可把数值转化为符号变量

r = vpa(A);

r = vpa(A,D);

%A:double型变量

%D:转换后小数总位数

%r:符号型数据

%还可用digits(N)设定D的值

%N为小数时,四舍五入取整

x = sym('x',type)

%type:指定x类型

%        'positive'-正数

%        'real'-实数

%        'unreal'-非实数

%还可将字符串型变量化为符号变量

%注意:syms与sym不同

syms arg1 arg2 …;

syms k type;

%arg1,arg2:定义的符号变量名

%也可用type:positive,real,unreal

%注意:直接输入,而不加引号

F1 = findsym(S);

F2 = findsym(S,n);

%S是一个符号表达式

%F1:包含S的所有符号变量的字符串

%包含符号变量名、逗号和空格

%符号变量名是英文字母,大写在前

%没有则返回空字符串

%F2:S中最靠近x右侧的n的字符串

%将表达式P化为ax(bx(cx+d)+e)+g

[n,d] = numden(A);

%将表达式A化为有理分式

%n(num)分子,d(den)分母

2》赋值函数使用

v = subs(s,{var1,var2,…},{v1,v2,…});

%s:表达式;无引号

%old:要代换的变量名,单变量缺省

%new:更换后的值

%var1,var1:多个符号变量名

%v1,v2,…:相应的值

3》符号微积分

df = diff(f,n);%微分

%f:符号表达式;n:求导次数,默认为1

Jf = jacobian(f,v);%雅克比矩阵

%f:符号表达式;

%v:不同变量组成的向量

%v中只有1个变量时,

%diff( )等价于jacobian( )

V = int(S);

%S:被积函数,向量和矩阵也可

%var:积分变量,默认为x

%a,b:上下限

%求解微分方程

F = disolve(f);

%f:'被积表达式',有引号

%F:原函数

%f无引号,也可是向量或矩阵形式

多项式处理

1》多项式定义

p = [an,an-1,…,a1,a0];

%从高次到低次

%Pn(x)=anx^n+……+a1x+a0

%特殊函数调用

y = mfun('fun',p1,p2,…,pk);

2》多项式运算

r = roots(p);

%计算零点

y = polyval(p,x);

%特殊点函数值计算

dp = polyder(p);%求导

dp = polyder(p1,p2);%乘积的导数

[dq,dr] = polyder(p1,p2);%相除的导数

%p:原多项式的系数向量

%dp:导数多项式的系数向量

%dq:分子多项式的系数向量

%dr:分母多项式的系数向量

[r,p,k] = residue(B,A);

[B,A] =residue(r,p,k);

%B(x)/A(x) =

%     r1/(x-p1)+…+rn/(x-pn)+k(x)

卷积与相关

c = conv(p1,p2);

%length(c)=length(p1)+length(p2)-1

[q,r] = deconv(p1,p2);

%q:多项式q(x)的系数向量

%r:余项r(x)的系数

%p1(x)/p2(x)=q(x)+r(x)/p2(x)

C = conv2(A,B);

C = conv2(A,B,shape);

%二维卷积

%shape:字符串,限制输出矩阵C大小

%     'full'-默认值,m1+m2-1,n1+n2-1

%     'same'-与A大小相同的中间部分

%     'valid'-A的行列不小于B,则为

%               m1-m2+1,n1-n2+1,

%               否则为[]。

R = corr(A,B);

%R:线相关系数矩阵

表达式转换

1》符号表达式->字符串

F = disolve(f);

Fs = char(f);

2》字符串->符号表达式

x = sym('x',type)

%type:指定x类型

%        'positive'-正数

%        'real'-实数

%        'unreal'-非实数

3》含变化参数的符号计算

a=2;%不断变换a,v式统一

v=int(sym(['x^',num2str(a),'+3']),1,2);

4》函数赋值

f = x^2+x+2;

fv = eval(f);

5》符号表达式->inline函数

f = x^2+y*3;

fun = inline(char(f));

fun = Inline function:

fun(x,y)=x^2+3*y

清风徐来鬼见愁

ID:QingFengXuLaiGJC

清风徐来 | 鬼见愁乔佳 | 喜欢文字的你

日常更新一些关于技术后沿和小众文化的骚操作