Matlab编程以及接口 下载本文

牛顿法的特例: 对于

当xn?1和xn围绕a振荡不收敛时,有

此时的函数满足

当 a=2, 则ezplot('sign(x-2)*sqrt(abs(x-2))',0,4)

导数就改点切线的斜率,用割线斜率代替切线斜率,称为割线法,即

a = 1 b = 2 k = 0;

while abs(b-a) > eps*abs(b)

c = b - (b - a)/(1-f(a)/f(b)); k = k + 1; a = b; b = c; end

function y=f(x) y = x^2 - 2;

这里, f(x)就是M函数。在M脚本文件中,不能直接使用这个定义,需要在单独文件中进行定义。

该函数也可以用Fortran编写,然后在Matlab内调用,即Fortran得mex文件。

mex文件 dll

Matlab可以和C/Fortran进行混合编程。

混合编程有两个方面: C/Fortran调用Matlab库;二是,Matlab内调用C/Fortran的函数。

mex文件, 就是把C/Fortarn程序,编译成Matlab动态库文件,然后在matlab内调用。这样Fortran程序可以放在matlab中使用,对于已有Fortran软件来说,是一件方便之举。

Fortran程序书写完毕,存入文件后,就可以进行编译。编译方法就是:

mex mycode.f

之前,计算机内要装fortran编译器。

Fortran程序中,自己的函数一定要用subroutine来定义;此外,还要加入一个matlab的接口函数,

subroutine mexFunction(nlhs, plhs, nrhs, prhs)

程序f.f清单如下

subroutine f(x,y) real*8 x,y y = x*x - 2 end

C The gateway routine

subroutine mexFunction(nlhs, plhs, nrhs, prhs)

integer mxGetM, mxGetN, mxGetPr

integer mxIsNumeric, mxCreateDoubleMatrix integer plhs(*), prhs(*) integer*4 x_pr, y_pr integer nlhs, nrhs integer m,n,size

C Check for proper number of arguments. if(nrhs .ne. 1) then

call mexErrMsgTxt('USAGE: y=f(x).') endif

C Get the size of the input array.

m = mxGetM(prhs(1)) n = mxGetN(prhs(1)) size = row*col

x_pr = mxGetPr(prhs(1))

plhs(1) = mxCreateDoubleMatrix(m,n,0) y_pr = mxGetPr(plhs(1))

C Call the computational subroutine. call f(%val(x_pr),%val(y_pr))

return end

编译命令:

>> mex f.f

用Matlab内的文本编辑器书写上面程序。注意,matlab兼容fortran77语言规范,即 (1)每行最多含72个字符,而且前6个位置要空出来,每行程序语句起始于第7列; (2)当某一行为注释文字,就在第一列键入* 或者C; (3)2-5用于行号标注;

(4)当公式太长,一行容不下,则折转到从下一行,并从第7个字符位置开始。同时,在第6个字符位置,键入任何字符,表示这是续上一行。

例题2 封闭空间辐射换热的有效辐射法

1.基本概念

(1)漫表面与灰表面

发射率和吸收率不随发射方向改变的表面,称为漫射表面;发射率和吸收率不随波长改变的表面,称为灰表面;兼有两者性质的表面,称为灰漫表面。 在半球方向上,灰漫表面辐射强度不变,总辐射功率记为E。

(2)辐照量( irradiation )

来自其它表面的所有投射辐射能(包括其它表面反射过来的能量)G。

(3)有效辐射( radiosity )

离开灰漫表面的所有辐射,包括发射和反射两个部分,应为J;

(4)表面总有效辐射计算

J??Eb??G

?,?表面发射率和反射率。

2.封闭空间内单个表面的辐射

房间是封闭空间的,房间内的空气为透明气体。假定每个墙体表面是等温的灰漫表面后,应用有效辐射概念可以直接进行墙体表面之间的辐射换热计算。这里,离开表面的有效辐射和到达表面的有效投射,能流强度分布均匀。

到达表面的总热量记为qi,在热平衡状态下,应等于离开表面i的辐射量,即

qi?Ai?Ji?Gi?

Ji为离开表面的辐射能和反射能,即有效辐射(radiosity)为,

Ji?Ei??iGi

Gi为到达表面的辐射能,即有效辐照(irradiation)。

对于不透明的灰漫表面( opaque, diffuse, gray surface),有?i?1??i?1??i,则有效辐射为

Ji??iEbi??1??i?Gi