MATLAB数学建模编程资料

上传人:gbs****77 文档编号:9999399 上传时间:2020-04-09 格式:DOC 页数:222 大小:4.50MB
返回 下载 相关 举报
MATLAB数学建模编程资料_第1页
第1页 / 共222页
MATLAB数学建模编程资料_第2页
第2页 / 共222页
MATLAB数学建模编程资料_第3页
第3页 / 共222页
点击查看更多>>
资源描述
内部资料 数学建模编程培训 数学建模教练组编写 2008 年 7 月 I 目 录 1 Matlab 软件 1 1 1 基本介绍 1 1 1 1 软件简介 1 1 1 2 工作环境介绍 1 1 1 3 数据结构 3 1 1 4 Matlab 语言的特点 3 1 1 5 Matlab 中的常量与特殊变量 3 1 1 6 特殊符号 3 1 1 7 Matlab 常用函数 4 1 2 矩阵函数 7 1 2 1 构造矩阵 7 1 2 2 矩阵变换操作 9 1 2 3 设置输出格式 10 1 3 程序设计入门 10 1 3 1 变量 10 1 3 2 基本语句 11 1 3 3 分支判断语句 11 1 3 4 循环语句 13 1 3 5 Matlab 程序 M 文件 13 1 3 6 函数与子函数 14 1 3 7 建立内部函数 17 1 4 字符串函数 17 1 4 1 函数简介 17 1 4 2 例子 18 1 4 3 文件处理函数 19 1 4 4 读取格式化文件例子 20 1 5 二维作图 21 1 5 1 基本图形 21 1 6 Matlab 编程练习题 23 1 6 1 练习 1 23 1 6 2 练习 2 24 1 7 编程中经常发现的问题 24 2 Mathematica 快速入门 26 2 1 Mathematica 简介 26 2 1 1 命令输入与运行 26 2 1 2 数 表达式和变量 28 2 1 3 常用的内部函数 30 2 1 4 自定义函数 33 2 1 5 常用菜单 35 2 2 基本绘图命令 数组与数据拟合 38 2 2 1 基本绘图命令 38 2 2 2 数组运算 42 II 2 2 3 数据拟合 44 2 3 极限 微积分与极值命令 45 2 3 1 极限 45 2 3 2 微积分 45 2 3 3 极值 47 2 3 4 LinearProgramming 47 2 3 5 ConstrainedMin 48 2 3 6 ConstrainedMax 48 2 4 方程与方程组求解 48 2 4 1 定义方程 48 2 4 2 一般方程 组 求解 49 2 4 3 微分方程 组 求解 50 2 4 4 不等式 组 求解 51 2 5 程序设计简介 51 2 5 1 Mathematica 程序设计基本命令 51 2 5 2 Mathematica 动画制作简介 53 3 递归程序设计 55 3 1 计算阶乘 55 3 2 组合数学中的 Pascal 公式 55 3 3 汉诺塔问题 56 3 3 1 Hanoi 塔 问题 56 3 3 2 问题求解 56 3 3 3 实现程序 56 3 4 案例 商人安全过河问题 57 3 4 1 问题分析 57 3 4 2 模型建立 58 3 4 3 模型求解 58 3 4 4 进一步的思考题 58 3 4 5 程序运行结果 59 3 4 6 递归算法求解程序 59 4 优化模型及其求解 66 4 1 案例 背包问题 66 4 1 1 问题分析 66 4 1 2 变量与符号说明 66 4 1 3 模型建立 66 4 1 4 模型求解及结果 67 4 1 5 贪婪法 68 4 1 6 贪婪法求解程序 68 4 1 7 贪婪法求解结果 69 4 1 8 穷举法求解程序 69 4 1 9 穷举法程序运行结果 71 4 2 案例 高速公路问题 71 4 2 1 问题分析 72 4 2 2 变量说明 72 III 4 2 3 模型假设 72 4 2 4 模型建立 72 4 2 5 模型求解 73 4 2 6 模型结果及分析 73 4 2 7 求解模型的主程序文件 73 4 3 随机跳跃法 74 4 3 1 随机跳跃法简介 74 4 3 2 求解高速公路问题的随机跳跃法程序 75 4 3 3 程序运行结果 76 4 4 网格法 76 4 4 1 网格法简介 76 4 4 2 求解高速公路问题的网格法程序 77 4 4 3 程序运行结果 78 4 5 实验 开放式基金的投资问题 78 5 系统模拟 80 5 1 概述 80 5 1 1 模拟技术 80 5 1 2 模拟时间 80 5 1 3 模拟语言 81 5 1 4 随机数的模拟 81 5 1 5 随机数的产生 81 5 1 6 模拟均匀分布随机变量的函数 82 5 1 7 模拟指数分布随机变量的函数 83 5 1 8 模拟正态分布随机变量的函数 83 5 2 蒙特卡罗模拟法 83 5 2 1 模拟寻求近似圆周率 83 5 2 2 用蒙特卡罗法估算定积分 84 5 2 3 用蒙特卡罗法估计体积 86 5 3 案例 渡口模型 87 5 3 1 问题描述 87 5 3 2 问题分析 87 5 3 3 模型建立 87 5 3 4 模拟程序设计 88 5 3 5 模型求解结果及分析 88 5 3 6 模拟程序 88 5 3 7 思考题 90 5 4 案例 核反应堆屏蔽层设计问题 90 5 4 1 问题描述与分析 90 5 4 2 模型假设 91 5 4 3 中子运动的数学描述 91 5 4 4 模拟过程 91 5 4 5 模拟结果 92 5 4 6 模拟程序 92 5 4 7 思考题 94 IV 5 5 案例 理发店系统研究 94 5 5 1 问题分析 94 5 5 2 模型假设 94 5 5 3 变量说明 95 5 5 4 模型建立 95 5 5 5 系统模拟 95 5 5 6 系统模拟算法设计 96 5 5 7 系统模拟程序 96 5 6 实验题目 100 5 6 1 实验 赶上火车的概率 100 5 6 2 实验 小狗追人的故事 101 5 6 3 实验 一个修理厂的模拟 104 5 6 4 实验 超市收费服务系统 105 6 编程中常见错误 105 6 1 常见语法错误 105 6 1 1 引用未定义变量 105 6 1 2 下标越界 105 6 1 3 维数不同赋值 106 6 2 逻辑错误 106 6 2 1 变量未初始化 106 6 2 2 变量名误用 106 6 2 3 程序实现错误 107 6 3 如何查找程序中的错误 107 6 3 1 查找错误的一般原则 107 6 3 2 一般查错顺序 107 7 动态规划建模举例 107 7 1 动态规划方法介绍 108 7 2 动态规划求解示例 108 7 2 1 背包问题 108 7 3 例子 运载问题 110 7 3 1 前向算法建立动态规划模型 110 7 3 2 后向算法建立动态规划模型 114 7 3 3 求解方法结果对比分析 116 7 4 应用中面临的问题 117 8 连续系统建模与模型求解选讲 118 8 1 常用 Mathematica 命令 118 8 2 案例 冷却模型 121 8 2 1 问题分析 121 8 2 2 基本假设 121 8 2 3 变量说明 121 8 2 4 建立模型 121 8 2 5 求解 122 8 2 6 进一步思考 122 8 3 案例 战斗模型 122 V 8 3 1 问题分析 122 8 3 2 基本假设 123 8 3 3 变量说明 123 8 3 4 建立模型 123 8 3 5 求解模型 123 8 3 6 进一步分析 124 8 4 案例 人口增长预测 125 8 4 1 问题分析 125 8 4 2 基本假设 125 8 4 3 建立模型 125 8 4 4 求解模型 125 8 4 5 进一步分析 126 8 5 案例 狼追击兔子的问题 127 8 5 1 问题重述与分析 127 8 5 2 变量说明 127 8 5 3 模型假设 127 8 5 4 模型建立 128 8 5 5 微分方程数值解 129 8 5 6 系统模拟法求解问题 130 8 6 实验习题 132 9 统计问题建模及求解 134 9 1 常用 Mathematica 命令 134 9 2 案例 合金的抗拉强度控制 135 9 3 建模习题 141 10 Matlab 优化工具箱 142 10 1 简介 142 10 2 一元非线性方程求根 144 10 3 非线性方程组求解 145 10 4 无约束非线性最小化 146 10 4 1 fminbnd 求单变量函数最小值点 146 10 4 2 fminunc 148 10 4 3 fminsearch 求多变量函数最小值点 148 10 5 有约束非线性最小化 fmincon 149 10 6 线性规划 linprog 151 10 7 最小二乘和曲线拟合 152 10 7 1 线性最小二乘 152 10 8 非线性曲线拟合 lsqcurvefit 153 11 数学建模案例 155 11 1 案例 节水洗衣机 155 11 1 1 问题重述与分析 155 11 1 2 基本假设及说明 155 11 1 3 符号和变量说明 156 11 1 4 建模准备 156 11 1 5 模型建立 157 VI 11 1 6 模型求解 158 11 1 7 思考题 163 12 Lingo 数学软件 164 12 1 LINGO 快速入门 164 12 2 LINGO 中的集 165 12 3 模型的数据部分和初始部分 169 12 4 LINGO 函数 172 12 5 LINGO WINDOWS 命令 183 12 6 LINGO 的命令行命令 199 12 7 综合举例 203 1 1 Matlab 软件 1 1 基本介绍 1 1 1 软件简介 它已经成为世界上应用最广泛的数学软件之一 尤其在工程计算领域 高 校应用最广 该软件以矩阵运算为基础 将计算 可视化 程序设计融合在简 单易用的交互式环境中 运用 MATLAB 可以实现工程计算 数学建模 计算机模拟 算法研究 数 据分析与处理 科学与工程绘图 应用软件开发 数值计算 图形 图像处理 支持递归函数 还有多种工具箱 不同领域 Matlab 部分工具箱 控制系统工具箱 Control System Toolbox 小波工具箱 Wavelet Toolbox 模糊逻辑工具箱 Fuzzy Logic Toolbox 神经网络工具箱 Neural Network Toolbox 通信工具箱 Communication Toolbox 图象处理工具箱 Image Processing Toolbox 优化工具箱 Optimization Toolbox 财政金融工具箱 Financial Toolbox 样条工具箱 Spline Toolbox 统计工具箱 Statistics Toolbox 信号处理工具箱 Signal Processing Toolbox 1 1 2 工作环境介绍 1 1 2 1搜索路径管理 1 命令形式设置 path 查看或设置当前的搜索路径 用法 path path p path p path 举例 path path d mywork path d mcmuse path addpath 用于添加路径 用法 addpath dirname 将目录 dirname 放在原有目录的前面 2 addpath dirname begin addpath dirname end 新增加一个搜索目录 放在原有目录最后 addpth dir1 dir2 dir3 增加多个搜索目录 放在搜索目录最前面 rmpath 用于删除路径 用法 rmpath dirname 删除搜索目录 dirname rmpath dir1 dir2 dir3 删除多个搜索目录 pwd 查看当前指向目录 举例 cd 用法 cd dirname 将 dirname 作为当前目录 cd 返回当前目录 cd 将当前目录设置其上级目录 有空格 2 界面设置 通过菜单 File Set Path 会打开一个窗口 用于添加 删除搜索路径 可以 方便的打开 运行 MATLAB 文件 1 1 2 2工作环境管理 查看工作空间变量 菜单方式 通过 File 选择 Show WorkSpace 菜单条可以显示当前工作环境内的变量 执行如下命令 clear all x rand 3 1 3 x 0 9501 0 2311 0 6068 通过 open 按钮可以打开变量进行编辑 命令方式 who 显示当前工作空间的变量名 whos 显示当前工作空间的每个变量的信息 who global 显示当前工作空间全局变量名 whos global 显示当前工作空间全局变量的信息 1 1 3 数据结构 在 MATLAB 中基本数据结构是矩阵 而矩阵一般分为 数值矩阵 字符串 矩阵 例如 a 1 10 a ones 3 2 前 2 行为数值矩阵 s hello world 为 1 行 11 列字符串矩阵 1 1 4 Matlab 语言的特点 语言简介 编程效率高 变量名区分大小写 如 count 与 Count num Num 与 NUM 在 MATLAB 指的是不同的变量 丰富的内部函数 外部函数 工具箱 易扩展性 1 1 5 Matlab 中的常量与特殊变量 i j 虚数单位 如 3 2i 2 3j 4j 30 这里的 i j 必须是小写字母 pi 圆周率 3 14159265358979 必须为小写 realmax realmin inf 无穷大 NaN 表示不是一个数值 意思是 Not a Number ver 或 version 版本信息 ans 变量 用于存储当前语句未保存的计算结果 1 1 6 特殊符号 符号 说明 例子 产生向量 用于循环 V 1 3 v 1 0 5 3 用于分割命令或元素 命令结束符号 运算结果 A 1 2 3 4 5 6 4 不显示 用于创建矩阵分 行 B A 2 例子 for i 1 3 for j 1 4 tmp j m i j i 100 j end end 1 1 7 Matlab 常用函数 1 ones 产生元素均为一的矩阵 常见用法 ones n 产生 n n 矩阵 ones m n 或 ones m n 产生 m n 矩阵 ones size A 产生与 A 同样维数的矩阵 举例 ones 3 5 ans 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 zeros 产生 0 矩阵 用法与 ones 相同 用法 zeros n zeros m n 或 zeros m n zeros size A 3 length返回向量的长度 length x 等价于 max size x 举例 a ones 1 5 a 1 1 1 1 1 length a ans 5 end 用法 表示 for while if 等语句的中断符号 也可表示最后一个元素的索引 如 a end 还可以用 a end 1 来增加元素 举例 a 1 3 2 5 5 a 1 3 2 5 a end ans 5 a end 1 8 a 1 3 2 5 8 4 rand 用法 rand 产生一个在 0 1 之间的均匀分布的数 5 randn产生正态分布随机数 用法 randn 产生一个在服从 N 0 1 正态分布的随机数 randn n randn m n 举例 rand ans 0 9501 rand 2 3 ans 0 2311 0 4860 0 7621 0 6068 0 8913 0 4565 randn ans 0 6565 randn 3 2 ans 1 1678 1 2132 0 4606 1 3194 0 2624 0 9312 6 find find 找出非 0 元素 也可以查找指定条件的元素 并返回元素所在位置索引 1 例子 x 8 5 6 9 4 7 10 find x 5 输出结果 ans 1 3 4 6 7 2 例子 6 x fix rand 5 10 r c find x 5 r r c c length r length find x 5 输出结果 x 0 3 4 6 4 0 6 4 7 7 1 7 3 4 8 5 6 1 5 2 0 0 6 1 2 r 2 3 4 5 1 2 2 3 c 2 2 2 3 4 4 5 5 ans 0 3 例子 vec fix rand 1 10 100 id find vec 60 a 1 2 10 rand 2 另外一个语句可以只有表达式 而没有变量名列表和等号 这样改语 句的结果将自动赋值给 MATLAB 内部变量 ans 例子 rand 1 5 size a 1 3 3 分支判断语句 1 3 3 1if 分支判断语句 其通用格式 IF expression statements ELSEIF expression statements ELSE statements END 比较操作符 相等 小于 大于 小于等于 大于等于 不等于 逻辑操作符 名称 表示符号 与 and if grade 90 sprintf 成绩优异 elseif grade 80 grade fix grade 10 switch grade case 9 10 sprintf 成绩优异 case 8 sprintf 成绩优秀 case 6 7 sprintf 成绩一般 otherwise sprintf 还没有及格 end 13 1 3 4 循环语句 1 3 4 1FOR 语句 通用格式 FOR variable expr statement statement END 例子 构造一个 5 行 4 列的矩阵 并赋值 for i 1 5 for j 1 4 m i j i 100 j end end 1 3 4 2WHILE 语句 通用格式 WHILE expression statements END 例子 将输入的字符串反序 str input 请输入字符串 s tmpstr str i 1 len length str while i n1 r n2 n1 1 n1 n2 2 else r n1 n2 1 n1 n2 2 end 输入 sum2 1 100 16 ans 5050 1 3 6 3函数的参数 参数的传递规则 每个函数有自己专用的工作空间 函数内部变量与MATLAB 工作空间的联系只 通过输入参数与输出参数来建立 参数的传递属于值传递 即输入参数变量的 值在函数内部改变了 而在调用改函数时没有作为返回参数 那么这个输入参 数变量的并没有改变 例如 function r test1 a 改变输入参数a 的值 r a 999 r a 运行 a 100 test1 a a 输出 a 100 说明a的值并没有改变 可以这样调用来改变a 的值 a 100 a test1 a a 输出 a 999 1 3 6 4子函数 函数文件可以包含一个以上的函数 该文件中的第一个函数时主函数 后面 定义的所有函数都是子函数 子函数只允许同一个文件中的函数及其它函数访 问 函数文件名要与主函数名相同 function s mymainfun num input 输入一个正整数 sprintf 从1到整数 d的和为 d num mysum num function s mysum num 求1到 num所有整数相加之和 s 0 for i 1 num s s i end 17 私有函数 私有函数指位于private 目下的函数 它们只能被其上一层目录的函数访问 对于其它目录的函数是部可见的 这就允许私有函数可以与其它目录下的函数 同名 MATLAB在执行某个程序或函数时 如果它有私有目录 则先查找私有目 录 在根据MATLAB的PATH查找其它目录下的函数 如果建立了私有函数目录 则不要添加到MATLAB 的查找路径当中 技巧 1 3 7 建立内部函数 命令 inline 语法 inline expr 根据expr建立内部函数 函数自变量根据表达式自动搜索 inline expr arg1 arg2 指定参数 arg1等参数是字符串参数 inline expr N 参数为x P1 P2 PN为 例子 g inline t 2 f inline xyz x y z g inline x P1 x P2 2 例子 运行如下 f inline x 2 y 3 f Inline function f x y x 2 y 3 f 3 1 ans 10 1 4 字符串函数 1 4 1 函数简介 在 MATLAB 程序设计中 在处理数据的输入与输出时 字符串函数是比较 常用的 表 字符串操作函数 函数名 调用格式 功能 strcat T STRCAT S1 S2 S3 连接字符串 strvcat S STRVCAT T1 T2 T3 垂直连接字符串 strcmp STRCMP S1 S2 比较字符串 S1 与 S2 相同返回 1 不同则返回 0 区别 18 大小写 strncmp STRNCMP S1 S2 N 比较 2 字符串的前 N 个字符 区别大小写 strcmpi STRCMPI S1 S2 比较字符串 忽略大小写 strncmpi STRNCMPI S1 S2 N Compare first N characters of strings ignoring case 不区 别大小写 findstr K FINDSTR S1 S2 寻找较短的字符串在较长字符串中的位置索引 strjust T STRJUST S T STRJUST S right T STRJUST S center T STRJUST S left 调整字符串 strmatch I STRMATCH STR STRS 在字符串矩阵 STRS 中寻找以 STR 开头的字符串 strrep S STRREP S1 S2 S3 将 S1 中包含的字符串 S2 替换为 S3 要区分大小写 strtok STRTOK S t r STRTOK S D 返回字符串中除去开始的空白串的第一个标记字符串 upper B UPPER A 将字符串转换成大写 lower B LOWER A 将字符串转换成小写 字符串与数值转换函数 函数名 调用格式 功能 num2str t num2str x t num2str x n 将数值转换成字符串 n 表示转换精度 int2str s int2str x 将整数转换成字符串 mat2str str mat2str mat 将矩阵 mat 转换成可以计算的字符串 str2double x str2double s 将字符串转换成双精度数 str2num x str2num s 将字符串矩阵转换成数值矩阵 sprintf s errmsg sprintf format a format 是格式化字符串 a 是矩阵参数 errmsg 是可选的 sscanf a count errmsg nextindx sscanf s format size Count errmsg nextindex size 是可选 的输入 输出参数 Size 指定所读的元素个数 若没有 则整个字符串都读取 1 4 2 例子 例子 1 num2str randn 2 2 3 输出 ans 0 433 0 125 1 67 0 288 例子 2 mat magic 3 str mat2str mat 19 matnew eval str 输出 mat 8 1 6 3 5 7 4 9 2 str 8 1 6 3 5 7 4 9 2 matnew 8 1 6 3 5 7 4 9 2 其它函数 char x 将 x 中非负数转换成字符 double x 将 x 转换成双精度类型数据 blanks n 生成 n 个空格字符 deblank s 删除 s 末尾的空格 eval s 计算 Matlab 字符串 s 字符测试 ischar s 属于字符则返回 1 否则返回 0 isletter s 属于字母则返回 1 否则返回 0 isspace s 属于空白字符则返回 1 否则返回 0 文件操作函数 1 4 3 文件处理函数 matlab iofun 格式化的文件 I O 函数 fgetl 从文件中读取一行数据 不保留行结束符 fgets 从文件中读取一行数据 保留行结束符 fprintf 将格式化的数据写到文件 fscanf 从文件中读取格式化的数据 input 输入函数 textread 从文件读取格式化的数据 字符串转换函数 sprintf 将数据格式化成字符串 sscanf 按照格式从字符串种读取数据 strread 从文本字符串种读取格式化数据 文件打开 关闭函数 fopen 打开文件 fclose 关闭文件 二进制文件 I O 函数 fread 从文件读取二进制数据 fwrite 将二进制数据写到文件中去 20 文件位置函数 feof 测试是否到文件结尾 ferror 查询文件错误状态 frewind 将文件位置指示到文件开始 fseek 设置文件位置指示器 ftell 获得文件位置指示器 1 4 4 读取格式化文件例子 现有一个文本文件 data txt 其数据内容如下 每行有固定格式 均有 5 个 数 文件内容如下 20020101 31 25 30 23 20020101 35 35 40 25 20020101 45 29 60 30 20020101 65 75 80 40 现要将该文件数据读入矩阵中 读取该文件的程序如下 flread m fid fopen data txt rt if fid1 m row str2num str else m str2num str end end fclose fid 输出 说明 由于是逐行读取 所以要判断是否读完 使用函数 feof 判断 fgets 读取一行的字符串 如果有些行在最后少了数据 则原来的程序会出错 出错行为下面的语句 m row str2num str 该行可改写为两行 tmp str2num str m row 1 length tmp tmp 21 1 5 二维作图 1 5 1 基本图形 1 5 1 1线性坐标平面图 1 plot Y 根据 Y 的索引建立平面图 其横坐标向量等于 1 length Y 如果 Y 为虚数 则等价于 plot real Y imag Y 其他情况下作图 则忽略虚部 2 plot X Y X 作为横坐标 Y 作为纵坐标画平面图 3 plot X Y S 第 3 个输入参数 S 为字符串选项 该字符串由 3 组字符组 成 分别为颜色 数据点形状 连接线形状 字符不分大小写 选项内容不 论次序 4 plot X1 Y1 S1 X2 Y2 S2 X3 Y3 S3 将多组数据画在同一张图上 颜色 说明 数据点形状 说明 连接线 说明 y 黄色 点号 实线 m 洋红色 o 圆圈 点线 c 蓝绿色 x 叉号 点划线 r 红色 加号 虚线 g 绿色 星号 b 蓝色 x 小正方形 w 白色 d 菱形 K 黑色 v 下三角 上三角 右三角 p 五角星形 h 六角星形 1 5 1 2对数坐标曲线 semilogx semilogy loglog 均用来绘制二维对数坐标曲线 其调用参数同 plot 主要区别在于坐标的显示不同 x 1 0 2 100 y abs sin x semilogx x y pause semilogy x y pause loglog x y 22 pause grid on 1 5 1 3给图形标注 函数 title xlabel ylabel 调用格式 xlabel text 添加 text 到当前坐标轴的 X 轴 a 旁边 text 为要添加的字符串文本 xlabel text Property1 PropertyValue1 Property2 PropertyValue2 除了指定显示的文本外 还可以指定其属性 如字体大小 颜色等等 H xlabel 返回该标签的图形句柄 1 5 1 4图形窗口分割 函数 subplot m n p 将当前图形窗口分割成 m 行 n 列个坐标轴 p 指定为当前坐标轴 用户可以在一个窗口上建立多个坐标轴图形 例子 x 2 pi 0 1 2 pi subplot 2 3 1 plot x sin x subplot 2 3 2 plot x sin x x subplot 2 3 3 plot x 2 sin x subplot 2 3 4 plot x sin x 2 subplot 2 3 5 plot x 3 sin x 2 输出图形 23 0 0 5 1 0 0 5 1 0 0 0 1 2 0 0 1 5 2 5 3 0 0 0 2 4 1 5 1 5坐标系调整 调用格式 axis XMIN XMAX YMIN YMAX 设置坐标系显示数据范围 也 达到进行缩放比例的目的 1 6 Matlab 编程练习题 1 6 1 练习 1 题目 输入 10 个学生成绩 并找出成绩最好的前三位 并输出其分数 参考程序 1 for i 1 10 grade i input sprintf 输入成绩 No 3d i end value idx sort grade fore3 grade idx 8 10 参考程序 2 n 5 nfore 3 for i 1 n 24 grade i input sprintf 输入成绩 No 3d i end value idx sort grade fore grade idx n nfore 1 n 思考 比较两种实现的差别 1 6 2 练习 2 题目 输入 20 个学生的成绩 并找出最大分数 最小分数 前 5 名分数 最后 5 名分数 算出平均分数 不及格人数及各分数段人数 分段如下 0 59 60 69 70 79 80 89 90 100 下面给出个简易功能相近版本 参考下列代码并编程求解上面的问题 n 20 grade for i 1 n grade i input 输入成绩 end used for test grade 1 100 n90 100 length find grade 90 Ndown length find grade1 2 y 2 34 表示 ReplaceAll 替换 由 减号 和 大于号 组合而成 上式意思是 p1 中的所有 x 被 1 2 替换 所有 y 被 2 34 替换 但 x y 仍是变量 没有被赋 值 如只有 x 被 1 2 替换 则应输入 p1 x 1 2 若将 p1 x 1 2 y 2 34 改成 x 1 2 y 2 34 p1 同样可以得 p1 的值 但 x y 不再是变量 已被赋值而成为数 这也是 与 的区别 有时 一个变量的值不再有用 可以把它取消掉 方法有二 例如 清除 x 1 2 y 2 34 方法 1 x y 方法 2 Clear x y Clear 表示清除变量的值 中括号内可含一个或多个量 执行后 x y 又重新 成为变量 关于替换的函数 Replace ReplaceAll ReplaceRepeated ReplaceList 31 2 1 3 常用的内部函数 1 函数的特征 Mathematica 的函数分为两类 一类是系统的内部函数 它们是系统定义 好了的 可直接使用 一类是操作者自定义的函数 这类函数运行后在本文件 中有效 在下一次文件中无效或需重新定义 Mathematica 的内部函数有以下特征 1 形式 函数名 2 首字母必须大写 例如 Sin Cos N D 若是由两段或 以上语意组成的函数名 每段的第一个字母必须大写 例如 ArcSin PlotSize NSolve 其余字母小写 3 函数名后只能用中括号 要注意配对 如何学习函数 1 解读函数名的英文或数学意思 从而对函数的用途有所了解 也有 利于记忆 例如 Sin x 在数学中是求 x 的正弦值 sin D 是英文中 导数的缩写 因此 D 是对函数求导 2 细了解函数需要几个参数 参数之间只能用逗号隔开 每一个参数 的内容是什么 有何要求 如果函数有选项 根据需要可有可无的 参数 也应了解选项的具体情况 例如 Solve 方程或方程组 未知量或未知量组 即 Solve 有两个参数 第一个参数是方程或方程组 第二个参数是 未知量或未知量组 3 对函数进行分类 记住每类函数的关键词和几个基本函数的用法 其他函数可利用关键词进行查找 并通过对几个基本函数的用法的 延伸了解被查函数 从而实现触类旁通 2 常用的内部函数 Mathematica 有大量的内部函数 对于常用的内部函数 部分后面专门介绍 其 余在这里简要列出 1 常见的数学函数 1 近似值函数 N N expr n 表示取 expr n 位有效数字的近似值 N expr 系统内部定义取 6 位有效数字 另一用法 expr N 2 绝对值函数 Abs 3 指数函数 Exp E x Sqrt 开平方 4 对数函数 Log 自然对数 Log n m 以 n 为底数 m 为真数 的 对数 5 三角函数 Sin Cos Tan Cot Sec Csc 6 反三角函数 ArcSin ArcCos ArcTan ArcCot ArcSec 32 ArcCsc 7 双曲函数 Sinh Cosh Tanh Coth Sech Csch 8 反双曲函数 ArcSinh ArcCosh ArcTanh ArcCoth ArcSech ArcCsch 9 求和函数 Sum 函数 变量 初值 终值 步长 Nsum 函数 变量 初值 终值 步长 求结果的近似值 相当于 N Sum 若步长为 1 步长可省略 若步长和初值均为 1 二者都可省略 例 Sum I 2 I 10 表示求 102i 10 连乘函数 Product 函数 变量 初值 终值 步长 Nproduct 函数 变量 初值 终值 步长 求结果的近似值 相当于 N Product 若步长为 1 步长可省略 若步长和初值均为 1 二者都可省略 Product I 2 I 10 表示求 102i n n 阶乘 12 n 双阶乘 4n Binomial n m 二项式系数 mC Permutations list 列出由表 list 中元素构成的所有排列 11 整数运算 Factorial n 或 n 因数分解 将整数分解为素数的乘积 Mod m n m 除以 n 的余数 要求 m n 均为整数 Quotient m n m n 的商 要求 m n 均为整数 FactorInteger n 计算 n 的素因子分解式 GCD x1 x2 计算最大公因数 LCM x1 x2 计算最小公倍数 Divisors n 计算 n 的正因子集合 Random Integer m n 随机生成一个介于 m 和 n 之间的整数 Prime n 计算第 n 个素数 PrimeQ n 判断 n 是否素数 12 复数 Complex 有关的函数 z abI 复数 z aib Re z 计算复数 z 的实部 a Im z 计算复数 z 的虚部 b Abs z 复数 z 的模 2 33 Arg z 复数 z 的幅角 Conjugate 复数 z 的共轭 aib 12 其他求值函数 Beta BesselI BesselJ BesselK BesselY 2 多项式和有理分式的处理函数 1 多项式的处理函数 Expand expr 展开多项式中可展开的部分 Factor expr 因式分解 Simplify 多项式 把多项式写成最简形式 Exponent 多项式 x 多项式中 x 的最高次数 FactorTerms expr 提取多项式各项中的公因子 Length 多项式 多项式的总项数 expr n 或 Part expr n 多项式 expr 的第 n 项 其他函数 Coefficient 多项式 expr 多项式中 expr 的系数 Coefficient 多项式 expr n 多项式中 exprn 的系数 Coefficient 多项式 expr 0 多项式中与 expr 无关的项 Coefficient 多项式 x1 x2 多项式中 x1 x2 的系数串 Collect FactorSquareFree PolynomialQ Variables 2 有理分式的处理函数 Together 通分 Apart 写成最简分式之和 Cacell 约分 Factor 能分解之处都分解 Expand 展开分子 每项除以分母 其他函数 ExpandAll ExpandNumerator ExpandDenominator Numerator Denominator PolynomialQuotient PolynomialQuotientRemainder PolynomialRemainder PolynomialGCD PolynomialLCM Resultant Cyclotomic 3 幂级数 Series f x x0 n 将 f 在 x x0 处展成 n 阶的带皮亚诺余项的级 数 Series f x x0 n y y0 m 将二元函数 f 先对 y 在 y y0 处展成 m 阶 在对 x 在 x x0 处展成 n 阶 注 Series 的结果是带皮亚诺余项的级数 对其结果使用 Normal 可丢掉皮 亚诺余项 例如 34 Series Sin 2x x 0 6 Normal Series 的结果也可进行四则运算以及其他运算 操作者可总结其规律 2 1 4自定义函数 自定义函数 首先函数头必须形如 函数名 x y 数学表达式 否则 Mathematica 不予承认 x 和下画线 Shift 合用 表明 x 是函数的变 量 后面使用函数时 不再使用下画线 1 简单定义 例 1 定义函数 321 f 输入命令 f x 1 x 2 x 3 例 2 定义二元函数 f x y x2 y2 2 xy 输入命令 f x y x 2 y 2 2 x y 例 3 定义分段函数 2 0 3 fCosx 输入命令 f x x 2 x 0 f x Cos x x 3 f x x x 3 或 f x Which x 3 表示条件 Condition 2 一般定义 若自定义时函数使用了局部变量 应如下 f x y Module 局部变量 函数体 例 g x y Module u v u Cos x v x u v 2 g x y 定义了函数 x 2 Cos x 35 3 复杂定义 自定义时 若要对变量进行严格的限制 在函数头中就可指出 f x Rational n Integer x n 表示变量 x 取实数 n 取整数 否则有误 f x y z 表示变量 y z 以表的形式输入 否则有误 f x y 表示变量 y 可输入一个或多个表达式 运算同 y 前的运算 例 f x y 2 x y f 1 2 f 1 2 a b f a b c d e 而 f x y 表示变量 y 可输入零个或多个表达式 运算同 y 前的运算 定义函数应注意 1 函数头必须形如 函数名 x y 2 定义后 若使用函数 变量后不再跟下画线 3 函数名大小写有严格的区别 表达的函数不一样 4 函数名不要与内部常数 函数的字母或单词相同 因为它们被系 统所保护 protected 5 函数名不要与已定义了的变量重复 因为它们被系统所保护 6 函数名最好不要与已定义了的函数名重复 否则 后定义的函数 将取代前者 前者定义消失 7 函数名 变量 的使用最好结合英语 数学意义 使人能通过函 数名 变量 便知其义 4 函数与赋值的区别 定义一个函数和把一个函数作为值赋给一个变量 使用时 很多情况下没 分别 例如 r x 2 x 1 R x x 2 x 1 Plot r x 1 2 Plot R x x 1 2 但区别仍然存在 R x 在 x 2 处的值由 R 2 求出 但 r 在 x 2 处的值就不能如此 需用 r x 2 或 x 2 r 36 2 1 5 常用菜单 Mathematica 的菜单命令包括 File Edit Cell Format Input Kernel Find Windows 及 Help File 菜单 执行与文件相关的操作 菜 单 命 令 快捷键 相 应 操 作 New Ctrl N 建立一个新文件 Open Ctrl O 打开一个已经存在的文件 Close Ctrl F4 关闭当前文件 Save Ctrl S 保存当前文件 Save as Shift Ctrl S 将当前文件存为其它文件名 Save as Special 将当前文件存为其它格式 如 Tex Text 文件等 Palettes 打开 Mathematica 各种公式输入按钮 Print Ctrl P 打印当前文件 其中 Palettes 是一个很方便的选项 使用该选项可以方便的输入各种函数 命令 其菜单格式如下 单击相应的选项时 将在集成环境下打开相应的 Mathematica 按钮式快 捷输入面板 其中 AlgebraicManipulation 打开与代数运算相关的面板 包括常用的 代数运算操作命令 如多项式分解命令 Facto 代数式化简命令 Simplify 等 BasicCalculations 基本计算面板 包括算术运算 代数运算 列表与 矩阵运算 三角函数与指数函数 微积分相关函数 其它函数 图形操作函 数 笔者以为 此面板对于初学者及其有用 每次进入 Mathematica 后最好 先打开此面板 然后由此面板可随时调入用户需要的函数命令 比如 用户希望用 Mathematica 命令求解微分方程 但是用户忘了相 应的 Mathematica 命令 则 用户可以单击 File Palettes BasciCalulations 然后由该面板中选取 Calulus 微积分 中的微分方程 调入 37 BasicInput 快捷的公式输入 数学符号输入按钮 正如按钮上的图形所示 可以便捷的输入各种数学符号以及运算公式 如定积分计算 偏导数计算等等 Edit 菜单 执行与文件编辑相关的操作 菜 单 命 令 快捷键 相 应 操 作 Undo Ctrl Z 取消上一次编辑操作 Cut Ctrl X 剪切所选定内容 Copy Ctrl C 复制所选定内容 Paste Ctrl V 粘贴所选定内容 Clear Delete 清除所选定内容 Copy as 将所选定内容复制为其它格式 位图 Metfile Text 等 Motion 快捷的光标移动操作 Expression Input 表达式 如分数 开方 的快捷 输入 Peference 打开个人化工作环境设定对话框 其中 利用 Copy as 选项将当前所选定内容复制为 Windows Metafile 图元 文件 格式后 可方便的粘贴入 Word 文档 Cell 菜单 执行与单元相关的操作 输入 Mathematica 命令并执行后 我们可以看到在当前窗口的最右侧有许 多半中括号 我们将每一个中括号所括入的内容称为一个单元 Cell 通过 Cell 命令可以改变各个单元的显示方式等 38 Format 菜单 执行与各种格式设定相关的操作 Style 设置当前选定内容的格式 ScreenStyleEnvirontment 设置屏幕显示格式 默认格式是工作格式 Printing Style Environment 设置打印格式 Show Expression 表达式的 Mathematica 内部表示 Style Sheet 屏幕显示以 Mathematica 设定的若干可选风格 Font 设置当前选定内容的字体 Face 设置当前选定内容字体是否粗体 斜体 Size 设置当前选定内容的字体大小 TextColor 设置当前选定内容的文本颜色 Background Color 设置当前选定内容的背景颜色等 Show Ruler 是否显示标尺栏 Show ToolBar 是否显示工具栏 Magnification 设定当前屏幕显示的比例 通常设置为 150 较好 Kernel 菜单 与 Mathematica 软件内核运行相关的操作 Interrupt Evaluation 与 Abort Evaluation 中断当前命令的运行 当程序陷入死循 环时 或程序运行很久没有反应时 通常采用此命令 快捷键是 Alt Find 菜单 执行与查找相关的操作 Windows 菜单 在当前工作环境打开多个窗口时 设置窗口的排列方式 Help 菜单 执行与帮助相关的操作 2 2 基本绘图命令 数组与数据拟合 2 2 1 基本绘图命令 1 二维作图函数 Plot Plot 函数或函数组 自变量 下限 上限 选项 例 画 y sinx 在 的图形2 Plot Sin x x Pi 2 Pi 2 在同一坐标下画出 y sinx y cosx 在 的图形2 Plot Sin x Cos x x Pi 2 Pi 2 注意 i 函数组要大括号 ii 变量前后要一致 尤其注意大小写 X 与 x 勿混淆 数字 0 与字母 o 勿混淆 查看选项的方法 Options 函数名 如 Options Plot 小技巧 对于不熟悉的选项 可以通过 Options Plot 列出所有选项 然后选 择感兴趣的 Copy 下来 打开 Help 窗口后粘贴上去 就可以看到相关使用方 39 法与示例 一个绘图命令可设置多个 选项 多个 选项 之间用逗号相隔 下面列 出一些常用的 选项 的设置 选项设置形式 意义 默认值 AxesLabel x y 设置坐标轴的标记 X 和 Y 不做标记 AspectRatio Automatic 根据图形自动设置高度宽度比 1 1 618 Axes None 不设坐标轴 设坐标轴 Frame True 在图形周围加边框 不加边框 GridLines Automatic 给图形加网格 不加网格 Plotrange x0 x1 y0 y1 指定绘图范例 2 三维作图函数 Plot3D Plot3D 函数或函数组 自变量 1 下限 上限 自变量 2 下限 上限 选项 例 Plot3D Sin x y x Pi 2 Pi 2 y Pi Pi Plot3D 与 Plot 用法基本一致 只是增加了变量的个数 四维或以上 即函 数有三个或以上变量 图形无法作出 下表列出了 Plot3D 命令的常用选项 选项 意义 默认值 Axes False 取消坐标轴 True PlotLabel z 加 Z 轴的标志 None ViewPoint 1 3 2 1 设置观察点 1 3 2 1 1 3 2 4 2 Boxed False 在曲面周围不加立体框 True Mesh False 曲面上不加网线 True Shading False 在曲面上不涂阴影 True PlotPoint 30 用 30 30 网格画图 15 调整视角的方法 Mathematica 可以画很多复杂的三维图形 有时人们希望从不同的方位去观 察同一图形 这就需要调整观察点 对已经存在的当前图形可以用 Show 选 项 重新将图形显示出来 省略选项将得到原来的图形 观察点的三个参数选取有无穷多种选择 常用的几种列表如下 ViewPoint 1 3 2 4 2 缺省默认值 40 ViewPoint 0 2 0 正前方 ViewPoint 0 2 2 前上方 ViewPoint 0 2 2 前下方 ViewPoint 2 2 0 左角 ViewPoint 2 2 0 右角 ViewPoint 0 0 2 正上方 为了用户更方便地选择观察点 可以用视点选择对话框进行 方法如下 首先 输入 Show 让光标暂时停留在下划线处 用鼠标单击 Mathematica 菜单中的 Input 从下 拉菜单中选取 3D ViewPoint Selector 将出现视点选择对话框 在对话框中 有三个按钮分别可用于调整 x 方向 y 方
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!