matlab disolve,MATLAB入门篇 | 基本运算2
一起涨姿势
符号计算
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
清风徐来 | 鬼见愁乔佳 | 喜欢文字的你
日常更新一些关于技术后沿和小众文化的骚操作
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!