首页 > 其他分享 >Matlab符号计算(实例)

Matlab符号计算(实例)

时间:2023-05-21 23:02:46浏览次数:49  
标签:符号 %% sym syms 实例 Matlab 符号计算 sin 表达式


%% 1.数值常量转换为符号变量
%% 2.符号表达式的创建
%% 3.符号表达式中符号自变量的确定
%% 4.符号对象和数值对象的转换
%% 5.符号数值的精度控制
%% 6.合并同类项
%% 7.因式分解
%% 8.分子多项式和分母多项式的提取
%% 9.符号表达式的展开
%% 10.符号表达式的化简
%% 11.符号表达式的置换
%% 12.符号极限
%% 13.符号微分
%% 14.级数求和
%% 15.符号积分
%% 16.代数方程的求解
%% 17.符号微分方程的求解


% Matlab中常用函数除了angle()、atan2()、log2()、log10()只能用于数值运算外,其余的都可用于符号运算
% 同时符号运算符中没有逻辑操作符、关系运算符也只有是否等于的概念


% 1.数值常量转换为符号变量


a1=sym(cos(0.8*pi)+4,'d');%返回最接近32位的十进制数值

 a2=sym(cos(0.8*pi)+4,'e');%返回最接近的带有机器浮点误差的有理值

 a3=sym(cos(0.8*pi)+4,'f');%返回最接近的浮点表示

 a4=sym(cos(0.8*pi)+4,'r');%返回该符号值最接近的有理数值

 x=sym('a','real');     %创建正实数的符号变量a,如果用户对创建的符号变量的数学特性不加说明则默认为复数变量

                        %但是一旦定义了符号变量的数学特性,即使用clea清除下次也默认为上次的数学特性除非重启matlab

 y=sym('c');            %默认为复数变量

 syms d;                %默认为实数变量




% 2.符号表达式的创建


y1=sym('a*x^2+b*x+c');%一次性创建,但是没有创建单个变量

 syms a b c x;

 y2=a*x^2+b*x+c;%逐个创建,最终合成表达式,创建了单个变量




% 3.符号表达式中符号自变量的确定(这里没有举矩阵的例子)


%%自变量选择顺序:先x,在x最近的数(先比较变量的第一个字母),若距离相同则取x后面的数,最后是大写字母

 syms d e f x t w X Y;

 k=sym('2+pi');

 n=sym('c*sqrt(alpha)+y*sin(delta)');

 g=k*x*Y+d*n*X-w^2+t^f;

 g_all=findsym(g);%找出所以自变量,n不独立所以不能做为自变量

 g_1=findsym(g,1);%找出表达式中1个自变量

 g_2=findsym(g,2);%           2

 g_5=findsym(g,5);%           3




% 4.符号对象和数值对象的转换

h=sym('[sin(0.9*pi);sqrt(2)]');

 double(h);%将符号变量转化为数值常量



% 5.符号数值的精度控制


t=sqrt(2)*log(7);

 digits;%缺省精度 32

 t1=vpa(t); %用当前位数计算并显示

 t1=vpa(t,5); %指定5位精度进行计算并显示

 digits(8);%和下面一行联合来对精度进行控制

 t1=vpa(t);



% 6.合并同类项


syms x t;

 f=sym((x^2+x^2*exp(-t)+1)*(x+exp(-t)));

 f1=collect(f);%合并x的同类项系数

 f2=collect(f,exp(-t));%合并 exp(-t) 同类项系数




% 7.因式分解

syms x a;

 t=factor(a^3-x^3);%分解为多因式相乘

 factor(sym('123488'));%分解为多个质数相乘

 horner(x^6-5*x^3+4*x^2+4*x-6);%分解为x叠乘的形式



% 8.分子多项式和分母多项式的提取


syms x;

 A=[x^2 1/x^3+3;(2*x^2+1)/x-1/x^2 1/(x-3)];%将各个元素的分子和分母进行分解

 [n d]=numden(A);%n对应分解后的分母,d对应分解后的分母




% 9.符号表达式的展开


syms x1 y1 alpha beta;

 g=(x1-y1)^5;

 expand(g);%将符号表达式展开

 g1=[sin(alpha+beta) cos(alpha-beta);tan(alpha+beta) sin(3*beta)];%展开矩阵的各个元素

 expand(g1);




% 10.符号表达式的化简


syms t;

 g3=2*t/(t^2-t+1)+3/(t+1);

 simplify(g3);%只给出化简结果




% 11.符号表达式的置换

syms a b x y;

 f=a*sin(x)+b;

 f1=subs(f,'sin(x)',y);%将f表达式中的sin(x)替换为y(可以用数值进行替换,若替换后表达式中

                       % 变量全为数值计算的结果为数值常量,否则为变量或符号常量)




 % 12.符号极限
 

syms x2 t2;

  g4=limit(sin(x2)/x2,x2,0);%表达式sin(x2)/x2在x2趋于0时的极限

  g5=limit(sin(x)+x,x,0,'left');%表达式的左极限

  g6=limit(sin(t2)+t2^3/(t2+1),t2,0,'right');%表达式的右极限


 
%  13.符号微分


syms x y a;

 f=[a y^3;y*cos(x) log(x)];

 dx=diff(f);%求f对x的导数

 dy2=diff(f,y,2);%求f对y的二阶导数

 dxdy=diff((diff(f,x)),y);%求f对x,y的二阶混合偏导数

 syms z;

 g=[x+log(y*z);y^2+tan(z);sin(x)+cos(y)];

 t=[x y z];

 gj=jacobian(g,t);%计算雅克比矩阵




% 14.级数求和

syms t;

 symsum(1/(t^2-1),t,2,9);%求表达式1/(t^2-1)在区间[ 2,9]的和




% 15.符号积分


syms x6 a t5 t6;%注意下面的规则同样适用于矩阵

 g6=int(a^x6*cos(x6),0,pi);%对表达式积分

 g7=int(x6^4,t5,t6);%对表达式积分,积分上下限可以取变量

 g8=int(1/x6,1,inf);%积分上限为无穷

 g9=int(1/t5);%缺省时默认为不定积分



% 16.代数方程的求解


syms a b c x;

 solve('x^3+2*x=4','x')%解方程 x^3+2*x=4

 solve('sin(x+1)',x)%解方程 sin(x+1)=0,无穷解只输出0附近的,有限个解则全部输出

 solve('a*(x^2-6)+b*(x+9)-c')%解方程 a*(x^2-6)+b*(x+9)-c 缺省时默认变量为第一自变量x

 s=solve('x^2+2*y+1','x+3*z=4','y*z=-1');%求解非线性方程组

 disp([s.x s.y s.z],6);%显示求解结果

 %下面是用来求解非线性方程组的举例

 syms d n p q;

 eq1=d+n/2+p/2-q;

 eq2=n+d+q-p-10;

 eq3=q+d-n/4-p;

 [n,p,q]=solve(eq1,eq2,eq3,n,p,q);




% 17.符号微分方程的求解


syms x y;

 y=dsolve('Dy=1+y^2','y(0)=3','x');%一阶微分方程,必须是Dy、D2y...这些形式

 y=dsolve('D2y=cos(2*x)-y','y(0)=log(5)','Dy(0)=0','x');%二阶微分方程,y(0)、Dy(0)顺序可变,x必须在最后

 %下面是用来求微分方程dx/dt=2y,dy/dt=-x

 g=dsolve('Dx=2*y,Dy=-x');

 gx=g.x;

 gy=g.y;

 %下面是用来求dy/dx=3y+z,dz/dx=-4y+3z的特解和通解

 g1=dsolve('Dy=3*y+z,Dz=-4*x+3*z','x');% 通解

 g1y=g1.y

 g1x=g1.z

 g2=dsolve('Dy=3*y+z,Dz=-4*x+3*z','y(0)=0,z(3)=1','x');% 特解

 g2y=g2.y;

 g2x=g2.z;












标签:符号,%%,sym,syms,实例,Matlab,符号计算,sin,表达式
From: https://blog.51cto.com/u_16063698/6320545

相关文章

  • React 入门实例教程
    现在最热门的前端框架,毫无疑问是 React 。上周,基于React的 ReactNative 发布,结果一天之内,就获得了5000颗星,受瞩目程度可见一斑。React起源于Facebook的内部项目,因为该公司对市场上所有 JavaScriptMVC框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出......
  • matlab默认工作路径的修改方法,永久的
    说起来也简单,就是到安装路径文件夹下C:\ProgramFiles\R2011a\toolbox\local找文件mathrc.m文件,在最后一行添加cd'你想要的默认路径下文件夹',andifyoufinishthisstep,thenyoumakeit.......
  • Asp.net MVC 3实例学习之ExtShop(六)——登录对话框
         登录对话框将使用jquery提供的对话框,所以不需要添加其它js文件。首先要为登录对话框添加一个表单模型。在Models目录下创建一个“AccountModels”类文件,然后添加一个Logon类,代码如下:1     public class LogOnModel2     {3      ......
  • MATLAB 能做什么?Matlab下载_Matlab中文版下载_Matlab使用教程
    MATLAB软件是一款非常强大的科学计算和数据分析工具,广泛应用于工程、物理、金融等领域。对于初次使用MATLAB软件的用户来说,想要运用它进行科学计算和数据分析可能并不是一件容易的事情。因此,本文将通过实际案例的方式,给大家介绍关于MATLAB软件功能使用技巧。首先,让我们来了解一下MA......
  • Matlab字符串相关操作-拼接、格式化
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • ★教程3:Simulink学习教程入门50例目录2.MATLAB/Simulink安装
    1.订阅本教程用户可以免费获得本博任意1个(包括所有免费专栏和付费专栏)博文对应代码;2.本Simulink课程的所有案例(部分理论知识点除外)均由博主编写而成,供有兴趣的朋友们自己订阅学习使用。未经本人允许,禁止任何形式的商业用途;3.本课程除了介绍常见的Simulink模块介绍之外,我们更侧......
  • matlab练习程序(二维图形的傅里叶级数)
    如何用傅里叶级数表示二维图形,首先要找到数学表达式,然后做傅里叶拟合即可。我最初想的是$R=f(theta)$这样的式子,$R$是极径,$theta$是极角。不过这样似乎处理不了$theta$一样的情况,比如图形有凹陷的情况。后来看了一些文章说可以把$x$和$y$分开表示,即$x=f(t)$,$y=f(t)$,这样可以......
  • matlab如何通过命令查看主机相关信息
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 基于Graph-Cut算法的彩色图像深度信息提取matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要Graphcuts是一种十分有用和流行的能量优化算法,在图像处理领域普遍应用于前后背景分割(Imagesegmentation)、立体视觉(stereovision)、抠图(Imagematting)等,目前在医学图像领域应用较多。GraphCut(图形切割)应用于......
  • 基于GA遗传优化的CDVRP,CVRP,DVRP,TSP以及VRPTW常见路径优化问题求解matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:        TSP最优路径TSP最优路径TSP最优路径BestRoute:0->2->10->5->3->6->9->1->4->7->8->0TotalDistance=95.275km  DVRP最优路径DVRP最优路径DVRP最优路径总路程=19......