数学工具v7.2使用文档

文章目录

前言

 我发现现在市面上的很多移动端数学软件用起来不顺手,所以自己写了一个Android端的数学工具。目前它的功能包括:计算器,解线性规划问题,画函数,插值法,画方程。

注:这个数学工具是我的一个课程设计,这篇文章是它的使用文档。

软件链接

数学工具

计算器功能

 进入方法:打开应用后点击“计算器”按钮。
 该应用的计算器功能可以计算绝大多数的表达式,基本的加减乘除,取模,与或非,大于小于等于,幂,括号,初等函数,等都可以使用。

具体支持的运算符

+ 双目时求两数相加,单目时保持原数不变,例如:

输入:123+4
输出:127.0

输入:+33
输出:33.0

- 双目时求两数相减,单目时符号取反,例如:

输入:7-3
输出:4.0

输入:-5
输出:-5.0

* 求两数相乘,例如:

输入:3*4
输出:12.0

/ 求两数相除,例如:

输入:5/2
输出:2.5

% 取模,例如:

输入:5%2
输出:1.0

& 与,例如:

输入:1&1
输出:1.0

输入:1&0
输出:0.0

输入:3&5
输出:1.0

输入:0&1000
输出:0.0

| 或,例如:

输入:1|0
输出:1.0

输入:0|0
输出:0.0

> 是否大于,例如:

输入:1>2
输出:0.0

输入:4>1
输出:1.0

输入:0>0
输出:0.0

< 是否小于,例如:

输入:1<2
输出:1.0

equ 是否等于,例如:

输入:0equ0
输出:1.0

输入:1equ4
输出:0.0

equ0 非,例如:

输入:1 equ0
输出:0.0

输入:0 equ0
输出:1.0

输入:(1>2) equ0
输出:1.0

^ 求幂,例如:

输入:3^3
输出:27.0

输入:2^0.5
输出:1.4142135623730951

输入:2^(1/2)
输出:1.4142135623730951

注:a^b表示aba^b

A 求全排列,例如:

输入:3A3
输出:6.0

输入:10A1
输出:10.0

输入:10A2
输出:90.0

注:aAb表示AabA_a^b

C 求组合数,例如:

输入:3C2
输出:3.0

输入:10C2
输出:45.0

注:aCb表示CabC_a^b

() 括号,例如:

输入:(1+2)*3
输出:9.0

具体支持的初等函数

sin() 求正弦,例如:

输入:sin(2)
输出:0.9092974268256817

输入:sin2
输出:0.9092974268256817

三角函数还支持:cos(), tan(), arcsin(), arccos(), arctan(),用法均与sin()相同。
exp() 求指数,例如:

输入:exp(1)
输出:2.7182818284590455

输入:exp1
输出:2.7182818284590455

ln() 求自然对数,例如:

输入:ln(1)
输出:0.0

输入:ln(2)
输出:0.6931471805599453

log 求对数,例如:

输入:(2)log(2)
输出:1.0

输入:(3)log(5)
输出:1.4649735207179273

输入:3log5
输出:1.4649735207179273

注:a log b表示logablog_ab

abs() 取绝对值,例如:

输入:abs(-5)
输出:5.0

输入:abs(4.6)
输出:4.6

gcd 求两数最大公约数,例如:

输入:3gcd6
输出:3.0

输入:3gcd5
输出:1.0

输入:(10)gcd(5)
输出:5.0

注:a gcd b表示gcd(a,b)gcd(a, b)

fac() 求阶乘,例如:

输入:fac(3)
输出:6.0

输入:fac3
输出:6.0

max 取大值,例如:

输入:1max2
输出:2.0

输入:1max3max2
输出:3.0

输入:7max5max2
输出:7.0

注:
a max b表示max(a,b)max(a, b)
a max b max c表示max(a,b,c)max(a, b, c)

min 取小值,用法与max相同。
fix() 向下取整,例如:

输入:fix(1.5)
输出:1.0

输入:fix(-2.7)
输出:-3.0

注:该应用计算器功能支持上述的所有符号和函数的任何方式混合使用。

优先级和结合性

符号/函数 优先级 结合性
() 0 -
sin 1 右结合
cos 1 右结合
tan 1 右结合
ln 1 右结合
exp 1 右结合
arcsin 1 右结合
arccos 1 右结合
arctan 1 右结合
fac 1 右结合
log 1 右结合
abs 1 右结合
fix 1 右结合
^ 2 左结合
A 2 左结合
C 2 左结合
gcd 2 左结合
* 3 左结合
/ 3 左结合
% 3 左结合
+ 4 左结合
- 4 左结合
max 5 左结合
min 5 左结合
< 6 左结合
> 6 左结合
equ 6 左结合
& 7 左结合
| 7 左结合

注:优先级数值越小的越优先计算。
结合性存在的意义是:当一个数字左右两边的运算符的优先级相同时,位于左边的运算符是左结合的就先计算左边的,否则就先计算右边的。

求解线性规划问题

 进入方法:进入计算器后,点击“线性规划”按钮。
 在上面的编辑框输入问题,下面的编辑框会输出答案。
 该应用可以解决绝大多数线性规划问题,可以自定义目标函数(包括min或max也可以选择),可以自定义约束条件(包括约束符号>, <, >=, <=或=都可以),默认是各个变量的取值默认是取非负数,如果需要取负数,则可以人为的把该变量的所有系数取负,然后得到的结果就是该变量的相反数;如果不确定正负,可以把该变量设为两个变量相减。

例如需要x1<=0,可以取x1'=-x1,然后用-x1'代替x1,最后得到结果时,x1=-x1'

例如需要x1无约束,可以令x1=x1'-x1'',然后用x1'-x1''代替x1,最后得到结果时,x1=x1'-x1''

格式说明

输入格式为:
<目标类型>: <目标系数1>, <目标系数2>, ..., <目标系数n>;
<变量1系数1>, <变量2系数1>, ..., <变量n系数1> <约束符号1> <常数1>;
<变量1系数2>, <变量2系数2>, ..., <变量n系数2> <约束符号2> <常数2>;
...;
<变量1系数m>, <变量2系数m>, ..., <变量n系数m> <约束符号m> <常数m>;

说明:
<目标类型>可以为:max或min,表示求最大值和求最小值,<目标系数i>为第i个变量在目标函数里的系数
后面的都是约束条件各个变量的系数,<约束符号i>可以为>, <, >=, <=或=,表示第i个约束条件的约束符号

例如要计算:
max z = 2*x1 + x2
s.t.
3*x1 + 5*x2 <= 15
6*x1 + 2*x2 <= 24
x1, x2 >= 0

则输入:
max: 2, 1;
3, 5 <= 15;
6, 2 <= 24;

输出:
原变量:
3.75
0.75
松弛变量:
0.0
0.0
此时目标函数有极大值:8.25

线性规划

注:在各个填写数值的地方也可以填写一个表达式,该应用会先用计算器功能计算出数值再代入求解。

问题升级到求解整数规划

 往往在实际问题里要求的不是连续的线性规划问题,而是离散的整数规划问题。该软件在线性规划功能里可以计算整数规划,只需要在线性规划最后加上有整数限制的变量就可以了。

输入格式为:
线性规划问题的输入
int: <第1个有整数限制的变量下标>, <第2个有整数限制的变量下标>, ..., <第k个有整数限制的变量下标>;

例如要计算:
max z = 3*x1 + 2*x2
s.t.
2*x1 + 3*x2 <= 14
x1 + 0.5*x2 <= 4.5
x1, x2 >= 0
x2 为整数

则输入:
max: 3, 2;
2, 3 <= 14;
1, 0.5 <= 4.5;
int: 2;

输出:
原变量:
3.5
2.0
松弛变量:
1.0
0.0
0.0
此时目标函数有极大值:14.5

整数规划

画函数

 进入方法:打开应用后点击“函数”按钮。
 该应用可以画绝大多数一元函数,计算器的所有符号和函数在画函数功能里都支持。可以用单指移动图像,可以用双指缩放图像。
 在输入框输入了函数以后,点击“画”按钮即可在上方图片框画出函数。
画小埋

基本语法

输入:y=sin(x)
输出:在上方图片框画出y=sin(x)的函数图像

输入:sin(x)
输出:在上方图片框画出y=sin(x)的函数图像

输入:x=sin(y)
输出:在上方图片框画出x=sin(y)的函数图像

同时画多个函数

 可以用分号分隔各个函数,即可以同时画多个函数。

输入:
y=sin(x);
x=y^2+1
输出:在上方图片框同时画出y=sin(x)和x=y^2+1的函数图像

控制自变量范围

 可以用逗号表示画出该函数图像时所要满足的条件,该条件非0时画,该条件为0时不画。

输入:y=sin(x), x>0
输出:画出y=sin(x)在x>0时的函数图像

输入:y=x^2, -2<x & x<3
输出:画出y=x^2在-2<x<3时的函数图像

输入:x=cos(y), abs(y)<1
输出:画出x=cos(y)在y的绝对值小于1时的函数图像

输入:y=tan(x), x>1 | x<0
输出:画出y=tan(x)在x>1或x<0时的函数图像

 亦可以用XXX, 0;来写注释,例如:

输入:
y=sin(x);
画出y=sin(x)的函数图像, 0;
x=y^2
输出:画出y=sin(x)和x=y^2的函数图像

 但是要注意,注释里不能出现英文的逗号。

宏替换

 该应用画函数功能中支持使用宏替换功能,可以把常出现的内容放到一个符号里。

输入:
f=sin(x)#
y=f^2+f+1
输出:画出y=(sin(x))^2+(sin(x))+1函数图像

输入:
f=sin(x);
g=cos(x)
#
y=f+g
输出:画出y=(sin(x))+(cos(x))函数图像

输入:
st=abs(x*n%1)<w;
n=10;
w=0.5
#
注:st为虚线条件,n控制虚线疏密,n越大越密集,w控制虚化程度,w取值范围是(0, 1),w越接近0越虚, 0;
y=sin(x), st

输出:画出y=sin(x)虚线

画虚线正弦函数

注:除了函数以外,其他的功能也都可以使用宏替换。

插值法

 进入方法:进入画函数功能后点击“插值法”按钮。
 该应用可以实现用手点击屏幕空白处添加点,点击点删除该点,然后实时画出插值函数并在下方编辑框输出该函数的解析式。
 如果想在插入点时事先有一个对照函数,可以先在画函数功能里画一个函数,然后再进入插值法功能。

使用说明

 进入插值法界面后,第一步,先点击“开始”按钮,即可启动算法。算法启动后,下方会有一个“标记”勾选框。勾选标记后,点击图片框空白处可以添加点,点击图片框中红色的点可以删除该点;在不勾选标记时,可以单指移动,双指缩放。
插值法

注:在生成表达式后,如果人为地把表达式的 “y=” 改成 “x=” 继续添加(删除)点或移动(缩放)图像,表达式和图像将变成 x=a0+a1y1+a2y2+...+an1yn1x=a_0+a_1y^1+a_2y^2+...+a_{n-1}y^{n-1} 的形式,其中n为点数。

画方程

 进入方法:打开应用后点击“方程”按钮。
 该应用支持使用计算器功能的所有符号和函数画二元方程。

输入:
17*x^2-16*abs(x)*y+17*y^2+150/abs(5*x+sin(5*y))=15^2
输出:一个图像为心碎的方程,画出该图像可能需要一点时间,要注意缩放才能看到全貌

心碎