申明:内容来自用户上传,著作权归原作者所有,如涉及侵权问题,请点击此处联系,我们将及时处理!
0人已收藏
0人已打赏
免费0人已点赞
分享
水利软件
返回版块13.32 万条内容 · 203 人订阅
阅读下一篇
重装Winodws XP系统的一些经验和技巧2如果你的硬盘的文件系统是NTFS或者你不想格式化硬盘的,或者已经格式化完了,你必须把你的COMS设置为光驱为第一引导启动。 CMOS设置:(以Award主板为例,其它主板亦基本相同) 启动电脑按DEL键(有的电脑是F2键),进入CMOS设置,进入BIOS FEATURES SETUP,再进入Boot Sequence按上下键选CD-ROM,C,A,再按ESC键、F10键、Y、回车即可,手动关机或放入安装光盘后按reset键。(安装光盘最好是有自启动功能的)
回帖成功
经验值 +10
全部回复(2 )
只看楼主 我来说两句抢地板部分内容摘自中国仿真互动(http://www.simwe.com/)论坛上原先进行比较的源代码,然后进行改写,再次感谢当时blast等帮助测试!
================================================================================
该程序段用C++描述为:
s=0.0;
for(x=0.0;x<=1.0;x=x+0.0011)
{
for(y=1.0;y<=2.0;y=y+0.0009)
s=s+cos(1-sin(1.2*x^(y/2)+cos(1-sin(1.2*y^(x/2)))));
}
//输出s的值和运行时间。
--------------------------------------------------------------------------------
用OpenFC计算的源程序为:
(:x,y,s)=
{
s=0,x=0,
SetRunTime(), //计时开始;
while{
x<=1, //while循环算法;
y=1,
while{
y<=2,
s=s+cos(1-sin(1.2*x^(y/2)+cos(1-sin(1.2*y^(x/2))))),
y=y+0.0009
},
x=x+0.0011
},
outstr["\013\010结果:"],out
,
outstr[" 时间:"],out[GetRunTime()], //计时结束;
outstr["\013\010"]
};
f(x,y)=cos(1-sin(1.2*x^(y/2)+cos(1-sin(1.2*y^(x/2))))); //函数定义;
(:s)=
{
SetRunTime(), //计时开始;
s=sum[#f,0,1,0.0011,1,2,0.0009], //用sum函数计算;
outstr["\013\010结果:"],out
,
outstr[" 时间:"],out[GetRunTime()], //计时结束;
outstr["\013\010"]
};
用OpenFC的计算输出:
结果:1008606.649474411 时间:1.933
2.
结果:1008606.64947441 时间:1.722
5.
--------------------------------------------------------------------------------
用MATLAB 7.0的for循环和采用向量化方法用sum函数计算
作者:blast
%============================
%循环方法
t1=cputime;
s=0.0;
for x=0.0:0.0011:1.0;
for y=1.0:0.0009:2.0;
s=s+cos(1-sin(1.2*x^(y/2)+cos(1-sin(1.2*y^(x/2)))));
end
end
t1=cputime-t1
answer1=s
%======================
%半向量法
t2=cputime;
s=0.0;
x=0.0:0.0011:1.0;
y=1.0:0.0009:2.0;
for i=1:910
for j=1:1112
s=s+cos(1-sin(1.2*x(i)^(y(j)/2)+cos(1-sin(1.2*y(j)^(x(i)/2)))));
end
end
t2=cputime-t2
answer2=s
%=========================
%向量法
t3=cputime;
x=zeros(910,1112);
y=zeros(910,1112);
x1=0.0:0.0011:1.0;
y1=1.0:0.0009:2.0;
for i=1:910
x(i,: )=x1(i);
end
for i=1:1112
y(:,i)=y1(i);
end
s=cos(1-sin(1.2.*x.^(y./2)+cos(1-sin(1.2.*y.^(x./2)))));
a=sum(sum(s));
t3=cputime-t3
answer3=a
%============================
用 MATLAB 的计算输出:
t1 =
12.3578
answer1 =
1.0086e+006
t2 =
14.5209
answer2 =
1.0086e+006
t3 =
5.1975
answer3 =
1.0086e+006
================================================================================
用一元函数比较 OpenFC 与 MATLAB 7.0 的运行速度
--------------------------------------------------------------------------------
我的OpenFC程序如下:
(:x,y,s)=
{
s=0,x=0,
SetRunTime(), //计时开始;
while{
x<=1234, //while循环算法;
s=s+cos(1-sin(1.2*x^(0.12/2)+cos(1-sin(1.2*0.12^(x/2))))),
x=x+0.0011
},
outstr["\013\010结果:"],out
,
outstr[" 时间:"],out[GetRunTime()], //计时结束;
outstr["\013\010"]
};
f(x)=cos(1-sin(1.2*x^(0.12/2)+cos(1-sin(1.2*0.12^(x/2))))); //函数定义;
(:s)=
{
SetRunTime(), //计时开始;
s=sum[#f,0,1234,0.0011], //用sum函数计算;
outstr["\013\010结果:"],out
,
outstr[" 时间:"],out[GetRunTime()], //计时结束;
outstr["\013\010"]
};
OpenFC运行结果如下:
结果:1087309.11281616 时间:2.534
2.
结果:1087309.112815978 时间:2.253
5.
--------------------------------------------------------------------------------
用MATLAB 7.0的for循环和采用向量化方法用sum函数计算
%============================
%循环方法
t1=cputime;
s=0.0;
for x=0.0:0.0011:1234;
s=s+cos(1-sin(1.2*x^(0.12/2)+cos(1-sin(1.2*0.12^(x/2)))));
end
t1=cputime-t1
answer1=s
%======================
%半向量法
t2=cputime;
s=0.0;
x=0.0:0.0011:1234.0;
for i=1:1121819
s=s+cos(1-sin(1.2*x(i)^(0.12/2)+cos(1-sin(1.2*0.12^(x(i)/2)))));
end
t2=cputime-t2
answer2=s
%=========================
%向量法
t3=cputime;
x=0.0:0.0011:1234.0;
s=cos(1-sin(1.2.*x.^(0.12/2)+cos(1-sin(1.2*0.12.^(x./2)))));
a=sum(s);
t3=cputime-t3
answer3=a
%============================
用 MATLAB 的计算输出:
t1 =
13.7297
answer1 =
1.0873e+006
t2 =
15.2920
answer2 =
1.0873e+006
t3 =
5.6581
answer3 =
1.0873e+006
--------------------------------------------------------------------------------
我不太会用 MATLAB ,是不是将以上代码写成M函数,速度会更快一些?blast的测试结果比我的测试结果快好多(OpenFC 约比MATLAB 快2倍),但我没用过M函数,请大家测试一下!
欢迎大家用其他的表达式进行测试!
回复 举报
内容简介:
OpenFC是一个开放式的数值计算程序,由OpenForcal.dll和Forcal.dll提供支持。
OpenFC能够编译运行具有固定格式的源程序(字符串表达式),源程序中可以使用C++风格的注释。源程序中可以使用的运算符有+、-、*、/、^、>、>=、<、<=、==、!=、&、|、!、++、--等等,具有数值计算、逻辑运算、关系运算、字符数据处理、流程控制、函数调用等许多的可编程功能。
OpenFC是开放式的,很容易进行功能扩展。OpenFC通过加载OpenForcal或OForcal扩展动态库进行功能扩展,这些库可以用VC、Delphi或者Fortran等高级语言进行编写。
OpenFc可以对源程序进行模块化编译,可以打开多个文件同时进行操作,提高了运行效率。
OpenFC允许用户将常用的计算定义为命令,通过命令菜单执行计算。命令菜单是OpenFC提倡的计算方式。
在OpenFC中,用户也可以自定义窗口,用户在窗口中可以使用编辑框、静态文本、普通按钮、单选按钮、复选框、组框、位图等控件。用户自定义命令和用户自定义窗口改善了人机界面,强烈推荐使用。
用户可通过环境文件对OpenFc的工作环境进行配置,如设置需要加载的扩展动态库、设置模块、设置命令、设置常量等等,一切可按照自己的喜好和实际工作需要进行配置。
目前,通过OpenForcal或OForcal扩展动态库为OpenFC增加的功能有:解非线性方程(组)、多元积分、微分方程求解、函数图形绘制(由OpenGL图形库提供支持,可以绘制精美的二维和三维数学函数图形)等等。
天空软件站下载:http://www.skycn.com/soft/14414.html
华军软件园下载:http://www.onlinedown.net/soft/33731.htm
我的主页:forcal.yeah.net
回复 举报