一、核心内容
本期聚焦泰勒公式在经典微分几何中的应用,核心围绕向量函数的泰勒展开式,解决曲线局部近似、曲面切平面、第二基本形式及曲面面积计算等关键问题。核心要点如下
-
向量函数的泰勒公式 :由于向量函数的拉格朗日中值定理不成立,对实函数泰勒公式进行修正,分别给出一元曲线和二元曲面向量函数的泰勒展开式。
-
三大核心应用场景 :
-
曲线研究:用一阶泰勒展开实现“以直代曲”,高阶展开可精准逼近曲线局部性状;
-
曲面研究:一阶展开推导切平面方程,二阶展开推导第二基本形式;
-
曲面面积计算:通过泰勒展开将曲边四边形近似为平行四边形,简化面积公式推导
二、关键公式
(一)基础前提:向量函数的特殊性
实函数的拉格朗日中值定理为 ,但向量函数 不满足该定理,缘由是:
-
各分量的中值点独立: , , ,其中 可能不同,故 。
-
因此,向量函数的泰勒公式需引入无穷小向量修正高阶项。
(二)一元向量函数泰勒展开式
定理1
设 是 类一元向量函数(即各分量 均具有 阶连续导数),对每个分量应用实函数泰勒公式:
-
以 为例 ,其中 , 。
-
将 表明为 ( 是 时的无穷小量),同理处理 。
-
组合三个分量的展开式,引入无穷小向量 ,得到向量函数的泰勒展开式:
-
一阶近似:忽略高阶无穷小 中的 ,得 ,即曲线在 点的切线方程(以直代曲)。
(三)二元向量函数泰勒展开式
定理2
设 是 类二元向量函数(曲面的参数方程),对各分量应用二元实函数泰勒公式:
-
二元函数泰勒展开式( 阶): ,其中 , , 。
-
对 的分量 分别展开,引入无穷小向量 修正高阶项,组合后得到:
-
一阶近似:忽略高阶无穷小,得 ,即曲面在 点的切平面方程(切平面由两个偏导向量张成)。
(四)曲面第二基本形式
第二基本形式描述曲面在某点的弯曲程度,通过曲面上点 到切平面的距离 定义。
-
距离公式: ,其中 是切平面上的参考点, 是切平面的单位法向量( ,故 , )。
-
代入二元向量函数的二阶泰勒展开式:
-
点乘单位法向量 :由于 , ,一阶项消失,得:
-
忽略无穷小项 ,定义第二基本形式: 其中 , , 。
(五)曲面面积公式
核心思想
将曲面域分割为无数曲边四边形,利用泰勒展开将曲边四边形近似为平行四边形,通过叉乘计算面积。
-
取曲面域内的微小区域,四个顶点为 、 、 、 。
-
对向量 和 作一阶泰勒展开: 其中 是 时的无穷小向量。
-
曲边四边形面积近似为平行四边形面积 ,忽略无穷小项后:
-
积分得到曲面域面积:
三、MATLAB算例与可视化分析
(一)例1:曲线的泰勒近似
问题描述
已知螺旋线的参数方程为 ,用一阶、三阶泰勒公式在 点近似曲线,并与原曲线对比。
泰勒展开式
-
原向量函数:
-
各阶导数:
-
点的取值:
-
一阶泰勒近似:
-
三阶泰勒近似: 代入得:
MATLAB代码
%% 螺旋线的泰勒近似分析
% 已知螺旋线的参数方程为 r(t) = (cos t, sin t, t),t∈[0,4π]
% 在 t0 = π 点进行泰勒展开
clear; clc; close all;
%% 1. 参数设置
t0 =pi; % 展开点
t =linspace(0, 4*pi, 1000); % 参数t的范围
dt = t - t0; % t-t0
%% 2. 原曲线
x =cos(t);
y =sin(t);
z = t;
%% 3. 泰勒展开系数计算(在t0=π点)
% 原函数值
r0 = [cos(t0),sin(t0), t0]; % r(π) = (-1, 0, π)
% 一阶导数
r1 = [-sin(t0),cos(t0), 1]; % r'(π) = (0, -1, 1)
% 二阶导数
r2 = [-cos(t0), -sin(t0), 0]; % r''(π) = (1, 0, 0)
% 三阶导数
r3 = [sin(t0), -cos(t0), 0]; % r'''(π) = (0, 1, 0)
%% 4. 泰勒近似曲线
% 一阶泰勒近似
x1 = r0(1) + r1(1) * dt;
y1 = r0(2) + r1(2) * dt;
z1 = r0(3) + r1(3) * dt;
% 三阶泰勒近似
x3 = r0(1) + r1(1) * dt + (1/2) * r2(1) * dt.^2 + (1/6) * r3(1) * dt.^3;
y3 = r0(2) + r1(2) * dt + (1/2) * r2(2) * dt.^2 + (1/6) * r3(2) * dt.^3;
z3 = r0(3) + r1(3) * dt + (1/2) * r2(3) * dt.^2 + (1/6) * r3(3) * dt.^3;
%% 5. 误差计算(在展开点附近区域)
% 定义展开点附近区域 (±π/2)
t_near =linspace(t0 -pi/2, t0 +pi/2, 200);
dt_near = t_near - t0;
% 原曲线在附近区域的值
x_near =cos(t_near);
y_near =sin(t_near);
z_near = t_near;
% 一阶近似在附近区域
x1_near = r0(1) + r1(1) * dt_near;
y1_near = r0(2) + r1(2) * dt_near;
z1_near = r0(3) + r1(3) * dt_near;
% 三阶近似在附近区域
x3_near = r0(1) + r1(1) * dt_near + (1/2) * r2(1) * dt_near.^2 + (1/6) * r3(1) * dt_near.^3;
y3_near = r0(2) + r1(2) * dt_near + (1/2) * r2(2) * dt_near.^2 + (1/6) * r3(2) * dt_near.^3;
z3_near = r0(3) + r1(3) * dt_near + (1/2) * r2(3) * dt_near.^2 + (1/6) * r3(3) * dt_near.^3;
% 计算误差(欧氏距离)
error1_near =sqrt((x_near - x1_near).^2 + (y_near - y1_near).^2 + (z_near - z1_near).^2);
error3_near =sqrt((x_near - x3_near).^2 + (y_near - y3_near).^2 + (z_near - z3_near).^2);
%% 6. 绘图
% 图1:三维空间中的曲线对比
figure('Position', [100, 100, 1200, 400]);
subplot(1, 3, 1);
plot3(x, y, z, 'b-', 'LineWidth', 2);holdon;
plot3(x1, y1, z1, 'r--', 'LineWidth', 1.5);
plot3(x3, y3, z3, 'g:', 'LineWidth', 1.5);
plot3(r0(1), r0(2), r0(3), 'ko', 'MarkerSize', 10, 'MarkerFaceColor', 'k');
legend('原曲线', '一阶近似', '三阶近似', '展开点 t_0=π', 'Location', 'best');
xlabel('x'); ylabel('y'); zlabel('z');
title('螺旋线及其泰勒近似(全范围)');
grid on; view(45, 30);
% 图2:展开点附近区域的放大图
subplot(1, 3, 2);
plot3(x_near, y_near, z_near, 'b-', 'LineWidth', 2);holdon;
plot3(x1_near, y1_near, z1_near, 'r--', 'LineWidth', 1.5);
plot3(x3_near, y3_near, z3_near, 'g:', 'LineWidth', 1.5);
plot3(r0(1), r0(2), r0(3), 'ko', 'MarkerSize', 10, 'MarkerFaceColor', 'k');
legend('原曲线', '一阶近似', '三阶近似', '展开点 t_0=π', 'Location', 'best');
xlabel('x'); ylabel('y'); zlabel('z');
title('展开点附近区域放大图');
grid on; view(45, 30);
axis tight;
% 图3:近似误差随t变化(展开点附近)
subplot(1, 3, 3);
plot(t_near, error1_near, 'r--', 'LineWidth', 1.5);holdon;
plot(t_near, error3_near, 'g:', 'LineWidth', 1.5);
xlabel('参数 t'); ylabel('近似误差');
title('泰勒近似的误差分析');
legend('一阶近似误差', '三阶近似误差', 'Location', 'best');
grid on;
xline(t0, 'k-', 't_0=π', 'LabelHorizontalAlignment', 'center');
ylim([0,max([error1_near, error3_near]) * 1.1]);
%% 7. 数值分析
fprintf('========== 泰勒近似分析结果 ==========
');
fprintf('展开点: t0 = π
');
fprintf('展开点坐标: (%.4f, %.4f, %.4f)
', r0(1), r0(2), r0(3));
fprintf('
');
% 计算特定点的误差
test_points = [t0-pi/4, t0, t0+pi/4, t0+pi/2];
fprintf('各测试点的近似误差:
');
fprintf(' t 一阶误差 三阶误差 误差比(一阶/三阶)
');
fprintf('----------------------------------------------------
');
fori= 1:length(test_points)
t_test = test_points(i);
dt_test = t_test - t0;
% 原曲线值
x_exact =cos(t_test);
y_exact =sin(t_test);
z_exact = t_test;
% 一阶近似值
x1_test = r0(1) + r1(1) * dt_test;
y1_test = r0(2) + r1(2) * dt_test;
z1_test = r0(3) + r1(3) * dt_test;
% 三阶近似值
x3_test = r0(1) + r1(1) * dt_test + (1/2) * r2(1) * dt_test^2 + (1/6) * r3(1) * dt_test^3;
y3_test = r0(2) + r1(2) * dt_test + (1/2) * r2(2) * dt_test^2 + (1/6) * r3(2) * dt_test^3;
z3_test = r0(3) + r1(3) * dt_test + (1/2) * r2(3) * dt_test^2 + (1/6) * r3(3) * dt_test^3;
% 计算误差
error1_test =sqrt((x_exact - x1_test)^2 + (y_exact - y1_test)^2 + (z_exact - z1_test)^2);
error3_test =sqrt((x_exact - x3_test)^2 + (y_exact - y3_test)^2 + (z_exact - z3_test)^2);
fprintf(' %.2f %.6f %.6f %.2f
', ...
t_test, error1_test, error3_test, error1_test/error3_test);
end
%% 8. 额外分析:各阶近似对曲线形状的影响
figure('Position', [100, 600, 800, 600]);
% 绘制各分量对比
subplot(3, 1, 1);
plot(t, x, 'b-', 'LineWidth', 2);holdon;
plot(t, x1, 'r--', 'LineWidth', 1.5);
plot(t, x3, 'g:', 'LineWidth', 1.5);
xlabel('t'); ylabel('x(t)');
title('x分量对比');
legend('原曲线', '一阶近似', '三阶近似');
grid on;
xline(t0, 'k-', 't_0=π');
subplot(3, 1, 2);
plot(t, y, 'b-', 'LineWidth', 2);holdon;
plot(t, y1, 'r--', 'LineWidth', 1.5);
plot(t, y3, 'g:', 'LineWidth', 1.5);
xlabel('t'); ylabel('y(t)');
title('y分量对比');
legend('原曲线', '一阶近似', '三阶近似');
grid on;
xline(t0, 'k-', 't_0=π');
subplot(3, 1, 3);
plot(t, z, 'b-', 'LineWidth', 2);holdon;
plot(t, z1, 'r--', 'LineWidth', 1.5);
plot(t, z3, 'g:', 'LineWidth', 1.5);
xlabel('t'); ylabel('z(t)');
title('z分量对比');
legend('原曲线', '一阶近似', '三阶近似');
grid on;
xline(t0, 'k-', 't_0=π');
%% 9. 总结分析
fprintf('
========== 分析结论 ==========
');
fprintf('1. 在展开点 t0=π 处,所有近似都与原曲线准确匹配
');
fprintf('2. 一阶近似是直线,只能近似曲线的切线方向
');
fprintf('3. 三阶近似能更好地捕捉曲线的弯曲特性
');
fprintf('4. 随着 |t-t0| 增大,近似误差迅速增加
');
fprintf('5. 三阶近似的精度明显高于一阶近似,特别是在展开点附近
');

(二)例2:曲面的切平面与第二基本形式
问题描述
已知抛物面的参数方程为 ,在点 处:
-
用一阶泰勒展开推导切平面方程并可视化;
-
计算第二基本形式,分析曲面弯曲方向。
切平面方程
-
偏导向量:
-
,
-
,
-
一阶泰勒展开:
-
切平面方程: (因 ,故切平面为 平面)。
第二基本形式计算
-
二阶偏导向量:
-
, ,
单位法向量 :
-
叉乘
-
在 处, ,单位法向量
第二基本形式系数:
-
, ,
-
第二基本形式: (恒正,说明曲面在 点向法向量 方向弯曲)。
MATLAB代码
%% 抛物面的切平面与第二基本形式分析
clear; clc; close all;
% 创建参数网格
[u, v] =meshgrid(linspace(-1, 1, 100),linspace(-1, 1, 100)); % u,v∈[-1,1]
% 原抛物面:z = u² + v²
r_x = u;
r_y = v;
r_z = u.^2 + v.^2;
% 切平面(在P0(0,0,0)点,切平面为z=0)
plane_z =zeros(size(u));
% 第二基本形式:II = 2u² + 2v²(表明弯曲程度)
II = 2*u.^2 + 2*v.^2;
% 计算高斯曲率K和平均曲率H
% 第一基本形式系数:E=1+4u², F=4uv, G=1+4v²
% 第二基本形式系数:L=2/sqrt(1+4u²+4v²), M=0, N=2/sqrt(1+4u²+4v²)
norm_factor =sqrt(1 + 4*u.^2 + 4*v.^2);
L = 2 ./ norm_factor;
M =zeros(size(u));
N = 2 ./ norm_factor;
E = 1 + 4*u.^2;
F = 4*u.*v;
G = 1 + 4*v.^2;
% 高斯曲率:K = (LN-M²)/(EG-F²)
K = (L.*N - M.^2) ./ (E.*G - F.^2);
% 平均曲率:H = (EN-2FM+GL)/(2(EG-F²))
H = (E.*N - 2*F.*M + G.*L) ./ (2*(E.*G - F.^2));
%% 绘图
figure('Position', [100, 100, 1400, 600]);
% 子图1:抛物面与切平面
subplot(2, 3, [1, 2]);
holdon; grid on; box on;
% 绘制抛物面
surf1 = surf(r_x, r_y, r_z, 'FaceAlpha', 0.8, 'EdgeAlpha', 0.2, ...
'FaceColor', [0.2, 0.6, 0.9], 'DisplayName', '抛物面 z = u^2 + v^2');
% 绘制切平面
surf2 = surf(u, v, plane_z, 'FaceColor', [0.9, 0.3, 0.3], ...
'FaceAlpha', 0.6, 'EdgeAlpha', 0.1, 'DisplayName', '切平面 z = 0');
% 标记P0点
scatter3(0, 0, 0, 120, 'k', 'filled', 'DisplayName', '点 P0(0,0,0)');
% 添加切平面法向量
quiver3(0, 0, 0, 0, 0, 1, 0.5, 'r', 'LineWidth', 2.5, ...
'MaxHeadSize', 0.5, 'DisplayName', '法向量 n');
xlabel('x = u', 'FontSize', 11, 'FontWeight', 'bold');
ylabel('y = v', 'FontSize', 11, 'FontWeight', 'bold');
zlabel('z', 'FontSize', 11, 'FontWeight', 'bold');
title('抛物面及其在P0点的切平面', 'FontSize', 13, 'FontWeight', 'bold');
legend('Location', 'northeast', 'FontSize', 10);
legend('boxoff');
view(45, 25);
axis equal;
holdoff;
% 子图2:第二基本形式
subplot(2, 3, 3);
contourf(u, v, II, 25, 'LineStyle', 'none');
holdon;
% 标记原点
plot(0, 0, 'ko', 'MarkerSize', 8, 'MarkerFaceColor', 'k', 'DisplayName', 'P0(0,0,0)');
% 添加圆形等高线
contour(u, v, II, 10, 'k-', 'LineWidth', 0.5, 'ShowText', 'on');
colorbar;
c = colorbar;
c.Label.String = '第二基本形式值';
c.Label.FontSize = 10;
c.Label.FontWeight = 'bold';
xlabel('u', 'FontSize', 11, 'FontWeight', 'bold');
ylabel('v', 'FontSize', 11, 'FontWeight', 'bold');
title('第二基本形式 II = 2u^2 + 2v^2', 'FontSize', 13, 'FontWeight', 'bold');
legend('Location', 'northwest', 'FontSize', 9);
legend('boxoff');
grid on;
axis equal;
% 子图3:高斯曲率
subplot(2, 3, 4);
surf(u, v, K, 'EdgeAlpha', 0.1);
colorbar;
xlabel('u', 'FontSize', 11);
ylabel('v', 'FontSize', 11);
zlabel('K', 'FontSize', 11);
title('高斯曲率 K', 'FontSize', 12);
view(45, 25);
grid on;
% 子图4:平均曲率
subplot(2, 3, 5);
surf(u, v, H, 'EdgeAlpha', 0.1);
colorbar;
xlabel('u', 'FontSize', 11);
ylabel('v', 'FontSize', 11);
zlabel('H', 'FontSize', 11);
title('平均曲率 H', 'FontSize', 12);
view(45, 25);
grid on;
% 子图5:曲率对比
subplot(2, 3, 6);
% 提取对角线上的曲率值
diag_u =linspace(-1, 1, 200);
diag_K = interp2(u, v, K, diag_u, diag_u);
diag_H = interp2(u, v, H, diag_u, diag_u);
diag_II = interp2(u, v, II, diag_u, diag_u);
plot(diag_u, diag_K, 'r-', 'LineWidth', 2, 'DisplayName', '高斯曲率 K');
holdon;
plot(diag_u, diag_H, 'b-', 'LineWidth', 2, 'DisplayName', '平均曲率 H');
plot(diag_u, diag_II, 'g-', 'LineWidth', 2, 'DisplayName', '第二基本形式 II');
xlabel('u = v', 'FontSize', 11);
ylabel('曲率值', 'FontSize', 11);
title('沿对角线的曲率变化', 'FontSize', 12);
legend('Location', 'best', 'FontSize', 9);
legend('boxoff');
grid on;
% 添加全局标题
sgtitle('抛物面的切平面与曲率分析', 'FontSize', 16, 'FontWeight', 'bold');
%% 创建单独的高质量图:切平面分析
figure('Position', [100, 100, 1000, 400]);
% 左图:3D视图
subplot(1, 2, 1);
holdon; grid on; box on;
% 抛物面
surf(r_x, r_y, r_z, 'FaceAlpha', 0.7, 'EdgeAlpha', 0.1, ...
'FaceColor', [0.3, 0.7, 0.9], 'DisplayName', '抛物面');
% 切平面
surf(u, v, plane_z, 'FaceColor', [0.9, 0.4, 0.4], 'FaceAlpha', 0.6, ...
'EdgeAlpha', 0.05, 'DisplayName', '切平面 z=0');
% 标记P0点
plot3(0, 0, 0, 'ko', 'MarkerSize', 12, 'MarkerFaceColor', 'k', ...
'DisplayName', 'P0(0,0,0)');
% 法向量
quiver3(0, 0, 0, 0, 0, 1.2, 0.6, 'r', 'LineWidth', 3, ...
'MaxHeadSize', 0.6, 'DisplayName', '单位法向量 n');
xlabel('x', 'FontSize', 12, 'FontWeight', 'bold');
ylabel('y', 'FontSize', 12, 'FontWeight', 'bold');
zlabel('z', 'FontSize', 12, 'FontWeight', 'bold');
title('抛物面与切平面的3D视图', 'FontSize', 14, 'FontWeight', 'bold');
legend('Location', 'northeast', 'FontSize', 11);
legend('boxoff');
view(30, 35);
axis equal;
% 右图:等高线视图
subplot(1, 2, 2);
holdon; grid on; box on;
% 绘制抛物面的等高线
contour_levels = 0:0.1:2;
[C, h] = contour(u, v, r_z, contour_levels, 'LineWidth', 1.5);
clabel(C, h, 'FontSize', 8);
% 绘制切平面(在uv平面上)
contour(u, v, plane_z, [0, 0], 'r-', 'LineWidth', 2.5, ...
'DisplayName', '切平面(z=0)');
% 标记P0点
plot(0, 0, 'ko', 'MarkerSize', 10, 'MarkerFaceColor', 'k', ...
'DisplayName', 'P0(0,0,0)');
% 添加坐标轴
xline(0, 'k--', 'LineWidth', 0.8, 'Alpha', 0.5);
yline(0, 'k--', 'LineWidth', 0.8, 'Alpha', 0.5);
xlabel('u', 'FontSize', 12, 'FontWeight', 'bold');
ylabel('v', 'FontSize', 12, 'FontWeight', 'bold');
title('抛物面等高线与切平面迹线', 'FontSize', 14, 'FontWeight', 'bold');
legend({'抛物面等高线', '切平面(z=0)', 'P0点'}, 'Location', 'best', 'FontSize', 10);
legend('boxoff');
axis equal;
colorbar;
%% 输出曲率信息
fprintf('========== 抛物面曲率分析 ==========
');
fprintf('在点 P0(0,0,0) 处:
');
fprintf(' 第二基本形式 II = %.4f
', interp2(u, v, II, 0, 0));
fprintf(' 高斯曲率 K = %.4f
', interp2(u, v, K, 0, 0));
fprintf(' 平均曲率 H = %.4f
', interp2(u, v, H, 0, 0));
fprintf('
');
% 计算边缘点的曲率
edge_points = [0, 1; 1, 0; 0.707, 0.707]; % (0,1), (1,0), (√2/2, √2/2)
fprintf('边缘点的曲率值:
');
fprintf(' (u,v) II K H
');
fprintf(' ---------------------------------
');
fori= 1:size(edge_points, 1)
u_val = edge_points(i, 1);
v_val = edge_points(i, 2);
ii_val = 2*u_val^2 + 2*v_val^2;
k_val = interp2(u, v, K, u_val, v_val);
h_val = interp2(u, v, H, u_val, v_val);
fprintf(' (%.3f,%.3f) %.4f %.4f %.4f
', ...
u_val, v_val, ii_val, k_val, h_val);
end

(三)例3:曲面面积计算
问题描述
计算抛物面 在 、 内的面积,用泰勒展开推导的面积公式编程实现。
面积公式代入
-
偏导向量叉乘的模:
-
面积公式:
MATLAB代码
%% 抛物面区域面积计算(基于泰勒展开的面积公式)
% 定义被积函数:$|vec{r}_utimesvec{r}_v|=sqrt{4u^2+4v^2+1}$
clear; clc; close all;
f = @(u, v)sqrt(4*u.^2 + 4*v.^2 + 1);
% 积分计算面积($uin[-1,1],vin[-1,1]$)
S = integral2(f, -1, 1, -1, 1);
% 输出结果
fprintf('抛物面在 u∈[-1,1], v∈[-1,1] 内的面积为:%.6f
', S);
fprintf('解析近似值(用于验证):≈ %.6f
', 2*pi*(sqrt(17)-1)/3);
%% 可视化积分区域
% 创建网格
[u, v] =meshgrid(linspace(-1, 1, 100));
z = f(u, v);
% 图1:面积元素分布
figure('Position', [100, 100, 800, 600]);
subplot(2, 2, [1, 2]);
surf(u, v, z, 'FaceAlpha', 0.8, 'EdgeColor', 'none', 'FaceColor', 'interp');
holdon;
% 添加坐标轴平面
[X, Y] =meshgrid([-1, 1]);
Z =zeros(size(X));
surf(X, Y, Z, 'FaceAlpha', 0.1, 'EdgeColor', 'k', 'FaceColor', 'blue');
% 设置图形属性
xlabel('$u$', 'Interpreter', 'latex', 'FontSize', 12);
ylabel('$v$', 'Interpreter', 'latex', 'FontSize', 12);
zlabel('$|vec{r}_u imes vec{r}_v|$', 'Interpreter', 'latex', 'FontSize', 12);
title('面积元素 $|vec{r}_u imes vec{r}_v| = sqrt{4u^2 + 4v^2 + 1}$', ...
'Interpreter', 'latex', 'FontSize', 14);
grid on;
% 改善的colorbar
c = colorbar;
c.Label.String = '面积元素大小';
c.Label.FontSize = 11;
c.Location = 'eastoutside';
% 设置视角
view(45, 30);
% 添加图例
h = gca;
h.FontSize = 11;
legend({'被积函数', '积分区域边界'}, 'Location', 'northwest', 'FontSize', 10);
legend('boxoff');
% 图2:等高线图
subplot(2, 2, 3);
contourf(u, v, z, 20, 'LineColor', 'none');
holdon;
rectangle('Position', [-1, -1, 2, 2], 'EdgeColor', 'k', 'LineWidth', 2, 'LineStyle', '--');
xlabel('$u$', 'Interpreter', 'latex', 'FontSize', 11);
ylabel('$v$', 'Interpreter', 'latex', 'FontSize', 11);
title('等高线图', 'FontSize', 12);
colorbar;
axis equal;
grid on;
% 图3:沿对角线剖面
subplot(2, 2, 4);
% 沿对角线 u=v
diag_points =linspace(-1, 1, 200);
diag_z = f(diag_points, diag_points);
plot(diag_points, diag_z, 'b-', 'LineWidth', 2);
holdon;
% 标注特征点
[min_val, min_idx] =min(diag_z);
[max_val, max_idx] =max(diag_z);
plot(diag_points(min_idx), min_val, 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'r');
plot(diag_points(max_idx), max_val, 'go', 'MarkerSize', 8, 'MarkerFaceColor', 'g');
xlabel('$u = v$', 'Interpreter', 'latex', 'FontSize', 11);
ylabel('$|vec{r}_u imes vec{r}_v|$', 'Interpreter', 'latex', 'FontSize', 11);
title('沿对角线剖面', 'FontSize', 12);
legend({'剖面曲线', '最小值', '最大值'}, 'Location', 'best', 'FontSize', 10);
legend('boxoff');
grid on;
% 添加文本标注
annotation('textbox', [0.15, 0.85, 0.3, 0.05], ...
'String', sprintf('面积 S = %.6f', S), ...
'FitBoxToText', 'on', ...
'BackgroundColor', 'white', ...
'EdgeColor', 'black', ...
'FontSize', 10, ...
'FontWeight', 'bold');
%% 额外分析:验证积分结果
% 通过不同方法验证
fprintf('
========== 积分验证 ==========
');
% 方法1:直接数值积分
S_direct = integral2(f, -1, 1, -1, 1);
fprintf('直接数值积分: %.6f
', S_direct);
% 方法2:极坐标变换
f_polar = @(r, theta)sqrt(4*r.^2 + 1) .* r;
S_polar = integral2(f_polar, 0,sqrt(2), 0, 2*pi);
fprintf('极坐标积分: %.6f
', S_polar);
% 方法3:解析解近似
% 对于 z = x^2 + y^2,面积公式为 A = ∬√(1 + 4x^2 + 4y^2) dxdy
% 在圆形区域上的解析解为 π/6 * ((1+4R²)^{3/2} - 1)
% 但对于正方形区域,我们使用数值积分
R = 1; % 正方形区域近似为半径R=1的圆形
S_approx =pi/6 * ((1+4*R^2)^(3/2) - 1);
fprintf('圆形区域近似: %.6f
', S_approx);
% 误差分析
fprintf('
========== 误差分析 ==========
');
fprintf('直接积分与极坐标积分的相对误差: %.2e
',abs(S_direct - S_polar)/S_direct);
fprintf('直接积分与圆形近似的相对误差: %.2e
',abs(S_direct - S_approx)/S_direct);
%% 创建单独的高质量图
figure('Position', [100, 100, 900, 400]);
% 左图:3D可视化
subplot(1, 2, 1);
surf(u, v, z, 'FaceAlpha', 0.85, 'EdgeColor', 'none', 'FaceColor', 'interp');
holdon;
contour3(u, v, z, 10, 'LineColor', 'k', 'LineWidth', 0.5);
xlabel('u', 'FontSize', 12, 'FontWeight', 'bold');
ylabel('v', 'FontSize', 12, 'FontWeight', 'bold');
zlabel('|r_u × r_v|', 'FontSize', 12, 'FontWeight', 'bold');
title('面积元素的3D分布', 'FontSize', 14, 'FontWeight', 'bold');
colorbar('Location', 'eastoutside');
colormap('jet');
view(45, 30);
grid on;
set(gca, 'FontSize', 11);
% 右图:积分区域和等高线
subplot(1, 2, 2);
% 绘制积分区域
patch([-1, 1, 1, -1], [-1, -1, 1, 1], [0.8, 0.9, 1], 'FaceAlpha', 0.3, 'EdgeColor', 'b', 'LineWidth', 2);
holdon;
% 绘制等高线
[C, h] = contour(u, v, z, 15, 'LineWidth', 1.5);
clabel(C, h, 'FontSize', 9);
xlabel('u', 'FontSize', 12, 'FontWeight', 'bold');
ylabel('v', 'FontSize', 12, 'FontWeight', 'bold');
title('积分区域和等高线', 'FontSize', 14, 'FontWeight', 'bold');
legend({'积分区域', '等高线'}, 'Location', 'best', 'FontSize', 10);
legend('boxoff');
grid on;
axis equal;
set(gca, 'FontSize', 11);
% 添加全局标题
sgtitle('抛物面面积计算:S = int_{-1}^{1}int_{-1}^{1} sqrt{4u^2+4v^2+1} , du , dv', ...
'FontSize', 16, 'FontWeight', 'bold');

四、总结
泰勒公式在微分几何中的核心价值是“局部近似”:通过向量函数的泰勒展开,将复杂的曲线/曲面转化为多项式进行分析,解决了曲线切线、曲面切平面、弯曲程度和面积计算等关键问题。 可视化结果进一步验证了理论推导的有效性,且高阶泰勒展开能显著提高近似精度。
End
旋转S的n次方


