Sage
来源:互联网 发布:妖王爬床免费阅读软件 编辑:程序博客网 时间:2024/06/05 08:29
在Sage中要输出漂亮的数学公式有几种方法:
1. 用pretty_print_default();
2. 勾选会话上面的Typeset;
3. 用show()。
注意:要输出漂亮的数学公式,首先必须安装jsmath字体。Ubuntu用户直接在仓库里安装即可,Win用户到这里下载字体,然后解压,将字体文件拷贝到WINDOWS的Fonts目录即可。建议使用火狐浏览器,因为在ie里公式有些错位。
1 语句和语法
SAGE 语句中有一些基本规则和特殊字符:
* 井号 (”#”) 表示之后的字符为注释;
* 反斜线 (”\”) 继续上一行;
* 分号 (”;”) 将两个语句连接在一行;
* 冒号 (”:”) 区分代码块的头和体 (如 for,if);
* 语句 (代码块) 用缩进块的方式体现;
* 不同的缩进深度分割不同的代码块.
下述程序运行错误
money=10000;years=0 while money<20000: years=years+1 money=money*1.069
Traceback (click to the left of this block for traceback)
...
IndentationError: unindent does not match any outer indentation
level
出错的主要原因是第四行程序缩进和第三行不同造成的.
2 变量赋值
Sage 的赋值操作符号是”=”, 且支持多种赋值语法: 增量赋值、多重赋值、多元赋值, 但是 Sage 不支持自增运算符.
增赋值支持:
增量赋值支持:+=, -=, *=, /=, %=, **=, <<=, >>=, &=, ˆ=, |=
x=0;x+=1;x
1
x=2;x**=2;x
4
x=[123,'xyz'];x+=[011];x#列表也支持增量赋值
[123, 'xyz', 9]
多重赋值指一次对多个变量自右向左赋值
x,y,z=1,2,3 print x,y,z
1 2 3
x=666;y=888; x,y=y,x;#多远赋值使得数据交换更灵活 print "x=",x print "y=",y
x= 888
y= 666
3 脚本
Sage 的脚本可使用任意的文本编辑器书写, 一般文件扩展名为 py 或 sage. 首行添加#!/usr/bin/env sage即可添加可执行属性后直接运行. 或者在 sage 中使用 load 或 attach 方法导入sage 的控制台, 两者的区别是 load 读入脚本, 在脚本发生变化时不会修改 sage控制台内的脚本, 而 attach 当脚本发生变化后 Sage 控制台的脚本随机发生变化.
例如编写 myadd.sage 如下(在SAGE notebook下可以使用windows的编辑器编辑好以后, 选择SAGE中的data->upload or creat file...)
#!/usr/bin/env sage
x=1
x+=10
load DATA+'myadd.sage'#在notebook中需要添加文件的路径"DATA", 在cmd下只需load myadd.sage即可 x
101
attach DATA+'myadd.sage' x
101
x#执行此命令前,修改myadd.sage中的100 为1000;在notebook下修改文件仅需选择Data->myadd.sage就会出现编辑界面
1001
4 冒泡排序
编写代码完成如下任务: 随机产生 10 个介于 0 到 100 的随机数, 利用冒泡排序法依据自大至小的顺序排列这 10 个随机数.
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序算法的运作如下:
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
编写 bubble sort.py 如下
#!/usr/bin/env sage
n=10
x=[int(random()*100) for each in range(n)]
print "random numbers is ", x
for each in range(n):
for k in range(n-1):
if x[k]<x[k+1]:
x[k],x[k+1]=x[k+1],x[k]
print "Sorted is ", x
在 Sage 中 load 该程序运行结果如下:
load DATA+'bubble sort.py'
random numbers is [25, 74, 40, 14, 25, 74, 2, 73, 13, 94]
Sorted is [94, 74, 74, 73, 40, 25, 25, 14, 13, 2]
5 调用 C 语言代码
我们通过一个例子来了解 Sage 调用 C 语言代码. 编写 C 语言程序 test.c如下:
int myfactorial(int n)
{
int y,i;
y=1;
for(i=2;i<=n;i++)y*=i;
return y;
}
编写 test.spyx 如下
cdef extern from "test.c":
int myfactorial(int n)
def test(n):
return myfactorial(n)
在 Sage 的命令行中调用
loda test.spyx
然后执行test(8)即可.
注: 此例子无法在notebook下测试.
- Sage
- Sage CRM SDK 开发
- Sage CRM 乱码 方块
- Sage CRM 脚本
- sage plugin for vlc
- sage安装和使用
- redux-sage笔记
- sage开发url替换字符串
- 无法开启Sage CRM 的webservices
- 基于 Sage 的坐标变换(符号运算)
- Ubuntu安装sage,出现crash report
- 安装sage crm sdk7.2 后不能创建Sage crm7 entity template
- [Sage ERP X3 V7首推]Sage ERP X3全盘缩减开支
- firefox下sage字体太小的解决办法
- 火狐(FireFox)插件Sage的一个自定义css
- SAGE:一个新的开源多平台数学软件
- Sage CRM 直接使用SQL插入数据须知
- 施耐德电气Telvent SAGE RTU DNP3不当输入验证漏洞
- mysql float double 类型
- Udev实现U盘或SD卡的自动挂载
- set_magic_quotes_runtime()
- 也许这只是个美好的开始,结束的却也灿烂
- C C++预定义的转义序列
- Sage
- DocumentInteraction Controllerl的使用
- 64位kubuntu札记
- 统计软件R
- linux 里面Iptables命令详解以及简单配置
- 雨の夜の悲しみ作者寒伊乱舞
- C# 常用的命名空间及作用
- VB自动登录脚本
- c++学习1