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 可以利用命令来实现不同类型数据间的转换。

问题推荐

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值