Ubuntu服务器上运行mma,一、MMA概述

----------------------------------------------

4、数值计算和符号计算

MMA的数值计算,有两个特点:精确的结果、任意精确度。

1/2 + 1

得3/2

能用分数表达的,就不会输出小数。

Sqrt[2]

得根号2。能用根号表示的,不会输出小数。

那想要小数咋办?用N函数:

Sqrt[2] // N

得:1.41421

一般输出的是六位有效数字。这并不意味着MMA内部在偷懒,其实内部已经算了很多了。

可以指定输出多位:

N[Sqrt[2], 100]

又比如:

N[Pi, 100]

MMA可以有任意精确度的意思是说,只要你的电脑内存够大,有足够的时间等待输出,那么可以输出任意位。

N[Pi, 1000000]

可以试一下。

Timing[FactorInteger[10000!];]

Timing函数可以用来计时。只计计算的时间,输出的时间不算的。分号是表示不输出运算结果。

质因数分解一般认为很化时间的。但这里似乎没有化时间。。自己去观察结果。

Log[E]

得1

这是自然对数。Pi、E等,是内置的数学常数,不要理解为没有参数的函数。

Log[2,8]

得3

任意数作底数,都可以。

符号计算相当好玩了,不给出具体数字,也一样可以解出方程。

Solve[a x^2 + b x + c == 0, x]

注意,a和b之后,都有个空格。

那解方程组咋办?

这样写就可以了:

Solve[a x + y == 7 && b x - y == 1, {x, y}]

Solve[Cos[x] == x, x]

MMA对这个方程,无能为力。嘿嘿,你也有解决不了的时候。

当然喽,MMA不是万能的。但是呢,MMA可以用牛顿求根法,来得到一个近似值:

FindRoot[Cos[x] == x, {x, 1.0}]

初始猜测为1.0。

得:{x -> 0.739085}

不定积分,可以这样:

Integrate[1/(1 - x^3), x]

求导函数,用D:

D[%, x]

%表示上一个输出结果。

化简:

Simplify[%]

积分微分是互逆的,这里可以看到结果回到了原来。

可以计算定积分:

Integrate[Sin[x], {x, 0, Pi}]

可以计算二重积分:

Integrate[Sqrt[x^2 + y^2], {x, 0, 1}, {y, 0, x}]

可以解微分方程:

DSolve[y''[x] == a y[x], y[x], x]

可以解常微分方程组:

NDSolve[{x'[t] == -y[t] - x[t]^2, y'[t] == 2 x[t] - y[t]^3,

x[0] == y[0] == 1}, {x, y}, {t, 20}]

有人说,玩上MMA,学高数的人,笔算能力没有了。

并不都是如此吧?MMA不光能够快速得到结果,还能提高学习者的理解能力。

-------------------------------------------------

5、数据的表示

MMA的三个基本构造块,即三个atom是:

符号 symbol

数字 number

串 string

符号如:a、List、Plus

数字如:1、3.12、3+4I、5/7,分别是整数、实数、复数、分数

串如:"Hello, Hi"

atom没有组成部分,即基本数据类型。

这里要注意的是,串指字符串,不再是字符数组(如C、Pascal语言中)。

至于常用数据,在MMA中,是经常用表(list)来表示的,用{}括起来。

{1, 2, 3}

就是一个表。

MMA中,表的强劲之处在于,表中元素不必同一类型,而且,可以是任意类型。

就是说,啥都可以放在表中。一般的数啊、函数啊、表达式啊,图形啊,可以一起放到表中。

当然,你可以放入一杯咖啡试一下 :)

数据的可视化,在所有的学科中,都是极为重要的。

我们学习数学时,一直强调数图合一。

MMA的编制人员,化了近乎三分之一的精力,用在实现数据的图形呈现上。

这里只举两个例子:

ListLinePlot[Table[RandomInteger[{1, 10}], {10}]]

先产生十个一到十之间的随机整数,放到表中。然后画出拆线图。

Plot3D[Sin[x + y], {x, -3, 3}, {y, -2, 2}]

当变量有两个时,输出函数的立体图。

--------------------------------------------

6、程序设计

MMA据说是世界上最复杂的软件系统。支持这个又支持那个。。

最近看了MMA老板的一个视频,大有一统天下的架势。

MMA不光支持传统的过程式编程,也支持函数式编程。

不光如此,还有独特的模式匹配与变换规则等等功能。

不少会用MMA的,就会忍不住与其他软件比,比如MatLab、比如Python。。

当然,就是死劲黑人家了。。黑了人家,还说我不是故意的。。

听起来很方的样子,其实学会了就容易了。。到时候,你会加入黑人家的队伍么?

这种可能性很大。。很大。。很大。。

MMA允许程序设计者编写“自然码”的能力。

这种自然码更多依赖于你要处理的问题本身的情况,而较少依赖于你所使用的语言风格和独特性。

相当于说,MMA代码,有一种平易近人的味道。

让我们一起来品尝吧。

23:14 2016-10-24

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值