matlab函数变量名替换,在matlab中如何实现符号变量替换符
号表达式,matlab表。。。
导航:⽹站⾸页 >
在matlab中如何实现符号变量替换符号表达式 , matlab 表达式中⽤的符号变量与算法中的符号变量不同(
在matlab中如何实现符号变量替换符号表达式 , matlab 表达式中⽤的符号变量与算法中的符号变量不同(变量有多个...
matlab定义函数表达式匿名⽹友:
⽤subs)函数可以实现符号表达式中 符号变量的替换⼯作。
符号变量可以被其他符号变量替换,也可以⽤数值,数值矩阵向量来替换,此时相当于给符号表达式中的符号变量赋值。
例如 :syms a b c dy=a^3+b^2+csubs(y,a,d) %实现另⼀符号变量d替换替换符号变量a.subs(y,b,3)%⽤数值替换subs(y,b,1,2,3)%⽤数值向量替换subs(y,b,1,2,3;4,5,6;7,8,9)%⽤数值矩阵来替换
匿名⽹友:
1、syms命令是创建多个符号变量的简捷写法,syms a b positive相当于a = sym('a','positive');b = sym('b','positive');所以,这种写法,a和b都是正的。
2、如果只想声明b是正数,那就考虑分开写:syms asyms b positive但是,如果先syms a b,经过⼀系列操作后,再声明syms b positive,也是有效的但很显然只对声明为正之后的操作有效。
下⾯是⼀个例⼦:>> syms b>> Dt=sym('Dirac(t-b)') Dt = Dirac(t-b)>> laplace(Dt) ans = laplace(Dirac(-t+b),t,s)>> syms b positive>> laplace(Dt) ans = exp(-b*s)值得特别指出的是,clear b并不会清除b的positive属性,例如在上⾯的代码后⾯,如果再进⾏下⾯的操作:>> clear b>> laplace(Dt) ans = exp(-b*s)>> syms b real>> laplace(Dt) ans = exp(-s*b)-exp(-s*b)*Heaviside(-b)>> syms b unreal>> laplace(Dt) ans = laplace(Dirac(-t+b),t,s也就是说,除⾮⽤命令改变b的属性或者⽤clear mex或clear all之类的做法强制重启符号计算内核,前⾯声明的positive或real属性会⼀直有效。
3、2011b之前的MATLAB,对符号变量的限定只有三种选择:复数unreal,默认,实数real,或者正数positive,因⽽⽆法实现你希望
b>=0的要求。
2012a引⼊了三个函数:assume、assumeAlso和assumptions,可以对符号变量属性进⾏更多的限定,可以实现你的上述要求。
更详细的信息请查阅这⼏个函数的⽂档。
4、据我所知,evalin⽤于指定在特定⼯作区内执⾏指定的命令主要的作⽤在于从函数中访问基本⼯作区,像楼上所说的借助它对符号变
量“进⾏更细腻的操作”则是闻所未闻。
希望对有帮助,有问题可追问。
匿名⽹友:
matlab中subs)是符号计算函数,表⽰将符号表达式中的某些符号变量替换为指定的新的变量,常⽤调⽤⽅式为:subs(S,OLD,NEW) 表⽰将符号表达式S中的符号变量OLD替换为新的值NEW。
下⾯具体演⽰4种不同形式的OLD和NEW的调⽤效果:⾸先在matlab命令窗⼝输⼊如下代码,定义三个符号变量和⼀个符号表达式S1、将变量x替换为数值1: subs(S,x,1)2、将变量x替换为变量z: subs(S,x,z)3、同时将变量x和y分别替换为1和z:subs(S,{x,y},{1,z})4、将单变量替换为数组:subs(S,x,1 2;3 4)
匿名⽹友:
数学计算有数值计算与符号计算之分。
这两者的根本区别是 : 数值计算的表达式、矩阵变量中不允许有未定义的⾃由变量 , ⽽符号计算可以含有未定义的符号变量。
对于⼀般的程序设计软件如 C, C + + 等语⾔实现数值计算还可以 , 但是实现符号计算并不是⼀件容易的事。
⽽ Matlab ⾃带有符号⼯具箱 Symbolic Math Tooibox , ⽽且可以借助数学软件 Maple, 所以 Matlab 也具有强⼤的符号运算功能。
⼀、 字符串的定义MATLAB ⽤单引号来定义字符串。
例如在指令窗⼝输⼊:A= 'hello, this is a string' ,则会输出 A=hello, this is a string⼆、 定义符号变量与符号表达式在 MATLAB 指令窗⼝,输⼊的数值变量必须提前赋值,否则会提⽰出错。
只有符号变量可以在没有提前赋值的情况下合法地出现在表达式中,但是符号变量必须预先定义。
在 Matlab 的数据类型中 , 字符型与符号型是两种重要⽽⼜容易混淆的数据类型。
符号变量是利⽤指令 sym 和 syms 来创建 .它们的使⽤格式为 :S = sym ′ A ′ 定义单个符号变量 Ssyms a b c 定义多个符号变量 a, b, csyms 命令的使⽤要⽐ sym 简便 , 它⼀次可以定义多个符号变量 , ⽽且格式简练。
因此⼀般⽤ syms 来创建符号变量。
注意各符号变量之间必须是空格隔开。
语句 Syms x y z w表⽰将 x,y,z 和 w 定义为符号变量。
如果再输⼊: p=sin(x)+cos+z+2*w, 是执⾏后 P 就表⽰表达式 sin(x)+cos(x)+z+2*w三、 将数值表达式转换为符号表达式命令 sym 可将数值表达式转成符号表达式,其语法为:Sym' 数值表达式 '例如,在指令窗⼝输⼊:P=sym('2+sqrt(5)')则得到输出:P=2+sqrt(5),此时P是⼀个符号表达式,⽽不是⼀个数值表达式。
四、 计算符号表达式的值如果要计算前⾯的符号表达式P的值,则需要⽤ eval_r(P) 来计算P的近似值。
即可输⼊:eval_r(P)得到输出: ans=4.2361由于 P=sym('2+sqrt(5)' 实际上是⼀个符号常数,所以也可以⽤ vpa 命令计算。
五、数值变量、符号变量、字符变量的相互转化数值变量、符号变量、字符变量的相互转化在 Matlab ⼯作空间中 , 数值、符号和字符是
3 种主要的数据类型。
Matlab 可以利⽤命令来实现不同类型数据间的转换。
问题推荐
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论