首页 > 其他分享 >MATLAB符号数学计算

MATLAB符号数学计算

时间:2023-10-10 10:06:28浏览次数:28  
标签:变量 符号 %% syms a2 MATLAB 数学计算 表达式


    符号计算 存放的是精确数据,耗存储空间 ,运行速度慢,但结果精度高;数值计算则是以一定精度来计算的,计算结果有误差,但是运行速度快。两者的区别是: 数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量。

一、符号对象和符号表达式


close all;clear all;clc;
%% 符号对象的创建
syms x y z;%符号变量
a=sym(2/3,'f');%符号常量
b=2*y^2+y-1;%符号表达式
c=[1 2+y 2;2+z 1 1+y];%符号矩阵
%% 运算符和函数
syms a b c d e f g h;
a2=[a b;c d];
b2=[e f;g h];
c2=a2*b2;%符号计算和数值计算几乎相同
%% 类别识别函数
syms x;
a3=class(x);%返回符号对象的类别
b3=isa(x,'sym');%返回1或者0
whos x;%列出变量的信息
%% 变量的确定
syms a b c;
a4=3*a+b-c;
symvar(a4);%查找表达式中所有符号变量
symvar(a4,2);%查找表达式中距离x最近的2个符号变量
%% 符号精度计算
syms x;
a5=2*x^2+3*x-4;
b5=solve(a5);
d5=vpa(b5,6);%求近似解,精度为6位



二、符号表达式的操作


close all;clear all;clc;
%% 符号表达式的显示
syms x;
a=x^2+2/x+1;
pretty(a);
%% 符号表达式的合并
syms x y;
a2=2*x+y+x*cos(y);
collect(a2);
%% 符号表达式的展开
syms x y;
a3=exp((x+y)^2);
expand(a3);
%% 符号表达式的嵌套
syms x y;
a4=[x^2+x;y^3-2*y];
horner(a4);
%% 符号表达式分解
syms x y;
a5=2*x^2-7*x*y-22*y^2-5*x+35*y-3;
factor(a5);
%% 符号表达式化简
syms x;
a6=(x^3-1)/(x-1);
simplify(a6);



三、符号表达式的替换


close all;clear all;clc;
%% 符号表达式的替换
syms x y;
a=x^2+x*y+y^2;
x=2;
subs(a);%用工作区中的变量替换符号表达式中的默认变量
subs(a,'t');%用新的变量替换符号表达式中的默认变量
subs(a,{'x','y'},{3,4});%用新的变量替换符号表达式中指定的变量



四、符号函数的操作

close all;clear all;clc;
%% 复合函数
syms x y;
a=x+x^-1;
b=sin(x);
c=1+y^2;
compose(a,b);%返回复合函数a(b(y))
compose(a,c,'x','t');%返回自变量为t的复合函数a(c(t))
%% 反函数
syms x y;
a2=1/(sin(x)+cos(x));
b2=x^2+2*x*y+y^2;
a22=finverse(a2);%返回a2的反函数
b22=finverse(b2,y);%返回自变量为y的b2的反函数,满足b22(b2(y))=y



五、符号微积分


close all;clear all;clc;
%% 符号微分
syms x y z;
a=exp(x*sin(y))+log(z);
diff(a,z);%对z求微分
diff(a,x,2);%对z求二阶微分
b=[x^2+y^2;y*z];
jacobian(b,[x y]);%b是列向量,[x y]是指定进行变换的行向量
%% 符号积分
syms x y;
a2=x*y+(x*y)^-1;
int(a2,y);%对y求不定积分
int(a2,y,1,2);%对y求定积分
%% 符号级数求和
syms x n;
a3=x^2;
b3=symsum(a3,x,0,n-1);%求x从0到n-1的有限和
%% 泰勒级数
syms x y;
a4=sin(x)+1/cos(y);
taylor(a4,x,'order',4)%n-1阶泰勒级数
taylor(a4,x,'ExpansionPoint',1,'order',4)%n-1阶泰勒级数在ExpansionPoint处展开



六、符号积分变换

%% 傅里叶变换及其逆变换
syms t w;
a=sin(t)*cos(t);
b=fourier(a,t,w);%傅里叶变换
c=ifourier(b,w,t);%傅里叶逆变换
simplify(c);
%% 拉普拉斯变换及其逆变换
syms s t;
syms a positive;
a2=exp(2*t)+5*dirac(a-t);
b2=laplace(a2,t,s);%拉普拉斯变换
ilaplace(b2,s,t);%拉普拉斯逆变换
%% Z变换及其逆变换
syms a b n w;
a3=sin(a*n)+cos(b*n);
b3=ztrans(a3);%Z变换
c3=ztrans(a3,a,w);%指定自变量,用w代替复频率z
iztrans(c3,w,n);%Z逆变换



七、符号代数方程和微分方程求解


close all;clear all;clc;
%% 符号代数方程求解
syms x a b c;
a1=a*x^2+b*x+c;
solve(a1);%解方程
solve(a1,a);%指定变量,解方程
syms x y;
a11='x^2+y^2=25';
b11='x*y==12';
[x,y]=solve(a11,b11);%联立方程式求解
syms x y a b;
a12='x^2+y^2==a^2';
b12='x*y==b';
s=solve(a12,b12,x,y);%指定多个自变量,解为矩阵结构
s.x;
%% 符号微分方程求解
syms x;
a2='a*Dx+b*x=0';
dsolve(a2);
dsolve(a2,'x(0)=1');
dsolve(a2,'x(0)=1','m');
syms x y;
a22='Dx-3*x+2*y=0';
b22='Dy-2*x+y=0';
[x,y]=dsolve(a22,b22);
[x,y]=dsolve(a22,b22,'x(0)=1','y(0)=1');

标签:变量,符号,%%,syms,a2,MATLAB,数学计算,表达式
From: https://blog.51cto.com/u_6526235/7788048

相关文章

  • MATLAB概率统计
    一、产生随机变量%%二项分布随机数据产生n1=10:10:60;a1=binornd(n1,1./n1);b1=binornd(n1,1./n1,1,6);%一行六列c1=binornd([n1;n1],[1./n1;1./n1],2,6);%两行六列%%正态分布随机数据产生a2=normrnd(0,1,1,5);%标准正态分布,一行五列b2=normrnd([123;456],0.1,2,3);二......
  • MATLAB图形用户界面
    一、从最简单的开始   编程的基本思想是:我执行一个操作,程序做出一个反应。“一个操作”包括点击鼠标、拖动滑块、填写数据、选择选项等;“做出一个反应”包括计算、储存在哪里、贴个图出来、显示在哪里。   简言之:当点击按钮A时,然后执行任务C,则进入按钮A的回调函数callba......
  • m基带信号的软同步接收系统matlab性能仿真,对比统计同步,BTDT,CZT,ZOOM-FFT以及频谱细
    1.算法仿真效果matlab2022a仿真结果如下:统计同步BTDTCZTZOOM-FFT频谱细化法2.算法涉及理论知识概要基带信号的软同步接收系统是通信系统中非常重要的一部分。在多种通信系统中,如无线通信、光纤通信等,接收到的信号一般都是基带信号。为了有效地处理这些信号,需要对其进......
  • MATLAB 如何运行程序
     很多用户在刚开始使用matlab这个软件的时候,不知道怎么使用这个软件来运行程序,找不到操作的地方,其实需要先新建一个文件,然后再放入代码运行。matlab如何运行程序:1、首先点击“matlab”软件,并且打开。 2、进入主界面之后,选择“新建”中的“脚本”或者“函数”。 3、按个......
  • MATLAB 白噪声实验
       ......
  • MATLAB 快捷键/使用技巧/注意事项
    快捷键Ctrl+R注释代码Ctrl+T取消注释代码Ctrl+]或先将光标移动到行首再按Tab添加缩进Ctrl+[或先将光标移动到行首Shift+Tab删除缩进Ctrl+I<先选择需要自动整理的代码段>自动整理代码Ctrl+F<先选择需要查找替换的变量名>查找或替换变量名、函数名Ctr......
  • 手写PCA(主元分析法)计算点云法向量(详细注释) 【Matlab代码】
    原理PCA原理主元分析法PCA学习笔记点云法向量与点云平面拟合的关系(PCA)EstimatingSurfaceNormalsinaPointCloud3D【24】PCA点云法向量估计利用PCA计算点云的法线3D点云法向量估计(最小二乘拟合平面)为什么用PCA做点云法线估计?利用PCA求点云的法向量pca_demo.mclcclearclosea......
  • 安装包Matlab-中文科学编程软件-安装包下载方式
    Matlab应用是从外网软件论坛中引进的一款优质数据分析平台,该应用的UI布局设计参考了主流的办公应用,主体是由MATLAB和Simulink组成,内置了多达六百余种的函数运算模式,适合于每天需要处理大规模数据计算的行业,像仿真建模、系统算法的研发以及复杂的工程结构作图等,相信会是满意的选择。......
  • matlab下载-matlab软件官方版下载「编程开发」安装包下载方式
    matlab最新版本是一款非常不错的数学计算软件,这款软件非常的给力有着很强悍的算法以及模型创建能力,此版本更新了很多新的功能,能让你的办公使用更加强悍,快来下载试试吧。软件地址:看置顶贴Matlab2020b软件特色1、Matlab2020b提供用于科学计算及工程设计的高级语言。2、Matlab2020b可......
  • 在MATLAB中将两条曲线画在同一个图上
    在MATLAB中将两条曲线画在同一个图上,如果直接采用下面的代码,那么画的第二个图会将第一个图覆盖plot(x,p1,'LineWidth',2);plot(x,p2,'LineWidth',2);正确的做法是在两条语句中间添加holdon;plot(x,p1,'LineWidth',2);holdon;plot(x,p2,'LineWidth',2);———————————......