符号矩阵(1)

1.用命令sym定义矩阵

这时的函数sym实际上是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的符号或者表达式,而且长度没有限制,只是将方括号置于用于创建符号表达式的单引号中。

sym_martix = sym('[a,b,c;Jcak,HelpMe,NOWAY]')
sym_martix =
             [    a,      b,     c]
             [ Jcak, HelpMe, NOWAY]
 >> sym_digits = sym('[1 2 3;a b c;sin(x) cos(y) tan(z)]')
 sym_digits =
             [      1,      2,      3]
             [      a,      b,      c]
             [ sin(x), cos(y), tan(z)]

sym–数值矩阵转为符号矩阵
【功能简介】将数值矩阵转化为相应的符号矩阵。

【语法格式】
S=sym(A)
将数值矩阵A转化为相应的符号矩阵S。无论矩阵是用浮点数还是分数表示,转化后的符号矩阵都将以最接近原值的有理数形式或者函数形式表示。

【实例】将一个2×2实数矩阵转化为符号矩阵。

>> a=[0.5,sin(4);5/101,sqrt(3)]  
a =  
    0.5000   -0.7568  
    0.0495    1.7321  
>> sym(a)    %将实数矩阵a转化为符号矩阵  
 ans =  
[   1/2, -3408335435861847/4503599627370496]  
[ 5/101,                            3^(1/2)]  

【实例分析】sym函数在转化时,总是以最接近原值的有理数形式或函数形式来表示实数。
<原文:https://blog.csdn.net/qq_18343569/article/details/50405008>

2.用命令syms定义矩阵

>> syms a b c
>> M1=sym('Classical');
>> M2=sym('Jazz');
>> M3=sym('Blues');
>> sym_matrix=[a b c;M1 M2 M3;2 3 5]   
sym_matrix =
[         a,    b,     c]
[ Classical, Jazz, Blues]
[         2,    3,     5]

sym与syms

区别1:如果定义变量x,syms x;当用sym生成多个符号变量时,MATLAB要报错
syms函数的功能比sym函数更为强大,它可以一次创建任意多个符号变量.且,syms函数的使用格式也很简单,使用格式如下:

 syms var1 var2 var3...

如:syms x y z

区别2:
syms可以直接声明符号函数d®,并且可以对函数的形式进行赋值改变,但是sym却不可以sym d(t),只是将d(t)生成了一个整体的符号。
<原文:https://blog.csdn.net/winycg/article/details/52475054 >

3.大矩阵的生成

对于大型矩阵一般使用创建M文件,以便于修改。

  • 建立M文件的必要性: 对于常用的或很长的程序,如果每次都从头输入,则非常费时间,也容易出错.将这些程序做成M文件就方便多了–只要输入自定义的命令,就可以方便的调用,编程的效率大大提高!
    如何建立M文件
    (1)在记事本(.txt)或maltab命令窗口中编辑好M文件
    例:编写一个输入半径,计算圆的面积和球的体积 的M文件.
    前两行是文件头,一般说明文件的 类型(M-file),文件名(tutex2),和文件的功能(输入半径,计算圆的面积和球的体积),后面是文件体,主要是解决特定问题的程序代码.
    (2)将上面的代码保存到工作空间里.保存方法是:File/New/F-ile/保存
% M-file, tutex2.m 
% 输入半径,计算圆的面积和球的体积
r = input('Type radius:'); %从键盘输入Type radius的值,并将它赋值给r.
area=pi*r^2;
volume=(4/3)*pi*r^3;
fprintf('The radius is %12.5f\n',r)  %12.5f是以浮点数输出12位数,其中有5位是小数,不够位的左补空格。
fprintf('The area of a circle is %12.5f\n',area)
fprintf('The volume of a sphere is %12.5f\n',volume)

3.如何调用M文件?
在matlab工作窗口直接键入M文件名,即可调用.
以上面的程序为例,

>> tutex2   %键入文件名,回车
Type radius:   %提示输入半径 ,输入半径,比如 13.5, 回车 显示如下
Type radius:13.5
The radius is     13.50000
The area of a circle is    572.55526   
The volume of a sphere is  10305.99470

生成M文件,名称为test.m
先在MATLAB的M文件里输入:

tes=[456 468 57 90 873 
21 44 567 830 295 
31 638 91 7 76 
5490 8 68 10 9780
4387 78 99 100 5]

然后在maltlab窗口输入:

>>test
tes=
              456 468  57  90  873 
               21  44 567 830  295 
               31 638  91   7   76 
             5490   8  68  10 9780
             4387  78  99 100    5

4.矩阵的数学函数

1.三角函数

sin cos
sinh cosh
tan atan
asin acos

2.指数函数和对数函数

  • 指数:
    Y=exp(X)计算矩阵中每一元素的指数; Y=expm(X)计算矩阵指数
    上述两种计算结果主对角线位置元素是相等的,其余元素不相等。

  • 对数

L=logm(A)输入的参数A必须为方阵,若A奇异或者有特征值的负实数轴,那么A的主要对数是没有定义的。
logm是expm的逆运算。
  • 复数
    函数:complex  
    功能:
  • 求复数的模。Y=abs(X)
  • 创建复数。c = complex(a,b)表示c = a + bi
  • 求复数的共轭。Y=conj(Z)
    输入参数a作为复数c的实部,c的虚部为0,但isreal(a)返回false,表示c是一个复数。

5.符号运算的基本内容

使用subs函数
函数调用方式: subs(S,old,new)
将符号表达式S中的old变量替换为new。old一定是符号表达式S中的变量,而new可以为符号变量,符号常量,双精度数值与数值数组等。

subs(S,new):使用new来替换表达式S中的自变量。

【例题:已知f=axn+by+k,试对其进行符号变量替换:a=sin t、b=lnw、k=ce^(-dt);
符号常量替换n=5,k=pi与数值数组替换k=1:4.】

syms a b c d k n x y w t;
f=a*x^n+b*y+k
f1=subs(f,[a b],[sin(t) log(w)])
f2=subs(f,[a b k],[sin(t) log(w) c*exp(-d*t)])
f3=subs(f,[n k],[5 pi])
f4=subs(f1,k,1:4)
 
f =  
     k + a*x^n + b*y   
f1 =   
     k + x^n*sin(t) + y*log(w)   
f2 =  
     c*exp(-d*t) + x^n*sin(t) + y*log(w)   
f3 = 
     a*x^5 + pi + b*y   
f4 =
     [ x^n*sin(t) + y*log(w) + 1, x^n*sin(t) + y*log(w) + 2, x^n*sin(t) + y*log(w) + 3, x^n*sin(t) + y*log(w) + 4]

也可以使用循环来替换

>> syms a k x;
    f=a*sin(x)+k;
       for a=1:2;
       for x=0:pi/6:pi/3;
           f1=a*sin(x)+k
       end
    end
     
    f1 =
          k   
    f1 =  
          k + 1/2    
    f1 =    
          k + 3^(1/2)/2 
    f1 = 
          k                  
    f1 =        
          k + 1                  
    f1 =         
          k + 3^(1/2)

6.符号对象转换为数值对象的函数

1.double(C):将符号常量C转化为双精度数值
2.digits(D):设置有效数字个数为D的近似解精度
3.vpa():精确计算表达式的值。其函数调用格式有两种:
- R=vpa(E):这种格式必须与digits(D)连用,在其设置下,求得符号表达式E的设定精度的数值解。注意:返回的数值则为符号对象类型。
- R=vpa(E,D):即求符号表达式E和D位精度的数值解。
4.N = numeric(E)这种格式的功能是将不含变量的符号表达式E转换为double双精度浮点数值形式,其效果与N=double(sym(E))相同

`

你可能感兴趣的:(matlab)