开始学习数学软件Scilab
By 苏剑林 | 2012-09-28 | 39327位读者 |其实很早之前我就想学习一款数学软件的使用,以前很感兴趣的是mathematica,也玩弄过一阵子,但毕竟在高中没有多大需要,也就没有坚持下来。更重要的是,这些软件都是要收费的。上了大学后,听了师兄姐对数学建模的讲述,发现他们基本上也是用mathematica或者matlab的,但这两个软件都是要收费的,我不大想用破解版本。既然我都已经用上了ubuntu了,那么我就该好好利用它。据说命令跟matlab很相似的软件是scilab,还有octave,不同的是这些都是开源免费的。
出于熟悉代码操作和数学软件编程的目的,我选择了学习scilab。虽然网上说octave与matlab的相似程度更高,但是我感觉scilab比octave用的更广一些,所以就用它。所谓“一理通百理明”,先专心学好一个。
下面是我编写的第一个scialb程序,利用威尔逊方法来进行素性测试。这个代码的主要目的是练习条件语句和循环语句,以及一些输出输入的技巧而已。程序本身比较丑陋。
//我的第一个scilab程序
//完成于2012.09.27
label1=['p:';]; //定义标签
B=x_mdialog(['本程序使用威尔逊方法判断进行素数测试。';'请输入要判断的数'],label1,['127';]); //输入框
p=evstr(B(1)); //提取输入框里边的数字进行赋值
i=1;
j=1;
q=p-1;
while i<q
j=j*i;
j=modulo(j,p);//这个是模函数。
i=i+1;
end
if j==1
messagebox(['这是一个素数';],['测试结果']); //输出,其中后边的“测试结果”是输入框的标题
else
messagebox(['这是一个合数';],['测试结果']);
end
这是我的第二个程序,主要是为了加强记忆和练习算法而已。程序使用牛顿法来求解三次方程$x^3+ax^2+bx+c=0$,没有进行一些错误判断。因为我觉得细节方面不是我目前的主要任务。
//我的第二个scilab程序
//完成于2012.09.28
label1=['a:';'b:';'c:';'初始值';'精确度';]; //定义标签
B=x_mdialog(['本程序使用牛顿法求解x^3+ax^2+bx+c=0';'请输入系数、初始值、精确度'],label1,['1';'1';'1';'1';'0.001';]); //输入框
a=evstr(B(1)); //提取输入框里边的数字进行赋值
b=evstr(B(2));
c=evstr(B(3));
d=evstr(B(4));
q=evstr(B(5));
x=d;
e=x^3+a*x^2+b*x+c;
while abs(e)>q
x=x-e/(3*x^2+2*a*x^2+b);
e=x^3+a*x^2+b*x+c;
end
x//输出答案
下面是我的第三个scilab程序。是为了解决“数学研发论坛”上面的一道题目而写的,题目如下:
http://bbs.emath.ac.cn/viewthread.php?tid=3731
主要是输出素数数列,其中第n个的后n-1位是数列中的第n-1个数。比如7,17,317,6317,...
由于要进行素性测试,但是我在scilab没有找到素数判断函数,所以首先我自定义了一个新函数prime(),使用埃拉托斯特尼筛法来判断素数。
//我的第三个scilab程序
//输出素数数列,其中第n个的后n-1位是数列中的第n-1个数
//完成于2012.09.28
function p=prime(x)
p=1
for i=3:2:x^0.5;
if modulo(x,i)==0 then
p=0;
break
end
end
endfunction
//上面是自定义新函数来进行素数判断。素数则输出1,合数则输出0
//被判断数要大于9
a=7
j=0;
while j<8
if prime(a)==1
a
j=j+1;
a=a+10^j;
else
a=a+10^j;
end
end
以上都是我刚刚开始学习scilab的拙作,权当纪念之用,中高手请忽略。等熟悉了scilab的各种函数和结构等等之后,会尽可能多把编程用于物理等科学问题上。当然,希望高手多多指教啦。
转载到请包括本文地址:https://spaces.ac.cn/archives/1720
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Sep. 28, 2012). 《开始学习数学软件Scilab 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/1720
@online{kexuefm-1720,
title={开始学习数学软件Scilab},
author={苏剑林},
year={2012},
month={Sep},
url={\url{https://spaces.ac.cn/archives/1720}},
}
September 29th, 2012
Matlab不错的软件,不过学了C++就容易搞混。
新主题有个bug,点击上面返回首页会到http://kexue.fm//index.php,多了个/就变成404页面了
谢谢你的建议和关注呀,新主题还在调试中,暂时没有使用的打算,也许国庆回去慢慢弄一下。旧主题我觉得挺好看,就是它好像和codebox这个代码高亮插件有点冲突。
September 29th, 2012
哎何必啊。。。那个scilab有多大?matlab4G多。。。mathematica小点。主流还是matlab啊
那啥,有兴趣参加数学建模竞赛啊,我也很有兴趣。明年4月我们有校赛,到时去玩玩。
你收到我的信了吗?
scilab是100多m吧,当然在功能上还是比matlab弱很多,我只是想多接触一下linux,多接触一下开源软件而已。也没有什么特别的意思,而且既然scilab跟matlab那么相似,那么学会一个就可以容易学会其他了
October 7th, 2012
Scilab我也关注很久了,不过已经用惯Matlab了,下不定决心。
呵呵,其实学会一个就够了,不用折腾太多。不过学会了matlab,再学习scilab的话应该是很容易的。