返回课程总览

实验 09 · 数值迭代

参数化牛顿法

用牛顿法近似多个正数的平方根,比较误差收敛。

核心问题

如何在迭代过程中不直接使用 sqrt(a),近似不同正数的平方根?

复用技能

  • 辅助函数
  • for 循环
  • 绝对误差
  • 收敛图

主要任务

  1. 运行 newton_method.m。
  2. 测试 a = 2, 3, 10。
  3. 改变初始猜测并解释收敛变化。

提交内容

完整讲义

实验 9:参数化牛顿法

数学问题

如何在迭代过程中不直接使用 sqrt(a),近似不同正数 a 的平方根?

复用前面技能

  • 用 VS Code 编辑多个 MATLAB 文件。
  • 从课程根目录运行 MATLAB 脚本。
  • 将图像保存到 figures/
  • 用 Codex 解释代码并调试错误。
  • 用已知答案验证数值结果。

任务

  1. 打开课程根目录并创建实验文件夹:

``powershell cd Desktop\codex-matlab-class mkdir labs\lab09 code . ``

  1. 将这些 starter 文件复制到 labs/lab09/

``text newton_method.m newtonSqrt.m ``

  1. 运行:

``matlab run("labs/lab09/newton_method.m") ``

  1. 查看 newtonSqrt(a, x0, numIterations)
  2. 至少测试三个值:

``text a = 2 a = 3 a = 10 ``

  1. 将收敛图保存到:

``text figures/lab09-newton-errors.png ``

  1. 让 Codex 解释辅助函数和误差图。
  2. 改变初始猜测,并观察有什么变化。

验证要求

对于每个 a,将你的近似值与 MATLAB 的 sqrt(a) 比较,并记录最终绝对误差。

提交内容

  • labs/lab09/newton_method.m
  • labs/lab09/newtonSqrt.m
  • figures/lab09-newton-errors.png
  • notes/lab09-notes.md

笔记要求

包括:

  • 运行命令;
  • Codex 解释提示词;
  • a、近似值、sqrt(a)、最终误差表;
  • 初始猜测如何影响收敛;
  • 为什么迭代不能除以零。