高斯函数 fortran程序

高斯函数 fortran程序
高斯函数 fortran程序

GASUU-高斯函数(FORTRAN)程序

分类:LINUX

X1起始点,X2终点,X--X值,W--Y值,N数据点个数subroutine gauss(x1,x2,x,w,n)

integer n

real(kind=8) x1,x2,x(n),w(n)

double precision xm,xl,z,p1,p2,p3,pp,z1

integer m,i,j

parameter (eps=3.d-14)

m=(n+1)/2

xm=0.5d0*(x2+x1)

xl=0.5d0*(x2-x1)

do 12 i=1,m

z=cos(3.141592654d0*(i-.25d0)/(n+.5d0))

1 continue

p1=1.d0

p2=0.d0

do 11 j=1,n

p3=p2

p2=p1

p1=((2.d0*j-1.d0)*z*p2-(j-1.d0)*p3)/j

11 continue

pp=n*(z*p1-p2)/(z*z-1.d0)

z1=z

z=z1-p1/pp

if(abs(z-z1).gt.eps)go to 1

if (abs(z).lt.eps) z=0.

x(i)=xm-xl*z

x(n+1-i)=xm+xl*z

w(i)=2.d0*xl/((1.d0-z*z)*pp*pp)

w(n+1-i)=w(i)

12 continue

return

end

FORTRAN内部函数库

FORTRAN内部函数 用FORTRAN解题往往要用到一些专门运算,如求三角函数sinx, cosx,对数lnx,指数ex,求一组数中最大数和最小数等。 FORTRAN提供了一些系统函数(称为内部函数)来完成这些运算。程序设计者不必自己设计进行这些运算的语句组(即程序段或子程序),只需写出一个函数的名字以及给出一个或若干个自变量,就可以得到所需的值,例如: SQRT(4.0)求出4.0的平方根, SIN(2.0)求出2(弧度)的正弦值, EXP(3.5)求出e3.5, LOG(3.0)求出3, 常用的函数如下表,FORTRAN77提供的全部函数明细见FORTRAN77内部函数。 函数名含义应用例子相当于数学上的运算 ABS 求绝对值ABS(A) |a| EXP 指数运算EXP(A) e^a SIN 正弦值SIN(X) sin x COS 余弦值COS(X) cos x ASIN 反正弦ASIN(X) sin^(-1)a ACOS 反余弦ACOS(X) cos-1a TAN 正切TAN(X) tan x ATAN 反正切ATAN(A) tan^(-1)a LOG 自然对数LOG(A) lna,或loge(a) LOG10 常用对数LOG10(A) log10a INT 取整INT(A) int(a),取a的整数部分 MOD 求余MOD(A1,A2) a - int(a1/a2)*a2 SIGN 求符号SIGN(A1,A2) |a1|(若a2>0) -|a1|(若a2<0) REAL 转换为实型REAL(I) MAX 求最大值MAX(A1,A2,A3) max(a1,a2,a3) MIN 求最小值 MIN(A1,A2,A3) min(a1,a2,a3) 说明: (1)FORTRAN77将这些系统函数分别编成一个个子程序,组成函数库,存贮于外部介质(如磁盘)上。在完成源程序的编译之后,用LINK命令实现连接,即将已翻译成二进制指令的目标程序与函数库连接。也就是将程序中出现函数名的地方用函数库中相应的一组指令代入之,组成一个统一的“可执行目标块”。例如,程序中出现一个SIN函数,在连接时就将一组二进制指令(它们是实现求正弦值的运算的)直接插入到程序中出现SIN的地方。由于是插入到程序内部的,所以称为“内部函数”。 (2)一个内部函数要求一个或多个自变量。例如,SQRT函数只能有一个自变量SQRT(4.6),MOD函数要求两个自变量MOD(8,3),MAX和MIN函数要求两个以上自变量MAX(6,-8,10),MIN(-6,8,0)。当自变量个数规定为2个时,自变量的顺序不应任意颠倒,MOD(8,3)表示8被3除的余数,其值为2,而MOD(3,8)则表示3被8除的余数,其值为3。当自变量个数>2时,自变量的顺序无关,MAX(6,8,10)和MAX(8,10,6)结果是一样的。

fortran语法手册

1 FORTRAN77四则运算符 + - * / ** (其中**表示乘方) 在表达式中按优先级次序由低到高为:+或-→*或/→**→函数→() 2 FORTRAN77变量类型 2.1 隐含约定:I-N规则 凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。 如IMPLICIT REAL (I,J) 三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。 2.4 数组的说明与使用 使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例: DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3) REAL IA(10),ND(80:99)使用隐含DO循环进行数组输入输出操作:例如WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,2) 10FORMAT(1X,5(A2,I2,1X,A2,I4)) 2.5 使用DATA语句给数组赋初值 变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如 DATA A,B,C/-1.0,-1.0,-1.0/ DATA A/-1.0/,B/-1.0/,C/-1.0/ DATA A,B,C/3*-1.0/CHARACTER*6 CHN(10)

DATA CHN/10*' '/INTEGER NUM(1000) DATA (NUM(I),I=1,500)/500*0/,(NUM(I),I=501,1000)/500*1/ 3 FORTRAN77程序书写规则 程序中的变量名,不分大小写; 变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效; 一行只能写一个语句; 程序的第一个语句固定为PROGRAM 程序名称字符串 某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容; 某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容; 某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行; 某行的第7至72字符位为语句区,语句区内可以任加空格以求美观; 某行的第73至80字符位为注释区,80字符位以后不能有内容。 4 FORTRAN77关系运算符 .GT. 大于 .GE. 天于或等于 .LT. 小于 .LE. 小于或等于 .EQ. 等于 .NE. 不等于 .AND. 逻辑与 .OR. 逻辑或 .NOT. 逻辑非 .EQV. 逻辑等 .NEQV. 逻辑不等 运算符优先级由高到低顺序为:()→**→*或/→+或-→.GT.或.GE.或.LT. 或.LE.或.EQ.或.NE.→.NOT.→.AND.→.OR.→.EQV.或.NEQV 5 FORTRAN77语句

高斯列主元素消去法

2013-2014(1)专业课程实践论文题目:高斯列主元素消去法

一、算法理论 1. 消元过程:消元结果冲掉A ,行乘数冲掉(k)ik a i >,det 存放行列式。 (1)1det ?。 (2)对于1,2,n-1k =…,做①~⑤: ①按列选主元k c ,即确定k i 使 |||| max k k i k ik k i n c a a ≤≤==。 ②若0k c =,则输出错误信息;停机。 ③若k i k =转④,否则执行换行 ,,,1,,,;det det. k k kj i j k i a a j k k n b b ?=+?-= ④消元计算: ,,+1,ik ik ik kk a l a i k k n a = ?= ,, ,,1,,.,1,,. ij ik ik ij i ik k i a l a a i j k n b l b b i k n -?=+-?=+ ⑤ det det kk a ??。 (3)若0nm a =,则判断n b 是否等于零: ①0n b ≠,则输出“无解”信息;停机。 ②0n b =,则输出“非唯一解”,停机。 若0nm a ≠,则det det nn a ??。 2. 回带过程:解冲掉b .

1,,1,,2,1.n n n nm n i ij j j i i j ij b x b a b a b x b i n a =+= ???- ? ??=?=-∑ 3. 输出12,,,n x x x 及det 。det 值的大小可以作为方程组是否病态的参考。

#include #include #define N 3 //未知函数个数 int I; float max_value(float a[N][N+1],int n,int k) { float max; int i; max=a[k][k]; for(i=k+1;i

(完整)Fortran经典编程语言笔记(你值得拥有)

FORTRAN笔记 2014.10.07 目录 第七讲_FORTRAN的基本知识.ppt (2) FORTRAN语言程序设计初步 (2) FORTRAN源程序的书写格式(以77为例) (2) 变量 (2) 变量类型 (2) 算术运算符和运算优先级 (3) 赋值语句 (3) 参数语句(PARAMETER语句) (3) END语句 (3) PAUSE语句 (3) 逻辑运算和选择结构 (4) 关系表达式 (4) FORTRAN中数组的定义及使用 (4) 其他 (5) 1. fortran语言定义CHARACTER*6 TTL(14,3),CNAM(400)是什么意思? (5) 2. fortran里character*10 是什么意思 (5) 3. Fortran中kind是什么函数? (5)

第七讲_FORTRAN的基本知识.ppt FORTRAN语言程序设计初步 FORTRAN是Formula Translation的缩写,意为“公式翻译”,它是为科学、工程问题或企事业管理中的那些能够用 数学公式表达的问题而设计的,其数值计算的功能较强。 常用的是FORTRAN77和FORTRAN90两种标准。 1、一个程序由若干个程序单位组成。主程序和每一个子程序分别是一个独立的程序单位。 2、每一个程序单位都是以“END”结束的。 3、一个程序单位包括若干行。 1)语句行。由一个FORTRAN语句组成。 2)非语句行,即注释行。 4、FORTRAN程序中的语句可以没有标号,也可以有标号,根据需要而定。标号的作用是标志一个语句以便被其 他语句引用。 5、一个程序单位中各类语句的位置是有一定规定的。 6、FORTRAN源程序必须按一定的格式书写。 FORTRAN源程序的书写格式(以77为例) 每一行有80列,分别如下: 1、第1-5列为标号区。一行中第一列为“C”或“*”,该行即被认为是注释行。 2、第6列为“续行标志区”,如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。 3、第7-72列为语句区。 4、第73-80列,注释区。 变量 变量名:一个变量需要用一个名字(变量名)来识别。在同一个程序单位中不能用同一个变量名代表两个不同的变 量。 FORTRAN的变量名按以下规则选定: 1)第一个字符必须是字母,即变量名必须以字母开头; 2)在一个字母后面可以跟1-5为数字或字母。 如果选定的变量名超过6个字符,则只有前面6个字符有效。 注:在变量名中大写与小写字母是等价的。 变量类型 整型变量Integer、实型变量Real、双精度变量Double Precision、复型变量Complex、逻辑型变量Logical和字符型变量Character。 1、隐含约定(I-N规则) FORTRAN规定:在程序中的变量名,凡以字母I,J,K,L,M,N六个字母开头的,即认为该变量为整型变量。 在程序中,凡是变量名以字母I,J,K,L,M,N,i,j,k,l,m,n开头的变量被默认为整型变量,以其他字母开头的变量被 默认为实型变量。 2、用类型说明语句确定变量类型 1)INTEGER语句(整型说明语句) 2)REAL语句(实型说明语句) 3)DOUBLE PRECISION语句(双精度说明语句) 4)COMPLEX语句(复型说明语句) 5)LOGICAL语句(逻辑型说明语句)

Gauss列主元消去法

贵州师范大学数学与计算机科学学院学生实验报告 课程名称:数值分析班级:数本(一)班实验日期:年月日 学号: 0098(81)姓名:吴胜指导教师:杨一都 实验成绩:一、实验名称 实验五:线性方程组的数值解法 二、实验目的及要求 1. 让学生掌握用列主元gauss消去法、超松弛迭代法求解线性方程组. 2. 培养Matlab编程与上机调试能力. 三、实验环境 每人一台计算机,要求安装Windows XP操作系统,Microsoft office2003、(或. 四、实验内容 1. 编制逐次超松弛迭代(SOR迭代)函数(子程序),并用于求解方程组

???????=-++=+-+=++-=+++-1 4141414432143214 3214321x x x x x x x x x x x x x x x x 取初始向量T x )1,1,1,1()0(=,迭代控制条件为 5)1()(102 1 ||||--?≤-k k x x 请绘制出迭代次数与松弛因子关系的函数曲线,给出最佳松弛因子.SOR 迭代的收敛速度是否一定比Gauss-Seidel 迭代快 2. 编制列主元 Gauss 消去法函数(子程序),并用于解 ??? ??=++-=-+-=+-6 15318153312321 321321x x x x x x x x x 要求输出方程组的解和消元后的增广矩阵. 注:题2必须写实验报告 五、算法描述及实验步骤 Gauss 消去法: 功能 解方程组b Ax = . 输入 n ,n n ij a A ?=)(,T n b b b b ),,,(21 =. 输出 方程组的解T n x x x x ),,,(21 =或失败信息. 步1 对1,,2,1-=n k 执行步2→步4 . 步2 调选列主元模块 .

fortran基本函数

FORTRAN 90标准函数(一) (2012-07-03 17:14:57) 转载▼ 分类:学习 标签: fortran 函数 教育 符号约定: ●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。 ●s:P表示s类型为P类型(任意kind值)。s:P(k)表示s类型为P类型(kind值=k)。 ●[…]表示可选参数。 ●*表示常用函数。

注:三角函数名前有C、D的函数为复数、双精度型函数。 注:指数函数名、平方根函数名、对数函数名前有C、D的函数为复数、双精度型函数。 表4 参数查询函数

atan2函数的值域是多少?我从网上找到一个fortran函数的日志,说此值域是-π~π,但正常反正切函数的值域应该是-π/2~π/2。对atan2函数不够了解,所以不知道你的答案对不对,我个人认为不对。我是用正常的反正切函数atan(v/u)来算的: FORTRAN: if (u>0..and.v>0.) dir=270-atan(v/u)*180/pi if (u<0..and.v>0.) dir=90-atan(v/u)*180/pi if (u<0..and.v<0.) dir=90-atan(v/u)*180/pi if (u>0..and.v<0.) dir=270-atan(v/u)*180/pi if (u==0..and.v>0.) dir=180 if (u==0..and.v<0.) dir=0 if (u>0..and.v==0.) dir=270 if (u<0..and.v==0.) dir=90 if (u==0..and.v==0.) dir=999 其中uv等于零的五种情况要单独挑出来,不然程序会有瑕疵。atan函数换成atand函数的话直接是度数,不用*180/pi 我四个象限和轴都试了,应该没错。 最需要注意的问题,一个是函数值域,另一个是uv矢量方向和风向是反着的,并且风向角度数是从正Y轴开始顺时针算,和三角函数里度数从正X轴开始逆时针算不一样。

Gauss列主元消去法程序设计

《Gauss列主元消去法》实验报告 实验名称:Gauss列主元消去法程序设计???成绩:_________ 专业班级:数学与应用数学1202班?姓名:王晓阳???学号: 实?验?日?期:?2014?年11月10日 实验报告日期:?2014年?11月10日 一.实验目的 1. 学习Gauss消去法的基本思路和迭代步骤. 2. 学会运用matlab编写高斯消去法和列主元消去法程序,求解线性方程组. 3. 当绝对值较小时,采用高斯列主元消去法? 4. 培养编程与上机调试能力. 二、实验内容 用消去法解线性方程组的基本思想是用逐次消去未知数的方法把原线性方程组Ax二b 化为与其等价的三角形线性方程组,而求解三角形线性方程组可用回代的方法求解 1. 求解一般线性方程组的高斯消去法? (1) 消元过程: 设a kk k-0 ,第i个方程减去第k个方程的m ik Tk k倍,("k 1^1, n),得到 A k1x=b k1.

经过n-1次消元,可把方程组A1^b1化为上三角方程组A n x=b n. ⑵回代过程: 以解如下线性方程组为例测试结果 2. 列主元消去法 由高斯消去法可知,在消元过程中可能出现a kk k =0的情况,这是消去法将无法进行, 即使主元素a kk k-0但很小时,用其作除数,会导致其他元素数量级的严重增长和舍入误差的扩散,最后也使得计算解不可靠.这时就需要选取主元素,假定线性方程组的系数矩阵A是菲奇异的. (1)消元过程: 对于k =1,2,川,n -1,进行如下步骤: 1) 按列选主元,记 2) 交换增广阵A的p,k两行的元素 A(k,j)=A(p,j) ( j=k,…,n +1) 3) 交换常数项b的p,k两行的元素。 b(k)=b(p) 4) 计算消元 (2) 回代过程 (3) 以解如下线性方程组为例测试结果 三、实验环境 MATLAB R2014a 四、实验步骤

Fortran常用函数

1、RANDOM_NUMBER Syntax ['sint?ks] n. 语法 CALL RANDOM_NUMBER (harvest结果) Intrinsic Subroutine(固有子程序):Returns a pseudorandom number greater than or equal to zero and less than one from the uniform distribution. 返回大于或等于0且小于1,服从均匀分布的随机数 2、RNNOA/ DRNNOA (Single/Double precision) Generate pseudorandom numbers from a standard normal distribution using an acceptance/rejection method. 产生服从标准正态分布的随机数 Usage(用法) CALL RNNOA (NR, R) Arguments(参数) NR— Number of random numbers to generate. (Input) 要产生随机数的个数 R— Vector of length NR containing the random standard normal deviates. (Output) 输出长度为NR,随机正态分布的向量 Comments(注解) The routine RNSET can be used to initialize the seed of the random number generator. The routine RNOPT can be used to select the form of the generator. 程序RNSET可以用来初始化随机数发生器的种子 Example In this example, RNNOA is used to generate five pseudorandom deviates from a standard normal distribution. INTEGER ISEED, NOUT, NR REAL R(5) EXTERNAL RNNOA, RNSET, UMACH C CALL UMACH (2, NOUT) NR = 5 ISEED = 123457 CALL RNSET (ISEED) CALL RNNOA (NR, R) WRITE (NOUT,99999) R 99999 FORMAT (' Standard normal random deviates: ', 5F8.4) END Output Standard normal random deviates: 2.0516 1.0833 0.0826 1.2777 -1.2260

列主元素消去法求解方程组

列主元素消去法求解方程组 [摘 要]在自然科学和工程中有很多问题的解决归结为求解线性方程组或者非线性方程组的数学问题。例如,电学中的网络问题,用最小二乘法求实验数据的曲线拟合问题,三次样条的插值问题等等。求解线性方程组的直接法主要有选主元高斯消去法、平方根法、追赶法等。列主元素消去法既是选主元高斯消去法的一种,也是实际计算中常用的部分选主元消去法。本文即是讨论利用列主元素消去法求解线性方程组问题。 [关键词]按列选主元 交换 消元 回代 一 列主元素消去法背景 在科学研究和工程技术中有许多问题可归结为求解线性代数方程组,其中所产生的线性方程组,其系数矩阵大致可分为两种:一种是低阶稠密矩阵;另一类是大型稀疏矩阵(此类矩阵阶数高,但零元素较多)。对于这两种矩阵,我们可以把线性代数方程组的数值解法大致的分为两类:直接法和迭代法。迭代法一般用来求解大型稀疏矩阵方程组(本文不予讨论);直接法是目前计算机上解低阶稠密矩阵的有效方法,如果计算过程中没有舍入误差,则此种方法通过有限步四则运算可求的方程组的精确解,但实际计算中由于舍入误差的存在和影响,这种方法也只能求得方程组的近似解。直接法主要有选主元素高斯消去法、平方根法、追赶法等。本文所要讨论的列主元素消去法就是选主元素高斯消去法中的一种。 高斯消去法是一个古老的求解线性方程组的方法,也是解线性方程组问题中较为常见的一种数值方法。但在采取高斯消去法解方程组时,当采用绝对值很小的主元素时,可能导致计算结果的失败,故在消去法中应避免采用绝对值很小的主元素。对于一般的线性方程组,需要引进选主元的技巧,即在高斯消去法的每一步应该在系数矩阵或消元后的低价矩阵中选取绝对值最大的元素作为主元素,保持乘数1 ik m ,以便减少计算过程中舍入误差对计算解的影响。 选主元素消元法则是对高斯消去法的改进,是解低价稠密矩阵方程组的有效方法。选主元素消元法则避免了采用绝对值很小的主元素。选主元素消去法主要有完全主元素消去法与列主元素消去法两种。完全主元素消去法即是每次按行列选取绝对值最大的元素作为

fortran库参考

第3 章FORTRAN 77 和VMS 内函数 本章列出了FORTRAN 77 f95 接受的一系列内函数,旨在帮助将传统的FORTRAN 77 程序迁移至Fortran 95。 在f95 中,本章列出的所有FORTRAN 77 和VMS 函数以及前一章列出的所有Fortran 95 函数都识别为内函数。为了帮助从传统的FORTRAN 77 程序迁移至f95,使用-f77=intrinsics 进行编译会让编译器只将FORTRAN 77 和VMS 函数识别为内函数,但Fortran 95 函数不会识别为内函数。 属于Sun 扩展的ANSI FORTRAN 77 标准的内函数标有¤ 符号。使用非标准内函数和库函数的程序可能无法移植到其他平台。 内函数在接受多种数据类型的参数时,有通用名称和专用名称。通常,通用名称返回与参数具有相同数据类型的值。但也有一些例外,如类型转换函数(表3–2)和查询函数(表3–7)。这些函数也可以通过函数的某个专用名称进行调用,以便处理专用参数数据类型。 对于处理多个数据项的函数(例如sign(a1,a2)),所有数据参数的类型必须相同。 下表按以下几方面列出FORTRAN 77 内函数: 内函数-描述函数的作用 定义-数学定义 参数数量-函数接受的参数的数量 通用名称-函数的通用名称 专用名称-函数的专用名称 参数类型-与每个专用名称关联的数据类型 函数类型-针对专用参数数据类型返回的数据类型 注– 编译器选项-xtypemap 会更改变量的缺省大小,并且对内在引用产生影响。请参见3.4 备注以及《Fortran 用户指南》中有关缺省大小和对齐方式的介绍。 3.1 算术和数学函数 本节详细介绍算术函数、类型转换函数、三角函数以及其他函数。“a”代表函数的单个参数,“a1”和“a2”代表两个参数函数的第一个参数和第二个参数,“ar”和“ai”代表函数的复数参数的实部和虚部。 3.1.1 算术函数

常用基本函数

R语言基本函数 一、数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框 c:连接为向量或列表 length:求长度 subset:求子集 seq,from:to,sequence:等差序列 rep:重复 NA:缺失值 NULL:空对象 sort,order,unique,rev:排序 unlist:展平列表 attr,attributes:对象属性 mode,typeof:对象存储模式与类型 names:对象的名字属性 二、字符串处理 character:字符型向量 nchar:字符数 substr:取子串 format,formatC:把对象用格式转换为字符串paste,strsplit:连接或拆分 charmatch,pmatch:字符串匹配 grep,sub,gsub:模式匹配与替换 三、复数 complex,Re,Im,Mod,Arg,Conj:复数函数 四、因子 factor:因子 codes:因子的编码 levels:因子的各水平的名字 nlevels:因子的水平个数 cut:把数值型对象分区间转换为因子 table:交叉频数表 split:按因子分组 aggregate:计算各数据子集的概括统计量 tapply:对“不规则”数组应用函数 数学 一、计算 +, -, *, /, ^, %%, %/%:四则运算 ceiling,floor,round,signif,trunc,zapsmall:舍入 max,min,pmax,pmin:最大最小值 range:最大值和最小值 sum,prod:向量元素和,积 cumsum,cumprod,cummax,cummin:累加、累乘 sort:排序 approx和approx fun:插值 diff:差分 sign:符号函数 二、数学函数 abs,sqrt:绝对值,平方根 log, exp, log10, log2:对数与指数函数 sin,cos,tan,asin,acos,atan,atan2:三角函数 sinh,cosh,tanh,asinh,acosh,atanh:双曲函数 beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose ,lchoose:与贝塔函数、伽玛函数、组合数有关的特殊函数 fft,mvfft,convolve:富利叶变换及卷积 polyroot:多项式求根 poly:正交多项式 spline,splinefun:样条差值 besselI,besselK,besselJ,besselY,gammaCody:Bessel函数 deriv:简单表达式的符号微分或算法微分

高斯消元法 主元消去法

实验内容 1.编写用高斯消元法解线性方程组的MATLAB程序,并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证. (1) 123 123 123 0.101 2.304 3.555 1.183 1.347 3.712 4.623 2.137 2.835 1.072 5.643 3.035 x x x x x x x x x ++= ? ? -++= ? ?-++= ? (2) 123 123 123 528 28321 361 x x x x x x x x x ++= ? ? +-= ? ?--= ? MATLAB计算源程序 1. 用高斯消元法解线性方程组b AX=的MATLAB程序 输入的量:系数矩阵A和常系数向量b; 输出的量:系数矩阵A和增广矩阵B的秩RA,RB, 方程组中未知量的个数n 和有关方程组解X及其解的信息. function [RA,RB,n,X]=gaus(A,b) B=[A b]; n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0, disp('请注意:因为RA~=RB,所以此方程组无解.') return end if RA==RB if RA==n disp('请注意:因为RA=RB=n,所以此方程组有唯一解.') X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1 for k=p+1:n m= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1); end end b=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n); for q=n-1:-1:1 X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q); end else disp('请注意:因为RA=RB

fortran语言语法

FORTRAN是世界上最早出现的高级编程语言,是工程界最常用的编程语言,它在科学计算中(如航空航天、地质勘探、天气预报和建筑工程等领域)发挥着极其重要的作用。经过40多年的发展,伴随着FORTRAN语言多次版本的更新及相应开发系统的出现,其功能不断完善,最新版本的开发系统几乎具备了VC、VB的所有特点,如图形界面编程、数据库等。目前,工科院校开设的计算机编程语言课首选仍然是FORTRAN :< 说实话,从科技发展的趋势来说这不是好事。您可以设想一下,如果需要用鹅毛笔抄写大量的古籍是什么感受! 强烈建议阅读《发掘C#特性赋予科学计算项目以威力》 1 FORTRAN77四则运算符 + - * / ** (其中**表示乘方) 在表达式中按优先级次序由低到高为: +或-→*或/→**→函数→() 2 FORTRAN77变量类型 隐含约定:I-N规则 凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。 用类型说明语句确定变量类型:可以改变I-N规则

用IMPLICIT语句将某一字母开头的全部变量指定为所需类型 如IMPLICIT REAL (I,J) 三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。 数组的说明与使用 使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例:DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3)

列主元素消去法

2012-2013(1)专业课程实践论文 列主元素消去法 范宁:0818180102,R数学08-1班 夏之秋:0818180110,R数学08-1班

一、算法理论 列主元素消去法既是选主元高斯消去法的一种,也是实际计算中常用的部分选主元消去法。 列主元素消去法则是对完全主元素消去法的又一次改进。列主元素消去法在完全主元素消去法的基础上减少了在选主元素时所要花费的一定的计算时间。 设有线性方程组 b =Ax 其中,A 为非奇异矩阵。 方程组的增广矩阵为 ??????? ?????????=n nn n n k i n n b a a a a b a a a b a a a A 2 1 2 22221 1112111]b ,[ 首先在A 的第1列选取绝对值最大的元素作为主元素,即选择 0max 111,1≠=≤≤i n i i a a 然后交换A 的第1行与第1i 行(交换后增广矩阵为简单起见仍记为]b ,[A ,其元素仍记为i j i b a ,)。经过第1次消元计算得到与原方程组等价的方程组 (2) ) 2(b x =A 其中 ?? ????? ???????= ?????? ??????? ?=) 2()2(2)1(1) 2() 2()2(2 ) 2(2) 2(22) 1(1) 1(12 ) 1(11) 2(b n nn n n n b b b a a a a a a a A , 上述过程可记为 ] 2[)2()2(]b ,[]b ,[A A →

重复上述计算过程,现假设已完成第1-k 步的选主元素过程,交换两行并进行消元计 此时]b ,[A 约化为 ???? ??? ?? ?????? ? ??? ?=)() () ()()()() 2(2) 2(2) 2(22 ) 1(1 ) 1(1) 1(12)1(11) ()(]b ,[k n k nn k nk k k k kn k kk n n k k b a a b a a b a a b a a a A 其中)(k A 的元素仍记为j i a ,)(b k 的元素仍记为i b . 第k 步选主元素(在)(k A 右下角方阵的第1列内选),即确定k i ,使 0max ,≠=≤≤ik n i k k i a a k 交换]b ,[)()(k K A 第k 行与)1,,2,1(-=n k i k 行的元素,再进行消元计算,最后将原线性方程组化为 ????? ???????=????????????????? ? ????? ?n n nn n n b b b x x x a a a a a a 2121222 11211 回代可求解得 ?? ?? ?-=-==∑+=) 1,2,,1(/)(/1 n i a x a b x a b x ii n i j j ij i i nn n n

FORTRAN知识点总结

F O R T R A N 第2章FORTRAN90基础知识: 程序单元的概念: fortran90程序是一种分块形式的程序,整个程序由若干程序单元块组成。每个程序只有一个主程序单元。各单元体的程序体形式上相同。 程序单元可以是主程序、子程序(外部过程或内部过程)、模块MODULE (供其他程序单元引用即把该程序单元内的全部语句复制到程序单元中)或块数据程序单元BLOCK 。 语言元素:指在程序设计中用到的基本成分,如字符集、常量、变量、记号(标号、关键字、名字、常数、运算符和定界符)以及其他的基本结构等。 字符集:英文字母、阿拉伯数字、下划线、21个特殊字符($和?没有规定用法)。 数据结构: 整型INTEGER (34-2下划线后面是种别参数),n 位字长的计算机的数据表示范围一般为12~211-+---n n ,种别参数由内在询问函数KIND 送回,种别值提供的最小范围由内在函数SELECTED-INT-KIND 送回,表示十进制幂的范围由内在函数RANGE 送回; 实型REAL ,小数形式和指数形式;复型COMPLEX (种别类

型参数值取实部与虚部中较大者); 字符型CHARACTER,由一对单撇号或双撇号之间的字符序列组成; 逻辑型LOGICAL。 派生数据类型TYPE; 数组INTEGER,DIMENSION(1,50)::A,可直接对数组元素进行运算如3*A,SQRT(A); 字符子串,在字符串CHARACTER(LEN=80)::ROW中,ROW(1:3)就表示字符串ROW中第1到第3个元素组成的子串。 变量名的命名规则:不能超过31个字符;组成成分是字母、数字、下划线;第一个字符必须是字母。 第3章基本语句: 类型说明语句:类型说明(种别说明),属性说明::变量名表 尽量避免把两个实数作相等或不相等的比较。淘汰隐式说明IMPLICIT NONE 种别说明:种别参数即对可移植数据精度和范围进行选择的机制 KIND(X) 返回变元X的种别参数值 SELECTED-REAL-KIND(n,m) 产生一个种别值,它表示某一精度和范围。N指十进制有效位数,m指明值范围内以10为底的幂次。

fortran中批处理实现

********************************************* fortran中批处理命令的实现函数: 利用systemqq命令(需要调用DFLIB 数据库) ********************************************* 例1: USE DFLIB character*100 CMD LOGICAL(4) res CMD="dir/a-d/b/s "//trim(fPath)//" >"//trim(outPut) res=SYSTEMQQ(CMD) 例2: USE DFLIB LOGICAL(4) result result = SYSTEMQQ('copy e:\dir.txt e:\test\dir.txt') !将e:\dir.txt 复制到e:\test\dir.txt文件中。!****************实例3:复制文件************************* 例3: programmain_pro USE DFLIB implicit none integer,parameter::sta_num=123 character(5),dimension(sta_num)::sta_ID character(500)::filein,fileout character(5000)::cmd logical(4)::judge

integer::status,is open(1,file='山东.txt',status='old',action='read',iostat=status) read(1,*) do is=1,sta_num read(1,*) sta_ID(is) filein='Z:\data\降水逐小时数据-戴至修\precip_data\'//sta_ID(is)//'_precip.txt' open(2,file= filein,status='old',action='read',iostat=status) if(status/=0) goto 1000 fileout='Z:\data\降水逐小时数据-戴至修\山东省-降水数据\'//sta_ID(is)//'_precip.txt' cmd='copy '//filein//' '//fileout judge=SYSTEMQQ( cmd) 1000 continue enddo end program

Gauss列主元素消去法

数学与计算机学院数值计算实验报告 年级 2011 学号 2011434061 姓名张硕硕成绩 专业信息与计算科学实验地点主楼402 指导教师高少芹 实验项目 Gauss列主元素消去法实验日期 2013.11 一、实验题目 Gauss列主元素消去法 二、需求分析 (1) 本实验使用的相关开发工具为MATLAB (2) 输入的形式和输入值的范围以及输出的形式 输入的形式:A=[1 -1 2 -1;2 -2 3 -3;1 1 1 0;1 -1 4 3]; b=[-8 -20 -2 4]; 输出的形式: b = -7.0000 3.0000 2.0000 2.0000 (3) 程序所能达到的功能 通过输入矩阵的形式,实现计算机计算计算线性方程组的解。 (4) 测试数据: 在实验结果中给出

三、程序流程图

四、数据结构及算法描述 1.输入矩阵A,右端向量b 2.对于k=1:n-1, (1)|A(u,k)|=max|A(i,k)| (k<=i<=n); %选主元 (2)如果|A(u,k)|=0则停止; %控制最小主元 (3)如果u=k则转(4),否则 A(k,k:n+1)A(u,k:n+1); %换行 (4)A(k+1:n,k):=A(k+1:n,k)/A(k,k), A(k+1:n,k+1:n):=A(k+1:n,k+1:n)-A(k+1:n,k)*A(k,k+1:n), %消元按行进行 b(k+1:n)’:=b(k+1:n)’-A(k+1:n,k)*b(k) 3.如果A(n,n)=0则停止 %无解 4.b(n):=b(n)/A(n,n), 对于i=n-1:-1:1, b(i):=[b(i)-A(i,i+1:n)*b(i+1:n)’]/A(i,i) %回代求解 5.输出b 五、调试分析 内容包括: (1)在调试过程中,会出现精度问题以及数字的显示格式带来的误差,通过百度学习修改这 些问题。 (2)根据算法中的(4),消元过程中,第k步运算做乘法(n-k)(n-k+1)次,做除法n-k次,完成 n-1步消元共需做乘除法的总次数为:n3/3+n2/2-5n/6, 由算法的第4步知,回代过程的乘除法运算次数为:n2/2+n/2, 故算法运算的总次数为:MD=n3/3+n2-n/3, 当n很大时,约为n3/3。 (3)通过上机计算使我学会了程序的录入和Matlab的使用操作;通过计算结果的比较,使我 了解求线性方程组的精度不但与方法有关,而且与问题的性态有关,也让我更进一步了解Gauss列主元素消去法。 六、使用说明

fortran90-知识点整理

Fortran90关于变量说明的新功能: 1.在变量说明的同时,可以给变量赋初值。 INTEGER::I=5,J=126 REAL::X=7.2,Z,W=774.2 2.在说明变量的同时也可说明其种别 REAL(KIND=4)::X,Y 或REAL(4)::X,Y 3.在说明变量的同时,还可说明变量的属性 INTEGER,PARAMETER::I=5,J=123 Ps :PARAMETER 属性 (1)功能:用一个符号代表一个常量,称为符号常量(常数) (2)写法: Real,Parameter ::G=9.8 &&说明类型时赋值 (3)位置:位于可执行语句之前 REAL,DIMENSION(1:10)::A 2.3.6 派生数据类型 根据需要而由基本数据类型定义新的数据类型。在一个派生类型中可包含多个基本类型。 如:TYPE STUDENT (定义开始) CHARACTER(LEN=20)::DEPARTMENT CHARACTER(LEN=10)::CLASS CHARACTER(LEN=15)::NAME INTEGER::NUMBER (成员定义) END TYPE STUDENT (定义结束)

派生类型变量的定义: TYPE(STUDENT)::PERSON 变量的赋值: PERSON=(”COMPUTER”,”92_2”,”LI LIN”,21) 成员的表示: PERSON%CLASS=“92_2” PERSON%NAME=“LI LIN” 主程序其他限制 主程序的可执行部分不能包含有RETURN语句或者ENTRY语句。 程序名对可执行程序是全局的,而且不得于该可执行程序中的任何其它程序单元名、外部过程名或公用块名相同,也不得于主程序内的任何局部名相同。 在主程序的作用范围内的说明不得包含OPTIONAL语句、INTENT语句、PUBLIC语句或它们的等价属性,在主程序内SAVE语句不起作用。 主程序内的任何内部过程的定义必须跟在CONTAINS语句之后。 2.3.2 子程序 子程序是可以完成某一独立算法或功能的程序单元,但它功能的具体体现要通过主程序(或子程序)的调用来实现。 按子程序与主程序的位置关系分为内部过程和外部过程。 2.4.3 模块 模块也是一种在程序单元之外独立编写的程序单元。它有独特的形式,即模块程序单元内没有可执行语句,除了说明语句外,最多包含内部过程。模块的主要作用是供其它程序单元引用。 程序单元引用模块,实际是将模块内的全部语句复制到本程序单元。因此模块起共享及复制的作用。 模块的引用采用语句: USE 模块1,模块2,…

相关文档
最新文档