科学计算软件 第二章 基本概念 (上)
初学者易犯的错误 大小写错误 括号错误:三种括号的不同用途,注意括号要匹配 函数使用错误:Sinx 空格符号错误:相乘时要加空格或用乘号 未清除某些变量的先前定义或赋值 建议 检查语法、拼写错误 出错时重启内核
更改notbook中的字号 edit菜单——属性命令(Preferences)—Formatting Options—Font Options
2.1 常数 Pi或π:圆周率 E或e:自然对数的底 Degree:Pi/180,可用于将角度转化为弧度(mathematica中三角函数以弧度为单位) GoldenRatio:黄金分割比,系统中默认的二维图形的宽高比 Infinity或 ∞:无穷大,系统中作为一个特殊的常数 EulerGamma:欧拉常数
2.1 常数 例1 计算出Pi的50位有效数字的近似值 N[Pi,50] 例2
2.2 内置函数 函数可以用函数名表示,也可采用基本输入模板,如:Sqrt[x]或 表示x的平方根。 注意下述语句的区别 2^(0.5) 2.2 内置函数 函数可以用函数名表示,也可采用基本输入模板,如:Sqrt[x]或 表示x的平方根。 注意下述语句的区别 2^(0.5) 2^(1/2) 2^(1/2.0) 例3 Sqrt[1521]
2.2 内置函数 例4 高次方根 8^(1/3) (-8)^(1/3) 例5 N[Sqrt[2]] N[Sqrt[2],50]
2.2 内置函数 Abs[x]:求实数x的绝对值或复数x的模 例6 Abs[5] Abs[-5] Abs[5+12I]
2.2 内置函数 Sign[x]:返回x的符号,0的符号为0 例7 Sign[-27.5] Sign[0] Sign[6.254] 2.2 内置函数 Sign[x]:返回x的符号,0的符号为0 例7 Sign[-27.5] Sign[0] Sign[6.254] Plot[Sign[x],{x,-2,2}]
2.2 内置函数 对正整数n,阶乘定义为n!=1*2*…*(n-1)*n,通常小数没有阶乘,像0.5!,0.65!都是错误的。 2.2 内置函数 对正整数n,阶乘定义为n!=1*2*…*(n-1)*n,通常小数没有阶乘,像0.5!,0.65!都是错误的。 将Gamma函数定义为非整数的阶乘,因为当x是正整数n的时候,Gamma函数的值是n-1的阶乘。 Γ(x)=∫e^(-t)*t^(x-1)dt (积分下限是零,上限是+∞) (x<>0,-1,-2,-3,……) 可以证明Γ(x)=(x-1)*Γ(x-1),所以当x是整数n时,Γ(n)=(n-1)(n-2)……=(n-1)!,这样Gamma 函数实际上就是阶乘的延拓。
2.2 内置函数 Factorial[n]或n!给出n的阶乘 特别地,0的阶乘定义为0!=1 例8 5! 0! Factorial[3.5]
2.2 内置函数 随机数生成器在概率论与统计分析中非常有用 Random[ ]:给出区间[0,1]上均匀分布的伪随机数 2.2 内置函数 随机数生成器在概率论与统计分析中非常有用 Random[ ]:给出区间[0,1]上均匀分布的伪随机数 Random[类型]:给出指定类型的均匀分布的伪随机数。类型包括Interger,Real和Complex。对整型和实型,返回值的范围为0到1,对复型,返回值范围为0和1+i确定的矩形内。 Random[类型,范围]: 返回指定范围内均匀分布的伪随机数 Random[类型,范围,n]: 返回指定范围内均匀分布的有n位有效数字的伪随机数
2.2 内置函数 例9 Random[Integer] Random[Real] Random[Complex] 2.2 内置函数 例9 Random[Integer] Random[Real] Random[Complex] Random[Real,5] Random[Real,{3,5}] Random[Real,{3,5},10] Random[Integer,{1,10}] Random[Complex,{2+I,5+6I}]
2.2 内置函数 prime [praim] n. 最初, 青春, 精华 2.2 内置函数 prime [praim] n. 最初, 青春, 精华 adj. 主要的, 最初的, 有青春活力的, 最好的, 第一流的, 根本的, [数]素数的 v. 预先准备好, <口>让人吃(喝)足, 灌注, 填装 Prime[n]:给出第n个素数 例10 求出第7个素数 Prime[7]
2.2 内置函数 Fibonacci numbers[复][数]斐波纳契数列(一种整数数列, 其中每数等于前面两数之和) 2.2 内置函数 Fibonacci numbers[复][数]斐波纳契数列(一种整数数列, 其中每数等于前面两数之和) 1,1,2,3,5,8,13,21 Fibonacci[n]:给出第n个斐波纳契数 例 11 Fibonacci[7]
2.2 内置函数 Mathematica中有三种对实数取整的方式 2.2 内置函数 Mathematica中有三种对实数取整的方式 Round[x]:返回最靠近x的整数,若小数部分恰好为0.5,则返回最靠近的偶数 round vt. 弄圆, 使成圆形, 绕行, 四舍五入 Floor[x]:返回不超过x的最大整数,或称为向负无穷方向取整 floor n. (房间, 走廊等的)地面, 地板, 基底, (室内的)场地, 层, 海底, 议员席
2.2 内置函数 Mathematica中有三种对实数取整的方式 Ceiling[x]:返回不小于x的最小整数,又称为向正无穷方向取整 2.2 内置函数 Mathematica中有三种对实数取整的方式 Ceiling[x]:返回不小于x的最小整数,又称为向正无穷方向取整 ceiling n.天花板, 最高限度 例 12 Round[5.75] Floor[5.75] Ceiling[5.75]
2.2 内置函数 IntegerPart[x]:返回x的整数部分 integer n. 整数 2.2 内置函数 IntegerPart[x]:返回x的整数部分 integer n. 整数 FractionalPart[x]:返回x的小数部分 fractional adj. 部分的, 碎片的, 分数的, 小数的 IntegerPart[x]+FractionalPart[x]=x 例 13 IntegerPart[4.67] FractionalPart[4.67] IntegerPart[4.67]+ FractionalPart[4.67]
2.2 内置函数 Quotient[m,n]:返回m除以n得到的商 quotient n. 商, 份额 2.2 内置函数 Quotient[m,n]:返回m除以n得到的商 quotient n. 商, 份额 Mod[m,n]:返回m除以n得到的余数 例14 Quotient[17,3] Mod[17,3]
2.2 内置函数 GCD[m,n]:返回m与n的最大公约数 LCM[m,n]:返回m与n的最小公倍数 2.2 内置函数 GCD[m,n]:返回m与n的最大公约数 LCM[m,n]:返回m与n的最小公倍数 FactorInteger[n]:给出n的素数分解 自行练习
2.2 内置函数 Timing[表达式]:计算表达式,并返回内核所花费的CPU时间 2.2 内置函数 Timing[表达式]:计算表达式,并返回内核所花费的CPU时间 例18 为了计算第1 000 000个素数,内核需要花费多少时间? Prime[1000000]//Timing Timing的结果与具体机器性能有关
2.2 内置函数 Log[x]:求x的自然对数;Log[b,x]: 求x以b为底的对数 Exp[x]:自然指数函数 2.2 内置函数 Log[x]:求x的自然对数;Log[b,x]: 求x以b为底的对数 Exp[x]:自然指数函数 例 20 计算log2100 Log[100] Log[2,100] Log[2,100]//N 注:Mathematica总是给出精确的答案
2.2 内置函数 基本三角函数 正弦、余弦、正切、正割、余割、余切 Sin,Cos,Tan,Sec,Csc,Cot 双曲函数 2.2 内置函数 基本三角函数 正弦、余弦、正切、正割、余割、余切 Sin,Cos,Tan,Sec,Csc,Cot 双曲函数 Sinh,Cosh,Tanh,Sech,Csch,Coth 反双曲函数 以上内容请同学们自学
2.2 内置函数 注:Mathematica中三角函数的参数以弧度为单位,可通过基本输入模板上的按钮输入角度,或者用角度乘内置常数Degree(Pi/180)以转换为弧度。 例23 计算sin 60o的平方 Sin[60 Degree]^2
2.2 内置函数 Print[表达式]:显示表达式,后接分行符 2.2 内置函数 Print[表达式]:显示表达式,后接分行符 Print[表达式1,表达式2,…]:显示表达式1,表达式2,…,然后只接一个分行符 例27 输出字符 Print["This prints a line of text."] 看看去掉引号会怎样?Mathematica支持中文吗
2.2 内置函数 例28 a=1;b=2;c=3;d=4;e=5; Print[a,b,c,d,e] 2.2 内置函数 例28 a=1;b=2;c=3;d=4;e=5; Print[a,b,c,d,e] 试试将a、b、c、d、e写成列表再用Print输出
2.2 内置函数 Mathematica中有一类函数以字母Q结尾,这些函数用来检测特定的条件,并返回逻辑值 DigitQ EvenQ 2.2 内置函数 Mathematica中有一类函数以字母Q结尾,这些函数用来检测特定的条件,并返回逻辑值 DigitQ EvenQ OddQ SameQ SrtingQ IntegerQ
2.2 内置函数 例 29 ? PrimeQ PrimeQ[5] PrimeQ[6] 例 30 多项式的判断 ? PolynomialQ 2.2 内置函数 例 29 ? PrimeQ PrimeQ[5] PrimeQ[6] 例 30 多项式的判断 ? PolynomialQ PolynomialQ[x^2 y+x+Sqrt[y],x] PolynomialQ[x^2 y+x+Sqrt[y],y]
2.3 基本的算术操作 加:Plus[a,b,……]; 乘:Times[a,b,……]; 减:Subtract[a,b]; 除:Divide[a,b] 相反数:Minus[a] 幂:Power[a,b],Power[a,b,c]等价于a^(b^c)
2.3 基本的算术操作 例31 Plus[2,3,4] Times[2,3,4] Power[2,3,4]
2.3 基本的算术操作 FullForm[表达式]:显示表达式的内部形式 例32 FullForm[a+b+c] FullForm[a-b]
2.3 基本的算术操作 几个在特殊场合(常见于循环控制)非常有用的命令 Increment[x]或x++:x的值自加1,返回x的原值 Decrement[x]或x--:x的值自减1,返回x的原值 PreIncrement[x]或++ x : x的值自加1,返回新值 PreDecrement[x]或--x:x的值自减1,返回新值 AddTo[x,y]或x+=y:使x的值增加y,返回x的新值 SubtractFrom[x,y]:使x的值减少y,返回x的新值 TimeBy[x,y]或x*=y:将x*y的结果存入x中 DivideBy[x,y]或x/=y:将x/y的结果存入x中
2.3 基本的算术操作 例33 x=3; x++ x=3 ++x 等价于 x=3; x x=x+1; 等价于 x=x+1
2.3 基本的算术操作 例 34 x=3;y=4; x+y x x=3;y=4; x+=y x 等价于 x=x+y
2.4 字符串 StringLength[字符串]:求字符串长度 StringJoin[字符串1,字符串2......]:连接字符串 StringTake[字符串,{m,n}]:从第m个字符开始取n个字符 StringDrop[字符串,{m,n}]:删除字符串中从第m个字符开始的n个字符 StringInsert[字符串1,字符串2,n]:将字符串2插入字符串1的第n个字符前生成一个新字符串 自学
2.5 赋值、替换与逻辑关系 Mathematica提供了两种类型的赋值 lhs = rhs:即时赋值语句,在进行赋值时计算rhs 2.5 赋值、替换与逻辑关系 Mathematica提供了两种类型的赋值 lhs = rhs:即时赋值语句,在进行赋值时计算rhs lhs : = rhs:延时赋值语句,以后调用时才计算rhs 例 38 用递归定义函数时(第2.9节),必须用“:=” f[0] = 1; f[n_] := n f[n-1] 此处使用“=”会出错,因为这时函数还没有定义完
计算过程 f[5] ? 5 f[4] ->f[4] ? 4 f[3] ->f[3] ? 3 f[2] f[n_] := n f[n-1]
2.5 赋值、替换与逻辑关系 例 39 定义分段函数时(第2.9节),必须使用“:=” g[x_] := x^2/;x>=0 2.5 赋值、替换与逻辑关系 例 39 定义分段函数时(第2.9节),必须使用“:=” g[x_] := x^2/;x>=0 g[x_] := -x^2/;x<0 定义时并不计算,只有具体代入x的值后才计算 第一章的例子 x=3 f[x_]=Sin[x] Plot[f[x],{x,0,2 Pi}] 问题出现在哪里?
2.5 赋值、替换与逻辑关系 替换:要计算表达式的值,而又不想给某个符号赋值,可以使用替换符号/. 2.5 赋值、替换与逻辑关系 替换:要计算表达式的值,而又不想给某个符号赋值,可以使用替换符号/. 例 41 假设要计算x=3时表达式x^2+5x+6的值,而又不想给x赋值 x^2+5x+6/. x->3 ?x 如果x之前有值,这样处理可不可行?
2.5 赋值、替换与逻辑关系 /.也可以用来把一个表达式替换为另一个表达式 例 42 2.5 赋值、替换与逻辑关系 /.也可以用来把一个表达式替换为另一个表达式 例 42 Sqrt[2x+3]+(2x+3)^2/.2x+3->3y+5 例 43 一次进行多个替换 2x+3y/.{y->x,x->y}
2.5 赋值、替换与逻辑关系 逻辑关系(比较关系) Equal[x,y]或x==y:等值判断 Unequal[x,y]或x!=y:不等值判断 2.5 赋值、替换与逻辑关系 逻辑关系(比较关系) Equal[x,y]或x==y:等值判断 Unequal[x,y]或x!=y:不等值判断 Less[x,y]或x<y:小于关系判断 Greater[x,y]或x>y:大于关系判断 LessEqual[x,y]或x<=y:小于等于关系判断 GreaterEqual[x,y]或x>=y :大于等于关系判断 注1:Equal和Unequal可用于非数值量的比较 注2:“=”表示赋值或定义,“==”表示判断
2.5 赋值、替换与逻辑关系 例 44 1 == 2 1 != 2 1 <= 2 a+a == 2a 2 == 2 2 != 2 2.5 赋值、替换与逻辑关系 例 44 1 == 2 1 != 2 1 <= 2 a+a == 2a 2 == 2 2 != 2 2 <= 2 a < a
2.5 赋值、替换与逻辑关系 逻辑运算 And[p,q]或p&&q或p∧q:逻辑与 Or[p,q]或p||q或p∨ q:逻辑或 2.5 赋值、替换与逻辑关系 逻辑运算 And[p,q]或p&&q或p∧q:逻辑与 Or[p,q]或p||q或p∨ q:逻辑或 Xor[p,q]或p:逻辑异或 Not[p]或 !p 或 ¬p:逻辑非 Implies[p,q] p ⇒ q:逻辑蕴含
2.5 赋值、替换与逻辑关系 例 45 利用Mathematica验证逻辑分配律 p ∧ (q ∨ r)=(p ∧ q) ∨ (p ∧ r) 2.5 赋值、替换与逻辑关系 例 45 利用Mathematica验证逻辑分配律 p ∧ (q ∨ r)=(p ∧ q) ∨ (p ∧ r) lhs=p&&(q || r); rhs=(p&&q)||(p&&r); lhs == rhs *逻辑表达式可使用LogicalExpand命令进行比较* LogicalExpand[lhs] ŠLogicalExpand[rhs]