matlab positive程序报错问题clc clearsyms t a k positivet>=0;a>0;k>1;R=(a.^k)/(t+a).^k;f=diff(1-R)lambda=f/RMTTF=int(R,t,0,inf)tmed=solve(R==0.5,t)新启动的matlab,第一次run 这个程序时候,为什么 我加入positive就没报错.第一

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 10:43:36
matlab positive程序报错问题clc clearsyms t a k positivet>=0;a>0;k>1;R=(a.^k)/(t+a).^k;f=diff(1-R)lambda=f/RMTTF=int(R,t,0,inf)tmed=solve(R==0.5,t)新启动的matlab,第一次run 这个程序时候,为什么 我加入positive就没报错.第一

matlab positive程序报错问题clc clearsyms t a k positivet>=0;a>0;k>1;R=(a.^k)/(t+a).^k;f=diff(1-R)lambda=f/RMTTF=int(R,t,0,inf)tmed=solve(R==0.5,t)新启动的matlab,第一次run 这个程序时候,为什么 我加入positive就没报错.第一
matlab positive程序报错问题
clc
clear
syms t a k positive
t>=0;
a>0;
k>1;
R=(a.^k)/(t+a).^k;
f=diff(1-R)
lambda=f/R
MTTF=int(R,t,0,inf)
tmed=solve(R==0.5,t)
新启动的matlab,第一次run 这个程序时候,为什么 我加入positive就没报错.第一次运行时,不加positive就有报错. 而且更奇怪的是,如果第一次运行带positive不报错了,那么去掉positive后,再次运行程序,结果仍不报错.但这程序前面有clc和clear啊,应该不受到上一次运行的影响啊. 求高手解答!

matlab positive程序报错问题clc clearsyms t a k positivet>=0;a>0;k>1;R=(a.^k)/(t+a).^k;f=diff(1-R)lambda=f/RMTTF=int(R,t,0,inf)tmed=solve(R==0.5,t)新启动的matlab,第一次run 这个程序时候,为什么 我加入positive就没报错.第一

首先,sym 对象的是否支持关系运算(例如>=、>)与MATLAB版本有关.

就我电脑里目前安装的三个版本而言,上述代码在6.5、2007b版肯定都会报错,因为这些关系运算操作符都没有定义;但在2013a就没有问题.所以,要想准确解释你遇到的现象,需要知道你的MATLAB 版本.

 

其次,clc 用于清除命令窗口里显示的内容,不会有任何其他作用.

 

而clear就比较有意思了,要想说清楚,需要先明确一个概念:MATLAB的符号运算是通过外部的引擎来实现的,也就是平常所说的符号运算内核.早期的内核是Maple,从2008b开始,换成了MuPad.很多人的看法是,MuPad内核比不上Maple内核,而从很多实际问题的求解经验来说,我个人也更喜欢Maple内核.不论用哪个内核,MATLAB在进行符号运算的时候,一方面会在MATLAB工作区里面生成相应的变量,另一方面,会在符号运算引擎里面生成相对应的变量,而真正的运算都是在引擎里面完成的,MATLAB工作区的符号变量只不过是一个“影子”,用于表达符号引擎里面的变量.

 

介绍完这些背景,接下来说clear命令.

 

如果单独输入clear命令,只会清除工作区中的变量,也就是把影子去掉了,而内核里面真实的变量仍然存在,对它所做的各种假设(Assumptions)例如positive、real都仍然有效,当你再次在MATLAB中使用sym或syms定义符号变量时,会把符号内核里面的变量和新的影子关联起来而已,也就是说,clear命令不会清除掉positive之类的假设.

 

如果希望彻底清除掉这些假设,可以用clear all或clear mex命令,这样会强制结束符号运算内核,从而使得那些假设失效.还有一些做法与具体版本有关,例如早期有clear maplemex 或 maple restart,后来的版本有syms t a k clear和reset(symengine).

 

另外,就2013a版本而言,即使不把符号变量声明成positive也不会报错,不知道楼主用的是什么版本?