星期一, 八月 28, 2006

Mathimatica 里notebook的环境问题。

为了解决插值问题,简单几个语句,竟然无法得出正确的结果:
data={7,2,3,25,1,10};
f = InterpolatingPolynomial[data, x];
f
f /. x -> 5

得到一个很奇怪的结果。如图。
















经过在组里询问:mathgroup@smc.vnet.net 和GroupGroup.
http://groups.google.com/group/comp.soft-sys.math.mathematica
得到BOB及其他答案,认为是Mathemathica 的kernel不"干净"需要重新启动Mathematica 再看看。
最终。使用bob的方法。
:
data={7,2,3,25,1,10};
Clear[f];
f[x_]=InterpolatingPolynomial[data,x];
f[5]

终于得到正确的答案1

而且最近 被Mathematica的变量的范围问题(Variable Scope)弄的头大,
根据手册,Module和Block申明的变量应该是在外面不可见的。
但输入函数中的变量依然可以被看见,这就导致了,循环调用函数的时候,外部的
For 循环计数器同函数内部的变量冲突了。
Damned

星期六, 八月 26, 2006

Sun有发布两个新的服务网站,很不错

Javascript Development Center.
http://java.sun.com/javascript/

Development Services
http://developers.sun.com/services/

星期五, 八月 25, 2006

如何显示点图和连线图,在Mathematica 5

data = Import["E:/ebook/彩票数据/2006兰色球.txt", "TABLE"];
g1 = ListPlot[data, ImageSize -> {640,
480}, AxesLabel -> {"序号", "兰色球"}, PlotStyle -> {
PointSize[.04], RGBColor[1, 0, 0]}, PlotJoined -> True,
AxesOrigin -> {0, 0}](*好的*);
g2 = ListPlot[data, ImageSize -> {640,
480}, AxesLabel -> {"序号", "兰色球"}, PlotStyle -> {
PointSize[.04], RGBColor[1, 0, 0]}, PlotJoined -> False,
AxesOrigin -> {0, 0}](*好的*);

Show[g1,g2];

星期四, 八月 24, 2006

Mathematica 中的插值(Interpolation)函数及使用

Mathematica 支持所有的数学插值概念,比如拉格朗日(lagrange) 插值,牛顿(newTon)插值.
及其他插值方法。
各种插值方法:http://mathworld.wolfram.com/Interpolation.html
参考数值积分:http://mathworld.wolfram.com/NumericalIntegration.html


使用拉格朗日(lagrange) 插值的函数为InterpolatingPolynomial
参考: http://mathworld.wolfram.com/LagrangeInterpolatingPolynomial.html
最后的结果用Newton-Cotes formula 牛顿-科茨公式形式

NewTon插值没有实现可以参看一个实现:
http://math.fullerton.edu/mathews/n2003/NewtonPolyMod.html
或这里:http://mathworld.wolfram.com/NewtonsDividedDifferenceInterpolationFormula.html



f = Interpolation[lsdata[[All, {3, 4, 5, 6, 7, 8, 9}]][[1]]]
f[4]

NumericalMath`PolynomialFit`
InterpolatingPolynomial[lsdata[[All, {3, 4, 5, 6, 7, 8}]][[1]], x]
N[f /. x -> 3]
(*freeze lock*)
InterpolatingPolynomial[lsdata[[All, {3, 4}]], x]
(*dead*)

星期一, 八月 21, 2006

Mathematica 图形IO接口

打开一个文件选择:
两种方法:
4.0之后,Mathematica 提供函数包 <FileBrowse
选择文件后,返回选择的文件完全路径

比如打开一个Access数据库,需要用户选择文件所在目录
Needs["DatabaseLink`"]
(*DatabaseExplorer[]*)
conn= OpenSQLConnection[JDBC["sun.jdbc.odbc.JdbcOdbcDriver", "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="<>Experimental`FileBrowse[]], "Name" -> "test",
"Description" -> "", "Username" -> "root", "Password" -> "",
"RelativePath" -> False, "Version" -> 1]

二,使用Java来编写一个跨平台的FileChooser
Needs["JLink`"]

FileChooserDialog[] := FileChooserDialog["Select a file:", "Open", Directory[]]

FileChooserDialog[title_String, okText_String, dir_String] :=
JavaBlock[
Module[{dlg, chosenFile, result = Null},
InstallJava[];
dlg = JavaNew["javax.swing.JFileChooser"];
dlg@setCurrentDirectory[JavaNew["java.io.File", dir]];
dlg@setDialogTitle[title];
If[dlg@showDialog[Null, okText] === JFileChooser`APPROVEUOPTION,
chosenFile = dlg@getSelectedFile[];
If[chosenFile =!= Null,
result = chosenFile@getPath[]
]
];
result
]
]
In[1]:=FileChooserDialog[]
返回选择文件路径。

星期六, 八月 19, 2006

Mathematica 有关微积分的函数包

Calculus`VariationalMethods`

里面包括Euler(?Lagrange) 方程的应用。

看到这里。我想得出 数学模型的建立和 数论之间的关系。

由此得出了,要想把模型建立的纯熟,<<数值分析>>Numerical Analysis的教材是必须要学习的。

所以 下载了一些教材。这里是老外的教材下载.
http://william.wang.googlepages.com/Numerical Analysis.rar

星期一, 八月 14, 2006

金山词霸 2005 XP 不能取词原因

必须保证XP的服务:
DCOM 服务器进程启动器
已经启动。

第二可能同数据执行保护(DEP)有关

微软提供的新功能??数据执行保护(DEP)惹的祸,要出现这个问题,需要满足以下两个条件:
1、系统支持数据执行保护(DEP)功能,目前知道2003sp1支持,估计XP sp2也支持
2、CPU支持硬件DEP,我的AMD Athlon64 2800+就有这个问题,而Athlon 1600+没有,单位的P4 2.66也没有。
(得到的结论就是:Athlon64支持硬件DEP。不支持硬件DEP的在设定DEP的界面有提示,说只能执行软件DEP云云。再给我偏爱的AMD做一次广告!)

解决办法:
我的电脑(鼠标右键)??〉属性??〉高级??〉性能(设置)??〉数据执行保护??〉添加金山词霸的主文件

需要重启系统才能生效

星期六, 八月 12, 2006

Mathematica 数据类型转换

如何把一个数字字符串,转换为数字?

方法:
使用ToExpression [expr]

比如:"33",使用
b=ToExpression["33"]
Head@b执行后得到:
Integer

非常隐秘的方法。

星期五, 八月 11, 2006

Mathematica 中的数据类型判断

如何判断一个变量的数据类型?

两种方法。
1.用Head方法
Head@变量名字.
如同Java InstanceOf,
2.用Q族方法。
NumberQ
NumericQ
IntegerQ
EvenQ
OddQ
PrimeQ;
ArrayQ
VectorQ
MatrixQ (for these there are nice element tests too)
PolynomialQ (element tests). There are built in "structural" tests
SameQ
UnsameQ
OrderedQ
MemberQ
FreeQ
MatchQ
ValueQ
AtomQ

星期四, 八月 10, 2006

Mathematica 快速访问 MS Access数据库

(*注意红色URL写法*)

Needs["DatabaseLink`"]
(*DatabaseExplorer[]*)
conn= OpenSQLConnection[JDBC["sun.jdbc.odbc.JdbcOdbcDriver", "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\lottery\history.mdb"], "Name" -> "test",
"Description" -> "", "Username" -> "root", "Password" -> "",
"RelativePath" -> False, "Version" -> 1]

星期五, 八月 04, 2006

Mathematica 一些表达式语法

1.单值函数调用 用 @ 符号

2.字符串连接用<> 符号. "ddd"<>"bbb" 得到 dddbbb

3.函数返回值。 最后一个表达式的结果 默认为函数的结果。

星期三, 七月 26, 2006

Mathematica 中如何使用数据库?

http://documents.wolfram.com/mathematica/Add-onsLinks/DatabaseLink/

Needs["DatabaseLink`"]
DatabaseExplorer[]

1.如何把数据库的JDBC的驱动加入?
把JDBC的jar文件复制到Mathematica DataBaseResource 属性location 指定的目录下。如图





2.这样就可以建立了DatabaseResource资源了,然后就可以在notebook程序中使用了。
使用语法,如果熟悉ODBC或JDBC就非常容易理解了。

Needs["DatabaseLink`"]
(*DatabaseExplorer[]*)
conn= OpenSQLConnection[JDBC["org.gjt.mm.mysql.Driver", "jdbc:mysql://10.2.5.240:3306/HK_PCD55"], "Name" -> "test",
"Description" -> "", "Username" -> "root", "Password" -> "",
"RelativePath" -> False, "Version" -> 1]
(*建立连接,也可以通过配置文件的方式来设置,可参看具体的http://documents.wolfram.com/mathematica/Add-onsLinks/DatabaseLink/DatabaseConnections/EstablishingAConnection/DatabaseLink2.2.1.html*)
SQLSelect[conn,"att_L_LeaveType"]
SQLExecute[conn,"select * from att_L_LeaveType"]
CloseSQLConnection[conn]

可以通过:JDBCDriverNames[] 来得到当前Mathematica内所有的配置数据库
得到某个具体的数据源的具体配置通过命令: J
DBCDrivers["mysql"]

星期一, 七月 17, 2006

如何用HTML来显示对应UTF-8的汉字?

HTML默认支持Unicode的方式是UTF-8编码。
所以任何Unicode字符集的 字体要用HTML表示出来,必须得到对应的UTF-8编码。

比如符号:? 对应的Unicode的字符集合编码为:A87C.
但是对应的UTF-8的编码就为:8525(十六进制)
所以用HTML来表示就为 &#x2585;
显示出来:?
注意:要根据原来UNICODE字符集合的高低位顺序确定HTML的字节表示方法。
UTF-8根据:低位->高位来表示字符顺序

Encoding Representation
UTF-8 EF BB BF
UTF-16 Big Endian FE FF
UTF-16 Little Endian FF FE
UTF-32 Big Endian 00 00 FE FF
UTF-32 Little Endian FF FE 00 00

星期日, 七月 09, 2006

Mathematica 5.0 All 关键词的妙用

lotterydata={
{12,13,17,19,29,30,32,2006001},
{02,13,14,23,32,34,35,2006002},
{03,08,09,13,29,31,35,2006003},
{06,09,16,23,31,33,34,2006004},
{11,12,21,23,26,30,34,2006005},
{06,07,09,18,20,22,28,2006006},
{01,04,05,07,09,17,24,2006007},
{03,17,18,20,22,31,35,2006008},
{04,05,07,15,17,19,28,2006009},
{02,06,15,20,26,32,35,2006010},
{02,04,06,11,23,24,32,2006011},
{04,06,09,13,24,31,35,2006012},
{05,06,07,22,25,26,30,2006013},
{07,17,18,19,23,28,32,2006014},
{04,09,17,19,22,24,35,2006015},
{13,16,20,23,25,26,33,2006016},
{01,02,06,10,12,19,25,2006017},
{01,02,06,15,16,31,34,2006018},
{15,17,22,23,24,33,35,2006019}}
lotterydata[[All,3]](*取出每一纬第3个数据*)
得到结果:{17,14,9,16,21,9,5,18,7,15,6,9,7,18,17,20,6,6,22}

星期五, 七月 07, 2006

Java Headless 测试代码for jdk >1.3

import java.awt.*;
import java.io.*;
import java.awt.print.*;

import javax.imageio.*;
import java.io.*;
import java.util.logging.*;
import java.awt.image.BufferedImage;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Color;
import java.awt.Font;
import javax.imageio.ImageIO;
import java.awt.font.*;
import java.awt.geom.*;
import javax.naming.*;

public class HeadlessBasics
{
public static void main(String[] args) throws Exception
{
// Set system property.
// Call this BEFORE the toolkit has been initialized, that is,
// before Toolkit.getDefaultToolkit() has been called.
System.setProperty("java.awt.headless", "true");

// This triggers creation of the toolkit.
// Because java.awt.headless property is set to true, this
// will be an instance of headless toolkit.
Toolkit tk = Toolkit.getDefaultToolkit();
// Standard beep is available.
tk.beep();

// Check whether the application is
// running in headless mode.
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
System.out.println("Headless mode: " + ge.isHeadless());
HeadlessBasics hb=new HeadlessBasics();

ImageIO.write(hb.DisplayTextPicture("dddd") , "png", new File("first"));

}
public BufferedImage DisplayTextPicture(String willtext)
{
int width = 48;
int height = 48;
float size = 8.0f;
int StringH = 8;
BufferedImage buffer = new BufferedImage(width,
height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 =(Graphics2D)buffer.getGraphics();
Font font = new Font("serif", Font.BOLD, StringH);
font = font.deriveFont(size);
FontRenderContext fc = g2.getFontRenderContext();
Rectangle2D bounds = font.getStringBounds(willtext,
fc);
width = (int) bounds.getWidth();
height = (int) bounds.getHeight() * 2;
buffer = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
g2 = (Graphics2D)buffer.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.setFont(font);
g2.setColor(Color.white);
g2.fillRect(0, 0, width, height);
g2.setColor(Color.red);
String[] tem = willtext.split("\n");
for (int i = 0; i < tem.length; i++)
g2.drawString(tem[i], 0,
(int) - bounds.getY() + i * StringH);
return buffer;
}
}

星期四, 六月 29, 2006

Java 把数字从低向高排序


import java.io.*;

public class Order
{
public static void main(String[] args) throws Exception
{
if(args.length<1) dataf=" new" style="font-weight: bold; color: rgb(255, 0, 0);">BufferedReader d = new BufferedReader(new InputStreamReader(new FileInputStream(dataf)));
String line="";
StringBuffer out =new StringBuffer();
while( (line=d.readLine())!=null)
{
String[] all=line.split("[\t,]");
int[] number = Str2Int(all);
java.util.Arrays.sort(number);
out.append(int2Str(number)).append("\n");
}
System.out.println(out);
}

/*
*把int数组转换为字符串数组
*/
static String int2Str(int[] ori)
{
StringBuffer result = new StringBuffer();
for(int i=0;i<ori.length;i++)
result.append(ori[i]).append("\t");
return result.toString();
}
/*
*把数组转换为字符int串数组
*/

static int[] Str2Int(String[] ori)
{
int[] result= new int[ori.length];
for(int i=0;i<result.length;i++)result[i]=Integer.parseInt(ori[i]);
return result;
}

}

星期三, 五月 31, 2006

Mathematica 中的常用函数

Mathematica 中的常用函数

如果你是第一次使用Mathematica,那么以下几点请你一定牢牢记住:

1. Mathematica 区分大小写,如 Name、name是不同的变量名或函数名。

2. 系统所提供的功能大部分以系统函数的形式给出,内部函数一般写全称,
以大写英文字母开头,如 Sin[x],Conjugate[z]等;
有时一个函数名是由几个单词构成,则每个单词的首写字母也必须大写
如:求局部极小值函数 FindMinimum[f[x],{x,x0]等

3. 乘法即可以用“*”,也可以用空格表示,如 2 3=2*3=6 等;
乘幂可以用“^”表示,如 x^0.5, Tan[x]^y 等

4. 自定义的变量可以取几乎任意的名称,但为了不与系统函数产生混淆,
我们自定义的变量应该是以小写字母开始,后跟数字和字母的组合,
长度不限,不可以数字开头。

5. 给变量赋值后,除非明显地改变该值或使用Clear[变量名]或“变量名=.”取消该值,
否则它将始终保持原值不变。

6. 一定要注意四种括号的用法:
() 圆括号表示项的结合顺序,如(x+(y^x+1/(2x)));
[] 方括号表示函数,如Log[x],BesselJ[x,1];
{} 大括号表示一个“表”(一组数字、任意表达式、函数等的集合),
如 {2x,Sin[2 Pi],{1+A,y*x}};
[[]] 双方括号表示“表”或“表达式”的下标,如a[[2,3]]、{1,2,3}[[1]]=1。

7. Mathematica的语句书写十分方便:
一个语句可以分为多行写,同一行可以写多个语句(但要以分号间隔)。
当语句以分号结束时,不做输出(输出语句除外),否则将输出计算结果。

常用函数

1.运算符及特殊符号

Linel   执行Line,不显示结果

Linel,line2 顺次执行Line1,Line2,并显示结果

?name 关于系统变量name的信息

??name 关于系统变量name的全部信息

!command 执行Dos命令

N! N的阶乘

!!filename 显示文件内容

<>filename 打开文件写

Expr>>>filename 打开文件从文件末写

() 结合率

[] 函数

{} 一个表

<*MathFun*> 在c语言中使用math的函数

(*Note*) 程序的注释

#n 第n个参数

## 所有参数

Rule& 把role作用于后面的式子

% 前一次的输出

%% 倒数第二次的输出

%%%(k) 倒数第k次的计算结果

%n 例出行Out[n])的结果(用时要小心)

Var::mote 变量var的注释

"Astring" 字符串

Context 上下文

A+b, a-b, A*b或a b, A/b 加减乘除

2.系统常量

Pi  3.1415的无限精度数值

E 2.17828的无限精度数值

Catalan 0.915966 Catalan常数

EulerGamma 0.5772 Euler常数

Khinchin 2.68545 Khinchin

Glaisher 0.915966 Glaisher

GoldenRatio 1.61803黄金分割数

Degree Pi/l80角度弧度换算

I 复数单位

Infinity 无穷大

-Infinity 负无穷大

Complexlnfinity 复无穷大

Indeterminate 不定式

3.代数计算

Expand[expr] 展开表达式

Factor[expr] 对表达式进行因式分解

Simplify[expr] 化简表达式

FullSimplify[expr] 将特殊函数也进行化简

PowerExpand[expr] 展开所有的幂次形式

ComplexExpand[expr,{x1,x2,...)] 按复数实部虚部展开

FunctionExpand[expr] 化简表达式中的特殊函数

Collect[expr,x] 合并同次项

Collect[expr,{x1,x2,...)] 合并x1,x2,...的同次项

Together[expr] 通分

Apart[expr] 部分分式展开

Apart[expr,var) 对var的部分分式展开

Cancel[expr] 约分

xpandAll[expr] 展开表达式

ExpandAll[expr,patt] 展开表达式

FactorTermsrpoly] 提出共有的数字因子

FactorTerms[poly,x] 提出与x无关的数字因子

FactorTerms[poly,(x1,x2,...)] 提出与xi无关的数字因子

Coefficient[expr,form] 多项式expr中form的系数

Coefficient[expr,form,n) 多项式expr中form^n的系数

Exponent[expr,form] 表达式expr中form的最高指数

Numerator[expr] 表达式expr的分子

Denominator[expr] 表达式expr的分母

ExpandNumerator[expr] 展开expr的分子部分

4. 解方程

Solve[eqns,vats] 从方程组eqns中解出Vats

Solve[eqns,vats,elims] 从方程组eqns中削去变量elims,解出vats

DSolve[eqn,y,x] 解微分方程,其中、y是x的函数

DSolve[{eqnl,eqn2,...},{y1,y2,...}] 解微分方程组,其中yi是x的函数

DSolve[eqn,y,{x1,x2,...}] 解偏微分方程

Eliminate[eqns,Vats] 把方程组eqns中变量vars约去

SolveAlways[eqns,vars] 给出等式成立的所有参数满足的条件

Reduce[eqns,Vats] 化简并给出所有可能解的条件

LogicalExpand[expr] 用&&和,将逻辑表达式展开

InverseFunction[f] 求函数f的反函数

Root[f,k] 求多项式函数的第k个根

Roots[1hs==rhs,var] 得到多项式方程的所有根

5. 微积分

D[f,x]  求f[x]的微分

D[f,{x,n}] 求f[x]的n阶微分

D[f,x1,x2,...] 求f[x]x1,x2,...偏微分

Dt[f,x] 求f[x]的全微分df/dx

Dt(f) 求f[x]的全微分df

Dt[f,{x,n}] n阶全微分df^n/dx^n

Dt[f,x1,x2..] 对x1,x2..的偏微分

Integrate[f,x] f[x]对x在的不定积分

Integrate[f,{x,xmin,xmax}] f[x]对x在区间(xmin,xmax)的定积分

Integrate[f,{x,xmin,xmax},{y,ymin,ymax}] f[x,y]的二重积分

Limit[expr,x->x0] x趋近于x0时expr的极限

Residue[expr,{x,x0}] expr在x0处的留数

Series[f,{x,x0,n)] 给出f[x]在x0处的幂级数展开

Series[f,{x,xO,nx},{y,y0,ny}] 先对y幂级数展开,再对x幂级数展开

Normal[expr] 化简并给出最常见的表达式

SeriesCoefficient[series,n] 给出级数中第n次项的系数

SeriesCoefficient[series,{n1,n2,...}] 一阶导数

InverseSeries[s,x] 给出逆函数的级数

ComposeSeries[seriel,serie2,...] 给出两个基数的组合

SeriesData[x,x0,{a0,a1,..},nmin,nmax,den] 表示一个x0处x的幂级数

O[x]^n n阶小量x^n

6. 多项式函数

Variables[poly] 给出多项式poly中独立变量的列表

CoefficientList[poly,var] 给出多项式poly中变量var的系数

CoefficientList[poly,{varl,var2,...)) 给出多项式poly中变量var(i)的系数列

PolynomialMod[poly,m] poly中各系数mod m同余后得到的多项式,m可为整式

PolynomialQuotient[p,q,x] 以x为自变量的两个多项式之商式p/q

PolynomialRemainder[p,q,x] 以x为自变量的两个多项式之余式

Po1ynomialGCD[polyl,poly2,...] poly(i)的最大公因式

PolynomialLCM[polyl,poly2....] poly(i)的最小公倍式

PolynomialReduce[poly,{polyl,Poly2,...},{xl,x2,...}]
得到一个表 I(a1,a2,...),b) 其中 Sum[ai*polyi]+b=poly


Resultant[polyl,poly2,var] 约去polyl,poly2中的var

Factor[poly] 因式分解(在整式范围内)

FactorTerms[poly] 提出poly中的数字公因子

FactorTerms[poly,{x1,x2,...)] 提出poly中与xi无关项的数字公因子

FactorList[poly],
FactorSquareFreeList[p01y],
FactorTermsList[poly,{x1,x2,...}] 给出各个因式列表


Cyclotomic[n,x] n阶柱函数

Decomposet[poly,x] 迭代分解,给出{p1,p2,...),其中P1(p2(...))=poly

InterpolafinSPolynomial[data,Var] 在数据data上的插值多项式

RootSum[f,form] 得到f[x]=0的所有根,并求得Sum[form[xi]]

7. 随机函数

Random[type,range]  产生type类型且在range范围内的均匀分布随机数

Random[] 0-1上的随机实数

SeedRandom[n] 以n为seed产生伪随机数

Randomldistribution] 可以产生各种分布

8. 数值函数

N[expr]  表达式的机器精度近似值
N[expr,n] 表达式的n位近似值,n为任意正整数


NSolve[lhs==rhs,val] 求方程数值解
NSolvel[eqn,Var,n] 求方程数值解,结果精度到n位


NDSolve[eqns,y,{x,xmirl,xmax}] 微分方程数值解
NDSolve[eqns,{y1,y2,...},{x,xmin,xmax}] 微分方程组数值解


FindRoot[1hs==rhs,{x,x0)1 以x0为初值,寻找方程数值解
FindRoot[1hs=--rhs,{x,xstart,xmin,xmax}]
以xstart为初值,在[xmin,xmax]范围内寻找方程数值解


NSum[f,{imin,imax,di}] 数值求和,出为步长
NSum[f,{imin,imax,di},{j,..},..] 多维函数求和


NProduct[f,{i,imin,imax,di}] 函数求积

NIntegrate[f,{x,xmin,xmax}] 函数数值积分

FindMinimum[f,{x,xO}] 以x0为初值,寻找函数最小值
FindMinimum[f,{x,xstart,xmin,xmax}]
以xstart为初值,在[xmin,xmax]范围内寻找方程解


ConstrainedMin[f,{inequ},{x,y,...}] inequ 为线性不等式组,
f 为x,y,...之线性函数,得到最小值及此时的x,y,...取值


ConstrainedMax[f,{inequ),{x,y,...}] 得到最大值及此时的x,y,...取值

LinearProgramming[C,m,b]
解线性组合c.x在m.x>=b&&x>=0约束下的最小值,x,b,c为向量,m为矩阵


LatticeReduce[{v1,v2...}] 向量组Vi的极小无关组


Fit[data,funs,vats] 用指定函数组对数据进行最小二乘拟合

Interpolation[data] 对数据进行插值

Lisfinterpolation[array] 对离散数据插值,array可为n维

ListInterpolafion[array,{{xmin,xmax},{min,ymax},..}]
在特定网格上进行插值


FunctionInterpolation[expr,{x,xmin,xmax},{y,ymin,ymax},..]
以对应expr[xi,yi]的数值为数据进行插值


Fourier[list] 对复数数据进行傅氏变换

InverseFourier[list] 对复数数据进行傅氏逆变换

9. 表的操作

制表函数

{e1,e2,...} 一个表,元素可以为任意表达式,无穷嵌套

Table[expr,{imax}] 生成一个表,共imax个元素

Table[expr,{i,imax}} 生成一个表,共imax个元素expr间

Table(expr,{i,imin,imax},{j,jmin,jmax},..] 多维表

Range[imax] 简单数表{1,2,..., imax}

Range[imin,imax,di] 以di为步长的数表

Array[f,n] 一维表,元素为fI¨(i从1到n)

Array[f,{n1,n2..}] 多维表,元素为玎i小.1 (各自从1到ni)

IdentityMatrix[n] n 阶单位阵

DiagonalMatrix[list] 对角阵


元素操作

Part[expr,i]或expr[[i]] 第i个元素

expr[[-i]] 倒数第i个元素

expr[{i,j,..}] 多维表的元素

expr[{i1,i2,..}] 返回由第i(n)的元素组成的子表

First[expr] 第一个元素

Last[expr] 最后一个元素

Head[expr] 函数头,等于expr[[0]]

Extract[expr,list] 取出由表list指定位置上expr的元素值

Take[list,n] 取出表list前n个元素组成的表

Take[list,{m,n}] 取出表list从m到n的元素组成的表

Drop[list,n] 去掉表list前n个元素组下的表

Rest[expr] 去掉表list第一个元素剩下的表

Select[USt,crit] 把crit作用到每一个list的元素上,为True的所有元素组成的表

Length[expr] expr第一层元素的个数

Dimensions[expr] 表的维数返回{n1,n2..},expr为一个nl*n2...的阵

TensorRank[expr] 秩

Depth[expr] expr最大深度

Level[expr,n] 给出expr中第n层子表达式的列表

Count[USt,paUem] 满足模式的list中元素的个数

MembefQ[1ist,form] list中是否有匹配form的元素

FreeQ[expr,form] MemberQ的反函数

FreeQ[expr,form] 表中匹配模式pattern的元素的位置列表

Cases[{e1,e2,...},pattem] 匹配模式pattem的所有元素ei的表


表的操作

Append[exp,elem] 返回在表expr的最后追加elem元素后的表

Prepend[expr,elem] 返回在表expr的最前添加elem元素后的表

Insert[1ist,elem,n] 在第n元素前插入elem

lnsert[expr,elem,{i,j,...}] 在元素expr[[{i,j,..}]]前插入elem

Delete[expr,{i,j,..}] 删除元素expr[[{i,j,..}]]后剩下的表

DeleteCases[expr,pattem] 删除匹配pattern的所有元素后剩下的表

ReplacePart[expr,new,n] 将expr的第n元素替换为new

Sort[list] 返回list按顺序排列的表

Reverse[expr] 把表expr倒过来

RotateLeft[expr,n] 把表expr循环左移n次

RotateRight[expr,n] 把表expr循环右移n次

Partition[list,n] 把list按每n个元素为一个子表分割后再组成的大表

Flatten[list] 抹平所有子表后得到的一维大表

Flatten[1ist,n] 抹平到第n层

Split[1ist] 把相同的元素组成一个子表,再合成的大表

10. 绘图函数

二维绘图

Plot[f,{x,xmin,xmax}] 一维函数f[x]在区间[xmin,xmax]上的函数曲线

Plot[{fl,f2..},{x,xmin,xmax}] 在同一图形上画几条曲线

ListPlot[{y1,y2,..}] 绘出由离散点对(n,yn)组成的图

ListPlot[{{x1,y1},{x2,y2},}} 绘出由离散点对(xrl,yrl)组成的图

ParametricPlot[{fx,fy},{t,tmin,tmax}] 由参数方程在参数变化范围内产生的曲线

ParametricPlot[{fx,fy},{gx,gy},...],{t,tmin,truax}]


二维设置

PlotRange->{0,1} 作图显示的值域范围

AspectRatio->1/GoldenRatio 生成图形的纵横比

PlotLabel->label 标题文字

Axes->{false,True} 分别制定是否画x,y轴

AxesLabel->{xlabel,ylabel} x,y轴上的说明文字

Ticks->None,Automatic,fun 用什么方式画轴的刻度

AxesOrigin->{x,y} 坐标轴原点位置

AxesStyle->{{xstyle},{ystyle}} 设置轴线的线性颜色等属性

Frame->True,False 是否画边框

FrameLabel->{xmlabel,ymlabel,xplabel,yplabel} 边框四边上的文字

FrameTicks 同Ticks 边框上是否画刻度

GridLines 同Ticks 图上是否画栅格线

Framestyle->{{xmstyle},{ymstyle}} 设置边框线的线性颜色等属性

ListPlot[data,PlotJoined->True] 把离散点按顺序连线

Plotsytle->{{style1},{style2},..} 曲线的线性颜色等属性

PlotPoints->15 曲线取样点,越大越细致


三维绘图

Plot3D[f,{x,xmin,xmax},{y,ymin,ymax}] 二维函数f[x,y]的空间曲面

Plot3D[{f,s},{x,xmin,xmax},{y,ymin,ymax}] 同上,曲面的染色由s[x,y]值决定

ListPlot3D[array] 二维数据阵array的立体高度图

ListPlot3D[array,shades] 同上,曲面的染色由shades[数据]值决定

ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax}] 三维参数图形

ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}] 二维函数f[x,y]在指定区间上的等高线图

ListContourPlot[array] 二维函数fix,yJ在指定区间上的等高线图


三维设置

Contours->n 画n条等高线

Contours->{z1,z2,...} 在zi处画等高线

ContourShading->False 是否用深浅染色

ContourLines->True 是否画等高线

ContourStyle->{{stylel},{style2},..} 等高线线性颜色等属性


密度图

DensityPlot[f,{x,xmin,xmax},{y,ymin,ymax)] 二维函数f[x,y]在指定区间上的密度图

ListDensityPlot[array] 二维函数f[x,y]在指定区间上的密度图


图形显示

Show[graphics,options] 显示一组图形对象,options为选项设置

Show[g1,g2,...] 在一个图上叠加显示一组图形对象

GraphicsArray[{g1,g2,...}] 在一个图上分块显示一组图形对象

SelectionAnimate[notebook,t] 把选中的notebook中的图画循环放映


图元函数

Graphics[prim,options] prim为下面各种函数组成的表,表示一个二维图形对象

Graphics3D[prim,options] prim为下面各种函数组成的表,表示一个三维图形对象

SurfaceGraphics[array,shades] 表示一个由array和shade决定的曲面对象

ContourGraphics[array] 表示一个由array决定的等高线图对象

DensityGraphics[array] 表示一个由array决定的密度图对象

Point[p] p={x,y}或{x,y,2},在指定位置画点

Line[{p1,p2,..}] 经由Pi点连线

Rectangle[{xmin,ymin),{xmax,ymax}] 画矩形

Cuboid[{xmin,ymin,zmin},{xmaxffmax,zmax}] 由对角线指定的长方体

Polygon[{p1,p2,...}] 封闭多边形

Circle[{x,y},r] 画圆

Circle[{x,y},{rx,ry}] 画椭圆,rx,ry为半长短轴

Circle[{x,y},r,{a1,a2}] 从角度al-a2的圆弧

Disk[{x,y},r] 填充的园、椭圆、圆弧等参数同上

Raster[array,ColorFunction->f] 颜色栅格

Text[expr,coords] 在坐标coords上输出表达式

PostScrip["string"] 直接用Postscript图元语言写

Scaled[{x,y,...}] 返回点的坐标,且均大于0小于1


着色及其他

GrayLevel[level] 灰度level为0~1间的实数

RGBColor[red,green,blue] RGB颜色,均为0~I间的实数

Hue[h,s,b] 亮度,饱和度等,均为0~1间的实数

CMYKColor[cyan,magenta,yellow,block] CMYK颜色

Thicknessr[r] 设置线宽为r

PointSize[d] 设置绘点的大小

Dashing[{r1,r2,...}] 画一个单元的间隔长度的虚线

ImageSize->{x,y} 显示图形大小(单位为像素)

11. 流程控制

If[condition,t,f] 如果condition为True,执行t,否则执行f段

if[condition,t,f,u]
如果condition为Ture,执行t,为False执行f,既非True 又非False,则执行u


Which[test1,blockl,test2,block2,...] 执行第一为True的tesfi对应的blocki

Switch[expr,forml,blockl,form2,block2,...] 重复执行expr imax次

Do[expr,{imax}] 重复执行expr imax次

Do[expr,{i,imin,imax},{j,jmin,jmax}] 多重循环

While[test,body] 循环执行body直到test为False

For[start,test,incr,body] 循环执行body直到test为False

Throw[value] 停止计算,把value返回给最近一个Catch处理

Throw[value,tag] 停止计算,把value返回给最近一个Catch处理

Catch[expr] 计算expr,遇到Throw返回的值则停止

Catch[expr,form] 当Throw[value,tag]中Tag匹配form时停止

Return[expr] 从函数返回,返回值为expr

Return[] 返回值Null

Breakl[] 结束最近的一重循环

Continuel[] 停止本次循环,进行下一次循环

Goto[tag] 无条件转向Label[Tag]处

Label[tag] 设置一个断点

Check[expr,fmlexpr] 计算expr,如果有出错信息产生,则返回failexpr的值

Check[expr,failexpr,s1::t1,s2::t2,...] 当特定信息产生时则返回failexpr

CheckAbort[expr,failexpr] 当产生abort信息时返回failexpr

Interrupt[] 中断运行

Abort[] 中断运行

TimeConstrained[expr,t] 计算expr,当耗时超过t秒时终止

MemoryConstrained[expr,b] 计算expr,当耗用内存超过b字节时终止运算

Print[exprl,expr2,...] 顺次输出expri的值

Input[] 产生一个输入对话框,返回所输入的任意表达式

Input["prompt"] 同上,prompt为对话框的提示

Pause[n] 运行暂停n秒

Matchematica中有关建模的函数

优化函数:

FindMinimum[f, {x,x0}] 以x0为初值,寻找函数最小值
FindMinimum[f, {x, xstart, xmin, xmax}]
ConstrainedMin[f,{inequ},{x,y,..}]
inequ为线性不等式组,f为x,y..之线性函数,得到最小值及此时的x,y..取值
ConstrainedMax[f, {inequ}, {x, y,..}]同上
LinearProgramming[c,m,b] 解线性组合c.x在m.x>=b&&x>=0约束下的
最小值,x,b,c为向量,m为矩阵
LatticeReduce[{v1,v2...}] 向量组vi的极小无关组

数据处理:

Fit[data,funs,vars]用指定函数组对数据进行最小二乘拟和
data可以为{{x1,y1,..f1},{x2,y2,..f2}..}多维的情况
emp: Fit[{10.22,12,3.2,9.9}, {1, x, x^2,Sin[x]}, x]
Interpolation[data]对数据进行差值,
data同上,另外还可以为{{x1,{f1,df11,df12}},{x2,{f2,.}..}指定各阶导数
InterpolationOrder默认为3次,可修改
ListInterpolation[array]对离散数据插值,array可为n维
ListInterpolation[array,{{xmin,xmax},{ymin,ymax},..}]
FunctionInterpolation[expr,{x,xmin,xmax}, {y,ymin,ymax},..]
以对应expr[xi,yi]的为数据进行插值
Fourier[list] 对复数数据进行付氏变换
InverseFourier[list] 对复数数据进行付氏逆变换
Min[{x1,x2...},{y1,y2,...}]得到每个表中的最小值
变换
Min[{x1,x2...},{y1,y2,...}]得到每个表中的最小值
Max[{x1,x2...},{y1,y2,...}]得到每个表中的最大值
Select[list, crit] 将表中使得crit为True的元素选择出来
Count[list, pattern] 将表中匹配模式pattern的元素的个数
Sort[list] 将表中元素按升序排列
Sort[list,p] 将表中元素按p[e1,e2]为True的顺序比较list
的任两个元素e1,e2,实际上Sort[list]中默认p=Greater

星期五, 五月 26, 2006

各种函数算术

什么是导数?
设函数在点的某个邻域内有定义,当自变量在点处取得改变量()时,函数取得相应的改变量,如果极限

存在,则称函数在点可导,并称此极限值为函数在点处的导数(或变化率),记为

,或

如果上式极限不存在,就称函数在点不可导导数不存在

若令,则当时,有,所以函数在点处导数也可写成:

类似地,称

函数的导函数,简称导数

在处的左导数;

处的右导数。

关于处导数有如下两个结论:

(1) 存在的充分必要条件是存在且相等。

(2)可导与连续的关系是:如果函数在点处可导,则处连续。



1.幂函数y=xn (a为实数)的导数(变化率)
y'=n*xn-1

2.正弦函数Sin(x)的导数
Sinx'=Cosx.

3.对数函数y=loga(x)的导数(a>0,a<>1)
loga'(x)=1/(x*lna)

星期二, 五月 23, 2006

JBOSS LOG4J 的控制.

conf/log4j.xml 里控制指定logger的开关

编写一个class,名字为: com.company.hrm.test.testLogger.

包含如下语句:

package com.company.hrm.test;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;

public class testLogger
{
public testLogger()
{
}
public static void main(String[] args)
{
org.apache.log4j.BasicConfigurator.configure();
Logger log = org.apache.log4j.Logger.getLogger(testLogger.class.getName());
log.debug("来自testLogger的debug");
log.info("来自testLogger的info");
log.error("来自testLogger的error");
log.fatal("来自testLogger的fatal");
System.out.println("....................");

}
}

Log4j.xml:

<category name="com.company.hrm.test">
<priority value="FATAL"/>
</category>



priority 包含:ALL,DEBUG,INFO,WARN,FATAL,OFF 其中之一。

其中优先级别包含顺序为:ALL<DEBUG<INFO<WARN<FATAL<OFF
ALL的级别最低,如果想关闭某种类型的信息,需要把更高级的类型设置进去。

比如想关掉INFO级别的信息,只需要把priority的value设置为"OFF"或WARN,FATAL就可以了

星期二, 五月 16, 2006

MySQL Audit功能开启

在以下文件中加入如下行

/etc/my.cnf
[mysqld]
log_update=/var/log/mysql.update.log
log-long-format
set-variable = log=/var/log/mysql.log #一般完全SQL Plan记录

星期六, 五月 13, 2006

Mathematica Import输入Table数据文件

Mathematica Documentation: Import

Mathematica输入的数据文件,列必须用空格分开,空格的个数不限制。

如下:
001 28 12 15 21 19 01 999 03 11 08 01

data=Import["文件名","Table"]

星期五, 五月 12, 2006

MatheMatica 5 画图技巧之三:改变图形大小.

使用:ImageSize -> {620, 448} option来实现,如下:

ListPlot[fg, PlotStyle -> {PointSize[.02], RGBColor[
1, 0, 0]}, PlotJoined -> False, AxesOrigin -> {0, 0}, AxesLabel -> {"号码
", "频率"}, PlotLabel -> "2006年号码频率图", Frame ->
True, ImageSize -> {620, 448}];

星期二, 五月 09, 2006

lottery=
{{28,12,15,21,19,01},
{13,28,07,21,26,16},
{16,04,05,02,06,20},
{04,08,17,27,28,31},
{19,24,20,27,03,26},
{32,22,08,26,21,23},
{32,27,33,16,18,04},
{18,28,05,03,32,09},
{26,08,05,20,30,06},
{04,29,06,19,12,27},
{31,08,05,27,07,14},
{31,09,11,33,13,27},
{16,05,01,21,06,12},
{32,33,14,29,06,26},
{29,09,32,02,03,15},
{01,07,17,23,30,13},
{31,08,33,04,32,03},
{17,26,24,14,01,13},
{22,13,32,06,26,04},
{26,21,23,05,29,09},
{21,22,01,02,20,05},
{04,03,16,13,27,02},
{13,14,04,19,23,28},
{02,11,27,09,07,21},
{24,03,17,04,19,32},
{02,01,32,29,22,18},
{27,06,08,11,16,14},
{14,07,27,16,17,05},
{04,14,03,07,19,09},
{32,20,15,08,13,17},
{16,32,03,10,31,12},
{24,20,26,18,05,31},
{15,23,27,31,22,20},
{33,16,10,02,17,15},
{03,29,09,13,21,27},
{10,07,04,17,16,21},
{32,25,12,02,24,23}};

For[t = 1, t < Length[
lottery], t++; Show[ListPlot[lottery[[t]], PlotStyle -> {PointSize[.04], RGBColor[1, 0, 0] }]]]

星期一, 五月 08, 2006

Mathematica 5 画图之三,改变点的大小

Show[Graphics[{PointSize[.4],RGBColor[1,0,0],Point[{30,1}]},
Background\[Rule]GrayLevel[0.5]]]

Mathematica 5 绘图技巧二.

Plot[Sin[x], {x, 0, 2Pi},
PlotStyle -> {Thickness[0.02], Dashing[{0.03, 0.07}], RGBColor[1, 0, 0]}]

Mathematica 如何异步输出图象?

参数DisplayFunction(显示函数)
该参数决定图形的显示与否,当取值为Identity 时,图形不显示出来.
当取值为$DisplayFunction时恢复图形的显示.
1、 图形的组合显示函数Show

Plot的作用可以同时在同一坐标系的同一区间内作出不同函数的图像,但有时需要在同一坐标系的不同区间作出不同函数的图像,或者在同一坐标系作一个函数而要求函数的各个部分具有不同的形态(像分段函数),这个时候就需要使用Show函数.

实验13 在同一坐标系中作出y=ex和y=lnx的图像,并说明它们的图像关于直线y=x对称.
输入:
a=Plot[Exp[x],{x,-2,2},AspectRatio->Automatic,PlotStyle->RGBColor[0,1,0],
DisplayFunction->Identity]
b=Plot[Log[x],{x,0.3,3},AspectRatio->Automatic,PlotStyle->RGBColor[1,0,0],
DisplayFunction->Identity]
c=Plot[x,{x,-2,2},AspectRatio->Automatic,PlotStyle->Dashing[{0.09,0.04}],
DisplayFunction->Identity]
Show[a,b,c,DisplayFunction?$DisplayFunction]

如何设置Mathematica 5 的绘画参数?

Plot[Sin[x], {x, 0, 2Pi}, PlotStyle -> {RGBColor[1,
0, 0], Dashing[{0.03, 0.07}]}
]

星期日, 五月 07, 2006

巧用java来计算对数

巧用java来计算对数

毫无疑问,Java可以计算对数,然而在API中却有惊人的误差。但是如果运用了以下的方法,用Java处理数字所遇到的小麻烦就可以轻而易举的解决了。
  Sun的J2SE提供了一个单一的对数方法??double java.lang.Math.log(double),这很容易使用。请看如下代码:
  double x = Math.log(5);
  等价于下面的数学方程:
  x = ln 5
  或
  x = loge5
  其中e是内皮尔数或自然数。
  如果你想算底不同的对数又该如何做呢?很遗憾,我们还没有办法计算以10为底或以2为底的对数。但是它们却是在计算对数时用的最多的。要想解决这个问题,我们就要回想曾经在学校里学过的数学和对数方程:
  logx(y) =loge(x) / loge(y)
  这只需一段简单的Java程序来实现:
  package com.generationjava.math;
  public class Logarithm {
   static public double log(double value, double base) {
   return Math.log(value) / Math.log(base);
   }
  }
  计算100的以10为底的对数就变为非常简单了:
  double log = Logarithm.log(100, 10); // log is 2.0
  512的以2为底的对数是:
  double log = Logarithm.log(512, 2); // log is 9.0
  下面的两个简单的方法也都是很有用的:
  static public double log2(double value) {
   return log(value, 2.0);
   }
   static public double log10(double value) {
   return log(value, 10.0);
   }

星期二, 五月 02, 2006

Oscar Wilde 王?德 CSI said

http://www.brainyquote.com/quotes/quotes/o/oscarwilde117770.html

野心是失败者最后的庇护所
Ambition is the last refuge of the failure.

星期六, 四月 29, 2006

Fedora 5.0 有关NTFS及FAT文件系统的挂载

1、自己安装时,NTFS内核模块的版本判断及软件包的安装;

首先我们要安装NTFS的内核模块,一种是在线升级,另外一种是下载安装,当然也得与自己的内核相对应才行;

1..1 确立内核版本及下载说明;

[root@localhost beinan]# uname -p -r
2.6.15-1.2054_FC5 i686

如果您是下载内核的模块,应该看好内核版本,上面显示的是内核版本是2.6.15-1.2054_FC5 ,并且是i686的;

下载地址: http://www.linux-ntfs.org/content/view/157/83/

注意:在这页上有好多的版本,比如有smp的,这是多处理器的;有x86_64的,这是64位的CPU的,除非您用的是64位机器的,否则没有必要;

根据上面uname -p -r的输出,我下载了 kernel-module-ntfs-2.6.15-1.2054_FC5-2.1.26-0.rr.10.4.i686.rpm 软件包;


1..2 安装;

您可以点鼠标安装,也可以用命令安装

#rpm -ivh kernel-module-ntfs-*.rpm

星期四, 四月 27, 2006

Python打开文件,接受命令行

# -*- coding: UTF-8 -*-
import os
import sys
import traceback
if len(sys.argv)<2:
print "参数0",sys.argv[0]
print " 必须输入参数"
sys.exit(0)
try:
name =sys.argv[1]
if os.path.exists(name):
input = open(name,'r')
for line in input:
print line,
except Exception,e:
print traceback.print_exc()

星期三, 四月 26, 2006

Python 异常 处理小tips.

# -*- coding: UTF-8 -*-
import traceback
try:
print 1/0
except Exception,e:
print "异常",e
traceback.print_exc()

python 实现一个http client

import sys
import socket
Host="10.2.5.240"
Port=80
mysocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM);
mysocket.connect((Host,Port))
#mysocket.send("HTTP/1.1\n\r");
mysocket.send("GET /ehrm/ HTTP/1.1\n\rHost:10.2.5.34\n\r\n\r");
length=0;
while 1:
text = mysocket.recv(2048)
if not text:
break
print text
length=length+len(text)
print "读取了",length,"字节"
mysocket.close();

Python 函数注释的有趣功能

我们可以给一个函数加上功能说明。
允许用户在使用的时候,可以查看说明
语法: print 函数名.__doc__(注意是两个下画线连起来)
def test():
*** this is a test function
***

星期五, 四月 21, 2006

XP 命令行符号

Syntax : Redirection

   command  >  filename       Redirect command output to a file

command >> filename APPEND into a file

command < filename Type a text file and pass the text to command

commandA | commandB Pipe the output from commandA into commandB

command & command Perform the first command & then perform the second

command 2> filename Redirect any error message into a file

command 2> nul Redirect any error message to NUL

(command) 2> filename Redirect any CMD error into a file

command > fileA 2> fileB Redirect output and errors to separate files

command > file 2> nul Redirect output to a file and suppress any error

(command) > file 2> nul Redirect output to a file and suppress any CMD error

command > file 2>&1 Redirect output and errors to one file

command 2>&1 >filename This will fail!

XP 命令行超级工具

WMIC
Q.得到当前系统运行的所有进程。
WMIC /OUTPUT:C:\ProcessList.txt PROCESS get Caption,Commandline,Processid

or

WMIC /OUTPUT:C:\ProcessList.txt path win32_process get Caption,Processid,Commandline
或者 tasklist.exe /V得到详细信息。

如果想杀掉一个进程:taskkilll /PID #进程号# 或你知道程序的名字 taskkill /F /IM notepad.exe

星期二, 四月 04, 2006

如何用CSS来改变鼠标的光标形状?

手形 
十字 
文本光标 
等待 
默认 
问号 
左右箭头 
上下箭头 
系统自动给出效果

星期三, 三月 29, 2006

Linux终端输入汉字,保存出现错误.

只需要
1.export LANG=zh
或者
2.export LC_CTYPE=iso-8859-1

vim使用语法加亮 syntax enable

1* 功能激活

一切从一个简单的命令开始:

:syntax enable

大多数情况下,这会让你的文件带上颜色。Vim 会自动检测文件的类型,并调用合适的
语法加亮。一下子注释变成蓝色,关键字变成褐色,而字符串变成红色了。这使你可以
很容易浏览整个文档。很快你就会发现,黑白的文本真的会降低你的效率!

如果你希望总能看到语法加亮,把 "syntax enable" 命令加入到 |vimrc| 文件中。
在当前用户home目录下touch vimrc 然后在里面加入syntax enable 语法

如果你想语法加亮只在支持色彩的终端中生效,你可以在 |vimrc| 文件中这样写:

if &t_Co > 1
syntax enable
endif


如果你只想在 GUI 版本中有效,可以把 ":syntax enable" 放到你的 |gvimrc| 文件中。

2* 颜色显示不出来或者显示出错误的颜色怎么办?

有很多因素会让你看不到颜色:

- 你的终端不支持彩色。
这种情况下,Vim 会用粗体,斜体和下划线区分不同文字,但这不好看。你可能
会希望找一个支持彩色的终端。对于 Unix,我推荐 XFree86 项目的 xterm:
|xfree-xterm|。
- 你的终端其实支持颜色,可是 Vim 不知道
确保你的 $TERM 设置正确。例如,当你使用一个支持彩色的 xterm 终端:

setenv TERM xterm-color

如果是Linux 在当前用户目录下.bash_profile或/etc/bashrc里加入
TERM=xterm-color
export TERM



TERM=xterm-color; export TREM

终端名必须与你使用的终端一致。如果这还是不行,参考一下 |xterm-color|,
那里介绍了一些使 Vim 显示彩色的方法(不仅是 xterm )。

- 文件类型无法识别
Vim 不可能识别所有文件,而且有时很难说一个文件是什么类型的。试一下这个
命令:

:set filetype
.
如果结果是 "filetype=",那么问题就是出在文件类型上了。你可以手工指定
文件类型:

:set filetype=fortran

要知道那些类型是有效的,查看一下 $VIMRUNTIME/syntax 目录。对于 GUI 版本,
你还可以使用 Syntax 菜单。设置文件类型也可以通过 |modeline|,这样,
在你每次编辑它的时候都执行语法加亮。例如,下面这一行可以用
于 Makefile(把它放在接近文首和文末的地方)

# vim: syntax=make

你可能知道怎么检测自己的文件类型,通常是文件的扩展名(就是点后面的
内容)参见 |new-filetype| 可以知道如何告诉 Vim 如何检查一种文件类型。

- 你的文件类型没有语法高亮定义
你可以找一个相似的文件类型并人工设置为那种类型。如果你觉得不好,你可以
自己写一个,参见 |mysyntaxfile|。


或者颜色是错的:

- 彩色的文字难以辨认
Vim 自动猜测你使用的背景色。如果是黑的(或者其它深色的色彩),它会
用浅色作为前景色。如果是白的(或者其它浅色),它会使用深色作为前景
色。如果 Vim 猜错了,文字就很难认了。要解决这个问题,设置一下
'background' 选项。对于深色:

:set background=dark

而对于浅色:

:set background=light

这两个命令必须在 ":syntax enable" 命令前调用,否则不起作用。如果要在
这之后设置背景,可以再调用一下 ":syntax reset"。

- 在自下往上滚屏的过程中颜色显示不对。
Vim 在分析文本的时候不对整个文件进行处理,它只分析你要显示的部分。这
样能省不少时间,但也会因此带来错误。一个简单的修正方法是敲 CTRL-L。
或者往回滚动一下再回来。要彻底解决这个问题,请参见 |:syn-sync|。有些
语法定义文件有办法自己找到前面的内容,这可以参见相应的语法定义文件。
例如,|tex.vim| 中可以查到 Tex 语法定义。


3* 使用不同颜色

*:syn-default-override*

如果你不喜欢默认的颜色方案,你可以选另一个配色方案。在 GUI 版本中可以使用
Edit/Color 菜单。你也可以使用这个命令:

:colorscheme evening

"evening" 是配色方案的名称。还有几种备选方案可以试一下。在 $VIMRUNTIME/colors
中可以找到这些方案。

等你确定了一种喜欢配色方案,可以把 ":colorscheme" 命令加到你的 |vimrc| 文件中。

你可以自己编写配色方案,下方如下法面:

1. 选择一种接近你的理想的配色方案。把这个文件拷贝到你自己的 Vim 目录中。在 Unix
下,可以这样:

!mkdir ~/.vim/colors
!cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim

在 Vim 中完成的好处是可以利用 $VIMRUNTIME 变量。

2. 编辑这个配色方案,常用的有下面的这些条目:

term 黑白终端的属性
cterm 彩色终端的属性
ctermfg 彩色终端的前景色
ctermbg 彩色终端的背景色
gui GUI 版本属性
guifg GUI 版本的前景色
guibg GUI 版本的背景色

例如,要用绿色显示注释:

:highlight Comment ctermfg=green guifg=green

属性是 "bold"(粗体)和 "underline" (下划线)可以用于 "cterm" 和 "gui"。
如果你两个都想用,可以用"bond,underline"。要获得详细信息, 请参考
|:highlight| 命令。

3. 告诉 Vim 总使用你这个配色方案。把如下语句加入你的 |vimrc| 中:

colorscheme mine

如果你要测试一下常用的配色组合,用如下命令:

:edit $VIMRUNTIME/syntax/colortest.vim
:source %

这样你会看到不同的颜色组合。你可以很容易的看到哪一种可读性好而且漂亮。


4* 是否使用色彩

使用色彩显示文本会影响效率。如果你觉得显示得很慢,可以临时关掉这个功能:

:syntax clear

当你开始编辑另一个文件(或者同一个文件),色彩会重新生效。

*:syn-off*
如果你要完全关闭这个功能:

:syntax off

这个命令会停止对所有缓冲的所有语法加亮。

*:syn-manual*
如果你想只对特定的文件采使用语法加亮,可以使用这个命令:

:syntax manual

这个命令激活语法加亮功能,但不会在你开始编辑一个缓冲时自动生效(译者注:Vim
中,每个被打开的文件对应一个缓冲,后面的章节中你会接触到这方面的内容)。要在当
前缓冲中使用加亮,需要设置'syntax'选项:

:set syntax=ON


5* 带颜色打印

*syntax-printing*

在 MS-Windows 版本中,你可以用如下命令打印当前文件:

:hardcopy

这个命令会启动一个常见的打印对话框,你可以通过它选择打印机并作一些必要的设置。
如果你使用的是彩色打印机,那么打印出来的色彩将与你在 Vim 中看到的一样。但如果
你使用的是深色的背景,它的颜色会被适当调整,以便在白色地打印纸上看起来比较舒
服。

下面几个选项可以改变 Vim 的打印行为:
'printdevice'
'printheader'
'printfont'
'printoptions'

要仅打印一定范围内的行,可以用可视模式选择需要打印的行在执行打印命令,例如:

v100j:hardcopy

"v" 启动可视模式,"100j" 向下选中100行,然后执行 ":hardcopy" 打印这些行。当
然,你可以用其它命令选中这100行。

如果你有一台 PostScript 打印机,上面的方法也适合 Unix 系统。否则,你必须做一些额
外的处理:你需要先把文件转换成 HTML 类型,然后用 Netscape 之类的浏览器打印。

如下命令把当前文件转换成 HTML 格式:

:source $VIMRUNTIME/syntax/2html.vim

你发现它会嘎吱嘎吱执行一阵子,(如果文件很大,这可能要花点时间)。之后,
Vim 会打开一个新的窗口并显示 HTML 代码。现在把这个文件存下来(存在哪都不要紧,
反正最后你要删掉它的):

:write main.c.html

用你喜欢的浏览器打开这个文件,并通过它打印这个文件。如果一切顺利,这个输出应
该与 Vim 中显示的一样。处理完后别忘
了删掉那个 HTML 文件。

除了打印,你还可以把这个 HTML 文件,放到 WEB 服务器上,让其他人可以通过彩色
文本阅读

星期一, 三月 27, 2006

Mathematica 5.2如何把结果图形保存到文件里。

Q:Mathematica 5.2如何把结果图形保存到文件里?

A:Display["c:\\temp\\graph.gif",Plot[Cos[x],{x,0,2PI}],"GIF"]

星期五, 三月 24, 2006

初识 python

文件保存UTF8格式
helloworld.py
#-*- coding: UTF8 -*-
print u"你好,世界"

星期三, 三月 22, 2006

Windows目录共享的问题

出现错误:

"
不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接。中断与此服务器或共享资源的所有连接
,然后再试一次..."
方法:
net use ;列出所有共享的网络清单
net use 共享文件名 /delete

再重新共享 资源:
net use g: \\机器名\目录 /user:"用户名" 密码

星期二, 三月 21, 2006

利用CachedRowSetImpl构造新的结果集合

问题:利用CachedRowsetImpl的off-line的特性,把几个小的ResultSet
集合拼凑成一个大的结果ResetSet集合。
public CachedRowSetImpl AppendRowSetRecord(CachedRowSetImpl Ori,CachedRowSetImpl fresh) throws Exception
{
if(Ori.size()==0 || Ori==null)
{
System.out.println("Ori is null");
return fresh;
}
fresh.beforeFirst();
if(Ori!=null && Ori.size() != 0)
{
Ori.beforeFirst();
if (!((fresh.getMetaData().getColumnCount())==(Ori.getMetaData().getColumnCount())))return Ori;
}
while(fresh.next())
{
Ori.afterLast();
Ori.moveToInsertRow();
for(int i=1;i<=fresh.getMetaData().getColumnCount();i++)
{
Ori.updateObject(i,fresh.getObject(i));
}
Ori.insertRow();
Ori.moveToCurrentRow();
}

Ori.beforeFirst();
return Ori;
}

星期五, 三月 10, 2006

Mathematica 5.2 has big bug

Sinc[x_] := Sin[x]/x
InverseFourierTransform[Sinc[x/(2*Sqrt[6])]^6, x, w]

Mathematica 5.2 give anwser:

Out[3] = 0

Other version has correct anwser:



星期四, 三月 09, 2006