Matlab 版 (精华区)

发信人: zjliu (Robusting), 信区: Matlab
标  题: 数学工具FAQ[smth]-- 6 高级语言数值数学编程
发信站: 哈工大紫丁香 (Tue Dec 17 15:08:58 2002) , 转信

 

>************************************************************************<
>                     第六节:高级语言数值、数学编程的问题
>************************************************************************<

===================================
1).如何在Visual Fortran中画图?
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        可以使用ArrayVisualizer提供的函数,非常方便,一两句话就可以绘图
        ,缺点是系统必须安装有ArrayVisualizer,而且只能绘制比较简单的图
        形。

        如果要用Windows的绘图API,请在超星阅读器上查找  巍巍,王越男
        编辑的Visual Fortran编程指南一书的第八章、第九章



===================================
2).在FORTRAN中如何动态开数组
:#FangQ(Qianqian.Fang@dartmouth.edu), 2002/6/22.BigGreen/MathTools#


        FORTRAN 90提供了动态开数组的功能,主要是两个函数:

        Real*8, Allocatable :: My1DData(:),My2DData(:,:)
        …
        Allocate(My1DData(0:10),My2DData(10,20))
        …
        DeAllocate(My1DData,My2DData)

===================================
3).如何在Visual Fortran中使用LAPACK?
:#halifax (抗震王子), 2002/6/29. SMTH/NumComp#

            这两天为了在WIN98/2K下用CVF6.6调用LAPACK函数库查了
        不少资料,也请教了很多网上的牛人,现在有个初步的调用方
        法,愿意写出来,希望为后来者节省些时间。但是遗憾的是目
        前我当初调用它的本意还是没有达到,所以希望有大虾能再指
        点一二。

        (1)、CVF所包含的LAPACK函数库并不完全,在"\Microsoft
        Visual Studio\DF98\CXML\DOC\Cxmlref.pdf"中的Table 8-3和
        8-4中列出了大多数LAPACK DRIVER ROUTINE。但这并不表示CVF中
        就能直接调用这么多routine,具体哪些能调用可以参
        见
        \Microsoft Visual Studio\DF98\CXML\INCLUDE\LAPACK_{S、D、
        C、Z}_INCLUDE.F90 等四个文件。他们中有的就可以直接
        在CVF中调用,没有的就要参见 (3)。

        (2)、CVF的环境变量设置。为了调用CVF的LAPACK函数,需要
        将一些*.lib函数调入库函数的搜索范围,也需要设置CVF为查找
        这些库函数所需要的搜索路径。具体方法是:

        Ⅰ  project->setting->link->category->input->在object/library
        modules   框内加入cxml.lib cxmldll.lib 两个文件名,中间以空格间隔。


        Ⅱ  分别在"tools->options->directories->"下的include files和library

        files加上……\Microsoft Visual Studio\DF98\CXML\Include
        和……\Microsoft Visual Studio\DF98\CXML\Lib 的搜索路径。Ⅲ  如
        果在做了以上两个设置之后,程序仍然会出编译或连接错误,
        可以做以下两项尝试(当然也可以不管错没错事先就做好):
            一、在"project->setting->fortran->libraries"中勾上->use cxml选项

            二、在调用LAPACK函数的程序单元内的所有变量定义和可执
                行语句之前加上: include 'cxml_include.f90' 语句。


        (3)、如果你通过各种途径查到LAPACK有某个函
        数,但LAPACK_{S、D、C、Z}_INCLUDE.F90四个文件中又没有
        ,那就请到http://www.cs.colorado.edu/~lapack/网页下,在网页
        左边选择你要的是何种routine。然后依提示逐步找到你所要的
        算法源程序文件。注意如果选择"with dependencies"是不能下载
        的,要选择"without dependencies"。当然也可以
        到http://www.cs.colorado.edu/~lapack/packages.html将所有
        的LAPACK都下载下来。

                然后你就可以将你下载下来的源程序
        拷贝到你的程序中作为一个subroutine了。

        [ACKNOWLEGEMENT]感谢hansom、lodger、nfdx、handbarrow、
        beefly各位大虾提供的帮助!

===================================
4).如何在各种平台上编译含有Lapack的Fortran程序?
:#FangQ (Qianqian.Fang@dartmouth.edu), 2002/11/19. BigGreen/MathTools#

        在Windows,使用Visual Fortran
           df yoursource.f90 -o exename /cxml
           df /optimize:5 /fast yoursource /link CXML.LIB /stack:4000000
        在LINUX中,使用
            -llapack 编译指令
        使用Compaq Alpha Tru64的f90,使用
           f90 yoursource.f90 -o exename -lcxml
        在SGI IRIX上使用MIPSpro 7 f90编译器,使用
           f90 yoursource.f90 -o exename -lcomplib.sgimath
        Sun Solaris/IBM AIX上还没有试过

        如果使用Intel Math Kernel Library(MKL),可以使用如下链接指令:
        Compile and Link Flags (Pentium III/Athlon):
            -L$MKL_HOME/lib/32 -lmkl_lapack32 -lmkl_p3 -lpthread (使用LAPACK)

            -L$MKL_HOME/lib/32 -lmkl -lmkl_p3 -lpthread (使用BLAS)
        Compile and Link Flags (Pentium 4):
            -L$MKL_HOME/lib/32 -lmkl_lapack32 -lmkl_p4 -lpthread (使用LAPACK)
            -L$MKL_HOME/lib/32 -lmkl -lmkl_p4 -lpthread (使用BLAS)

 



--

※ 来源:.哈工大紫丁香 http://bbs.hit.edu.cn [FROM: 202.118.229.86]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.615毫秒