一个完整的前后处理有限元四边形mathematica程序

合集下载

mathematica有限元平面问题

mathematica有限元平面问题

mathematica有限元平面问题Mathematica是一款强大的数学软件,可以用于解决各种数学问题,包括有限元分析。

在Mathematica中,你可以使用内置的函数和自定义函数来模拟和求解有限元问题。

以下是一个简单的Mathematica 有限元平面问题求解示例:1.首先,创建一个平面有限元问题模型。

假设我们有一个平面三角形单元,其顶点坐标分别为A(0, 0),B(1, 0) 和C(0,1)。

2.定义单元的坐标映射函数。

在有限元分析中,我们需要将单元上的坐标映射到整体坐标系中。

这里我们使用线性映射函数:CoordinateTransform[{x, y}, {a, b}] := {a x + b y, a y + b x}3.计算单元的应变。

应变是与位移有关的物理量,这里我们假设位移为U 和V。

根据有限元原理,应变可以通过位移和单元坐标映射关系计算:Strain[U, V, a, b] := {{a (U -1)/2, b (V -1)/2},{a (V -1)/2, -b (U -1)/2}}4.计算单元的应力。

应力是作用在单元上的力除以面积。

假设应力为S,根据有限元原理,应力可以表示为:Stress[U, V, a, b, S] := {S (a (V -1)/2),S (b (U -1)/2)}5.创建一个有限元求解器。

我们可以使用Mathematica 内置的Solve 函数来求解线性方程组。

首先,定义单元的刚度矩阵和载荷向量:deflection[U, V, a, b,应变_, 载荷_] := {Solve[{a (V -1)/2 * (应变[[1, 1]] + 应变[[2, 1]]),b (U -1)/2 * (应变[[1, 2]] + 应变[[2, 2]]),S (a (V -1)/2),S (b (U -1)/2)},{U, V, 0, 0}]}6.使用有限元求解器计算位移。

mathematica使用指南

mathematica使用指南

mathematica使用指南Mathematica是一款功能强大的数学软件,具备广泛的应用领域,包括数学、统计学、物理学、工程学等等。

本文将为您提供一份Mathematica的使用指南,帮助您快速入门并提高使用效率。

1. Mathematica简介Mathematica是由Wolfram Research公司开发的一款通用计算软件,它具备数值计算、符号计算、图形绘制等多种功能。

Mathematica基于Wolfram Language语言,用户可以直接在其中编写代码进行计算和分析。

2. 安装与启动首先您需要从Wolfram Research公司官方网站下载Mathematica安装文件,并按照安装向导完成安装过程。

安装完成后,您可以在计算机上找到Mathematica的启动图标,点击即可启动该软件。

3. Mathematica界面介绍Mathematica的主界面由菜单栏、工具栏、输入区域和输出区域组成。

菜单栏提供了各种功能选项,工具栏包含常用工具按钮,输入区域用于输入代码,而输出区域用于显示计算结果。

4. 基本计算在输入区域中,您可以直接输入数学表达式进行计算。

例如,输入"2 + 3",然后按下Enter键即可得到计算结果"5"。

Mathematica支持基本的算术运算、三角函数、指数函数等数学操作。

5. 变量与函数您可以使用Mathematica定义变量并进行计算。

例如,输入"x = 2",然后再输入"y = x^2",按下Enter键后,变量y会被赋值为2的平方,即4。

定义的变量可以在后续计算中使用。

6. 图形绘制Mathematica提供了丰富的图形绘制功能。

您可以使用Plot函数绘制函数曲线,使用ListPlot函数绘制离散数据点,还可以绘制3D图形等等。

通过调整参数和选项,您可以自定义图形的样式和外观。

Mathematica教程

Mathematica教程

编著:李开友四川机电职业技术学院基础系数学实验课程教学的实践与认识看到“数学实验”几个字人们会问:做数学题不是靠一张纸、一支笔就行了吗,怎么像物理、化学一样要做实验了呢?对了,这是计算机技术和数学软件引入教学后出现的新事物,是数学教学体系、内容和方法改革的一项尝试。

几年前,设置数学实验课的构想一出现,立即在数学教育界引起反响。

1995年在原国家教委组织实施的“高等教育面向21世纪教学内容和课程体系改革”计划中,“理科非数学类专业高等数学课程体系和内容改革”项目的总体构想报告,就把“数学实验”列为高校非数学类专业的数学基础课之一,一些学校积极创造条件准备付诸实施。

通过实践,课程的指导思想更加明确,课程的内容设计基本确定,也取得了一些经验,并为教材建设奠定了基础。

数学教育在整个人才培养过程中的重要性是人所共知、不言而喻的,从小学到大学十几年,数学一直是一门主课,课程中讲的、练的、考的主要是计算方法、公式推导、定义叙述、定理证明,不妨统称为“算数学”。

对于将来要以数学为工具解决各种实际问题的学生来说,当然需要准确、快捷的计算和严密的逻辑推理,即要学好“算数学”,但是在计算、推理之前首先要用数学语言描述那个问题,建立数学模型,之后还要进行分析、修正,也就是要会“用数学”。

传统的数学教学体系和内容侧重于前者,只是在讲到每一部分的应用时举几个例子,这对于后者的训练,特别是综合应用的训练,是远远不够的。

近十几年来许多学校相继设置的数学建模课程,和最近几年蓬勃开展的全国大学生数学建模竞赛,是培养学生“用数学”能力的有益尝试,受到学生们的热烈欢迎和教育界的充分肯定。

开设数学实验课可以说是在总结“用数学”的基础上,为进一步提高学生“用数学”能力而进行的又一数学教改试验。

长期以来,内容多、负担重、枯燥乏味、学生学习积极性不高,一直困扰着大学数学教育,与此形成鲜明对照的是受大环境支配的计算机热。

由同学自己动手,用他们熟悉的、喜欢“玩”的计算机解决几个经过简化的实际问题,让学生亲身感受到用所学的数学解决实际问题的酸甜苦辣。

mathematica简明使用教程

mathematica简明使用教程

mathematica简明使用教程Mathematica是一种强大的数学软件,广泛应用于科学研究、工程计算和数据分析等领域。

本文将简要介绍Mathematica的使用方法,帮助读者快速上手。

一、安装和启动Mathematica我们需要下载并安装Mathematica软件。

在安装完成后,可以通过桌面图标或开始菜单中的快捷方式来启动Mathematica。

二、界面介绍Mathematica的界面分为菜单栏、工具栏、输入区域和输出区域四部分。

菜单栏提供了各种功能选项,工具栏包含了常用的工具按钮,输入区域用于输入代码或表达式,而输出区域则显示执行结果。

三、基本操作1. 输入和输出在输入区域输入代码或表达式后,按下Shift+Enter键即可执行,并在输出区域显示结果。

Mathematica会自动对输入进行求解或计算,并返回相应的输出结果。

2. 变量定义可以使用等号“=”来定义变量。

例如,输入“a = 3”,然后执行,就会将3赋值给变量a。

定义的变量可以在后续的计算中使用。

3. 函数调用Mathematica内置了许多常用的数学函数,可以直接调用使用。

例如,输入“Sin[π/2]”,然后执行,就会返回正弦函数在π/2处的值。

4. 注释和注解在代码中添加注释可以提高代码的可读性。

在Mathematica中,可以使用“(*注释内容*)”的格式来添加注释。

四、数学运算Mathematica支持各种数学运算,包括基本的加减乘除,以及更复杂的求导、积分、矩阵运算等。

下面简要介绍几个常用的数学运算:1. 求导可以使用D函数来求导。

例如,输入“D[Sin[x], x]”,然后执行,就会返回正弦函数的导数。

2. 积分可以使用Integrate函数来进行积分运算。

例如,输入“Integrate[x^2, x]”,然后执行,就会返回x的平方的不定积分。

3. 矩阵运算Mathematica提供了丰富的矩阵运算函数,可以进行矩阵的加减乘除、转置、求逆等操作。

Mathematica使用教程

Mathematica使用教程

Mathematica使用教程【Mathematica 简介】Mathematica 软件是由沃尔夫勒姆研究公司(Wolfram Research Inc.)研发的。

Mathematica 版发布于1988年6月23日。

发布之后,在科学、技术、媒体等领域引起了一片轰动,被认为是一个革命性的进步。

几个月后,Mathematica 就在世界各地拥有了成千上万的用户。

今天,Mathematica 已经在世界各地拥有了数以百万计的忠实用户。

Mathematica 已经被工业和教育领域被广泛地采用。

实际上,Mathematica 负责将高级的数学和计算引入了传统上非技术的领域,极大的增加了科技软件的市场。

一个包含应用、咨询、书籍、和课程软件的行业支持着国际化的 Mathematica 用户群,这个行业还在不断地膨胀。

随着沃尔夫勒姆研究公司不断地扩大和 Mathematica 的使用被不断地扩展到不同的领域,将会看到 Mathematica 在全世界范围内对未来产品、重要研究发现、和教学的巨大影响。

数学软件是现在科研工作者的必备的工具,个人比较喜欢用Mathematica,因为它是最接近数学语言的。

Mathematica 在15日发布,其最显著的变化是允许自由形式的英文输入,而不再需要严格按照Mathematica语法,这类似于Wolfram|Alpha搜索引擎。

Mathematica 8允许用户按照自己习惯的思考过程输入方程式或问题,最令人激动的部分是软件不是逐行执行命令,而是能理解上下文背景。

1. Enter your queries in plain English using new free-form linguistic input2. Access more than 10 trillion sets of curated, up-to-date, and ready-to-use data3. Import all your data using a wider array of import/export formats4. Use the broadest statistics and data visualization capabilities on the market5. Choose from a full suite of engineering tools, such as wavelets and control systems6. Use more powerful image processing and analysis capabilities7. Create interactive tools for rapid exploration of your ideas8. Develop faster and more powerful applicationsWolfram Research 的CEO 和创立者斯蒂芬·沃尔夫勒姆表示:“传统上,让计算机执行任务必须使用计算机语言或者使用点击式界面:前者要求用户掌握它的语法;而后者则限制了可访问函数的范围。

Mathematica使用教程

Mathematica使用教程

Mathematica使⽤教程第⼆章 Mathematica 简介Mathematica 是⼀个符号计算与数值计算的通⽤数学软件包,是由美国的物理学家Stephen Wolfram 所领导的⼀个⼩组开发成功并推向市场的。

Mathematica 由最初的1.0、1.2、2.0、2.2、2.4、3.0版,到现在的4.0版,⽬前国内常⽤的版本是Windows 下的3.0及4.0版。

与Mathcad 和MATLAB 相⽐,Mathematica 才称得上是⼀个真正的数学符号计算软件包,因为只有它的内核是以符号计算为基础的,⽐如你可以定义⼀些数学规则,让它为你进⾏符号推导演算⼯作。

在Mathematica 中,你可以像Mathcad 那样进⾏草稿式的数学计算,你也可以像MATLAB ⼀样进⾏命令式的数学计算。

本章以4.0版为基础,介绍Mathematica 的使⽤⽅法。

2.1 Mathematica 的集成环境及基本操作当Mathematica 运⾏时,会出现如图所⽰的窗⼝。

右边的⼩窗⼝,我们称为数学⼯具⾯板,它包含多种数学符号,更多的符号可从命令菜单File/Palettes 中得到,利⽤它,可以像Mathcad ⼀样输⼊数学算式,⽐如上⾯计算的积分,完全可以通过数学⼯具⾯板,在Mathematica 中写成20[2]x Sin x dx π的形式,但这种输⼊⽅法有两个问题:⾸先,Mathematica 的输⼊操作不如Mathcad ⽅便,其次,由于Mathematica 的函数及符号太多,导致这种输⼊⽅法效率太低。

因此,我们对这种直观的命令输⼊⽅法将不做过多的介绍。

有兴趣的读者可以查阅相关的帮助主题。

笔者认为,使⽤Mathematica 计算数学问题最有效的⽅法是,直接通过键盘输⼊每个函数所代表的英⽂字符串。

左边的⼤窗⼝,Mathematica 称之为Notebook ,Mathematica 可以将在Notebook 中输⼊的命令存⼊⼀个扩展名为“.nb ”的⽂件中,⾸次进⼊时默认的⽂件名为Untitled-1.nb 。

四边形剖分有限元计算程序

四边形剖分有限元计算程序
parameter(lnd=700,lel=1200,cls=10) common/lkk/cc(lnd,lnd) common/cail/mates,matzh(cls)
common/xy/lastnd,nm(lnd),x(lnd),y(lnd),yzds,bnode(lnd),bptal(lnd)/elem/lastel,p(lel),ma common/uout/u(lnd),fp(lnd) open(2,file='jdf.txt',status='old') open(3,file='jdxy.txt',status='old') open(4,file='dyijm.txt',status='old') open(5,file='cailiao.txt',status='old') open(6,file='xishuk.txt') open(7,file='jdu.txt') open(8,file='jieguo.txt') open(9,file='juzhen.txt') call readst !读入相关数据 call xishuk !计算系数矩阵cc call shuchuk !输出位值计算结果 stop end subroutine readst parameter(lnd=700,lel=1200,cls=10) common/lkk/cc(lnd,lnd) common/cail/mates,matzh(cls)
common/xy/lastnd,nm(lnd),x(lnd),y(lnd),yzds,bnode(lnd),bptal(lnd)/elem/lastel,p(lel),ma common/uout/u(lnd),fp(lnd) read(2,*)lastnd !节点数 read(2,*)lastel !单元数 read(2,*)yzds !已知位值节点数 read(2,*)mates !已知位值节点数 do i=1,lastnd !读入节点的x,y坐标 read(3,*)nm(i) read(3,*)x(i)

Mathematica数学软件操作技巧及界面详解

Mathematica数学软件操作技巧及界面详解

Mathematica数学软件操作技巧及界面详解Mathematica是一款十分强大的数学计算软件,它可以广泛应用于科学、工程和教育等领域。

本文将介绍一些Mathematica的操作技巧,并详细解析其界面设计。

一、Mathematica的基本操作技巧1. 输入和计算Mathematica的主界面提供了一个输入框,我们可以在其中输入各种数学表达式和计算公式。

输入时需要遵循一定的语法规则,比如使用^表示乘方,使用*表示乘法,使用/表示除法等。

在输入完毕后,按下Enter键即可进行计算。

2. 变量定义和赋值在Mathematica中,我们可以使用等号(=)来定义和赋值变量。

比如,我们可以输入"radius = 5"来定义一个名为radius的变量,并将其赋值为5。

之后,我们可以直接使用radius来进行计算。

3. 函数调用Mathematica内置了许多数学函数,比如sin、cos、log等。

我们可以使用这些函数来进行各种数学运算。

调用函数时需要在函数名后加上待计算的参数,比如"sin(0.5)"可以计算出0.5的正弦值。

二、Mathematica的界面详解1. 顶部菜单栏Mathematica的顶部菜单栏包含了许多功能按钮,我们可以通过点击这些按钮来执行相应的操作,比如打开文件、保存文件、进行图像绘制等。

2. 工具栏在Mathematica的工具栏上,我们可以找到常用的绘图工具、格式调整工具和计算选项卡等。

这些工具可以帮助我们更加方便地进行数学计算和图形绘制。

3. 文档窗口Mathematica的文档窗口是我们进行数学计算和编写代码的主要区域。

我们可以在文档窗口中输入数学表达式、编写代码,并且可以将计算结果直接显示在文档窗口中。

4. 侧边栏在Mathematica的侧边栏上,我们可以找到各种各样的面板和选项卡。

这些面板和选项卡提供了对Mathematica的进一步设置和功能扩展,比如图形面板、数据面板和设置面板等。

Mathematica软件使用入门讲解

Mathematica软件使用入门讲解

Mathematica软件使用入门目录第一章基本知识与基本操作 (3)1.1 Mathematica的基本语法特征 (3)1.2 Mathematica的启动、基本操作 (4)1.3 操作小技巧 (7)1.4 数值计算 (8)1.5 赋值与替换 (9)1.6 自定义函数 (10)1.7 方程与方程组解 (11)1.8 解不等式与不等式组 (12)1.9 由递推式求数列的通项公式 (13)1.10 作函数图像 (14)第二章运用Mathematica实现高等数学中的基本运算 (16)2.1 求极限运算 (16)2.2 求导数与微分 (18)2.3 求不定积分 (25)2.4 求定积分 (25)第三章实验练习题 (28)Mathematica是当今世界上最为流行的计算机代数系统之一.Mathematica系统是美国物理学家Stephen.Wolfram领导的一个小组开发的,后来他们成立了Wolfram研究公司.1987年推出了系统的1.0版;现在的最新版本是8.0版.Mathematica可以做:●符号计算和数值计算问题,如:能做多项式的计算、因式分解和展开等;●做各种有理式计算,求多项式、有理式方程和超越方程的精确解和近似解;●做向量、矩阵的各种计算;●求极限、导数、积分,做幂级数展开,求解某些微分方程等;●做任意位数的整数或分子分母为任意大整数的有理数的精确计算,做具有任意位精度的数值(实、复数值)的计算.●可以很方便地画出用各种方式表示的一元和二元函数的图形,通过图形,可以立即形象地掌握函数的某些特性,而这些特性一般是很难从函数的符号表达式中看清楚.第一章 基本知识与基本操作1.1 Mathematica 的基本语法特征使用Mathematica ,一定要牢牢记住:● Mathematica 中大写小写是有区别的,如Name 、name 、NAME 等是不同的变量名或函数名;● 系统所提供的功能大部分以系统函数的形式给出, 内部函数一般写全称, 而且一定是以大写英文字母开头, 如Sin[x], Cos[z]等;● 乘法即可以用*,又可以用空格表示,如2 3=2*3=6 , 2 Sin[x]=2* Sin[x] ● 乘幂可以用“^”表示,如x^0.5 表示: Tan[x]^y 表示: ● 自定义的变量可以取几乎任意的名称,长度不限,但不可以数字开头. ● 当你赋予变量任何一个值,除非你:明显地改变该值或 使用Clear[变量名] 或 使用“变量名=.”取消该值,否则它将始终保持原值不变.● 一定要注意四种括号的用法:0.5x yTan[x]( ):表示项的结合顺序,如: (x+(y^x+1/(2x)));[ ]:表示函数,如:Log[x], Sin[x];{ }:表示一个“表”(即是一组数字、或任意表达式、或函数等的一个有序集合),如:{2x,Sin[12 Pi],A,1}, {1+A,y*x,1,2};[[ ]]:双方括号表示“表”或“表达式”的下标,如:a; {3,5,7}[[2]]=5.a[[2,3]]表示:23●Mathematica的语句书写十分方便,一个语句可以分为多行写,同一行可以写多个语句(但要以分号间隔).●当语句以分号结束时,语句计算后不做输出(输出语句除外),否则将输出计算的结果.●Mathematica命令中的标点符号必须是英文的.1.2 Mathematica的启动、基本操作1.2.1 启动“Mathematica”:在windows操作系统中安装了Mathematica后,与其他的常用软件一样,可从“开始”→“程序”→“Mathematica5” Mathematica的主窗口并出现第一个notebook窗口(Untitled-1):1.2.2 简单使用:例1.1 计算+33的值①在“Untitled-1”窗口中输入:329/412+3^3②按下“Shift+Enter”(或数字键盘上的Enter键),就得到计算结果:其中“In[1]:=”是Mathematica自动加上的,表示第一个输入;“Out[1]:=”表示第一个输出.一般地:In[n]:= 表示第n个输入Out[n]:=表示第n个输出.注意:“In[n]:=”自动加上的,不能人工输入!1.2.3 保存结果:保存方法同一般的Windows软件:“文件”→“保存”⇒“另存为”窗口→在“查找范围”内找到目标文件夹→输入文件名(比如输入“1”)→“”.Mathematica 4或Mathematica 5的文件的后缀是“nb”,当输入“1”时,即产生文件“1.nb”.1.2.4打开文件1.nb启动Mathematica →“文件”→“打开”⇒打开”窗口:→在“查找范围”内找到文件“1.nb”→“”即可.1.2.5 退出Mathematica :与一般应用软件一样,单击右上方的“ ”按钮(或用菜单:“文件”→“退出”).1.3 操作小技巧1.3.1 Ctrl+K 的用途如果只知道命令的首写字母, 可在输入该首写字母(要大写),再按下“Ctrl+K ”组合键, 则所有以该字母为首的命令都列出来,只要用鼠标双击命令名就输入了该命令. 1.3.2 使用前面已有的结果 举例如下:例1.2 做如下操作:① 输入:Integrate[x^2*(11-Sin[x]),{x,-1,1}]按:“Shift +Enter ”; ② 输入:%+1,按:“Shift +Enter ”; ③ 输入:%+1,按:“Shift +Enter ”; ④ 输入:%1+1,按:“Shift +Enter ”; ⑤ 输入:%3+1,按:“Shift +Enter ”, 计算结果如下:Integrate[f,x]是求:()f x dx ⎰ Integrate[f,{x,xmin,xmax}]是求:maxmin()x x f x dx ⎰可见,“%”表示前一个计算结果;“%n”表示第n个计算结果.1.3.3删除行:见下图示1.4 数值计算请看下例:只要选定且删除此即可系统默认的计算结果,是精确的.N[],取近似值函数,默认输出6位有效数字.N[],取近似值函数,指定输出3位有效数字.1.5 赋值与替换X=. 或Clear[x] 清除赋给x的值expr/.{x->xval,y->yval} 用xval、yval分别替换expr中的x、y.例1.3输入:x=3;y=4;w=x+y 计算输入:Clear[x,y];计算输入:z=(x+y)^2 计算输入:z/.x->5 计算输入:Clear[x,y];计算输入:u=x+y 计算将(x+y)^2赋给z清除变量的定义和值变量替换:用5代替表达式z中的变量变量替换:输入:u/.{x->5,y->6} 计算 计算结果如下:1.6 自定义函数用户可以自行定义函数,一个函数一旦被定义好之后就可以象系的内部函数一样使用.例1.4 如要定义函数f(x)=x 2+3x-2只要键入:f[x_]:=x^2+3x-2即可.又如要定义分段函数2+1 < 0()= 2sin 0x x g x x x ⎧⎨≥⎩“:=”是定义符.左边f 是函数名,方括号内x 是自变量,其后的下划线“_”不能少.右边是函数的表达式.可键入:g[x_]:= Which[x<0,x^2+1,x>=0,2Sin[x]]或g[x_]:=If[x<0,x^2+1,2Sin[x]]请见以下计算结果:1.7 方程与方程组解例1.5 ① 解方程:0652=+-x x输入:Solve[x^2-5x+6==0,x]即可.② 解方程组 输入:Solve[{x+y==1,3x^2-y^2==0},{x,y}] 即可(结果见下图).Solve 是解方程或方程组的函数.其格式为:Solve[eqns,vars]其中方程用exp==0的形式(其中exp 为未知元的表达式,“= =”必须是2个等号);方程列表 2213x y x y +=⎧⎨-=⎩未知数列表1.8 解不等式与不等式组例1.6 ① 解不等式组⎪⎩⎪⎨⎧>-<--0101222x x x输入: <<Algebra`InequalitySolve`InequalitySolve[{x^2-5x-6<0,x^2-1>0}, x]即可.② 解不等式3)3(12>--x x输入: <<Algebra`InequalitySolve`即可(结果见下图)不等式列表 变量列表加载解不等式的程序包,这是必须的,可谓是固定的格式, “< ”为键盘上的小于号, “`”为数字键1的左侧的Algebra —— 代数类InequalitySolve —— 解不等式程序包绝对值函数注: Mathematica 系统有内部函数.还有一些系统扩展的功能但不是作为内部函数的、以文件的形式存储在磁盘上的文件,要使用它们,必须用一定的方式来调用这些文件,这些文件我们称之为程序包. 调用方式之一如上所述:<<Algebra`InequalitySolve`或用:Needs["Algebra`InequalitySolve`"]1.9 由递推式求数列的通项公式例1.7 设 求数列的通项公式只要输入:<<DiscreteMath`RSolve` RSolve[{a[n]==n *a[n-1], a[1]==1}, a[n], n]即可(结果见下图)11,1,n n a na a -==函数名 递推关系 初始条件调用程序包 类名,此处是函数类 函数类中的这个函数离散类 离散类中的这个函数1.10 作函数图像例1.8在同一坐标系中作出2-1y x 和y=sinx在[-2,2]内的图像.输入: Plot[{x^2-1,Sin[x]},{x,-2,2}] 结果见下图例1.9作出sinxcosy的三维图形输入:Plot3D[Sin[x]*Cos[y],{x,-2Pi,2Pi},{y,-即可(结果见下图)增加取样点提高光滑度第二章 运用Mathematica 实现高等数学中的基本运算极限、导数和积分是高等数学中的主要概念和基本运算,如果你在科研中遇到较复杂的求极限、求导数或求积分问题,Mathematica 可以帮你快速解决这些问题。

Mathematica简介及使用方法

Mathematica简介及使用方法

欢迎访问华中数学建模网 Mathematica函数大全--运算符及特殊符号一、运算符及特殊符号Line1; 执行Line,不显示结果Line1,line2 顺次执行Line1,2,并显示结果?name 关于系统变量name的信息??name 关于系统变量name的全部信息!command 执行Dos命令n! N的阶乘!!filename 显示文件内容<<filename 读入文件并执行Expr>> filename 打开文件写Expr>>>filename 打开文件从文件末写() 结合率[] 函数{} 一个表<*Math Fun*> 在c语言中使用math的函数(*Note*) 程序的注释#n 第n个参数## 所有参数rule& 把rule作用于后面的式子% 前一次的输出%% 倒数第二次的输出%n 第n个输出var::note 变量var的注释"Astring " 字符串Context ` 上下文a+b 加a-b 减a*b或a b 乘a/b 除a^b 乘方base^^num 以base为进位的数lhs&&rhs 且lhs||rhs 或!lha 非++,-- 自加1,自减1+=,-=,*=,/= 同C语言>,<,>=,<=,==,!= 逻辑判断(同c)lhs=rhs 立即赋值lhs:=rhs 建立动态赋值lhs:>rhs 建立替换规则lhs->rhs 建立替换规则expr//funname 相当于filename[expr]expr/.rule 将规则rule应用于exprexpr//.rule 将规则rule不断应用于expr知道不变为止param_ 名为param的一个任意表达式(形式变量)param__ 名为param的任意多个任意表达式(形式变量)二、系统常数Pi 3.1415....的无限精度数值E 2.17828...的无限精度数值Catalan 0.915966..卡塔兰常数EulerGamma 0.5772....高斯常数GoldenRatio 1.61803...黄金分割数Degree Pi/180角度弧度换算I 复数单位Infinity 无穷大-Infinity 负无穷大ComplexInfinity 复无穷大Indeterminate 不定式三、代数计算Expand[expr] 展开表达式Factor[expr] 展开表达式Simplify[expr] 化简表达式FullSimplify[expr] 将特殊函数等也进行化简PowerExpand[expr] 展开所有的幂次形式ComplexExpand[expr,{x1,x2...}] 按复数实部虚部展开FunctionExpand[expr] 化简expr中的特殊函数Collect[expr, x] 合并同次项Collect[expr, {x1,x2,...}] 合并x1,x2,...的同次项Together[expr] 通分Apart[expr] 部分分式展开Apart[expr, var] 对var的部分分式展开Cancel[expr] 约分ExpandAll[expr] 展开表达式ExpandAll[expr, patt] 展开表达式FactorTerms[poly] 提出共有的数字因子FactorTerms[poly, x] 提出与x无关的数字因子FactorTerms[poly, {x1,x2...}] 提出与xi无关的数字因子Coefficient[expr, form] 多项式expr中form的系数Coefficient[expr, form, n] 多项式expr中form^n的系数Exponent[expr, form] 表达式expr中form的最高指数Numerator[expr] 表达式expr的分子Denominator[expr] 表达式expr的分母ExpandNumerator[expr] 展开expr的分子部分ExpandDenominator[expr] 展开expr的分母部分TrigExpand[expr] 展开表达式中的三角函数TrigFactor[expr] 给出表达式中的三角函数因子TrigFactorList[expr] 给出表达式中的三角函数因子的表TrigReduce[expr] 对表达式中的三角函数化简TrigToExp[expr] 三角到指数的转化ExpToTrig[expr] 指数到三角的转化RootReduce[expr]ToRadicals[expr]Mathematica入门教程Mathematica的基本语法特征如果你是第一次使用Mathematica,那么以下几点请你一定牢牢记住:Mathematica中大写小写是有区别的,如Name、name、NAME等是不同的变量名或函数名。

(完整版)Mathematica入门教程含习题与答案

(完整版)Mathematica入门教程含习题与答案

Mathematica入门教程第1篇第1章MATHEMATICA概述 (3)1.1 M ATHEMATICA的启动与运行 (3)1.2 表达式的输入 (4)1.3 M ATHEMATICA的联机帮助系统 (6)第2章MATHEMATICA的基本量 (8)2.1 数据类型和常数 (8)2.2 变量 (10)2.3 函数 (11)2.4 表 (14)2.5 表达式 (17)2.6 常用的符号 (19)2.7 练习题 (19)第2篇第3章微积分的基本操作 (20)3.1 极限 (20)3.2 微分 (20)3.3 计算积分 (22)3.4 无穷级数 (24)3.5 练习题 (24)第4章微分方程的求解 (26)4.1 微分方程解 (26)4.2 微分方程的数值解 (26)4.3 练习题 (27)第3篇第5章MATHEMATICA的基本运算 (28)5.1 多项式的表示形式 (28)5.2 方程及其根的表示 (29)5.3 求和与求积 (32)5.4 练习题 (33)第6章函数作图 (35)6.1 基本的二维图形 (35)6.2 二维图形元素 (40)6.3 基本三维图形 (42)6.4 练习题 (46)第4篇第7章MATHEMATICA函数大全 (48)7.1 运算符和一些特殊符号,系统常数 (48)7.2 代数计算 (49)7.3 解方程 (50)7.4 微积分 (50)7.5 多项式函数 (51)7.6 随机函数 (52)7.7 数值函数 (52)7.8 表相关函数 (53)7.9 绘图函数 (54)7.10 流程控制 (57)第8章MATHEMATICA程序设计 (59)8.1 模块和块中的变量 (59)8.2 条件结构 (61)8.3 循环结构 (63)8.4 流程控制 (65)8.5 练习题 (67)--------------习题与答案在68页-------------------第1章Mathematica概述1.1 Mathematica的启动与运行Mathematica是美国Wolfram研究公司生产的一种数学分析型的软件,以符号计算见长,也具有高精度的数值计算功能和强大的图形功能。

Mathematica使用教程

Mathematica使用教程

Mathematica使⽤教程Mathematica 使⽤教程⼀、要点Mathematica 是⼀个敏感的软件. 所有的Mathematica 函数都以⼤写字母开头; 圆括号( ),花括号{ },⽅括号[ ]都有特殊⽤途, 应特别注意; 句号“.”,分号“;”,逗号“,”感叹号“!”等都有特殊⽤途, 应特别注意; ⽤主键盘区的组合键Shfit+Enter 或数字键盘中的Enter键执⾏命令.⼆、介绍案例1. 输⼊与输出例1 计算 1+1:在打开的命令窗⼝中输⼊1+2+3并按组合键Shfit+Enter 执⾏上述命令,则屏幕上将显⽰:In[1] : =1+2+3 Out[1] =6这⾥In[1] : = 表⽰第⼀个输⼊,Out[1]= 表⽰第⼀个输出,即计算结果.2. 数学常数Pi 表⽰圆周率π; E 表⽰⽆理数e; I 表⽰虚数单位i ; Degree 表⽰π/180; Infinity 表⽰⽆穷⼤.注:Pi,Degree,Infinity 的第⼀个字母必须⼤写,其后⾯的字母必须⼩写.3. 算术运算Mathematica 中⽤“+”、“-”、“*”、“/” 和“^”分别表⽰算术运算中的加、减、乘、除和乘⽅.例2 计算π+ --213121494891100.输⼊ 100^(1/4)*(1/9)^(-1/2)+8^(-1/3)*(4/9)^(1/2)*Pi则输出 3103π+这是准确值. 如果要求近似值,再输⼊N[%] 则输出这⾥%表⽰上⼀次输出的结果,命令N[%]表⽰对上⼀次的结果取近似值. 还⽤ %% 表⽰上上次输出的结果,⽤ %6表⽰Out[6]的输出结果.注:关于乘号*,Mathematica 常⽤空格来代替. 例如,x y z 则表⽰x*y*z,⽽xyz 表⽰字符串,Mathematica 将它理解为⼀个变量名. 常数与字符之间的乘号或空格可以省略.4. 代数运算例3 分解因式 232++x x输⼊ Factor[x^2+3x+2] 输出 )x 2)(x 1(++ 例4 展开因式 )2)(1(x x ++输⼊ Expand[(1+x)(2+x)] 输出 2x x 32++例5 通分 3122+++x x 输⼊ Together[1/(x+3)+2/(x+2)]输出 )x 3)(x 2(x38+++例6 将表达式)3)(2(38x x x+++ 展开成部分分式输⼊ Apart[(8+3x)/((2+x)(3+x))]输出 3x 12x 2+++ 例7 化简表达式 )3)(1()2)(1(x x x x +++++输⼊ Simplify[(1+x)(2+x)+(1+x)(3+x)]输出 2x 2x 75++三、部分函数1. 内部函数Mathematica 系统内部定义了许多函数,并且常⽤英⽂全名作为函数名,所有函数名的第⼀个字母都必须⼤写,后⾯的字母必须⼩写. 当函数名是由两个单词组成时,每个单词的第⼀个字母都必须⼤写,其余的字母必须⼩写. Mathematica 函数(命令)的基本格式为函数名[表达式,选项] 下⾯列举了⼀些常⽤函数:算术平⽅根x Sqrt[x] 指数函数x e Exp[x]对数函数x a log Log[a,x]对数函数x ln Log[x]三⾓函数 Sin[x], Cos[x], Tan[x], Cot[x], Sec[x], Csc[x] 反三⾓函数ArcSin[x], ArcCos[x], ArcTan[x], ArcCot[x], AsrcSec[x], ArcCsc[x]双曲函数 Sinh[x], Cosh[x], Tanh[x], 反双曲函数 ArcSinh[x], ArcCosh[x], ArcTanh[x] 四舍五⼊函数 Round[x] (*取最接近x 的整数*) 取整函数 Floor[x] (*取不超过x 的最⼤整数*) 取模 Mod[m,n] (*求m/n 的模*) 取绝对值函数 Abs[x] n 的阶乘 n! 符号函数Sign[x] 取近似值 N[x,n] (*取x 的有n 位有效数字的近似值,当n 缺省时,n 的默认值为6*)例8 求π的有6位和20位有效数字的近似值.输⼊ N[Pi] 输出输⼊ N[Pi, 20] 输出注:第⼀个输⼊语句也常⽤另⼀种形式:输⼊ Pi235] 输出 (3) 输⼊ Round[] 输出 -2 例10 计算表达式)6.0arctan(226sin 2ln 1132+-+-e π的值输⼊ 1/(1+Log[2])*Sin[Pi/6]-Exp[-2]/(2+2^(2/3))*ArcTan[.6] 输出2. ⾃定义函数在Mathematica 系统内,由字母开头的字母数字串都可⽤作变量名,但要注意其中不能包含空格或标点符号.变量的赋值有两种⽅式. ⽴即赋值运算符是“=”,延迟赋值运算符是“: =”. 定义函数使⽤的符号是延迟赋值运算符“: =”.例11 定义函数 12)(23++=x x x f ,并计算)2(f ,)4(f ,)6(f . 输⼊Clear[f,x]; (*清除对变量f 原先的赋值*) f[x_]:=x^3+2*x^2+1; (*定义函数的表达式*) f[2] (*求)2(f 的值*)f[x]/.{x->4} (*求)4(f 的值,另⼀种⽅法*)x=6; (*给变量x ⽴即赋值6*)f[x] (*求)6(f 的值,⼜⼀种⽅法*)输出17 97 289注:本例1、2、5⾏的结尾有“;”,它表⽰这些语句的输出结果不在屏幕上显⽰.四、解⽅程在Mathematica 系统内,⽅程中的等号⽤符号“==”表⽰. 最基本的求解⽅程的命令为 Solve[eqns, vars]它表⽰对系数按常规约定求出⽅程(组)的全部解,其中eqns 表⽰⽅程(组),vars 表⽰所求未知变量. 例12 解⽅程0232=++x x 输⼊Solve[x^2+3x+2==0, x] 输出 }}1x {},2x {{-→-→例13 解⽅程组 =+=+1dy cx by ax输⼊ Solve[{a x + b y == 0,c x + d y ==1}, {x,y}]输出+-→-→ad bc a y ,ad bc b x例14 解⽆理⽅程a x x =++-11输⼊ Solve[Sqrt[x-1]+ Sqrt[x+1] == a, x]输出 ??+→24a 4a 4x 很多⽅程是根本不能求出准确解的,此时应转⽽求其近似解. 求⽅程的近似解的⽅法有两种,⼀种是在⽅程组的系数中使⽤⼩数,这样所求的解即为⽅程的近似解;另⼀种是利⽤下列专门⽤于求⽅程(组)数值解的命令: NSolve[eqns, vars] (*求代数⽅程(组)的全部数值解*)FindRoot[eqns, {x, x0}, {y, y0} ,]后⼀个命令表⽰从点),,(00 y x 出发找⽅程(组)的⼀个近似解,这时常常需要利⽤图像法先⼤致确定所求根的范围,是⼤致在什么点的附近.例15 求⽅程013=-x 的近似解输⼊ NSolve[x^3-1== 0, x]输出 {{→x →x →x 输⼊ FindRoot[x^3-1==0,{x, .5}] 输出 {→x 1.}下⾯再介绍⼀个很有⽤的命令:Eliminate[eqns, elims] (*从⼀组等式中消去变量(组)elims*) 例16从⽅程组 ??=+=-+-+=++11)1()1(1222222y x z y x z y x 消去未知数y 、z .输⼊Eliminate[{x^2+y^2+z^2 ==1,x^2+(y-1)^2 + (z-1)^2 ==1, x + y== 1},{y, z}]输出 0x 3x 22==+-注:上⾯这个输⼊语句为多⾏语句,它可以像上⾯例⼦中那样在⾏尾处有逗号的地⽅将⾏与⾏隔开, 来迫使Mathematica 从前⼀⾏继续到下⼀⾏在执⾏该语句. 有时候多⾏语句的意义不太明确,通常发⽣在其中有⼀⾏本⾝就是可执⾏的语句的情形,此时可在该⾏尾放⼀个继续的记号“\”, 来迫使Mathematica 继续到下⼀⾏再执⾏该语句.五、保存与退出Mathematica 很容易保存Notebook 中显⽰的内容,打开位于窗⼝第⼀⾏的File 菜单,点击Save 后得到保存⽂件时的对话框,按要求操作后即可把所要的内容存为 *.nb ⽂件. 如果只想保存全部输⼊的命令,⽽不想保存全部输出结果,则可以打开下拉式菜单Kernel,选中Delete All Output,然后再执⾏保存命令. ⽽退出Mathematica 与退出Word 的操作是⼀样的.六、查询与帮助查询某个函数(命令)的基本功能,键⼊“函数名”,想要了解更多⼀些,键⼊“函数名”,例如,输⼊Plot则输出Plot[f,{x,xmin,xmax}] generates a plot of f as a functionof x from xmin to xmax. Plot[{f1,f2,…},{x,xmin,xmax}] plots several functions fi 它告诉了我们关于绘图命令“Plot”的基本使⽤⽅法.例17 在区间]1,1y=的图形.[-上作出抛物线2x输⼊ Plot[x^2,{x,-1,1}]则输出例18 .输⼊ Plot[{Sin[x],Cos[x]},{x,0,2Pi}]则输出Plot则Mathematica会输出关于这个命令的选项的详细说明,请读者试之.此外,Mathematica的Help菜单中提供了⼤量的帮助信息,其中Help菜单中的第⼀项Help Browser(帮助游览器)是常⽤的查询⼯具,读者若想了解更多的使⽤信息,则应⾃⼰通过Help菜单去学习.编辑本段Mathematica 基本运算a+mathematica数学实验(第2版) b+c 加a-b 减a b c 或 a*b*c 乘a/b 除-a 负号a^b 次⽅Mathematica 数字的形式256 整数实数11/35 分数2+6I 复数常⽤的数学常数Pi 圆周率,π=…E 尤拉常数,e=2.…Degree ⾓度转换弧度的常数,Pi/180I 虚数,其值为√-1Infinity ⽆限⼤指定之前计算结果的⽅法% 前⼀个运算结果%% 前⼆个运算结果%%…%(n个%) 前n个运算结果%n 或 Out[n] 前n个运算结果复数的运算指令a+bI 复数Conjugate[a+bI] 共轭复数Re[z], Im[z] 复数z的实数/虚数部分Abs[z] 复数z的⼤⼩或模数(Modulus)Arg[z] 复数z的幅⾓(Argument)Mathematica 输出的控制指令expr1; expr2; expr3 做数个运算,但只印出最後⼀个运算的结果expr1; expr2; expr3; 做数个运算,但都不印出结果expr; 做运算,但不印出结果编辑本段常⽤数学函数Sin[x],Cos[x],Tan[x],Cot[x],Sec[x],Csc[x] 三⾓函数,其引数的单位为弪度Sinh[x],Cosh[x],Tanh[x],… 双曲函数ArcSin[x],ArcCos[x],ArcTan[x] 反三⾓函数ArcCot[x],ArcSec[x],ArcCsc[x]ArcSinh[x],ArcCosh[x],ArcTanh[x],… 反双曲函数Sqrt[x] 根号Exp[x] 指数Log[x] ⾃然对数Log[a,x] 以a为底的对数Abs[x] 绝对值Round[x] 最接近x的整数Floor[x] ⼩於或等於x的最⼤整数Ceiling[x] ⼤於或等於x的最⼩整数Mod[a,b] a/b所得的馀数n! 阶乘Random[] 0⾄1之间的随机数(最新版本已经不⽤这个函数,改为使⽤RandomReal[])Max[a,b,c,...],Min[a,b,c,…] a,b,c,…的极⼤/极⼩值编辑本段数之设定x=a 将变数x的值设为ax=y=b 将变数x和y的值均设为bx=. 或 Clear[x] 除去变数x所存的值变数使⽤的⼀些法则xy 中间没有空格,视为变数xyx y x乘上y3x 3乘上xx3 变数x3x^2y 为 x^2 y次⽅运算⼦⽐乘法的运算⼦有较⾼的处理顺序编辑本段四个常⽤处理代数的指令Expand[expr] 将 expr展开Factor[expr] 将 expr因式分解Simplify[expr] 将 expr化简成精简的式⼦FullSimplify[expr] Mathematica 会尝试更多的化简公式,将 expr化成更精简的式⼦编辑本段多项式/分式转换的函数ExpandAll[expr] 把算是全部展开Together[expr] 将 expr各项通分在并成⼀项Apart[expr] 把分式拆开成数项分式的和Apart[expr,var] 视var以外的变数为常数,将 expr拆成数项的和Cancel[expr] 把分⼦和分母共同的因⼦消去编辑本段分母/分⼦的运算Denominator[expr] 取出expr的分母Numerator[expr] 取出expr的分⼦ExpandDenominator[expr] 展开expr的分母ExpandNumerator[expr] 展开expr的分⼦编辑本段多项式的另⼆种转换函数Collect[expr,x] 将 expr表⽰成x的多项式,如Collect[expr,{x,y,…}] 将 expr分别表⽰成 x,y,…的多项式FactorTerms[expr] 将 expr的数值因⼦提出,如 4x+2=2(2x+1)FactorTerms[expr,x] 将 expr中把所有不包含x项的因⼦提出FactorTerms[expr,{x,y,…}] 将 expr中把所有不包含{x,y,...}项的因⼦提出编辑本段三⾓函数、双曲函数和指数的运算TrigExpand[expr] 将三⾓函数展开TrigFactor[expr] 将三⾓函数所组成的数学式因式分解TrigReduce[expr] 将相乘或次⽅的三⾓函数化成⼀次⽅的基本三⾓函数之组合ExpToTrig[expr] 将指数函数化成三⾓函数或双曲函数TrigToExp[expr] 将三⾓函数或双曲函数化成指数函数复数、次⽅乘积之展开ComplexExpand[expr] 假设所有的变数都是实数来对 expr展开ComplexExpand[expr,{x,y,…}] 假设x,y,..等变数均为复数来对 expr展开PowerExpand[expr] 将多项式项次、系数与最⾼次⽅之取得Coefficient[expr,form] 於 expr中form的系数Exponent[expr,form] 於 expr中form的最⾼次⽅Part[expr,n] 或 expr[[n]] 在 expr项中第n个项代换运算⼦expr/.x->value 将 expr⾥所有的x均代换成valueexpr/.{x->value1,y->value2,…} 执⾏数个不同变数的代换expr/.{{x->value1},{x->value2},…} 将 expr代⼊不同的x值expr清除f的定义Remove[f] 将f⾃系统中清除掉含有预设值的Patterna_+b_. b的预设值为0,即若b从缺,则b以0代替x_ y_ y的预设值为1x_^y_ y的预设值为1条件式的⾃订函数lhs:=rhs/;condition 当condition成⽴时,lhs才会定义成rhsIf指令If[test,then,else] 若test为真,则回应then,否则回应elseIf[test,then,else,unknow] 同上,若test⽆法判定真或假时,则回应unknow 极限Limit[expr,x->c] 当x趋近c时,求expr的极限Limit[expr,x->c,Direction->1]Limit[expr,x->c,Direction->-1]微分D[f,x] 函数f对x作微分D[f,x1,x2,…] 函数f对x1,x2,…作微分D[f,{x,n}] 函数f对x微分n次D[f,x,NonConstants->{y,z,…}] 函数f对x作微分,将y,z,…视为x的函数全微分Dt[f] 全微分dfDt[f,x] 全微分Dt[f,x1,x2,…] 全微分Dt[f,x,Constants->{c1,c2,…}] 全微分,视c1,c2,…为常数不定积分Integrate[f,x] 不定积分∫f dx定积分Integrate[f,{x,xmin,xmax}] 定积分Integrate[f,{x,xmin,xmax},{y,ymin,ymax}] 定积分数列之和与积Sum[f,{i,imin,imax}] 求和Sum[f,{i,imin,imax,di}] 求数列和,引数i以di递增Sum[f,{i,imin,imax},{j,jmin,jmax}]Product[f,{i,imin,imax}] 求积Product[f,{i,imin,imax,di}] 求数列之积,引数i以di递增Product[f,{i,imin,imax},{j,jmin,jmax}]函数之泰勒展开式Series[expr,{x,x0,n}] 对 expr於x0点作泰勒级数展开⾄(x-x0)n项Series[expr,{x,x0,m},{y,y0,n}] 对x0和y0展开关系运算⼦a==b 等於a>b ⼤於a>=b ⼤於等於aa<=b ⼩於等於a!=b 不等於逻辑运算⼦!p notp||q||… orp&&q&&… andXor[p,q,…] exclusive orLogicalExpand[expr] 将逻辑表⽰式展开基本⼆维绘图指令Plot[f,{x,xmin,xmax}]画出f在xmin到xmax之间的图形Plot[{f1,f2,…},{x,xmin,xmax}]同时画出数个函数图形Plot[f,{x,xmin,xmax},option->value]指定特殊的绘图选项,画出函数f的图形Plot[]⼏种常⽤选项的指令选项预设值说明AspectRatio 1/GoldenRatio 图形⾼和宽之⽐例,⾼/宽Axes True 是否把坐标轴画出AxesLabel Automatic 为坐标轴贴上标记,若设定为AxesLabel->{ylabel},则为y轴之标记。

Mathematica软件使用教程函数式编程

Mathematica软件使用教程函数式编程

Mathematica软件使用教程函数式编程Mathematica软件的函数式编程本文由陆宇撰写,中国科学软件网发布【前言】作为Mathematica的开发商,Wolfram公司近几年致力于将其作为一门编程语言进行推广(这也是Wolfram公司改称Mathematica为Wolfram Language的原因,本文仍沿用旧称)。

如今也已经有了不少优秀的介绍Mathematica编程的书籍,例如《Power Programming with Mathematica》、《Mathematica Programming:An AdvancedIntroduction》、《An Elementary Introduction to the Wolfram Language》。

尽管如此,但按照笔者经验,对于不少人来说,Mathematica还是很难上手,其独特的编程风格仍然很难适应。

由于使用方法不当(甚至是道听途说)造成了一个广泛的误解:“Mathematic a就是一个高级计算器,推推公式什么的还可以,遇到实际问题就不行了。

”笔者回顾自己自学Mathematica的经历,也走过不少弯路,期间也不乏有如上那样的误解。

作为“过来人”,笔者也对一些人在学习Mathematica过程中遇到的瓶颈也深有体会。

本文就是从一个“过来人”的角度谈谈对Mathematica中函数式编程的理解。

笔者认为有些不恰当的前概念会阻碍Mathematica的学习。

数学上认识的局限性,甚至是一些其他编程语言的“经验”,都有可能是阻碍学习Mathematica的症结所在。

而对这些非技术方面的“意识”角度的探讨,现阶段的资料中还比较缺乏。

原因之一也许是内容比较“虚”,不易做到“言之有物”。

笔者认为探讨这些“虚”的问题,还是通过举例子的方式为好。

本文的主线不是解决某个具体的编程问题,而是围绕一些笔者认为重要的观念进行举例阐释,体现出Mathematica的精妙设计之处,希望能对读者有所启发。

Mathematica 软件使用简介

Mathematica 软件使用简介

Mathematica 软件使用简介Mathematica 是一个功能强大的常用数学软件, 它是由美国物理学家Stephen Wolfram领导的Wolfram Research公司用C语言开发的数学系统软件。

不但可以解决数学中的数值计算问题, 还可以解决符号演算问题, 并且能够方便地绘出各种函数图形。

这里介绍的命令可以适用于Windows操作系统的Mathematica2.2以上版本运行。

一、Mathematica 的进入/退出如果你的计算机已经安装了Mathematica 软件, 系统会在Windows【开始】菜单的【程序】子菜单中加入启动Mathematica命令的图标:图1.1 启动Mathematica用鼠标单击它就可以启动Mathematica系统进入Mathematica系统工作界面:图1.2 Mathematica2.2工作界面图图1.3 Mathematica4.0工作界面图Mathematica系统工作界面是基于Windows 环境下的Mathematica 函数或程序运行与结果显示的图形用户接口, 是Mathematica的工作屏幕。

界面上方的主菜单和工具条的功能类似于Windows中的Word软件。

其中的空白位置称为Notebook用户区, 在这里可以输入文本、实际的Mathematica命令和程序等来达到使用Mathematica的目的。

在用户区输入的内容被 Mathematica用一个具有扩展名为“.ma”(Mathematica2.2)或“.mb”(Mathematica4.0)在的文件名来纪录,该文件名是退出Mathematica时保存在用户区输入内容的默认文件名,一般是文件名:“Newn b-1.ma”或“Newnb-1.mb”。

退出Mathematica系统像关闭一个Word文件一样, 只要用鼠标点击Mathematica系统集成界面右上角的关闭按钮即可。

关闭前, 屏幕会出现一个对话框, 询问是否保存用户区的内容, 如果单击对话框的“否(N)”按钮, 则关闭Notebook窗口, 退出Mathematica系统; 如果单击对话框的“是(Y)”按钮, 则先提示你用一个具有扩展名为 .ma或.mb的文件名来保存用户区内的内容, 再退出Mathematica系统。

实验四利用Mathematica解方程实验目的:学会正确使用Solve和FindRoot及

实验四利用Mathematica解方程实验目的:学会正确使用Solve和FindRoot及

注:
1)在Mathematica中用“=”表示相等关系, 用“==”表示方程
2)对于高次多项式方程,有时系统也求不出 精确解这时可直接用DSolve求出它的数值解。 例:NSolve[x^5-x^3-6*x^2+1==0,x,20], 命令行中的20表示要求方程的解精确到小数点 以后20位,可根据需要输入。
实验四 利用Mathematica解方程
实验目的:学会正确使用Solve和FindRoot及 DSolve解各类方程 预备知识:
(一)理解方程(方程组)的代数解法 (二)解方程的牛顿切线法及弦截法 (三)微分方程相关知识 (四)Mathematica中解各类方程及方程
组的相关命令
边学边做:
(一)求方程(方程组)的代数解或数值解: Solve[方程或方程组,变量或变量组], NSolve [方程或方程组,变量或变量组]
(4)一电动机运转后,每秒钟温度升高1°C,设室内温 度为15°C,电动机温度的冷却速率和电动机与室 内温差成正比,求电动机的温度与时间的关系.
实验四内容详解: 一、用Solve解代数方程、方程组,求其精确解,
数值解,复数解 1.命令格式 Solve[单个方程,未知元] Solve[{方程组},{未知元表}] 2.边学边做 Solve[a*x+b==0,x]; Solve[x^2+x+1==0,x] Solve[x^4-x^3-6*x^2+1==0,x] a=(1+2*x)^3;b=(3+2*x+y)^4; Solve[a==0,b==0,{x,y}]
(4)求微分方程
x
y
y 的co通st 解 x sin t
解 DSolve[{x’[t]+y’[t]==Cos[t],

Mathematica函数及使用方法

Mathematica函数及使用方法

Mathematica函数及使用方法(来源:北峰数模)--------------------------------------------------------------------- 注:为了对Mathematica有一定了解的同学系统掌握Mathematica的强大功能,我们把它的一些资料性的东西整理了一下,希望能对大家有所帮助。

---------------------------------------------------------------------一、运算符及特殊符号Line1; 执行Line,不显示结果Line1,line2 顺次执行Line1,2,并显示结果name 关于系统变量name的信息name 关于系统变量name的全部信息!command 执行Dos命令n! N的阶乘!!filename 显示文件内容< Expr>> filename 打开文件写Expr>>>filename 打开文件从文件末写() 结合率[] 函数{} 一个表<*Math Fun*> 在c语言中使用math的函数(*Note*) 程序的注释#n 第n个参数## 所有参数rule& 把rule作用于后面的式子% 前一次的输出%% 倒数第二次的输出%n 第n个输出var::note 变量var的注释"Astring " 字符串Context ` 上下文a+b 加a-b 减a*b或a b 乘a/b 除a^b 乘方base^^num 以base为进位的数lhs&&rhs 且lhs||rhs 或!lha 非++,-- 自加1,自减1+=,-=,*=,/= 同C语言>,<,>=,<=,==,!= 逻辑判断(同c)lhs=rhs 立即赋值lhs:=rhs 建立动态赋值lhs:>rhs 建立替换规则lhs->rhs 建立替换规则exprule 将规则rule应用于exprexpr..的无限精度数值E ...的无限精度数值Catalan ..卡塔兰常数EulerGamma ....高斯常数GoldenRatio ...黄金分割数Degree Pi/180角度弧度换算I 复数单位Infinity 无穷大-Infinity 负无穷大ComplexInfinity 复无穷大Indeterminate 不定式—————————————————————————————————————三、代数计算Expand[expr] 展开表达式Factor[expr] 展开表达式Simplify[expr] 化简表达式FullSimplify[expr] 将特殊函数等也进行化简PowerExpand[expr] 展开所有的幂次形式ComplexExpand[expr,{x1,x2...}] 按复数实部虚部展开FunctionExpand[expr] 化简expr中的特殊函数Collect[expr, x] 合并同次项Collect[expr, {x1,x2,...}] 合并x1,x2,...的同次项Together[expr] 通分Apart[expr] 部分分式展开Apart[expr, var] 对var的部分分式展开Cancel[expr] 约分ExpandAll[expr] 展开表达式ExpandAll[expr, patt] 展开表达式FactorTerms[poly] 提出共有的数字因子FactorTerms[poly, x] 提出与x无关的数字因子FactorTerms[poly, {x1,x2...}] 提出与xi无关的数字因子Coefficient[expr, form] 多项式expr中form的系数Coefficient[expr, form, n] 多项式expr中form^n的系数Exponent[expr, form] 表达式expr中form的最高指数Numerator[expr] 表达式expr的分子Denominator[expr] 表达式expr的分母ExpandNumerator[expr] 展开expr的分子部分ExpandDenominator[expr] 展开expr的分母部分TrigExpand[expr] 展开表达式中的三角函数TrigFactor[expr] 给出表达式中的三角函数因子TrigFactorList[expr] 给出表达式中的三角函数因子的表TrigReduce[expr] 对表达式中的三角函数化简TrigToExp[expr] 三角到指数的转化ExpToTrig[expr] 指数到三角的转化RootReduce[expr]ToRadicals[expr]—————————————————————————————————————四、解方程Solve[eqns, vars] 从方程组eqns中解出varsSolve[eqns, vars, elims] 从方程组eqns中削去变量elims,解出varsDSolve[eqn, y, x] 解微分方程,其中y是x的函数DSolve[{eqn1,eqn2,...},{y1,y2...},x]解微分方程组,其中yi是x的函数DSolve[eqn, y, {x1,x2...}] 解偏微分方程Eliminate[eqns, vars] 把方程组eqns中变量vars约去SolveAlways[eqns, vars] 给出等式成立的所有参数满足的条件Reduce[eqns, vars] 化简并给出所有可能解的条件LogicalExpand[expr] 用&&和||将逻辑表达式展开InverseFunction[f] 求函数f的逆函数Root[f, k] 求多项式函数的第k个根Roots[lhs==rhs, var] 得到多项式方程的所有根—————————————————————————————————————五、微积分函数D[f, x] 求f[x]的微分D[f, {x, n}] 求f[x]的n阶微分D[f,x1,x2..] 求f[x]对x1,x2...偏微分Dt[f, x] 求f[x]的全微分df/dxDt[f] 求f[x]的全微分dfDt[f, {x, n}] n阶全微分df^n/dx^nDt[f,x1,x2..] 对x1,x2..的偏微分Integrate[f, x] f[x]对x在的不定积分Integrate[f, {x, xmin, xmax}] f[x]对x在区间(xmin,xmax)的定积分Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}] f[x,y]的二重积分Limit[expr, x->x0] x趋近于x0时expr的极限Residue[expr, {x,x0}] expr在x0处的留数Series[f, {x, x0, n}] 给出f[x]在x0处的幂级数展开Series[f, {x, x0,nx}, {y, y0, ny}]先对y幂级数展开,再对xNormal[expr] 化简并给出最常见的表达式SeriesCoefficient[series, n] 给出级数中第n次项的系数SeriesCoefficient[series, {n1,n2...}]'或Derivative[n1,n2...][f] 一阶导数InverseSeries[s, x] 给出逆函数的级数ComposeSeries[serie1,serie2...] 给出两个基数的组合SeriesData[x,x0,{a0,a1,..},nmin,nmax,den]表示一个在x0处x的幂级数,其中ai为系数O[x]^n n阶小量x^nO[x, x0]^n n阶小量(x-x0)^n—————————————————————————————————————八、数值函数N[expr] 表达式的机器精度近似值N[expr, n] 表达式的n位近似值,n为任意正整数NSolve[lhs==rhs, var] 求方程数值解NSolve[eqn, var, n] 求方程数值解,结果精度到n位NDSolve[eqns, y, {x, xmin, xmax}]微分方程数值解NDSolve[eqns, {y1,y2,...}, {x, xmin, xmax}]微分方程组数值解FindRoot[lhs==rhs, {x,x0}] 以x0为初值,寻找方程数值解FindRoot[lhs==rhs, {x, xstart, xmin, xmax}]NSum[f, {i,imin,imax,di}] 数值求和,di为步长NSum[f, {i,imin,imax,di}, {j,..},..] 多维函数求和NProduct[f, {i, imin, imax, di}]函数求积NIntegrate[f, {x, xmin, xmax}] 函数数值积分优化函数:FindMinimum[f, {x,x0}] 以x0为初值,寻找函数最小值FindMinimum[f, {x, xstart, xmin, xmax}]ConstrainedMin[f,{inequ},{x,y,..}]inequ为线性不等式组,f为x,y..之线性函数,得到最小值及此时的x,y..取值ConstrainedMax[f, {inequ}, {x, y,..}]同上LinearProgramming[c,m,b] 解线性组合在>=b&&x>=0约束下的最小值,x,b,c为向量,m为矩阵LatticeReduce[{v1,v2...}] 向量组vi的极小无关组数据处理:Fit[data,funs,vars]用指定函数组对数据进行最小二乘拟和data可以为{{x1,y1,..f1},{x2,y2,..f2}..}多维的情况emp: Fit[{,12,,}, {1, x, x^2,Sin[x]}, x]Interpolation[data]对数据进行差值,data同上,另外还可以为{{x1,{f1,df11,df12}},{x2,{f2,.}..}指定各阶导数InterpolationOrder默认为3次,可修改ListInterpolation[array]对离散数据插值,array可为n维ListInterpolation[array,{{xmin,xmax},{ymin,ymax},..}] FunctionInterpolation[expr,{x,xmin,xmax}, {y,ymin,ymax},..]以对应expr[xi,yi]的为数据进行插值Fourier[list] 对复数数据进行付氏变换InverseFourier[list] 对复数数据进行付氏逆变换Min[{x1,x2...},{y1,y2,...}]得到每个表中的最小值Max[{x1,x2...},{y1,y2,...}]得到每个表中的最大值Select[list, crit] 将表中使得crit为True的元素选择出来Count[list, pattern] 将表中匹配模式pattern的元素的个数Sort[list] 将表中元素按升序排列Sort[list,p] 将表中元素按p[e1,e2]为True的顺序比较list的任两个元素e1,e2,实际上Sort[list]中默认p=Greater集合论:Union[list1,list2..] 表listi的并集并排序Intersection[list1,list2..] 表listi的交集并排序Complement[listall,list1,list2...]从全集listall中对listi的差集—————————————————————————————————————九、虚数函数Re[expr] 复数表达式的实部Im[expr] 复数表达式的虚部Abs[expr] 复数表达式的模Arg[expr] 复数表达式的辐角Conjugate[expr] 复数表达式的共轭—————————————————————————————————————十、数的头及模式及其他操作Integer _Integer 整数Real _Real 实数Complex _Complex 复数Rational_Rational 有理数(*注:模式用在函数参数传递中,如MyFun[Para1_Integer,Para2_Real]规定传入参数的类型,另外也可用来判断If[Head[a]==Real,...]*) IntegerDigits[n,b,len] 数字n以b近制的前len个码元RealDigits[x,b,len] 类上FromDigits[list] IntegerDigits的反函数Rationalize[x,dx] 把实数x有理化成有理数,误差小于dxChop[expr, delta] 将expr中小于delta的部分去掉,dx默认为10^-10 Accuracy[x] 给出x小数部分位数,对于Pi,E等为无限大Precision[x] 给出x有效数字位数,对于Pi,E等为无限大SetAccuracy[expr, n] 设置expr显示时的小数部分位数SetPrecision[expr, n] 设置expr显示时的有效数字位数—————————————————————————————————————十一、区间函数Interval[{min, max}] 区间[min, max](* Solve[3 x+2==Interval[{-2,5}],x]*) IntervalMemberQ[interval, x] x在区间内吗IntervalMemberQ[interval1,interval2] 区间2在区间1内吗IntervalUnion[intv1,intv2...] 区间的并IntervalIntersection[intv1,intv2...] 区间的交—————————————————————————————————————十二、矩阵操作或Dot[a, b, c] 矩阵、向量、张量的点积Inverse[m] 矩阵的逆Transpose[list] 矩阵的转置Transpose[list,{n1,n2..}]将矩阵list 第k行与第nk列交换Det[m] 矩阵的行列式Eigenvalues[m] 特征值Eigenvectors[m] 特征向量Eigensystem[m] 特征系统,返回{eigvalues,eigvectors}LinearSolve[m, b] 解线性方程组==bNullSpace[m] 矩阵m的零空间,即[m]==零向量RowReduce[m] m化简为阶梯矩阵Minors[m, k] m的所有k*k阶子矩阵的行列式的值(伴随阵,好像是) MatrixPower[mat, n] 阵mat自乘n次Outer[f,list1,list2..] listi中各个元之间相互组合,并作为f的参数的到的矩阵Outer[Times,list1,list2]给出矩阵的外积SingularValues[m] m的奇异值,结果为{u,w,v},m=Conjugate[Transpose[u]].DiagonalMatrix[w].vPseudoInverse[m] m的广义逆QRDecomposition[m] QR分解SchurDecomposition[m] Schur分解LUDecomposition[m] LU分解—————————————————————————————————————十三、表函数(*“表”,我认为是Mathematica中最灵活的一种数据类型*)(*实际上表就是表达式,表达式也就是表,所以下面list==expr *)(*一个表中元素的位置可以用于一个表来表示*)表的生成{e1,e2,...} 一个表,元素可以为任意表达式,无穷嵌套Table[expr,{imax}] 生成一个表,共imax个元素Table[expr,{i, imax}] 生成一个表,共imax个元素expr[i] Table[expr,{i,imin,imax},{j,jmin,jmax},..] 多维表Range[imax] 简单数表{1,2,..,imax}Range[imin, imax, di] 以di为步长的数表Array[f, n] 一维表,元素为f[i] (i从1到n)Array[f,{n1,n2..}] 多维表,元素为f[i,j..] (各自从1到ni) IdentityMatrix[n] n阶单位阵DiagonalMatrix[list] 对角阵元素操作Part[expr, i]或expr[[i]]第i个元expr[[-i]] 倒数第i个元expr[[i,j,..]] 多维表的元expr[[{i1,i2,..}] 返回由第i(n)的元素组成的子表First[expr] 第一个元Last[expr] 最后一个元Head[expr] 函数头,等于expr[[0]]Extract[expr, list] 取出由表list制定位置上expr的元素值Take[list, n] 取出表list前n个元组成的表Take[list,{m,n}] 取出表list从m到n的元素组成的表Drop[list, n] 去掉表list前n个元剩下的表,其他参数同上Rest[expr] 去掉表list第一个元剩下的表Select[list, crit] 把crit作用到每一个list的元上,为True的所有元组成的表表的属性Length[expr] expr第一曾元素的个数Dimensions[expr] 表的维数返回{n1,n2..},expr为一个n1*n2...的阵TensorRank[expr] 秩Depth[expr] expr最大深度Level[expr,n] 给出expr中第n层子表达式的列表Count[list, pattern] 满足模式的list中元的个数MemberQ[list, form] list中是否有匹配form的元FreeQ[expr, form] MemberQ的反函数Position[expr, pattern] 表中匹配模式pattern的元素的位置列表Cases[{e1,e2...},pattern]匹配模式pattern的所有元素ei的表表的操作Append[expr, elem] 返回在表expr的最后追加elem元后的表Prepend[expr, elem] 返回在表expr的最前添加elem元后的表Insert[list, elem, n] 在第n元前插入elemInsert[expr,elem,{i,j,..}]在元素expr[[{i,j,..}]]前插入elemDelete[expr, {i, j,..}] 删除元素expr[[{i,j,..}]]后剩下的表DeleteCases[expr,pattern]删除匹配pattern的所有元后剩下的表ReplacePart[expr,new,n] 将expr的第n元替换为newSort[list] 返回list按顺序排列的表Reverse[expr] 把表expr倒过来RotateLeft[expr, n] 把表expr循环左移n次RotateRight[expr, n] 把表expr循环右移n次Partition[list, n] 把list按每n各元为一个子表分割后再组成的大表Flatten[list] 抹平所有子表后得到的一维大表Flatten[list,n] 抹平到第n层Split[list] 把相同的元组成一个子表,再合成的大表FlattenAt[list, n] 把list[[n]]处的子表抹平Permutations[list] 由list的元素组成的所有全排列的列表Order[expr1,expr2] 如果expr1在expr2之前返回1,如果expr1在expr2之后返回-1,如果expr1与expr2全等返回0Signature[list] 把list通过两两交换得到标准顺序所需的交换次数(排列数)以上函数均为仅返回所需表而不改变原表AppendTo[list,elem] 相当于list=Append[list,elem];PrependTo[list,elem] 相当于list=Prepend[list,elem];--—————————————————————————————————————十四、绘图函数二维作图Plot[f,{x,xmin,xmax}] 一维函数f[x]在区间[xmin,xmax]上的函数曲线Plot[{f1,f2..},{x,xmin,xmax}] 在一张图上画几条曲线ListPlot[{y1,y2,..}] 绘出由离散点对(n,yn)组成的图ListPlot[{{x1,y1},{x2,y2},..}] 绘出由离散点对(xn,yn)组成的图ParametricPlot[{fx,fy},{t,tmin,tmax}] 由参数方程在参数变化范围内的曲线ParametricPlot[{{fx,fy},{gx,gy},...},{t,tmin,tmax}]在一张图上画多条参数曲线选项:PlotRange->{0,1} 作图显示的值域范围AspectRatio->1/GoldenRatio生成图形的纵横比PlotLabel ->label 标题文字Axes ->{False,True} 分别制定是否画x,y轴AxesLabel->{xlabel,ylabel}x,y轴上的说明文字Ticks->None,Automatic,fun用什么方式画轴的刻度AxesOrigin ->{x,y} 坐标轴原点位置AxesStyle->{{xstyle}, {ystyle}}设置轴线的线性颜色等属性Frame ->True,False 是否画边框FrameLabel ->{xmlabel,ymlabel,xplabel,yplabel}边框四边上的文字FrameTicks同Ticks 边框上是否画刻度GridLines 同Ticks 图上是否画栅格线FrameStyle ->{{xmstyle},{ymstyle}设置边框线的线性颜色等属性ListPlot[data,PlotJoined->True] 把离散点按顺序连线PlotSytle->{{style1},{style2},..}曲线的线性颜色等属性PlotPoints->15 曲线取样点,越大越细致三维作图Plot3D[f,{x,xmin,xmax}, {y,ymin,ymax}]二维函数f[x,y]的空间曲面Plot3D[{f,s}, {x,xmin,xmax}, {y,ymin,ymax}]同上,曲面的染色由s[x,y]值决定ListPlot3D[array] 二维数据阵array的立体高度图ListPlot3D[array,shades]同上,曲面的染色由shades[数据]值决定ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax}]二元数方程在参数变化范围内的曲线ParametricPlot3D[{{fx,fy,fz},{gx,gy,gz},...},{t,tmin,tmax}]多条空间参数曲线选项:ViewPoint ->{x,y,z} 三维视点,默认为{,,2}Boxed -> True,False 是否画三维长方体边框BoxRatios->{sx,sy,sz} 三轴比例BoxStyle 三维长方体边框线性颜色等属性Lighting ->True 是否染色LightSources->{s1,s2..} si为某一个光源si={{dx,dy,dz},color} color为灯色,向dx,dy,dz方向照射AmbientLight->颜色函数慢散射光的光源Mesh->True,False 是否画曲面上与x,y轴平行的截面的截线MeshStyle 截线线性颜色等属性MeshRange->{{xmin,xmax}, {ymin,ymax}}网格范围ClipFill->Automatic,None,color,{bottom,top}指定图形顶部、底部超界后所画的颜色Shading ->False,True 是否染色HiddenSurface->True,False 略去被遮住不显示部分的信息等高线ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}]二维函数f[x,y]在指定区间上的等高线图ListContourPlot[array] 根据二维数组array数值画等高线选项:Contours->n 画n条等高线Contours->{z1,z2,..} 在zi处画等高线ContourShading -> False 是否用深浅染色ContourLines -> True 是否画等高线ContourStyle -> {{style1},{style2},..}等高线线性颜色等属性FrameTicks 同上密度图DensityPlot[f,{x,xmin,xmax},{y,ymin,ymax}]二维函数f[x,y]在指定区间上的密度图ListDensityPlot[array] 同上图形显示Show[graphics,options] 显示一组图形对象,options为选项设置Show[g1,g2...] 在一个图上叠加显示一组图形对象GraphicsArray[{g1,g2,...}]在一个图上分块显示一组图形对象SelectionAnimate[notebook,t]把选中的notebook中的图画循环放映选项:(此处选项适用于全部图形函数)Background->颜色函数指定绘图的背景颜色RotateLabel -> True 竖着写文字TextStyle 此后输出文字的字体,颜色大小等ColorFunction->Hue等把其作用于某点的函数值上决定某点的颜色RenderAll->False 是否对遮挡部分也染色MaxBend 曲线、曲面最大弯曲度绘图函数(续)图元函数Graphics[prim, options]prim为下面各种函数组成的表,表示一个二维图形对象Graphics3D[prim, options]prim为下面各种函数组成的表,表示一个三维图形对象SurfaceGraphics[array, shades]表示一个由array和shade决定的曲面对象ContourGraphics[array]表示一个由array决定的等高线图对象DensityGraphics[array]表示一个由array决定的密度图对象以上定义图形对象,可以进行对变量赋值,合并显示等操作,也可以存盘Point[p] p={x,y}或{x,y,z},在指定位置画点Line[{p1,p2,..}]经由pi点连线Rectangle[{xmin, ymin}, {xmax, ymax}] 画矩形Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}]由对角线指定的长方体Polygon[{p1,p2,..}] 封闭多边形Circle[{x,y},r] 画圆Circle[{x,y},{rx,ry}] 画椭圆,rx,ry为半长短轴Circle[{x,y},r,{a1,a2}] 从角度a1~a2的圆弧Disk[{x, y}, r] 填充的园、椭圆、圆弧等参数同上Raster[array,ColorFunction->f] 颜色栅格Text[expr,coords] 在坐标coords上输出表达式PostScript["string"] 直接用PostScript图元语言写Scaled[{x,y,..}] 返回点的坐标,且均大于0小于1颜色函数(指定其后绘图的颜色)GrayLevel[level] 灰度level为0~1间的实数RGBColor[red, green, blue] RGB颜色,均为0~1间的实数Hue[h, s, b] 亮度,饱和度等,均为0~1间的实数CMYKColor[cyan, magenta, yellow, black] CMYK颜色其他函数(指定其后绘图的方式)Thickness[r] 设置线宽为rPointSize[d] 设置绘点的大小Dashing[{r1,r2,..}] 虚线一个单元的间隔长度ImageSize->{x, y} 显示图形大小(像素为单位)ImageResolution->r 图形解析度r个dpiImageMargins->{{left,right},{bottom,top}}四边的空白ImageRotated->False 是否旋转90度显示—————————————————————————————————————十五、流程控制分支If[condition, t, f] 如果condition为True,执行t段,否则f段If[condition, t, f, u] 同上,即非True又非False,则执行u段Which[test1,block1,test2,block2..] 执行第一为True的testi对应的blocki Switch[expr,form1,block1,form2,block2..]执行第一个expr所匹配的formi所对应的blocki段循环Do[expr,{imax}] 重复执行expr imax次Do[expr,{i,imin,imax}, {j,jmin,jmax},...]多重循环While[test, body] 循环执行body直到test为FalseFor[start,test,incr,body]类似于C语言中的for,注意","与";"的用法相反examp: For[i=1;t =x,i^2<10,i++,t =t+i;Print[t]]异常控制Throw[value] 停止计算,把value返回给最近一个Catch处理Throw[value, tag] 同上,Catch[expr] 计算expr,遇到Throw返回的值则停止Catch[expr, form] 当Throw[value, tag]中Tag匹配form时停止其他控制Return[expr] 从函数返回,返回值为exprReturn[ ] 返回值NullBreak[ ] 结束最近的一重循环Continue[ ] 停止本次循环,进行下一次循环Goto[tag] 无条件转向Label[Tag]处Label[tag] 设置一个断点Check[expr,failexpr] 计算expr,如果有出错信息产生,则返回failexpr的值Check[expr,failexpr,s1::t1,s2::t2,...]当特定信息产生时则返回failexpr CheckAbort[expr,failexpr]当产生abort信息时放回failexprInterrupt[ ] 中断运行Abort[ ] 中断运行TimeConstrained[expr,t] 计算expr,当耗时超过t秒时终止MemoryConstrained[expr,b]计算expr,当耗用内存超过b字节时终止运算交互式控制Print[expr1,expr2,...] 顺次输出expri的值examp: Print[ "X=" , X.},body]多自变量纯函数#,#n 纯函数的第一、第n个自变量## 纯函数的所有自变量的序列examp: ^& [2,3] 返回第一个参数的第二个参数次方映射Map[f,expr]或f/@expr 将f分别作用到expr第一层的每一个元上得到的列表Map[f,expr,level] 将f分别作用到expr第level层的每一个元上Apply[f,expr]或f@@expr 将expr的“头”换为fApply[f,expr,level] 将expr第level层的“头”换为fMapAll[f,expr]或f.}] 把f作用到expr[[{i,j,...}]]元上MapIndexed[f,expr] 类似MapAll,但都附加其映射元素的位置列表Scan[f, expr] 按顺序分别将f作用于expr的每一个元Scan[f,expr,levelspec] 同上,仅作用第level层的元素复合映射Nest[f,expr,n] 返回n重复合函数f[f[...f[expr]...]]NestList[f,expr,n] 返回0重到n重复合函数的列表{expr,f[expr],f[f[expr]]..} FixedPoint[f, expr] 将f复合作用于expr直到结果不再改变,即找到其不定点FixedPoint[f, expr, n] 最多复合n次,如果不收敛则停止FixedPointList[f, expr] 返回各次复合的结果列表FoldList[f,x,{a,b,..}] 返回{x,f[x,a],f[f[x,a],b],..}Fold[f, x, list] 返回FoldList[f,x,{a,b,..}]的最后一个元ComposeList[{f1,f2,..},x]返回{x,f1[x],f2[f1[x]],..}的复合函数列表Distribute[f[x1,x2,..]] f对加法的分配率Distribute[expr, g] 对g的分配率Identity[expr] expr的全等变换Composition[f1,f2,..] 组成复合纯函数f1[f2[..fn[ ]..]Operate[p,f[x,y]] 返回p[f][x, y]Through[p[f1,f2][x]] 返回p[f1[x],f2[x]]Compile[{x1,x2,..},expr]编译一个函数,编译后运行速度可以大大加快Compile[{{x1,t1},{x2,t2}..},expr] 同上,可以制定函数参数类型—————————————————————————————————————十七、替换规则lhs->rhs 建立了一个规则,把lhs换为rhs,并求rhs的值lhs:>rhs 同上,只是不立即求rhs的值,知道使用该规则时才求值Replace[expr,rules] 把一组规则应用到expr上,只作用一次expr /. rules 同上expr .}]综合各个规则,产生一组优化的规则组><Mathematica的常见问题><===================================1).Mathematica 可以定义变量为实数么1. 在Simplify/FullSimplify可以使用\[Element],如Simplify[Re[a+b*I],a\[Element]Reals]2. 可以使用ComplexExpand[]来展开表达式,默认:符号均为实数:Unprotect[Abs];Abs[x_] := Sqrt[Re[x]^2 + Im[x]^2];ComplexExpand[Abs[a + b*I], a]3. 使用/:,对符号关联相应的转换规则x /: Im[x] = 0;x /: Re[x] = x;y /: Im[y] = 0;y /: Re[y] = y;Re[x+y*I]===================================2).Mathematica中如何中断运算Alt+. 直接终止当前执行的运算Alt+, 询问是否终止或者继续如果不能终止,用菜单Kernel\Quit Kernal\Local来退出当前运算===================================3).请高手推荐Mathematica参考书我迄今为止看到的最好的一本就是Mathematica自己带的帮助里面的The Mathematica Book,内容全面,循序渐近,非常容易学习使用。

一个完整的前后处理有限元四边形mathematica程序

一个完整的前后处理有限元四边形mathematica程序

一个含有前后处理的完整四边形单元程序 一个含有前后处理的完整四边形单元的mathematica代码,并且附上两个算例,并且结果与Ansys比较良好,参考了 Mathematica有限元分析与工程应用 ,书中代码有很多错误,不太喜欢,也参考了 Mathematica与数值分析实验 ,此书不错。

欢迎各位大神来完善此代码。

湖南大学 1101级工程力学 小冯同学 FormGlobalStifMat : 模块FormGlobalStifMat形成整体刚度矩阵Modules3,JMat,BMat,DeriveN,SMat,DerN,xy,gaussxy,fileout1 , 局部变量定义零矩阵xy Table 0, i,nnode , j,ndofn ;BMat Table 0, i,3 , j,ndof ;totdof inode ndofn;GlobalK Table 0, i,totdof , j,totdof ; 临时的整体刚度矩阵GlobalKReal Table 0, i,totdof , j,totdof ; 整体刚度矩阵 fileout1 OpenWrite "stress.m",FormatType OutputForm ; 将数据写入文件 DolocalK Table 0, i,8 , j,8 ; 局部刚度矩阵Clear ks,yt ; 此处注意清除变量DerN D shapeN,ks ,D shapeN,yt ;Do 高斯数值积分Clear ks,yt ;s3: 0.577350269; 采用两点积分公式If ii 1,ks s3;yt s3 ;If ii 2,ks s3;yt s3 ;If ii 3,ks s3;yt s3 ;If ii 4,ks s3;yt s3 ;Dok elem n,i ;xy i,1 co k,1 ;xy i,2 co k,2 ;, i,4;JMat DerN.xy;DeriveN Inverse JMat .DerN;gaussxy shapeN.xy;DoBMat 1,2 j 1 DeriveN 1,j ;BMat 3,2 j DeriveN 1,j ;BMat 2,2 j DeriveN 2,j ;BMat 3,2 j 1 DeriveN 2,j ;, j,4;SMat DMat.BMat;Do 将数据写入文件2final_job.nbWrite fileout1,FortranForm SMat i,1 ,"",FortranForm SMat i,2 ,"",FortranForm SMat i,3 ,"",FortranForm SMat i,4 ,"",FortranForm SMat i,5 ,"",FortranForm SMat i,6 ,"",FortranForm SMat i,7 ,"",FortranForm SMat i,8 ,"", i,3;Write fileout1,FortranForm gaussxy 1 ,"",FortranForm gaussxy 2 ,"" ;localKlocalK Transpose BMat .SMat Det JMat thick; 形成局部刚度矩阵, ii,4; 装配整体刚度矩阵Dok elem n,i ;ii1 2 i 1;ii2 2 i;ki1 2 k 1;ki2 2 k;Dol elem n,j ;jj1 2 j 1;jj2 2 j;lj1 2 l 1;lj2 2 l;GlobalK ki1,lj1GlobalK ki1,lj1 localK ii1,jj1 ;GlobalK ki1,lj2GlobalK ki1,lj2 localK ii1,jj2 ;GlobalK ki2,lj1GlobalK ki2,lj1 localK ii2,jj1 ;GlobalK ki2,lj2GlobalK ki2,lj2 localK ii2,jj2 ;, j,4;, i,4;, n,ielem;GlobalKReal GlobalK;Clear ks,yt ;Close fileout1 ;ApplyLoadAnsys : 模块ApplyLoadAnsys施加载荷条件Modulelength,r1,r2,numloa,rat,list1,list2,huge,in , 局部变量length Length load ;list1 Take Transpose co ,1 ;list2 Take Transpose load , 2 ;huge Max Abs list2 ; 作图因子rat Max list1 Min list1 15. huge ; 作图因子rat,可自定numloa1 Table 0, i,length , j,7 , k,2 ;;final_job.nb3numloa2 Table 0, i,length , j,7 , k,2 ;Dor1 Abs rat load i,4 ; 作图因子r2 Abs rat load i,5 ; 作图因子x1 co load i,1 ,1 ;y1 co load i,1 ,2 ;numloa1 i Polygon 0,0 , 0,0 , 0,0 , 0,0 , 0,0 , 0,0 , 0,0 ;numloa2 i Polygon0,0 , 0,0 , 0,0 , 0,0 , 0,0 , 0,0 , 0,0 ;Ifload i,2 FX,Ifload i,4 0.,numloa1 i Hue 0.6 ,Polygon x1,y1 , x1 r1,y1 r1 2 , x1 r1,y1 r1 4 ,x1 3 r1,y1 r1 4 , x1 3 r1,y1 r1 4 ,x1 r1,y1 r1 4 , x1 r1,y1 r1 2 定义多边形坐标;Ifload i,4 0.,numloa1 i Hue 0.1 ,Polygon x1,y1 , x1 r1,y1 r1 2 , x1 r1,y1 r1 4 ,x1 3 r1,y1 r1 4 , x1 3 r1,y1 r1 4 ,x1 r1,y1 r1 4 , x1 r1,y1 r1 2 定义多边形坐标;in 1;jm 2 load i,1 in;paload jm,1 load i,4 ;;Ifload i,3 FY,Ifload i,5 0.,numloa2 i Hue 0.6 ,Polygon x1,y1 , x1 r2 2 ,y1 r2 , x1 r2 4 ,y1 r2 ,x1 r2 4 ,y1 3 r2 , x1 r2 4 ,y1 3 r2 ,x1 r2 4 ,y1 r2 , x1 r2 2 ,y1 r2 定义多边形坐标;Ifload i,5 0.,numloa2 i Hue 0.1 ,Polygon x1,y1 , x1 r2 2 ,y1 r2 , x1 r2 4 ,y1 r2 ,x1 r2 4 ,y1 3 r2 , x1 r2 4 ,y1 3 r2 ,x1 r2 4 ,y1 r2 , x1 r2 2 ,y1 r2 定义多边形坐标;in 0;jm 2 load i,1 in;paload jm,1 load i,5 ;;, i,length;4final_job.nb;loabc Graphics Table numloa1 i ,numloa2 i , i,length绘制多边形坐标ApplyDispAnsys : 模块ApplyDispAnsys施加位移条件Modulehuge,in,jm,jl,length,numdis1,numdis2,r,list,a,b , 局部变量huge 10000000; 一个大数,节点有位移时,与整体刚度矩阵和载荷矩阵相乘length Length disp ;list Take Transpose co ,1 ;r Max list Min list 30.; 作图因子numdis1 Table 0, i,length , j,3 , k,2 ;numdis2 Table 0, i,length , j,3 , k,2 ;Dox1 co disp i,1 ,1 ;y1 co disp i,1 ,2 ;numdis1 i Polygon 0,0 , 0,0 , 0,0 ;numdis2 i Polygon 0,0 , 0,0 , 0,0 ;Ifdisp i,2 UX,in 1;jm 2 disp i,1 in;GlobalK jm,jm GlobalK jm,jm huge; 位移为0也可以乘大数paload jm,1 GlobalK jm,jm disp i,4 ;numdis1 iPolygon x1,y1 , x1 2 r,y1 r , x1 2 r,y1 r ; 形成多边形坐标;Ifdisp i,3 UY,jm 2 disp i,1 ;GlobalK jm,jm GlobalK jm,jm huge; 位移为0也可以乘大数paload jm,1 GlobalK jm,jm disp i,5 ;numdis2 iPolygon x1,y1 , x1 r,y1 2 r , x1 r,y1 2 r ; 形成多边形坐标;, i,length;disbc Graphics TableGrayLevel 0.3 ,numdis1 i ,numdis2 i , i,length 绘制多边形ModelPlot2D e_,n_,ie_,in_,nnode_ : 模块ModelPlot2D作未变形图,e:单元号n:节点坐标ie:单元总个数in:节点总个数nnode:每个单元节点个数Modulegpoly,k,xypoly,p1,p2,p3,p4,list1,list2,coxy,coave , 局部变量final_job.nb5gpoly Table 0, i,ie ;xypoly Table 0, i,4 , j,2 ;coave Table 0, i,ie , j,2 ;DoDo 节点坐标形成多边形绘制的坐标k e j,i ;xypoly i,1 n k,1 ;xypoly i,2 n k,2 ;coave j,1 xypoly i,1 ;coave j,2 xypoly i,2 ;, i,nnode;gpoly j Polygon xypoly ;coave j,1 4;coave j,2 4;, j,ie;p1 Graphics 绘制多边形Table Hue j ie ,gpoly j , j,ie ;coxy Table Point n i,1 ,n i,2 , i,in ;p2 Graphics PointSize 0.03 ,coxy ; 绘制节点p3 Graphics Table 绘制节点编号Text i, n i,1 ,n i,2 , 0,1 , i,in ;p4 Graphics Table 绘制单元编号Text i, coave i,1 ,coave i,2 , 0,0 , i,ie ;elemplot Show p1,p2,p3,p4,disbc,loabc,PlotRange All, 绘制未变形图AspectRatio Automatic,PlotLabel "Element and Nodal Plot"ModelMesh2D e_,n_,ie_,in_,nnode_ : 模块ModelMesh2D作未变形线框图函数,e:单元号n:节点坐标ie:单元总个数in:节点总个数nnode:每个单元节点个数Modulelpoly,xypoly,list1,list2,coxy,coave , 局部变量lpoly Table 0, i,nnode ie ;xy Table 0, i,4 , j,2 ;coave Table 0, i,ie , j,2 ;DoDo 节点坐标形成图形绘制的坐标ll e k,i ;xy i,1 n ll,1 ;xy i,2 n ll,2 ;coave k,1 xy i,1 ;coave k,2 xy i,2 ;, i,nnode;Do 节点坐标形成绘制多边形的坐标If j nnode,m 1,m j 1 ;lpoly 4 k 1 jLine xy j,1 ,xy j,2 , xy m,1 ,xy m,2, j,nnode;6final_job.nb;coave k,1 4;coave k,2 4;, k,ie;p1 Graphics lpoly ; 绘制多边形coxy Table Point n i,1 ,n i,2 , i,in ;p2 Graphics PointSize 0.03 ,coxy ; 绘制节点p3 Graphics Table Text i, n i,1 ,n i,2 , 1,1 , i,in ;绘制节点编号 p4 Graphics Table Text i, coave i,1 ,coave i,2 , 0,0 ,i,ie ; 绘制单元编号wiremesh p1,p2,disbc,loabc ;保留未变形的线框图,方便作图elemplotmesh Show p1,p2,p3,p4,disbc,loabc,PlotRange All,AspectRatio Automatic,PlotLabel "Element and Nodal Plot Mesh"SolutionLinear A0_,b0_ : 高斯类消去法;A0 X b0,X为待求解变量Modulem,n,temp,kmax,A A0,b b0,fileout1 ,m,n Dimensions A ; m为矩阵行数Dotemp Flatten Abs Take A, k,m , k ;从A的第k列中取出第k到第m个元素,形成一个表kmax Position temp,Max temp 1,1 k 1;在temp中查找绝对值最大元素所在的位置Ifk kmax, A k ,A kmax A kmax ,A k ;b k ,b kmax b kmax ,b k; 交换A的第k行与kmax行IfA k,k 0,Do 按高斯公式消元计算A i,k A i,k A k,k ;DoA i,j A i,j A i,k A k,j, j,k 1,n;b i b i A i,k b k, i,k 1,m,Print " singularity in Row",k ;Print "No solution" ;Break, k,m 1;IfAbs A m,n 0.00000001,A矩阵最后一个数大于0,则回代求解,此循环可以不要final_job.nb7b m b m A m,m ; 回代求解Dob i b i Sum A i,j b j , j,i 1,m A i,i, i,m 1,1, 1;dadisp b;Put dadisp,"dadisp.m" ,Print "Singularity in Row",m ;Print "last unknown equal to",A m,m;displacement b;ff GlobalKReal.b;force Table ff 2 i 1,1 ,ff 2 i,1 , i,inode ; 力矩阵displacement Table b 2 i 1,1 ,b 2 i,1 , i,inode ; 位移矩阵StressCompu : 模块StressCompu求解应力Modulefilein1,fileout4,ed,est,SMat , 局部变量filein1 OpenRead "stress.m" ;fileout4 OpenWrite "results.m",FormatType OutputForm ;ed Table 0, i,8 , j,1 ;num 4 ielem;sx Table 0, i,num ;sy Table 0, i,num ;sxy Table 0, i,num ;xco Table 0, i,num ;yco Table 0, i,num ;gaussx Table 0, i,4 ;gaussy Table 0, i,4 ; 高斯积分点的坐标est Table 0, i,4 , j,3 ;Doext Table 0, i,4 , j,3 ;Write fileout4,"strees values for element no:",n ;Do 传递已知位移给临时变量,此处用全部变量更方便k elem n,i ;ed 2 i 1,1 dadisp 2 k 1,1 ;ed 2 i,1 dadisp 2 k,1 ;, i,4;Do 从前面的输出文件读取数据,此处使用全局变量更方便SMat Read filein1, Real,Real,Real,Real,Real,Real,Real,Real , Real,Real,Real,Real,Real,Real,Real,Real ,Real,Real,Real,Real,Real,Real,Real,Real ;gaussx ii Read filein1,Real ;gaussy ii Read filein1,Real ;estress SMat.ed; 求解各应力分量Do8final_job.nbest ii,jj estress jj,1, jj,3;, ii,4;Dosx 4 n 4 ii est ii,1 ;sy 4 n 4 ii est ii,2 ;sxy 4 n 4 ii est ii,3 ;xco 4 n 4 ii gaussx ii ;yco 4 n 4 ii gaussy ii ;, ii,4;ImmendMat 1.866, 0.5,0.133975, 0.5 ,0.5,1.866, 0.5,0.133975 , 0.133975, 0.5,1.866, 0.5 ,0.5,0.133975, 0.5,1.866 ; 应力修匀 磨平 矩阵FinalStress ImmendMat.est; 应力修匀 磨平 ,作图更光滑DoWrite fileout4,ii1,"",FinalStress ii1,1 , "",FinalStress ii1,2 ,"",FinalStress ii1,3 ;, ii1,4;, n,ielem;Close filein1 ;Close fileout4 ;StressFunction : 模块StressFunction求解应力函数Modulenum,list,u,v,fileout5 , 局部变量num nnode ielem;fileout5 OpenAppend "results.m" ;Write fileout5," " ;list Table xco i ,yco i ,sx i , i,num ;eqnsx Fit list, 1,x,y,x y , x,y ; 函数拟合xpoly x_,y_ Fit list, 1,x,y,x y , x,y ; 函数拟合Print "polynomial of stress x",eqnsx ;Write fileout5,"polynomial of stress x" ; 将数据写入文件Write fileout5,FortranForm eqnsx ;list Table xco i ,yco i ,sy i , i,num ;eqnsy Fit list, 1,x,y,x y , x,y ; 函数拟合ypoly x_,y_ Fit list, 1,x,y,x y , x,y ; 函数拟合Print "polynomial of stress y",eqnsy ;Write fileout5,"polynomial of stress x",eqnsy ; 将数据写入文件 Write fileout5,eqnsy ;list Table xco i ,yco i ,sxy i , i,num ;;final_job.nb9eqnsxy Fit list, 1,x,y,x y , x,y ; 函数拟合xypoly x_,y_ Fit list, 1,x,y,x y , x,y ; 函数拟合Print "polynomial of stress xy",eqnsxy ;Write fileout5,"polynomial of stress x",eqnsxy ; 将数据写入文件 Write fileout5,eqnsxy ;Close fileout5 ;Displot2D e_,n_,ie_,in_,nnode_ : 模块Displot2D作变形图,e:单元号n:节点新坐标ie:单元总个数in:节点总个数nnode:每个单元节点个数Modulegpoly,xypoly,p1,p2,p3,list1,list2,coxy,k , 局部变量gpoly Table 0, i,ie ;xypoly Table 0, i,4 , j,2 ;DoDok e j,i ;xypoly i,1 n k,1 ; 形成多边形的坐标xypoly i,2 n k,2 ;, i,nnode;gpoly j Polygon xypoly ;, j,ie;p1 Graphics Table Hue j ie ,gpoly j , j,ie ; 绘制多边形coxy Table Point n i,1 ,n i,2 , i,in ;p2 Graphics PointSize 0.03 ,coxy ; 绘制节点p3 Graphics Table Text i, n i,1 ,n i,2 , 0,1 , i,in ;pldisp Show p1,p2,p3,PlotRange All,AspectRatio Automatic,PlotLabel "Displacment Plot" ; 作变形图Plnssx : 模块Plnssx作应力云图Module,ContourPlot eqnsx, x,xmin,xmax , y,ymin,ymax ,ColorFunction Hue,AspectRatio Automatic,Contours 10 利用得到的函数作x应力图 Plnssy : 模块Plnssy作应力云图Module,ContourPlot eqnsy, x,xmin,xmax , y,ymin,ymax ,ColorFunction Hue,AspectRatio Automatic,Contours 10 利用得到的函数作y应力图 Plnssxy : 模块Plnssxy作应力云图10final_job.nbModule,ContourPlot eqnsxy, x,xmin,xmax ,y,ymin,ymax ,ColorFunction Hue,AspectRatio Automatic,Contours 10 利用得到的函数作剪切力图StressAtLocation a_,b_ : 模块StressAtLocation算某个点的应力Modulefileout6 , 将结果添加到指定文件fileout6 OpenAppend "results.m" ;Print "Stress at coordinates x ",a,"and y ",b ;Write "Stress at coordinates x ",a,"and y ",b ;Print "" ;Print "SX SY SXY" ;Print "" ;Print xpoly a,b ,"",ypoly a,b ,"",xypoly a,b ;Write "SX SY SXY" ;Write xpoly a,b ,"",ypoly a,b ,"",xypoly a,b ;Close fileout6 ;算例1In[123]:= 说明:因为坐标转换的设定问题,全局坐标系建立在最底部,否则得出的位移相反inode 节点总数,ielem 单元总数,ndof 每个单元总自由度,ndofn 每个节点自由度,totdof 总自由度inode 12;ielem 6;ndof 8;ndofn 2;nnode 4;totdof inode ndofn; 输入形函数信息shapeN 1 ks 1 yt , 1 ks 1 yt , 1 ks 1 yt , 1 ks 1 yt 4;In[125]:= 输入节点坐标信息co 0,0 , 1.5,0 , 3,0 , 0,3 , 1.5,3 ,3,3 , 0,6 , 1.5,6 , 3,6 , 0,9 , 1.5,9 , 3,9 ;xmin Min Take Transpose co , 1 ;xmax Max Take Transpose co , 1 ;ymin Min Take Transpose co , 1 ;ymax Max Take Transpose co , 1 ;In[130]:= 输入单元编号信息elem 1,2,5,4 , 4,5,8,7 ,7,8,11,10 , 2,3,6,5 , 5,6,9,8 , 8,9,12,11 ;In[131]:=h thick 1; 单元厚度In[132]:=nu0 0.3;ee0 210 10^6; 泊松比和弹性模量In[133]:=ElmCord Array a, ielem,4,2 ;In[134]:= 按单元编号提取节点坐标For i 1,i ielem,i ,ElmCord i co elem i,1 ,co elem i,2 ,co elem i,3 ,co elem i,4 ;In[135]:=GlobalK 0IdentityMatrix 2 inode ; 定义一个空的整体刚度矩阵,mathematica的缺陷 In[136]:=DMat DmatrixDm1 ee0 1 nu0^2 1,nu0,0 , nu0,1,0 , 0,0, 1 nu0 2 ; 弹性矩阵 In[137]:=paload Table 0, i,totdof , j,1 ; 定义一个空的力载荷向量dadisp Table 0, i,totdof , j,1 ; 定义一个空的位移载荷向量In[139]:= 输入各节点位移载荷和力载荷信息,disp 节点编号,位移方向,位移方向,数值,数值 , load 节点编号,力方向,力方向,数值,数值 ,没有则输入0disp 1,UX,UY,0,0 , 2,UX,UY,0,0 , 3,UX,UY,0,0 , 4,UX,0,0,0 ,5,0,0,0,0 , 6,UX,0,0,0 , 7,UX,0,0,0 , 8,0,0,0,0 ,9,UX,0,0,0 , 10,UX,0,0,0 , 11,UX,0,0,0 , 12,UX,0,0,0 ;load 1,FX,FY,0,0 , 2,FX,FY,0,0 , 3,FX,FY,0,0 , 4,FX,FY,0,0 ,5,FX,FY,0,0 , 6,FX,FY,0,0 , 7,FX,FY,0,0 , 8,FX,FY,0,0 ,9,FX,FY,0,0 , 10,FX,FY,0,5 , 11,FX,FY,0,5 , 12,FX,FY,0,0 ;In[141]:=FormGlobalStifMat ; 形成整体刚度矩阵ApplyDispAnsys ; 施加位移边界ApplyLoadAnsys ; 施加载荷边界ModelMesh2D elem,co,ielem,inode,nnode ; 作未变形单元图ModelPlot2D elem,co,ielem,inode,nnode ; 作未变形线框图SolutionLinear GlobalK,paload ; 求解位移StressCompu ; 计算应力StressFunction ; 拟合应力函数polynomial of stress x0.865662 0.0895586x 0.0290821y 0.019388x ypolynomial of stress y 2.67497 0.438911x 0.294665y 0.196443x ypolynomial of stress xy0.337566 1.57009 10 16x 0.13649y 3.02164 10 17x yIn[149]:=newco Table 0, i,inode , j,2 ; 变形后的节点坐标mag 1000000; 位移放大系数In[150]:= 放大节点变形后的坐标Do newco i,1 co i,1 dadisp 2 i 1,1 mag;newco i,2 co i,2 dadisp 2 i,1 mag;, i,inode ;In[151]:= 输出数据TableForm newco co,TableHeadings Automatic, Style "x Disp", Red,Bold,Large ,Style "Y Disp", Blue,Bold,LargeTableForm force,TableHeadings Automatic,Style "Fx", Red,Bold,Large ,Style "Fy", Blue,Bold,Large 画图Displot2D elem,newco,ielem,inode,nnode ; 作变形图Show pldisp,wiremesh,AspectRatio Automatic 作变形图和未变形的线裤图Plnssx ; 作Σx应力图Plnssxy ; 作Σy应力图Plnssy ; 作Σxy应力图Out[151]//TableForm=Out[152]//TableForm=Out[153]=In[155]:=PlnssxOut[155]=2468算例2inode 12;ielem 5;ndof 8;ndofn 2;nnode 4;totdof inode ndofn; shapeN 1 ks 1 yt , 1 ks 1 yt , 1 ks 1 yt , 1 ks 1 yt 4;co 0,0 , 0.25,0 , 0.5,0 , 0.75,0 , 1,0 , 1.25,0 , 1.25,0.25 , 1,0.25 , 0.75,0.25 , 0.5,0.25 , 0.25,0.25 , 0,0.25 ;xmin Min Take Transpose co , 1 ;xmax Max Take Transpose co , 1 ;ymin Min Take Transpose co , 1 ;ymax Max Take Transpose co , 1 ;elem 1,2,11,12 , 2,3,10,11 , 3,4,9,10 , 4,5,8,9 , 5,6,7,8 ;h thick 0.025;nu0 0.3;ee0 210 10^6;ElmCord Array a, ielem,4,2 ;For i 1,i ielem,i ,ElmCord i co elem i,1 ,co elem i,2 ,co elem i,3 ,co elem i,4 ;GlobalK 0IdentityMatrix 12 ;DMatDmatrix Dm1 ee0 1 nu0^2 1,nu0,0 , nu0,1,0 , 0,0, 1 nu0 2 ; paload Table 0, i,totdof , j,1 ;dadisp Table 0, i,totdof , j,1 ;disp 1,UX,UY,0,0 , 2,0,0,0,0 , 3,0,0,0,0 , 4,0,0,0,0 , 5,0,0,0,0 , 6,0,0,0,0 , 7,0,0,0,0 , 8,0,0,0,0 ,9,0,0,0,0 , 10,0,0,0,0 , 11,0,0,0,0 , 12,UX,UY,0,0 ;load 1,FX,FY,0,0 , 2,FX,FY,0,0 , 3,FX,FY,0,0 , 4,FX,FY,0,0 , 5,FX,FY,0,0 , 6,FX,FY,0,5 , 7,FX,FY,0,5 , 8,FX,FY,0,0 , 9,FX,FY,0,0 , 10,FX,FY,0,0 , 11,FX,FY,0,0 , 12,FX,FY,0,0 ; FormGlobalStifMat ;ApplyDispAnsys ;ApplyLoadAnsys ;ModelMesh2D elem,co,ielem,inode,nnode ;ModelPlot2D elem,co,ielem,inode,nnode ;SolutionLinear GlobalK,paload ;StressCompu ;StressFunction ;polynomial of stress x34844.4 27306.7x 278756.y 218453.x ypolynomial of stress y10453.3 8192.x 83626.7y 65536.x ypolynomial of stress xy2844.44 1991.11x 5.63593 10 11y 1.33736 10 10x y newco Table 0, i,inode , j,2 ;mag 1000; 位移放大系数Do newco i,1 co i,1 dadisp 2 i 1,1 mag;newco i,2 co i,2 dadisp 2 i,1 mag;, i,inode ;TableForm newco co,TableHeadings Automatic, Style "x Disp", Red,Bold,Large , Style "Y Disp", Blue,Bold,LargeTableForm force,TableHeadings Automatic,Style "Fx", Red,Bold,Large ,Style "Fy", Blue,Bold,Large 画图Displot2D elem,newco,ielem,inode,nnode ;Show pldisp,wiremesh,AspectRatio AutomaticPlnssx ;Plnssxy ;Plnssy ;Plnssx。

用Mathcad进行有限元法的理论验证与计算

用Mathcad进行有限元法的理论验证与计算

第24卷 第1期2003年3月内蒙古农业大学学报Journal of Inner Mongolia Agricultural UniversityVol.24 No.1Mar.2003文章编号:1009-3575(2003)01-0090-04用Mathcad进行有限元法的理论验证与计算Ξ韩克平, 申向东(内蒙古农业大学水利与土木建筑工程学院,呼和浩特 010018)摘要: 本文分析了目前有限元法的理论验证与计算中存在的一些矛盾和问题,提出了用Mathcad来进行有限元法的理论验证与计算,并以实例具体说明。

关键词: 有限元法; Mathcad中图分类号: O342 文献标识码: ACON D UCTING THE THEORETICAL TEST AN D CALCU LATION OF FINITE E LEMENT METH OD B Y USING MATH CADHAN K e-ping, SHEN Xiang-dong(College of Water Conservancy and Civil Architecture Engineering,Inner Morgolia Agricultural University,Huhhot 010019) Abstract: This paper analyzes some contradictions and problems existing in the theoretical test and calculation of Finite Element Method.It also suggests conducting the theoretical test and calculation of finite Element Method by using Mathcad and to illustrate with examples.K ey w ords: Finite Element method; Mathcad有限元法(Finite Element Method,FEM)是现代工程科学的重要工具,其重要性仅次于数学,尤其在水利、机械、建筑等领域应用很广。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个含有前后处理的完整四边形单元程序 一个含有前后处理的完整四边形单元的mathematica代码,并且附上两个算例,并且结果与Ansys比较良好,参考了 Mathematica有限元分析与工程应用 ,书中代码有很多错误,不太喜欢,也参考了 Mathematica与数值分析实验 ,此书不错。

欢迎各位大神来完善此代码。

湖南大学 1101级工程力学 小冯同学 FormGlobalStifMat : 模块FormGlobalStifMat形成整体刚度矩阵Modules3,JMat,BMat,DeriveN,SMat,DerN,xy,gaussxy,fileout1 , 局部变量定义零矩阵xy Table 0, i,nnode , j,ndofn ;BMat Table 0, i,3 , j,ndof ;totdof inode ndofn;GlobalK Table 0, i,totdof , j,totdof ; 临时的整体刚度矩阵GlobalKReal Table 0, i,totdof , j,totdof ; 整体刚度矩阵 fileout1 OpenWrite "stress.m",FormatType OutputForm ; 将数据写入文件 DolocalK Table 0, i,8 , j,8 ; 局部刚度矩阵Clear ks,yt ; 此处注意清除变量DerN D shapeN,ks ,D shapeN,yt ;Do 高斯数值积分Clear ks,yt ;s3: 0.577350269; 采用两点积分公式If ii 1,ks s3;yt s3 ;If ii 2,ks s3;yt s3 ;If ii 3,ks s3;yt s3 ;If ii 4,ks s3;yt s3 ;Dok elem n,i ;xy i,1 co k,1 ;xy i,2 co k,2 ;, i,4;JMat DerN.xy;DeriveN Inverse JMat .DerN;gaussxy shapeN.xy;DoBMat 1,2 j 1 DeriveN 1,j ;BMat 3,2 j DeriveN 1,j ;BMat 2,2 j DeriveN 2,j ;BMat 3,2 j 1 DeriveN 2,j ;, j,4;SMat DMat.BMat;Do 将数据写入文件2final_job.nbWrite fileout1,FortranForm SMat i,1 ,"",FortranForm SMat i,2 ,"",FortranForm SMat i,3 ,"",FortranForm SMat i,4 ,"",FortranForm SMat i,5 ,"",FortranForm SMat i,6 ,"",FortranForm SMat i,7 ,"",FortranForm SMat i,8 ,"", i,3;Write fileout1,FortranForm gaussxy 1 ,"",FortranForm gaussxy 2 ,"" ;localKlocalK Transpose BMat .SMat Det JMat thick; 形成局部刚度矩阵, ii,4; 装配整体刚度矩阵Dok elem n,i ;ii1 2 i 1;ii2 2 i;ki1 2 k 1;ki2 2 k;Dol elem n,j ;jj1 2 j 1;jj2 2 j;lj1 2 l 1;lj2 2 l;GlobalK ki1,lj1GlobalK ki1,lj1 localK ii1,jj1 ;GlobalK ki1,lj2GlobalK ki1,lj2 localK ii1,jj2 ;GlobalK ki2,lj1GlobalK ki2,lj1 localK ii2,jj1 ;GlobalK ki2,lj2GlobalK ki2,lj2 localK ii2,jj2 ;, j,4;, i,4;, n,ielem;GlobalKReal GlobalK;Clear ks,yt ;Close fileout1 ;ApplyLoadAnsys : 模块ApplyLoadAnsys施加载荷条件Modulelength,r1,r2,numloa,rat,list1,list2,huge,in , 局部变量length Length load ;list1 Take Transpose co ,1 ;list2 Take Transpose load , 2 ;huge Max Abs list2 ; 作图因子rat Max list1 Min list1 15. huge ; 作图因子rat,可自定numloa1 Table 0, i,length , j,7 , k,2 ;;final_job.nb3numloa2 Table 0, i,length , j,7 , k,2 ;Dor1 Abs rat load i,4 ; 作图因子r2 Abs rat load i,5 ; 作图因子x1 co load i,1 ,1 ;y1 co load i,1 ,2 ;numloa1 i Polygon 0,0 , 0,0 , 0,0 , 0,0 , 0,0 , 0,0 , 0,0 ;numloa2 i Polygon0,0 , 0,0 , 0,0 , 0,0 , 0,0 , 0,0 , 0,0 ;Ifload i,2 FX,Ifload i,4 0.,numloa1 i Hue 0.6 ,Polygon x1,y1 , x1 r1,y1 r1 2 , x1 r1,y1 r1 4 ,x1 3 r1,y1 r1 4 , x1 3 r1,y1 r1 4 ,x1 r1,y1 r1 4 , x1 r1,y1 r1 2 定义多边形坐标;Ifload i,4 0.,numloa1 i Hue 0.1 ,Polygon x1,y1 , x1 r1,y1 r1 2 , x1 r1,y1 r1 4 ,x1 3 r1,y1 r1 4 , x1 3 r1,y1 r1 4 ,x1 r1,y1 r1 4 , x1 r1,y1 r1 2 定义多边形坐标;in 1;jm 2 load i,1 in;paload jm,1 load i,4 ;;Ifload i,3 FY,Ifload i,5 0.,numloa2 i Hue 0.6 ,Polygon x1,y1 , x1 r2 2 ,y1 r2 , x1 r2 4 ,y1 r2 ,x1 r2 4 ,y1 3 r2 , x1 r2 4 ,y1 3 r2 ,x1 r2 4 ,y1 r2 , x1 r2 2 ,y1 r2 定义多边形坐标;Ifload i,5 0.,numloa2 i Hue 0.1 ,Polygon x1,y1 , x1 r2 2 ,y1 r2 , x1 r2 4 ,y1 r2 ,x1 r2 4 ,y1 3 r2 , x1 r2 4 ,y1 3 r2 ,x1 r2 4 ,y1 r2 , x1 r2 2 ,y1 r2 定义多边形坐标;in 0;jm 2 load i,1 in;paload jm,1 load i,5 ;;, i,length;4final_job.nb;loabc Graphics Table numloa1 i ,numloa2 i , i,length绘制多边形坐标ApplyDispAnsys : 模块ApplyDispAnsys施加位移条件Modulehuge,in,jm,jl,length,numdis1,numdis2,r,list,a,b , 局部变量huge 10000000; 一个大数,节点有位移时,与整体刚度矩阵和载荷矩阵相乘length Length disp ;list Take Transpose co ,1 ;r Max list Min list 30.; 作图因子numdis1 Table 0, i,length , j,3 , k,2 ;numdis2 Table 0, i,length , j,3 , k,2 ;Dox1 co disp i,1 ,1 ;y1 co disp i,1 ,2 ;numdis1 i Polygon 0,0 , 0,0 , 0,0 ;numdis2 i Polygon 0,0 , 0,0 , 0,0 ;Ifdisp i,2 UX,in 1;jm 2 disp i,1 in;GlobalK jm,jm GlobalK jm,jm huge; 位移为0也可以乘大数paload jm,1 GlobalK jm,jm disp i,4 ;numdis1 iPolygon x1,y1 , x1 2 r,y1 r , x1 2 r,y1 r ; 形成多边形坐标;Ifdisp i,3 UY,jm 2 disp i,1 ;GlobalK jm,jm GlobalK jm,jm huge; 位移为0也可以乘大数paload jm,1 GlobalK jm,jm disp i,5 ;numdis2 iPolygon x1,y1 , x1 r,y1 2 r , x1 r,y1 2 r ; 形成多边形坐标;, i,length;disbc Graphics TableGrayLevel 0.3 ,numdis1 i ,numdis2 i , i,length 绘制多边形ModelPlot2D e_,n_,ie_,in_,nnode_ : 模块ModelPlot2D作未变形图,e:单元号n:节点坐标ie:单元总个数in:节点总个数nnode:每个单元节点个数Modulegpoly,k,xypoly,p1,p2,p3,p4,list1,list2,coxy,coave , 局部变量final_job.nb5gpoly Table 0, i,ie ;xypoly Table 0, i,4 , j,2 ;coave Table 0, i,ie , j,2 ;DoDo 节点坐标形成多边形绘制的坐标k e j,i ;xypoly i,1 n k,1 ;xypoly i,2 n k,2 ;coave j,1 xypoly i,1 ;coave j,2 xypoly i,2 ;, i,nnode;gpoly j Polygon xypoly ;coave j,1 4;coave j,2 4;, j,ie;p1 Graphics 绘制多边形Table Hue j ie ,gpoly j , j,ie ;coxy Table Point n i,1 ,n i,2 , i,in ;p2 Graphics PointSize 0.03 ,coxy ; 绘制节点p3 Graphics Table 绘制节点编号Text i, n i,1 ,n i,2 , 0,1 , i,in ;p4 Graphics Table 绘制单元编号Text i, coave i,1 ,coave i,2 , 0,0 , i,ie ;elemplot Show p1,p2,p3,p4,disbc,loabc,PlotRange All, 绘制未变形图AspectRatio Automatic,PlotLabel "Element and Nodal Plot"ModelMesh2D e_,n_,ie_,in_,nnode_ : 模块ModelMesh2D作未变形线框图函数,e:单元号n:节点坐标ie:单元总个数in:节点总个数nnode:每个单元节点个数Modulelpoly,xypoly,list1,list2,coxy,coave , 局部变量lpoly Table 0, i,nnode ie ;xy Table 0, i,4 , j,2 ;coave Table 0, i,ie , j,2 ;DoDo 节点坐标形成图形绘制的坐标ll e k,i ;xy i,1 n ll,1 ;xy i,2 n ll,2 ;coave k,1 xy i,1 ;coave k,2 xy i,2 ;, i,nnode;Do 节点坐标形成绘制多边形的坐标If j nnode,m 1,m j 1 ;lpoly 4 k 1 jLine xy j,1 ,xy j,2 , xy m,1 ,xy m,2, j,nnode;6final_job.nb;coave k,1 4;coave k,2 4;, k,ie;p1 Graphics lpoly ; 绘制多边形coxy Table Point n i,1 ,n i,2 , i,in ;p2 Graphics PointSize 0.03 ,coxy ; 绘制节点p3 Graphics Table Text i, n i,1 ,n i,2 , 1,1 , i,in ;绘制节点编号 p4 Graphics Table Text i, coave i,1 ,coave i,2 , 0,0 ,i,ie ; 绘制单元编号wiremesh p1,p2,disbc,loabc ;保留未变形的线框图,方便作图elemplotmesh Show p1,p2,p3,p4,disbc,loabc,PlotRange All,AspectRatio Automatic,PlotLabel "Element and Nodal Plot Mesh"SolutionLinear A0_,b0_ : 高斯类消去法;A0 X b0,X为待求解变量Modulem,n,temp,kmax,A A0,b b0,fileout1 ,m,n Dimensions A ; m为矩阵行数Dotemp Flatten Abs Take A, k,m , k ;从A的第k列中取出第k到第m个元素,形成一个表kmax Position temp,Max temp 1,1 k 1;在temp中查找绝对值最大元素所在的位置Ifk kmax, A k ,A kmax A kmax ,A k ;b k ,b kmax b kmax ,b k; 交换A的第k行与kmax行IfA k,k 0,Do 按高斯公式消元计算A i,k A i,k A k,k ;DoA i,j A i,j A i,k A k,j, j,k 1,n;b i b i A i,k b k, i,k 1,m,Print " singularity in Row",k ;Print "No solution" ;Break, k,m 1;IfAbs A m,n 0.00000001,A矩阵最后一个数大于0,则回代求解,此循环可以不要final_job.nb7b m b m A m,m ; 回代求解Dob i b i Sum A i,j b j , j,i 1,m A i,i, i,m 1,1, 1;dadisp b;Put dadisp,"dadisp.m" ,Print "Singularity in Row",m ;Print "last unknown equal to",A m,m;displacement b;ff GlobalKReal.b;force Table ff 2 i 1,1 ,ff 2 i,1 , i,inode ; 力矩阵displacement Table b 2 i 1,1 ,b 2 i,1 , i,inode ; 位移矩阵StressCompu : 模块StressCompu求解应力Modulefilein1,fileout4,ed,est,SMat , 局部变量filein1 OpenRead "stress.m" ;fileout4 OpenWrite "results.m",FormatType OutputForm ;ed Table 0, i,8 , j,1 ;num 4 ielem;sx Table 0, i,num ;sy Table 0, i,num ;sxy Table 0, i,num ;xco Table 0, i,num ;yco Table 0, i,num ;gaussx Table 0, i,4 ;gaussy Table 0, i,4 ; 高斯积分点的坐标est Table 0, i,4 , j,3 ;Doext Table 0, i,4 , j,3 ;Write fileout4,"strees values for element no:",n ;Do 传递已知位移给临时变量,此处用全部变量更方便k elem n,i ;ed 2 i 1,1 dadisp 2 k 1,1 ;ed 2 i,1 dadisp 2 k,1 ;, i,4;Do 从前面的输出文件读取数据,此处使用全局变量更方便SMat Read filein1, Real,Real,Real,Real,Real,Real,Real,Real , Real,Real,Real,Real,Real,Real,Real,Real ,Real,Real,Real,Real,Real,Real,Real,Real ;gaussx ii Read filein1,Real ;gaussy ii Read filein1,Real ;estress SMat.ed; 求解各应力分量Do8final_job.nbest ii,jj estress jj,1, jj,3;, ii,4;Dosx 4 n 4 ii est ii,1 ;sy 4 n 4 ii est ii,2 ;sxy 4 n 4 ii est ii,3 ;xco 4 n 4 ii gaussx ii ;yco 4 n 4 ii gaussy ii ;, ii,4;ImmendMat 1.866, 0.5,0.133975, 0.5 ,0.5,1.866, 0.5,0.133975 , 0.133975, 0.5,1.866, 0.5 ,0.5,0.133975, 0.5,1.866 ; 应力修匀 磨平 矩阵FinalStress ImmendMat.est; 应力修匀 磨平 ,作图更光滑DoWrite fileout4,ii1,"",FinalStress ii1,1 , "",FinalStress ii1,2 ,"",FinalStress ii1,3 ;, ii1,4;, n,ielem;Close filein1 ;Close fileout4 ;StressFunction : 模块StressFunction求解应力函数Modulenum,list,u,v,fileout5 , 局部变量num nnode ielem;fileout5 OpenAppend "results.m" ;Write fileout5," " ;list Table xco i ,yco i ,sx i , i,num ;eqnsx Fit list, 1,x,y,x y , x,y ; 函数拟合xpoly x_,y_ Fit list, 1,x,y,x y , x,y ; 函数拟合Print "polynomial of stress x",eqnsx ;Write fileout5,"polynomial of stress x" ; 将数据写入文件Write fileout5,FortranForm eqnsx ;list Table xco i ,yco i ,sy i , i,num ;eqnsy Fit list, 1,x,y,x y , x,y ; 函数拟合ypoly x_,y_ Fit list, 1,x,y,x y , x,y ; 函数拟合Print "polynomial of stress y",eqnsy ;Write fileout5,"polynomial of stress x",eqnsy ; 将数据写入文件 Write fileout5,eqnsy ;list Table xco i ,yco i ,sxy i , i,num ;;final_job.nb9eqnsxy Fit list, 1,x,y,x y , x,y ; 函数拟合xypoly x_,y_ Fit list, 1,x,y,x y , x,y ; 函数拟合Print "polynomial of stress xy",eqnsxy ;Write fileout5,"polynomial of stress x",eqnsxy ; 将数据写入文件 Write fileout5,eqnsxy ;Close fileout5 ;Displot2D e_,n_,ie_,in_,nnode_ : 模块Displot2D作变形图,e:单元号n:节点新坐标ie:单元总个数in:节点总个数nnode:每个单元节点个数Modulegpoly,xypoly,p1,p2,p3,list1,list2,coxy,k , 局部变量gpoly Table 0, i,ie ;xypoly Table 0, i,4 , j,2 ;DoDok e j,i ;xypoly i,1 n k,1 ; 形成多边形的坐标xypoly i,2 n k,2 ;, i,nnode;gpoly j Polygon xypoly ;, j,ie;p1 Graphics Table Hue j ie ,gpoly j , j,ie ; 绘制多边形coxy Table Point n i,1 ,n i,2 , i,in ;p2 Graphics PointSize 0.03 ,coxy ; 绘制节点p3 Graphics Table Text i, n i,1 ,n i,2 , 0,1 , i,in ;pldisp Show p1,p2,p3,PlotRange All,AspectRatio Automatic,PlotLabel "Displacment Plot" ; 作变形图Plnssx : 模块Plnssx作应力云图Module,ContourPlot eqnsx, x,xmin,xmax , y,ymin,ymax ,ColorFunction Hue,AspectRatio Automatic,Contours 10 利用得到的函数作x应力图 Plnssy : 模块Plnssy作应力云图Module,ContourPlot eqnsy, x,xmin,xmax , y,ymin,ymax ,ColorFunction Hue,AspectRatio Automatic,Contours 10 利用得到的函数作y应力图 Plnssxy : 模块Plnssxy作应力云图10final_job.nbModule,ContourPlot eqnsxy, x,xmin,xmax ,y,ymin,ymax ,ColorFunction Hue,AspectRatio Automatic,Contours 10 利用得到的函数作剪切力图StressAtLocation a_,b_ : 模块StressAtLocation算某个点的应力Modulefileout6 , 将结果添加到指定文件fileout6 OpenAppend "results.m" ;Print "Stress at coordinates x ",a,"and y ",b ;Write "Stress at coordinates x ",a,"and y ",b ;Print "" ;Print "SX SY SXY" ;Print "" ;Print xpoly a,b ,"",ypoly a,b ,"",xypoly a,b ;Write "SX SY SXY" ;Write xpoly a,b ,"",ypoly a,b ,"",xypoly a,b ;Close fileout6 ;算例1In[123]:= 说明:因为坐标转换的设定问题,全局坐标系建立在最底部,否则得出的位移相反inode 节点总数,ielem 单元总数,ndof 每个单元总自由度,ndofn 每个节点自由度,totdof 总自由度inode 12;ielem 6;ndof 8;ndofn 2;nnode 4;totdof inode ndofn; 输入形函数信息shapeN 1 ks 1 yt , 1 ks 1 yt , 1 ks 1 yt , 1 ks 1 yt 4;In[125]:= 输入节点坐标信息co 0,0 , 1.5,0 , 3,0 , 0,3 , 1.5,3 ,3,3 , 0,6 , 1.5,6 , 3,6 , 0,9 , 1.5,9 , 3,9 ;xmin Min Take Transpose co , 1 ;xmax Max Take Transpose co , 1 ;ymin Min Take Transpose co , 1 ;ymax Max Take Transpose co , 1 ;In[130]:= 输入单元编号信息elem 1,2,5,4 , 4,5,8,7 ,7,8,11,10 , 2,3,6,5 , 5,6,9,8 , 8,9,12,11 ;In[131]:=h thick 1; 单元厚度In[132]:=nu0 0.3;ee0 210 10^6; 泊松比和弹性模量In[133]:=ElmCord Array a, ielem,4,2 ;In[134]:= 按单元编号提取节点坐标For i 1,i ielem,i ,ElmCord i co elem i,1 ,co elem i,2 ,co elem i,3 ,co elem i,4 ;In[135]:=GlobalK 0IdentityMatrix 2 inode ; 定义一个空的整体刚度矩阵,mathematica的缺陷 In[136]:=DMat DmatrixDm1 ee0 1 nu0^2 1,nu0,0 , nu0,1,0 , 0,0, 1 nu0 2 ; 弹性矩阵 In[137]:=paload Table 0, i,totdof , j,1 ; 定义一个空的力载荷向量dadisp Table 0, i,totdof , j,1 ; 定义一个空的位移载荷向量In[139]:= 输入各节点位移载荷和力载荷信息,disp 节点编号,位移方向,位移方向,数值,数值 , load 节点编号,力方向,力方向,数值,数值 ,没有则输入0disp 1,UX,UY,0,0 , 2,UX,UY,0,0 , 3,UX,UY,0,0 , 4,UX,0,0,0 ,5,0,0,0,0 , 6,UX,0,0,0 , 7,UX,0,0,0 , 8,0,0,0,0 ,9,UX,0,0,0 , 10,UX,0,0,0 , 11,UX,0,0,0 , 12,UX,0,0,0 ;load 1,FX,FY,0,0 , 2,FX,FY,0,0 , 3,FX,FY,0,0 , 4,FX,FY,0,0 ,5,FX,FY,0,0 , 6,FX,FY,0,0 , 7,FX,FY,0,0 , 8,FX,FY,0,0 ,9,FX,FY,0,0 , 10,FX,FY,0,5 , 11,FX,FY,0,5 , 12,FX,FY,0,0 ;In[141]:=FormGlobalStifMat ; 形成整体刚度矩阵ApplyDispAnsys ; 施加位移边界ApplyLoadAnsys ; 施加载荷边界ModelMesh2D elem,co,ielem,inode,nnode ; 作未变形单元图ModelPlot2D elem,co,ielem,inode,nnode ; 作未变形线框图SolutionLinear GlobalK,paload ; 求解位移StressCompu ; 计算应力StressFunction ; 拟合应力函数polynomial of stress x0.865662 0.0895586x 0.0290821y 0.019388x ypolynomial of stress y 2.67497 0.438911x 0.294665y 0.196443x ypolynomial of stress xy0.337566 1.57009 10 16x 0.13649y 3.02164 10 17x yIn[149]:=newco Table 0, i,inode , j,2 ; 变形后的节点坐标mag 1000000; 位移放大系数In[150]:= 放大节点变形后的坐标Do newco i,1 co i,1 dadisp 2 i 1,1 mag;newco i,2 co i,2 dadisp 2 i,1 mag;, i,inode ;In[151]:= 输出数据TableForm newco co,TableHeadings Automatic, Style "x Disp", Red,Bold,Large ,Style "Y Disp", Blue,Bold,LargeTableForm force,TableHeadings Automatic,Style "Fx", Red,Bold,Large ,Style "Fy", Blue,Bold,Large 画图Displot2D elem,newco,ielem,inode,nnode ; 作变形图Show pldisp,wiremesh,AspectRatio Automatic 作变形图和未变形的线裤图Plnssx ; 作Σx应力图Plnssxy ; 作Σy应力图Plnssy ; 作Σxy应力图Out[151]//TableForm=Out[152]//TableForm=Out[153]=In[155]:=PlnssxOut[155]=2468算例2inode 12;ielem 5;ndof 8;ndofn 2;nnode 4;totdof inode ndofn; shapeN 1 ks 1 yt , 1 ks 1 yt , 1 ks 1 yt , 1 ks 1 yt 4;co 0,0 , 0.25,0 , 0.5,0 , 0.75,0 , 1,0 , 1.25,0 , 1.25,0.25 , 1,0.25 , 0.75,0.25 , 0.5,0.25 , 0.25,0.25 , 0,0.25 ;xmin Min Take Transpose co , 1 ;xmax Max Take Transpose co , 1 ;ymin Min Take Transpose co , 1 ;ymax Max Take Transpose co , 1 ;elem 1,2,11,12 , 2,3,10,11 , 3,4,9,10 , 4,5,8,9 , 5,6,7,8 ;h thick 0.025;nu0 0.3;ee0 210 10^6;ElmCord Array a, ielem,4,2 ;For i 1,i ielem,i ,ElmCord i co elem i,1 ,co elem i,2 ,co elem i,3 ,co elem i,4 ;GlobalK 0IdentityMatrix 12 ;DMatDmatrix Dm1 ee0 1 nu0^2 1,nu0,0 , nu0,1,0 , 0,0, 1 nu0 2 ; paload Table 0, i,totdof , j,1 ;dadisp Table 0, i,totdof , j,1 ;disp 1,UX,UY,0,0 , 2,0,0,0,0 , 3,0,0,0,0 , 4,0,0,0,0 , 5,0,0,0,0 , 6,0,0,0,0 , 7,0,0,0,0 , 8,0,0,0,0 ,9,0,0,0,0 , 10,0,0,0,0 , 11,0,0,0,0 , 12,UX,UY,0,0 ;load 1,FX,FY,0,0 , 2,FX,FY,0,0 , 3,FX,FY,0,0 , 4,FX,FY,0,0 , 5,FX,FY,0,0 , 6,FX,FY,0,5 , 7,FX,FY,0,5 , 8,FX,FY,0,0 , 9,FX,FY,0,0 , 10,FX,FY,0,0 , 11,FX,FY,0,0 , 12,FX,FY,0,0 ; FormGlobalStifMat ;ApplyDispAnsys ;ApplyLoadAnsys ;ModelMesh2D elem,co,ielem,inode,nnode ;ModelPlot2D elem,co,ielem,inode,nnode ;SolutionLinear GlobalK,paload ;StressCompu ;StressFunction ;polynomial of stress x34844.4 27306.7x 278756.y 218453.x ypolynomial of stress y10453.3 8192.x 83626.7y 65536.x ypolynomial of stress xy2844.44 1991.11x 5.63593 10 11y 1.33736 10 10x y newco Table 0, i,inode , j,2 ;mag 1000; 位移放大系数Do newco i,1 co i,1 dadisp 2 i 1,1 mag;newco i,2 co i,2 dadisp 2 i,1 mag;, i,inode ;TableForm newco co,TableHeadings Automatic, Style "x Disp", Red,Bold,Large , Style "Y Disp", Blue,Bold,LargeTableForm force,TableHeadings Automatic,Style "Fx", Red,Bold,Large ,Style "Fy", Blue,Bold,Large 画图Displot2D elem,newco,ielem,inode,nnode ;Show pldisp,wiremesh,AspectRatio AutomaticPlnssx ;Plnssxy ;Plnssy ;Plnssx。

相关文档
最新文档