返回课程主页 🎯 开始互动测验

Maple 微积分实验考试2

MATH1131 核心命令复习

针对实验考试的 Maple 核心命令复习,涵盖函数定义、求解、绘图与极值问题

💡 复习提示: 本笔记涵盖10个核心Maple知识点,建议先完整阅读理解概念,再进行互动测验巩固学习成果。

目录

1. 变量赋值 := (冒号等于号)

这是 Maple 中最基本也最重要的命令之一。它用来给一个变量赋值

核心要点

  • 用途:将一个数字、一个表达式、一个函数或者一个计算结果存到一个你命名的变量里。
  • 语法:变量名 := 值或表达式;
  • 注意:它和数学里的单个等号 = 不同。= 在 Maple 里只用于表示一个方程,比如 fsolve 里的 df(x) = 0。

示例代码

df := D(f); // 将 f 的导函数结果赋值给变量 df x0 := 0.12345; // 将数值 0.12345 赋值给变量 x0 result := x^2 + 3*x; // 将表达式赋值给变量 result

2. 定义函数 -> (箭头)

这用于创建一个可以重复使用的函数。

核心要点

  • 用途:定义一个数学函数,之后可以方便地代入不同的值进行计算。
  • 语法:函数名 := 自变量 -> 表达式;
  • 调用:定义之后,你就可以像 f(0.1) 或 f(x0) 这样来调用它了。

示例代码

f := x -> 7^x + 7*cos(7*x/2); // 定义函数 f g := (x, y) -> x^2 + y^2; // 定义二元函数 g h := t -> sin(t) * exp(-t); // 定义函数 h // 函数调用 f(0.1); // 计算 f 在 x=0.1 处的值 g(2, 3); // 计算 g(2,3) 的值

3. 求导 D() (大写D)

这是 Maple 的求导算子。

核心要点

  • 用途:计算一个函数或表达式的导数。
  • 语法:
    • 求一阶导数: D(函数名)
    • 求二阶导数: D(一阶导函数名) 或者 (D@@2)(原函数名)

示例代码

f := x -> x^3 + 2*x^2 - 5*x + 1; // 定义函数 df := D(f); // 计算 f 的一阶导数,并存入 df ddf := D(df); // 计算 df 的导数,即 f 的二阶导数 ddf := (D@@2)(f); // 直接计算 f 的二阶导数,效果同上 // 求导数在特定点的值 df(2); // 计算导数在 x=2 处的值

4. 数值求解 fsolve()

当方程无法直接解出精确的符号解时,用它来找数值解(近似解)。

核心要点

  • 用途:求解单个或多个方程的数值解。
  • 语法:
    • 基本形式: fsolve(方程, 变量);
    • 在指定区间内求解: fsolve(方程, 变量 = 起点..终点);

示例代码

// 基本求解 f := x -> x^3 - 2*x - 5; fsolve(f(x) = 0, x); // 在整个实数范围寻找解 // 指定区间求解 fsolve(df(x) = 0, x = 0..0.3); // 在 x 位于 0 和 0.3 之间寻找解 fsolve(sin(x) = 0.5, x = 0..Pi); // 在指定区间内求解三角方程

5. 控制精度 Digits (首字母大写)

这是一个全局变量,用来控制所有浮点数计算的有效数字位数。

核心要点

  • 用途:设定计算结果的精度。
  • 语法:Digits := 你想要的数字;
  • 注意:Maple 严格区分大小写,Digits 不能写成 digits。

示例代码

Digits := 10; // 设置10位有效数字 evalf(Pi); // 计算 π 的近似值 Digits := 20; // 提高精度到20位 evalf(sqrt(2)); // 计算 √2 的高精度近似值

6. 符号积分 int() 与数值计算 evalf()

这是解决数值定积分问题的核心组合。

核心要点

  • int() 的用途:用来表示一个数学上的积分(定积分或不定积分)。它本身只是建立一个积分的符号表达式。
  • evalf() 的用途:用来将一个符号表达式(包括 int 创建的积分表达式)计算出其具体的浮点数值(小数)。
  • 组合用途:evalf(int(...)) 是解决数值定积分问题的标准"黄金组合"。

示例代码

// 数值定积分 integrand := (exp(-x) * cos(x^2 / 3)) / (5 + x); evalf(int(integrand, x = 0..infinity)); // 有限区间积分 evalf(int(x^2 * sin(x), x = 0..Pi)); // 不定积分(符号积分) int(x^2 * exp(x), x); // 返回符号结果

特殊常数

  • 无穷大 ∞ → infinity
  • 圆周率 π → Pi (P大写)
  • 虚数单位 i → I (I大写)
  • 自然对数的底 e → 通过 exp(1) 表示

7. 极坐标绘图 polarplot()

这是解决"根据函数选择图像"这类问题的核心命令。

核心要点

  • 用途:用于绘制极坐标系下的函数图像 r = f(θ)。这对于从多个选项中选择正确图像的题目至关重要。
  • 重要前提:绘图功能通常在一个叫 plots 的程序包里,因此需要先用 with(plots); 命令加载这个包。
  • 语法:polarplot(r的表达式, 角度变量 = 下限..上限);

示例代码

with(plots); // 加载绘图包 polarplot(3*sin(theta) - cos(4*theta), theta = 0..2*Pi); // 玫瑰曲线 polarplot(sin(3*theta), theta = 0..Pi); // 心形线 polarplot(1 + cos(theta), theta = 0..2*Pi); // 螺旋线 polarplot(theta, theta = 0..4*Pi);

注意事项

  • 加载程序包:with(plots); 只需要在每个 Maple 会话的开头执行一次。
  • 变量名:Maple 能够直接识别 theta 作为希腊字母 θ。
  • 常数:圆周率 π 必须写作 Pi (P大写),例如 2*Pi。
  • 输出类型:这个命令的输出是一个图像,而不是一个数值。

8. 精确求解 solve()

用于求解方程,并给出精确的符号解(例如整数、分数、根式等)。

核心要点

  • 用途:求解方程,给出精确的符号解。这在题目要求 "exact values" 时至关重要。
  • 与 fsolve() 的区别:solve() 追求精确解;fsolve() 给出数值近似解(小数)。
  • 语法:solve(方程, 变量);

示例代码

// 二次方程的精确解 solve(x^2 + 2*x - 24 = 0, x); // 输出精确的整数解 -6, 4 solve(x^2 - 2 = 0, x); // 输出带根号的精确解 sqrt(2), -sqrt(2) // 三角方程的精确解 solve(sin(x) = 1/2, x); // 输出精确的角度解 // 系统方程 solve({x + y = 5, x - y = 1}, {x, y}); // 解方程组

选择指南

  • 使用 solve():当题目要求精确值、分数、根式等符号形式的答案时。
  • 使用 fsolve():当需要数值近似解,或者方程过于复杂无法得到符号解时。

9. 寻找临界点与闭区间极值 (The Closed Interval Method)

这是解决"求函数在闭区间 [a,b] 上的绝对最大/最小值"这类问题的标准方法。

核心理论 (极值定理)

任何一个在闭区间 [a,b] 上的连续函数,都必然存在一个绝对最大值和一个绝对最小值。

候选点 (Candidate Points)

这些最大/最小值只会出现在以下三类"候选点"上:

  1. 驻点 (Stationary Points):在区间内部 (a, b),使得导数 f'(x) = 0 的点。
  2. 奇点 (Singular Points):在区间内部 (a, b),使得导数 f'(x) 不存在的点。
  3. 区间端点 (Endpoints):即 x = a 和 x = b。

完整解题流程

  1. 找出所有候选点:驻点、奇点、端点。
  2. 筛选:只保留所有在闭区间 [a,b] 内的、不重复的候选点。
  3. 求值:将筛选后的所有候选点逐个代入原始函数 f(x) 中计算函数值。
  4. 比较:所有计算出的函数值中,最大的就是绝对最大值,最小的就是绝对最小值。

针对绝对值函数 f(x) = |g(x)| 的特殊策略

f := x -> abs(x^3 - 2*x^2 - 7*x - 4); g := x -> x^3 - 2*x^2 - 7*x - 4; // 找驻点:求解 g'(x) = 0 solve(D(g)(x) = 0, x); // 找奇点:求解 g(x) = 0(绝对值函数的尖角点) solve(g(x) = 0, x); // 然后手动筛选在指定区间内的点,代入原函数求值并比较

10. 求极限与洛必达法则的验证 (limit)

limit 命令是 Maple 中计算函数极限的核心工具,尤其在处理洛必达法则问题时,它是你最可靠的验证助手

核心理论 (洛必达法则)

只有当极限是 0/0∞/∞不定式时,才可以尝试使用洛必达法则。

Maple 的策略性用途

  1. 验证前提:分别计算分子和分母的极限,以确定极限的类型。这是判断能否使用洛必达法则的关键一步。
  2. 验证答案:直接计算整个分式的极限,以核对你的最终答案(无论是否使用了洛必达法则)。

语法

  • 双边极限:limit(表达式, 变量=趋近的值);
  • 单边极限:limit(表达式, 变量=趋近的值, left); 或 limit(表达式, 变量=趋近的值, right);

示例代码

// 基本极限计算 limit(sin(x)/x, x=0); // 输出 1 // 单边极限 limit(ln(x), x=0, right); // 输出 -infinity // 验证洛必达法则条件的例子 // 问题: lim(x->0) cos(x)/ln(x) 是否可用洛必达? // 1. 验证分子极限 limit(cos(x), x=0); // 输出: 1 // 2. 验证分母极限 limit(ln(x), x=0, right); // 输出: -infinity // 3. 结论: 极限类型是 1/(-∞),不是不定式,不能使用洛必达法则

验证流程总结

  1. 分别计算分子和分母的极限
  2. 判断是否为 0/0 或 ∞/∞ 不定式
  3. 如果是不定式,可以使用洛必达法则
  4. 如果不是,直接计算原极限或使用其他方法
  5. 最后用 limit 命令验证最终答案

综合示例

例1:求转折点 (fsolve)

Digits := 10; f := x -> 3*sin(x^2/2) - (sin(x/2))^2; df := D(f); x0 := fsolve(df(x) = 0, x = 1..2); ddf := D(df); ddf(x0);

例2:求数值定积分 (evalf & int)

Digits := 10; integrand := (exp(-x) * cos(x^2 / 3)) / (5 + x); evalf(int(integrand, x = 0..infinity));

例3:绘制极坐标图像 (polarplot)

with(plots); polarplot(3*sin(theta) - cos(4*theta), theta = 0..2*Pi);

🎯 准备好测试您的掌握程度了吗?

开始70道互动测验