基本运算
在指令界面的 '-->'之后,即可输入运算字串。例子:
--> 1+1 //按下[Enter] Ans = 2. --> log(10) //按下[Enter] Ans = 2.3025851
变量与常量
在scilab中变量的宣告是很自由的,几乎大部分的字串皆可以成为变量。例如x=3;a2=14;......但是变量开头不可以是数字。同时也不可以将Scilab内定常数更改它的数值。
Scilab的内定常数多半以'%'开头,例如圆周率π,它以'%pi'来表示。自然常数e:%e。虚数i:%i。如对这些常数重新宣告会出现错误讯息。
矩阵生成
eye 生成单位矩阵
x = eye(m,n) 生成mxn维的对角线为1,其它元素为0的矩阵
x = eye(A) 生成与矩阵A同维的单位矩阵,若A是标量,结果为1
x = eye() 生成维数不定的单位矩阵,当它与其它维数确定的矩阵相加时自动转为相应维数的矩阵
基本运算符
表示成sqrt(2),也可以直接用2^(1/2)或2^(0.5)表示。)运算符:log系列
三角函数
三种:sin(),cos(),tan().至于cot,sec,csc这三个函数Scilab并没有设计,不过使用:1/sin() , 1/cos() , 1/tan()这样的格式即可解决。
三个反函数:asin(),acos(),atan().
双曲线函数
这是一个跟三角函数相似但内容完全不同的函数。此类函数与e有关。
三个:sinh(),cosh(),tanh()
三个反函数:asinh(),acosh(),atanh()
布尔变量是指%t(表示真)和%f(表示伪),它们可以用于布尔矩阵中。布尔矩阵的操作和一般矩阵相同,例如可以连接、可以转置等。
对于布尔矩阵常用的操作符就是==和~,而且==和~还可以用于布尔矩阵的构造。
若B是一个布尔矩阵,or(B)和and(B)分别进行逻辑或运算和与运算。-->%t %t = T -->[1,2]==[1,3] ans = T F -->[1,2]==1 ans = T F -->a=1:5; a(a>2) ans = 3. 4. 5. -->A=[%t,%f,%t,%f,%f,%f]; -->B=[%t,%f,%t,%f,%t,%t] B = T F T F T T -->A|B ans = T F T F T T -->A&B ans = T F T F F F
介绍Scilab编程语言
.....B
变量定义
......
a=input("a='')
b=input(''b='')
c=input(''c='')
d=b*b-4*a*c
if d<0
disp(''no solution'')
else t=sqrt(d)
x1=(-b+t)/(2*a)
x2=(-b-t)/(2*a)
end
......
for循环
......
while循环
......
函数定义
......
函数调用
......
向量(Vectors)
生成向量的最常用方法就是在各个分量之间使用逗号(空格)隔开或者用分号隔开。
例如:
-->v=[2,-3+%i,7]
v =
2. - 3. + i 7.
-->v'
ans =
2.
- 3. - i
7.
-->w=[-3;-3-%i;2]
w =
- 3.
- 3. - i
2.
-->v'+w
ans =
- 1.
- 6. - 2.i
9.
-->v*w
ans =
18.
-->w'.*v
ans =
- 6. 8. - 6.i 14.
注意:向量的各分量之间使用逗号或者空格隔开时,生成的是行向量;而用分号隔开时,生成的是列向量。如:
-->v=[2,-3+%i,7]
v =
2. - 3. + i 7.
-->v=[2;-3+%i;7]
v =
2.
- 3. + i
7.
空矩阵[]也是合法的向量,它有零行零列:
-->Empty=[]
Empty =
[]
注意:单引号(')给出的是向量的转置(对于复向量,计算的是复共轭转置)。例如
-->A=[1,2,3]
A =
1. 2. 3.
-->A'
ans =
1.
2.
3.
-->A=[1+%i,2+2*%i]
A =
1. + i 2. + 2.i
-->A=[1+%i,2+2*%i,3+%i]
A =
1. + i 2. + 2.i 3. + i
-->A'
ans =
1. - i
2. - 2.i
3. - i
具有相同维数的向量之间可以相加和相减。具有相同维数的行向量和列向量之间也可以进行点积运算。逐个元素之间可以进行乘法(.*)和除法(./)。
注意:空格在不同位置所起到的作用也是不同的,例如:
-->v=[1 +3]
v =
1. 3.
-->w=[1 + 3]
w =
4.
-->w=[1+ 3]
w =
4.
-->u=[1, + 8- 7]
u =
1. 1.
如果要生成递增或递减的等差向量,可以采用如下的构造方法:
-->v=5:-.5:3
v =
5. 4.5 4. 3.5 3.
生成的向量以第一个值开始,第三个值结束,而第二个值则作为步长(即等差序列的差值),缺省的步长是1,如:
-->v=1:10
v =
1. 2. 3. 4. 5.
6. 7. 8. 9. 10.
常值序列可以使用ones函数和zeros函数生成,如
-->v=[1 5 6]
v =
1. 5. 6.
-->ones(v)
ans =
1. 1. 1.
-->ones(v')
ans =
1.
1.
1.
-->ones(1:4)
ans =
1. 1. 1. 1.
-->3*ones(1:4)
ans =
3. 3. 3. 3.
-->zeros(v)
ans =
0. 0. 0.
-->zeros(1:5)
ans =
0. 0. 0. 0. 0.
注意:当ones函数或zeros函数的变量是一个向量时,执行的结果是得到一个和该向量具有相同维数的全1或全0矩阵。
向量(Vectors)
生成向量的最常用方法就是在各个分量之间使用逗号(空格)隔开或者用分号隔开。
例如:
-->v=[2,-3+%i,7]
v =
2. - 3. + i 7.
-->v'
ans =
2.
- 3. - i
7.
-->w=[-3;-3-%i;2]
w =
- 3.
- 3. - i
2.
-->v'+w
ans =
- 1.
- 6. - 2.i
9.
-->v*w
ans =
18.
-->w'.*v
ans =
- 6. 8. - 6.i 14.
注意:向量的各分量之间使用逗号或者空格隔开时,生成的是行向量;而用分号隔开时,生成的是列向量。如:
-->v=[2,-3+%i,7]
v =
2. - 3. + i 7.
-->v=[2;-3+%i;7]
v =
2.
- 3. + i
7.
空矩阵[]也是合法的向量,它有零行零列:
-->Empty=[]
Empty =
[]
注意:单引号(')给出的是向量的转置(对于复向量,计算的是复共轭转置)。例如
-->A=[1,2,3]
A =
1. 2. 3.
-->A'
ans =
1.
2.
3.
-->A=[1+%i,2+2*%i]
A =
1. + i 2. + 2.i
-->A=[1+%i,2+2*%i,3+%i]
A =
1. + i 2. + 2.i 3. + i
-->A'
ans =
1. - i
2. - 2.i
3. - i
具有相同维数的向量之间可以相加和相减。具有相同维数的行向量和列向量之间也可以进行点积运算。逐个元素之间可以进行乘法(.*)和除法(./)。
注意:空格在不同位置所起到的作用也是不同的,例如:
-->v=[1 +3]
v =
1. 3.
-->w=[1 + 3]
w =
4.
-->w=[1+ 3]
w =
4.
-->u=[1, + 8- 7]
u =
1. 1.
如果要生成递增或递减的等差向量,可以采用如下的构造方法:
-->v=5:-.5:3
v =
5. 4.5 4. 3.5 3.
生成的向量以第一个值开始,第三个值结束,而第二个值则作为步长(即等差序列的差值),缺省的步长是1,如:
-->v=1:10
v =
1. 2. 3. 4. 5.
6. 7. 8. 9. 10.
常值序列可以使用ones函数和zeros函数生成,如
-->v=[1 5 6]
v =
1. 5. 6.
-->ones(v)
ans =
1. 1. 1.
-->ones(v')
ans =
1.
1.
1.
-->ones(1:4)
ans =
1. 1. 1. 1.
-->3*ones(1:4)
ans =
3. 3. 3. 3.
-->zeros(v)
ans =
0. 0. 0.
-->zeros(1:5)
ans =
0. 0. 0. 0. 0.
注意:当ones函数或zeros函数的变量是一个向量时,执行的结果是得到一个和该向量具有相同维数的全1或全0矩阵。