Mathematica程序举例1

Mathematica程序举例1
Mathematica程序举例1

图3.3里的Mathematica程序(版本8.0)

在Mathematica8.0的命令窗口输入如下命令:Cal[n_,i_]=2i*Binomial[n,i];

Print[ScientificForm[Cal[500,8]*1.0,4]];

Print[ScientificForm[Cal[500,12]*1.0,4]]; Print[ScientificForm[Cal[500,16]*1.0,4]]; Print[ScientificForm[Cal[500,24]*1.0,4]]; Print[ScientificForm[Cal[720,8]*1.0,4]];

Print[ScientificForm[Cal[720,12]*1.0,4]]; Print[ScientificForm[Cal[720,16]*1.0,4]]; Print[ScientificForm[Cal[720,24]*1.0,4]];

按Shift+Enter组合键,运行可得:

2.344×1019

1.828×1027

3.75×1034

9.199×1047

4.41×1020

1.514×1029

1.381×1037

6.913×1051

图4.3.2.4.1里的Mathematica程序(版本8.0)

在Mathematica8.0的命令窗口输入如下命令:Cal[m_,n_]=Binomial[m,n];

Fun1[B_,m_,n_,ρ_]=((Cal[m,ρ]*Cal[B-m,n-ρ])/Cal[B,n]); X1=i 826Fun1104,26,26,i Cal i,80.267810.267i 8

; X2=i 1226Fun1104,26,26,i Cal i,120.2671210.267i 12; X3=i 1626Fun1104,26,26,i Cal i,160.2671610.267i 16; X4=i 2426Fun1104,26,26,i Cal i,240.2672410.267i 24; Y1=i 846Fun1248,46,46,i Cal i,80.267810.267i 8; Y2=i 1246Fun1248,46,46,i Cal i,120.2671210.267i 12; Y3=i 1646Fun1248,46,46,i Cal i,160.2671610.267i 16; Y4=i 2446Fun1248,46,46,i Cal i,240.2672410.267i 24; Print[X1 "\n",X2 "\n",X3 "\n",X4 "\n",Y1 "\n",Y2 "\n",Y3 "\n",Y4 "\n"]; 按Shift+Enter 组合键,运行可得:

0.0000951929

3.92256×10-9

5.19076×10-15

7.7419×10-33

0.00104287

5.9339×10-7

3.76588×10-11

3.96973×10-22

图4.3.2.4.2里的Mathematica 程序(版本8.0)

在Mathematica8.0的命令窗口输入如下命令:

Cal[m_,n_]=Binomial[m,n]; Fun1[B_,m_,n_,_]=((Cal[m,]*Cal[B-m,n-])/Cal[B,n]);

Func1[i_,p_]=Fun1[248,46,46,i]*Cal[i,p]*0.267^p*(1-0.267)^(i-p); Fun[p_]:=i p 46Func1i,p

;

Plot[Fun[p],{p,0,46},AxesOrigin

按Shift+Enter 组合键,运行可得下图:

Mathematica的编程基础

第3讲Mathematica的编程基础 在Mathematica系统中,我们所进行的计算和操作实际上都可以认为是在编程,因为编程最简单地说就是用一系列的语句来描述一个适当操作,下面讨论一些与编程有关的问题。包括描述复杂的计算过程的程序结构,定义局部变量,如何实现程序包等问题。 3.1过程的基本构成 Mathematica中一个过程就是用分号隔开的表达式序列,也称为复合表达式。在Mathematica的各种结构中,任何一个表达式的位置都能放一个复合表达式,运行时按复合表达式顺序依次求值,输出最后一个表达式的值。表达式序列我们习惯也称为语句序列。 3.2条件控制结构 Mathematica中提供了If、Which和Switch三种描述条件分支的结构语句,这些语句常用在程序中,也可用于行文命令In[n]中。 3.2.1 If语句的结构 If语句的结构与一般程序设计语言结构类似。由于Mathematica 的逻辑表达式的值有三个:真(True)、假(False)和非真非假(通常是无法判定)。因此If语句的转向也有三种情况,下列是If结构的三种情况: 格式:If[逻辑表达式,表达式1] 功能:逻辑表达式的值为真,计算表达式1,表达式1的值就是整个If结构的值。

格式:If[逻辑表达式,表达式1,表达式2] 功能:当逻辑表达式的值为真,计算表达式1的值,并将表达式1的值作为整个If结构的值;当逻辑表达式的值为假时,计算表达式2的值,并将表达式2的值作为整个If结构的值。 格式:If[逻辑表达式,表达式1,表达式2,表达式3] 功能:当逻辑表达式的值为真,计算表达式1的值,并将表达式1的值作为整个结构的值;当逻辑表达式的值为假时,计算表达式2的值,并将表达式2的值作为整个结构的值;当逻辑表达式的值非真非假时,计算表达式3的值,并将表达式3的值作为整个结构的值。 3.2.2 Which语句的结构 Which语句的一般形式: 格式:Which[条件1,表达式1,条件2,表达式2,…,条件n,表达式n] Which[条件1,表达式1,…条件n,表达式n, True,表达式] 功能:依次计算条件i,计算对应第一个条件为True的表达式的值,作为整个While结构的值。所有都为假,值为Null,作为整个结构的值。 3.2.3 Switch语句的一般形式 格式:Switch[expr,模式1,表达式1,模式2,表达式2,…] 功能:将表达式expr的值与模式1,模式2,…依次比较,给出第一个与expr匹配的模式i对应的表达式的值,若无匹配的,整

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

Mathematica软件的函数式编程 本文由陆宇撰写,中国科学软件网发布 【前言】 作为Mathematica的开发商,Wolfram公司近几年致力于将其作为一门编程语言进行推广(这也是Wolfram公司改称 Mathematica为Wolfram Language的原因,本文仍沿用旧称)。如今也已经有了不少优秀的介绍Mathematica编 程的书籍,例如《Power Programming with Mathematica》、《Mathematica Programming:An Advanced Introduction》、《An Elementary Introduction to the Wolfram Language》。尽管如此,但按照笔者经验,对于不少人来说,Mathematica还是很难上手,其独特的编程风格仍然很难适应。 由于使用方法不当(甚至是道听途说)造成了一个广泛的误解: “Mathematica就是一个高级计算器,推推公式什么的还可以,遇到实际问题就不行了。”笔者回顾自己自学Mathematica的经历,也走过不少弯路,期间也不乏有如上那样的误解。作为“过来人”,笔者也对一些人在学习Mathematica过程中遇到的瓶颈也深有体会。本文就是从一个“过来人”的角度谈谈对Mathematica中函数式编程的理解。 笔者认为有些不恰当的前概念会阻碍Mathematica的学习。数学上认识的局限性,甚至是一些其他编程语言的“经验”,都有可能是阻碍学习Mathematica的症结所在。而对这些非技术方面的“意识”角度的探讨,现阶段的资料中还比较缺乏。原因之一也许是内容比较“虚”,不易做到“言之有物”。

实验三 Mathematica的综合程序设计

实验三:Mathematica的综合程序设计 1.验证角谷猜想.如果一个自然数,是偶数,就把它除以2,如果是奇数,就把它乘以3加1, 这样下去,经过若干次之后,必定得到数字1.试编写程序验证这一猜想. In[ ]:= n=Input["n="];Print["n=",n];k=0; While[n!=1,k++;If[EvenQ[n],n=n/2,n=3n+1]]; Print["k=",k] Out[ ]= n= 23 k= 15 2.求一个整数的所有因子 方法一:因子竖着放的 In[ ]:= n=Input["n="];Print["n=",n]; For[i=1,i<=n,i++,If[Mod[n,i]==0,Print[i]]] In[ ]:= n= 12 Out[ ]= 1 2 3 4 6 12 方法二:借助于列表,横着排放 In[ ]:= n=Input["n="];Print["n=",n];t={}; For[i=1,i<=n,i++,If[Mod[n,i]==0,AppendTo[t,i]]];t In[ ]:= n= 12 Out[ ]= {1,2,3,4,6,12} 3.验证Nn=p1*p2*...*pn+1是不是素数 此题,n不宜过大,以免溢出. In[ ]:= For[k=1;n=1,n<=30,n++, k=k*Prime[n]; If[PrimeQ[k+1],Print["N[",n,"]=",k+1," is a Prime"], Print["N[",n,"] =",k+1," is not a Prime"]]] 4.Fermat数是不是素数,欧拉证明了n=5不是.试试看. n In[ ]:= f[n_] := 221 In[ ]:= f[{1,2,3,4,5,6,7,8}] Out[ ]= {5,17,257,65537,4294967297,18446744073709551617,340282366920938463463374 607431768211457,1157920892373161954235709850086879078532699846656405640394575840 07913129639937 }

5.1 mathematica程序设计——在高等数学中的应用

5 mathematica 程序设计(Ⅰ) —— 在高等数学中的应用 (王积社) 研究问题: 用mathematic 设计程序.计算数学分析、高等代数的问题。 5.1 问题1:求二元多项式函数的极值。 5.1.1 理论基础: 在数学分析中有以下结论: ⑴ 极值与驻点 极值:设函数(,)z f x y =在点00(,)x y 的某个邻域内有定义,如果对在此邻域内除点00(,)x y 外的任意点(,)x y ,均有00(,)(,)f x y f x y <(或者00(,)(,)f x y f x y >),则称点00(,)x y 为函数(,)z f x y =的极大值点(或极小值点). 00(,)f x y 称为极大值(或极小值),极大值点和极小值点统称为极值点,极大值和极小值统称为极值。 驻点: 使(,)0,(,)0x y f x y f x y ==同时成立的实数点(,)x y 称为函数(,)z f x y =的驻点. ⑵ 极值存在的必要条件 设函数(,)z f x y =在点00(,)x y 的某个邻域内有定义,且存在一阶偏导数,如果00(,)x y 是极值点,则必有0000(,)0, (,)0x y f x y f x y ==. ⑶ 极值存在的充分条件

设函数(,)z f x y =在点00(,)x y 的某个邻域内具有二阶连续偏导数,且00(,)x y 是驻点. 设00(,)xx A f x y =,00(,)xy B f x y =,00(,)yy C f x y =,则 ① 当20B AC -<时,点00(,)x y 是极值点,且当0A <时,点00(,)x y 是极大值点;当0A >时,点00(,)x y 是极小值点; ② 当20B AC ->时,点00(,)x y 不是极值点; ③ 当20B AC -=时,点00(,)x y 有可能是极值点也可能不是极值点. 5.1.1 算法描述: 根据上述结论,可以得到以下算法: o 1 输入(,)z f x y =; o 2 求(,)(,)x a x y f x y ='、(,)(,)y b x y f x y =' 与 (,)(,)xx A x y f x y =、(,)(,)xy B x y f x y =、(,)(,)yy C x y f x y =; o 3 求2(,)(,)(,)(,)P x y B x y A x y C x y =- ; o 4 解方程组:(,)0(,)0x y f x y f x y ????? ='=',取其实数解得到(,)z f x y =的驻点集 S ; o 5 依次取每个00(,)x y S ∈,计算00(,)P x y ,依照极值存在的充分条来判断 00(,)x y 是否为极值点: 若00(,)0P x y >,则00(,)x y 不是极值点; 若00(,)0P x y <且00(,)0A x y <,则00(,)f x y 是极大值; 若00(,)0P x y <且00(,)0A x y >,则00(,)f x y 是极小值; 若00(,)0P x y =,则不能确定00(,)x y 是否为极值点; 5.1.3 相关的mathematic 命令 ① D[f [x,y],x] 功能:求函数f(x,y) 对x 的偏导数。

Mathematica 程序与编程

第10章程序与编程 10.1 顺序语句 在Mathematica中的顺序语句,就是复合表达式,亦即一串用分号隔开的表达式序列。 10.2 循环语句 在Mathematica中有3种描述循环的语句,叙述如下。 For[] While[] Do[] 10.2.1 For语句 For循环语句的一般形式为: For[循环初值e1,终止条件e2,循环变量修改值e3,循环体e4]

10.2.2 While语句 While循环语句的一般形式为: While[条件e1,循环体e2]

10.2.3 Do语句 Do循环语句的一般形式为: Do[循环体e1,{循环范围e2}] Zhou er 10.3 条件语句 在Mathematica中提供有3种描述条件分支结构的语句,它们是:If[] Which[] Switch[] 1.If语句 If语句是最为常用的条件分支结构语句,它的一般形式是: If[逻辑表达式e,表达式s] 它的具体形式有: If[逻辑表达式e,表达式s1]

当e的值为真(成立)时,就执行s1一次,s1的值就是整个If结构的值,否则若e的值为假时,那么返回Null(没有结果显示)。 If[逻辑表达式e,表达式s1, 表达式s2] 当e的值为真时,执行s1,并将s1的值作为整个结构的值,否则,执行s2,并将s2的值作为整个结构的值。 If[逻辑表达式e,表达式s1,表达式s2,表达式s3] 当e的值为真时,执行s1,当e的值为假时,执行s2;当e的值不能判定为真或为假时执行s3,并将三者之一的结果作为整个If结构的值。 2.Which语句 Which语句的一般形式是:

JavaGUI程序设计Mathematica前端实现

面向对象语言程序设计报告 题目: Java GUI程序设计 姓名: 班级: 学号: 指导教师: 2016 年12 月 摘要 Java是一门功能强大和简单易的面向对象编程语言, Mathematica是一款科学计算软件,很好地结合了数值和符号计算引擎、图形系统、编程语言、文本系统、和与其他应用程序的高级连接。通过学习Mathematica中提供的Java接口JLink,将利用在Java的图形界面窗口中输入Mathematica语句并在Java的图形窗口中显示输出结果。对于大多数第四代语言的集成开发环境都有命令窗(Command Window),而由于Mathematica的特殊

性,它的集成开发环境中并没有命令窗,本设计也类结果似于命令窗,可以帮助习惯于其他第四代语言的用户继续使用命令窗。 关键词:Java;Mathematica;JLink;GUI 目录 面向对象语言程序设计报告 (1) 摘要 (2) 目录 (2) 第一章引言 (1) 第二章设计思路 (2) §2.1框架设计 (2) §2.2 详细设计 (2) 2.2.1 JLink (2) 第三章结果 (3) 第四章不足与展望 (4) 参考文献 (5)

附录 (5) GraphicsApp (5) welcome (9) openurl (11)

第一章引言 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程[1] 。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点[2] 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等[3] 。 图形用户界面(GUI, Graphical User Interface)是指以图形化方式与用户进行交互的程序运行界面,它的引入会使程序更友好、更丰富,且提供灵活、强大的人机交互功能,它已成为当前应用程序设计的主流。在GUI程序设计中,组件(Component)是GUI的基本组成元素,凡是能够以图形化方式显示在屏幕上并能与用户交互的对象均为组件。事件是指组件触发的动作事件,java中不同的事件由不同的监听器处理,组件是事件源对象,而监听器主要用来接收来自事件源对象产生的动作事件,然后对其处理。 Wolfram语言(通常指代Mathematica或者缩写为MMA),是Mathematica 和Wolfram Programming Cloud 所使用的语言。这是一种由沃尔夫勒姆研究公司开发的多模态编程语言。它是一种被期望将颠覆编程甚至颠覆世界的全新计算模式。它具有广泛和普遍的适用性,主要特点是符号计算、函数式编程和基于规则的编程。它可以用来创建和表示任何结构和数据。这种语言覆盖面非常全面和广泛,并且可以用于解决大量专业领域的问题。例如,它内置了用于生成和运行图灵机、创建图形和音频、分析三维模型、矩阵操作、求解微分方程的内置函数。为了方便用户使用,还提供了丰富的文档资料。 Mathematica 的底层解释器大部分由C语言写成,此外一些极端要求速度的基础计算函数也由C语言支持,而其他大量的实用函数以及包由则是由Mathematica 编程语言来实现的。解释器和这些函数构成了所谓的Mathematica Kernel。Mathematica 这个生态系统的另外一个重要组成部分是前端(Front End),大量美轮美奂的数学公式显示,图形绘制,文档排版功能都极大程度地依赖前端,而前端和Kernel 之间通过MathLink 进行交互。Front End 和Kernel 被设计得相当独立,尽管并不普遍,但是Front End实际上是可以被当做独立的软件来使用的,用户可以在上面编辑文字公式,生成漂亮的文档、演示文稿,绘制图形等等。 虽然Mathematica提供了JLink包,但是关于这部分的帮助却不是中文的,对于Java初学者来说理解起来会有着较大的困难。在网络上搜索,发现有关这方面的中文资料也是寥寥无几。 每一种计算机语言都有着它的优点和不足,Mathematica虽然简单强大,但是也有它不擅长的方面,例如在进行二进制文件操作方面,读取速度相当慢,而且提供的对二进制文件的操作也极为匮乏,对于较大的二进制文件,除非内存至少有文件大小的两倍大小,否则无法操作。而Java语言相比于Mathematica在对于某些相对原始的文件操作上有着较大的优势可以弥补其不足。本次进行的学习,为以后的实际需要提供了帮助也可以帮助习惯于其他第四代语言的用户在过渡期暂时使用“Mathematica”下的命令窗。 第二章设计思路 §2.1框架设计 经过仔细的考虑与多次的尝试得出了一个程序框架,如图2-1所示。 图2-1 程序框架 §2.2 详细设计 程序的核心在于利用Java调用Mathematica,欢迎窗口和界面的搭建与事件处理十分简单,在任何一本有关Java的书中都可以查到。下面将重点介绍JLink。

mathematica5教程

Mathematica5教程 第1章Mathematica概述 1.1 运行和启动:介绍如何启动Mathematica软件,如何输入并运行命令1.2 表达式的输入:介绍如何使用表达式 1.3 帮助的使用:如何在mathematica中寻求帮助 第2章Mathematica的基本量 2.1 数据类型和常量:mathematica中的数据类型和基本常量 2.2 变量:变量的定义,变量的替换,变量的清除等 2.3 函数:函数的概念,系统函数,自定义函数的方法 2.4 表:表的创建,表元素的操作,表的应用 2.5 表达式:表达式的操作 2.6 常用符号:经常使用的一些符号的意义 第3章Mathematica的基本运算 3.1 多项式运算:多项的四则运算,多项式的化简等 3.2 方程求解:求解一般方程,条件方程,方程数值解以及方程组的求解3.3 求积求和:求积与求和 第4章函数作图 4.1 二维函数作图:一般函数的作图,参数方程的绘图 4.2 二维图形元素:点,线等图形元素的使用 4.3 图形样式:图形的样式,对图形进行设置 4.4 图形的重绘和组合:重新显示所绘图形,将多个图形组合在一起 4.5 三维图形的绘制:三维图形的绘制,三维参数方程的图形,三维图形的 设置 第5章微积分的基本操作 5.1 函数的极限:如何求函数的极限 5.2 导数与微分:如何求函数的导数,微分 5.3 定积分与不定积分:如何求函数的不定积分和定积分,以及数值积分5.4 多变量函数的微分:如何求多元函数的偏导数,微分 5.5 多变量函数的积分:如何计算重积分 5.6 无穷级数:无穷级数的计算,敛散性的判断 第6章微分方程的求解 6.1 微分方程的解:微分方程的求解 6.2 微分方程的数值解:如何求微分方程的数值解 第7章Mathematica程序设计 7.1 模块:模块的概念和定义方法 7.2 条件结构:条件结构的使用和定义方法

相关文档
最新文档