
matlab中simple函数的用法
matlab中simple函数用于获取符号变量的最简形式,调用形式为:[R,HOW] = SIMPLE(S)
其中S输入参数,符号变量,R返回值,输入变量的最简形式,HOW 化简的方式,一个字符串。
示例如下:
>> syms x
>> y = cos(x)^2+sin(x)^2;
>> R = simple(y)
R =
1
>> [r,how] = simple(y)
r =
1
how =
simplify
>> [r,how] = simple(cos(x)+i*sin(x))
r =
exp(x*i)
how =
rewrite(exp)
扩展资料:
常用函数
realmax:系统所能表示的最大正实数,默认1.7977×10^308
realmin:系统所能表示的最小负实数,默认2.2251e×10^(-308)
nargout:函数的输出引数个数
rat(x):将实数x化为多项分数展开
rats(x):将实数x化为分数表示
sign(x):符号函数(Signum function)。
sin(x):正弦函数
atan2(x,y):四象限的反正切函数
median(x): 向量x的元素的中位数
sort(x): 对向量x的元素进行排序(Sorting)
norm(x): 向量x的欧氏(Euclidean)长度
semilogx: x轴为对数刻度,y轴为线性刻度
semilogy: x轴为线性刻度,y轴为对数刻度
参考资料来源:百度百科-MATLAB
matlab中simple函数用于获取符号变量的最简形式,调用形式为:[R,HOW] = SIMPLE(S),其中:
S 输入参数,符号变量
R 返回值,输入变量的最简形式
HOW 化简的方式,一个字符串
示例如下:
>> syms x
>> y = cos(x)^2+sin(x)^2;
>> R = simple(y)
R =
1
>> [r,how] = simple(y)
r =
1
how =
simplify
>> [r,how] = simple(cos(x)+i*sin(x))
r =
exp(x*i)
how =
rewrite(exp)
有时表达式比较复杂,一次化简结果不太理想,就再次化简,可以用simple(simple(y))
eval(s)即 把字符串s的内容当作语句来执行
比如:eval_r('a=3*5') 和直接在command 窗口中输入 a=3*5 等效
(注:本文的eval()都被页面处于安全考虑而自动改成了 eval_r())
eval 一个经常用到的地方就是 将一些[符号表达式] 转换为 [数值]结果,比如用solve解一个方程得到 :
a=solve('x^2+4*x-9=0')
a =
- 13^(1/2) - 2
13^(1/2) - 2
为了得到直观的小数表示,我们输入 eval_r(a)就得到:
ans =
-5.6056
1.6056
ps:可以试试 eval('a')和eval_r(a) ,结果是不一样的,为什么?
还有一个经常用的地方就是
在循环中使用,可以对多个名字有规则的变量或文件进行操作,
比如:
for i=1:5
eval_r(['y',num2str(i),'=',num2str(i^2)])
end
以上语句等价于执行以下5句:
ynum2str(1)=num2str(1^2);
ynum2str(2)=num2str(2^2);
ynum2str(3)=num2str(3^2);
ynum2str(4)=num2str(4^2);
ynum2str(5)=num2str(5^2);
写在最后:eval在其他语言里面也有,比如HTML客户端脚本语言JavaScript,某些语言中eval容易造成安全隐患,(matlab不存在这问题)所以本文写的 eval(),保存博客以后总会变成 eval_r(),估计就是是页面js代码出于安全考虑给加了一个无用的后缀"_r"来使得eval功能失效。
我运行没问题呀,可能是精简版功能不齐全,要不你试试加上syms x
>> y=sym('2*sin(x)*cos(x)');
>> y
y =
2*cos(x)*sin(x)
>> simple(y)
simplify:
sin(2*x)
radsimp:
2*cos(x)*sin(x)
simplify(100):
sin(2*x)
combine(sincos):
sin(2*x)
combine(sinhcosh):
2*cos(x)*sin(x)
combine(ln):
2*cos(x)*sin(x)
factor:
2*cos(x)*sin(x)
expand:
2*cos(x)*sin(x)
combine:
2*cos(x)*sin(x)
rewrite(exp):
2*((1/exp(x*i))/2 + exp(x*i)/2)*(((1/exp(x*i))*i)/2 - (exp(x*i)*i)/2)
rewrite(sincos):
2*cos(x)*sin(x)
rewrite(sinhcosh):
2*cosh(-x*i)*sinh(-x*i)*i
rewrite(tan):
-(4*tan(x/2)*(tan(x/2)^2 - 1))/(tan(x/2)^2 + 1)^2
mwcos2sin:
-2*sin(x)*(2*sin(x/2)^2 - 1)
collect(x):
2*cos(x)*sin(x)
ans =
sin(2*x)