标签:
软件版本:Diagram Designer (Version 1.24)
下图为 Diagram Designer 的表达式求值工具:
在程序的帮助手册中,对这个表达式求值工具的使用有着较为详细的描述。(在【Using Diagram Designer】的【Expression Evaluator】章节,不过内容是英文的)
里面提到了这个表达式求值工具有下面几个特征(Notable Features):
trigonometric functions(计算三角函数)
hyperbolic functions(计算双曲函数)
logical operators(逻辑运算符)
named user variables can be created and used(用户可以自定义命名和使用变量)
recursive descent parsing (ie. handles nested terms) (递归下降分析法)
equations can be programmed and used later(可以编写方程并在之后使用)
multi-line programming with a single result (多行程序输出单个结果)
some constants built-in, more can be added by user using expressions(除了已经被写入的常量,用户还可以加入更多表达式)
equation solving (roots, minimums, etc.) and plotting - plots can be inserted into diagrams(解方程,绘制函数图像)
帮助文档中对于编辑器各部分区域的命名如下图,本文将沿用这些称呼:
其中,【Expression Area】(表达式区)是用户键入表达式的地方,【Result Area】(结果区)是工具显示计算结果的地方,左下角的【Available Functions & User Vars, etc】是目前编辑器内已经注册的函数和变量,可以被直接使用。
用户可以在表达式区里输入下面三种格式的文本:
1):Variable_name=variable_contents;
为变量赋值,可以创建新变量,也可以更新既有变量的值。如 :abc=123; 代表将123赋给变量abc
2):Function_name(function_variable)=expression_in_variable;
创建函数,这里的函数只能有一个自变量,如 :f(x)=x^2; 是可以的,但 :f(x,y)=x^2+y^2; 的不可以的
3)expression_to_evaluate
计算表达式,如输入 sin(1),在结果区会显示“0.841470984808”
表达式求值工具中可以使用下面几个运算符:
运算符 | 说明信息 |
& | 逻辑与(非0数字都被视为真) |
| | 逻辑或(非0数字都被视为真) |
= | 等于,等号两侧的值相等则返回1,否则返回0 |
# | 不等于,不等号两侧的值相等则返回0,否则返回1 |
> | 大于等于,结果为真则返回1,否则返回0 |
< | 大于等于,结果为真则返回1,否则返回0 |
+ | 加法运算 |
- | 减法运算,负号 |
* | 乘法运算(乘以) |
/ | 除法运算(除以) |
% | 求余运算【注】 |
^ | 求幂运算,x^y 代表 x 的 y 次幂 |
【注】:求余运算中,帮助手册里的说法并不准确。帮助中的原文是
Result is the remainder of integer division, eg. 16.1%3.03 is equivalent to 16/3. Remainder (result) in this example is 1.
即模除时所有非整数会被转换为整数再做运算,但这个说法经过实施检验不能成立 16/3 的值是1,而 16.1%3.03 的值是0.95
表达式求值工具内默认的常量如下:
常量 | 值 |
e | 2.718281828459 (自然对数) |
inf | infinity (≈ 1 / 0) (无穷大,值为INF) |
kb | 1024 (2的10次方) |
Mb | 1048576 (2的20次方) |
pi | 3.14159265359 (圆周率) |
这里的常量只是几个最为基本的常量
1)三角函数
三角函数 | 返回值 |
cos(x) | 余弦函数,x为弧度 |
arccos(x) | 反余弦函数 |
sin(x) | 正弦函数,x为弧度 |
arcsin(x) | 反正弦函数 |
tan(x) | 正切函数,x为弧度 |
arctan(x) | 反正切函数 |
cot(x) | 余切函数 |
注意:这里的三角函数中并没有反余切函数;也没有正割、余割、正矢、余矢等三角函数
2)双曲函数
双曲函数 | 返回值 |
cosh(x) | 双曲余弦 cosh(x) = (ex + e-x) / 2 |
arccosh(x) | 反双曲余弦 |
sinh(x) | 双曲正弦 sinh(x) = (ex - e-x) / 2 |
arcsinh(x) | 反双曲正弦 |
tanh | 双曲正切 tanh(x) = sinh(x) / cosh(x) |
arctanh(x) | 反双曲正切 |
3)取整函数
取整函数 | 返回值 |
ceil(x) | 取天花板,返回比x大的最小整数 |
floor(x) | 取地板,返回比x小的最大整数 |
frac(x) | 获取一个实数的分数部分 |
round(x) | 类似四舍五入,返回与输入的实数最接近的整数,在这里0.5会被舍而不是入,如4.5会被舍到4,4.51才会被入到5 |
4)随机数
随机数 |
返回值 |
rand(x) | 返回在0-x间的实数,使用白噪声生成器生成 |
randn(x) | 返回高斯随机数,x为标准差 |
5)指数函数与对数函数
对数函数 | 返回值 |
exp(x) | 指数函数 exp(x) = ex |
ln(x) | 以e为底的对数(自然对数) |
log10(x) | 以10为底的对数(常用对数) |
log2(x) |
以2为底的对数 |
6)其他函数
其他函数 | 返回值 |
abs(x) | 绝对值 |
bin(x) | 将二进制数字转换为十进制 |
fac(x) | 计算阶乘 |
sqrt(x) | 计算算术平方根 |
Diagram Designer可以解一些最简单的方程,方法如下:
函数 | 说明 |
num.Guess | 用于猜测方程的解,单独使用时无意义,默认值为 0.500000001 |
num.argmin(expression,x) | num.argmin(f(x),x),获取函数 f(x)=expression 的最小值,如 num.argmin((x-1)*(x-1)+4,x) 的值是 1.000000001 |
num.min(expression,x) | num.min(f(x), x),获取函数 f(x)=expression 在取到最小值时x的取值,如 num.min((x-1)*(x-1)+4,x) 的值是 4 |
num.root(expression,x) | 获取方程 expression=0 在 num.Guess 附近的根,如方程 x^2+5*x+4=0,在num.Guess为0.500000001(默认值)时,num.root(x^2+5*x+4,x)返回-1,在num.Guess为6时,返回4 |
num.solve(equation,x) | 获取方程 equation 在 num.Guess 附近的根,如方程 x^2+5*x+5=1,在num.Guess为0.500000001(默认值)时,num.solve(x^2+5*x+5=1,x) 返回-1,在num.Guess为6时,返回4 |
绘制函数图像要使用到plot函数,用法为:plot(expression,x)
绘制的图像是函数 f(x)=expression 的图像,输入:plot(4*x^3+3*x^2-2*x+1,x) 得到的图像为:
按下Plot窗口中的Copy(复制)按钮,在DiagramDesigner中“Ctrl+V”或鼠标右键菜单中点击“Paste”(粘贴,快捷键Shift+Ins也可以做到),就可以将这个函数的图像复制到DiagramPane上了,如下图所示:
END
Diagram Designer 的表达式求值工具(Expression Evaluator)
标签:
原文地址:http://my.oschina.net/Tsybius2014/blog/465829