校内建模的一道题,虽然我认为这么trivial的东西前人早就造好轮子了,但是找遍所有能找到的网络资料、文献都没找到答案,只好自己造了个轮子。
设空间曲线
: 绕 : 旋转得到的曲面方程为 ,则 的方程为:
其中
,
证明:
首先,任取
上一点 ,则这一点绕 旋转得到的纬圆 的方程为:
因为
点的取法对 不失一般性,因此,当 点在 移动时,产生的全体纬圆扫过的全空间即为 。
因此
可以写为:
将③④⑤代入②:
令
可以反解出
为了形式简洁起见,令
,则
其中如果
是直线,那么 是一次函数,总有反函数。
如果
不是直线,那么在每一段单调区间内分别求反函数。(或者通过一些消元技巧绕开反函数)
再将
代入①式:
其中
,
证毕。
一个引理都没用到的证明,就不给例子了,回头赶作业了,困死了。
来自半年后的更新——
新增MATLAB代码实现交互式输入:
注意,本代码仅支持直线绕直线旋转!!!
曲线绕直线旋转写代码太麻烦了,而且反函数不一定单值,处理起来很麻烦。
代码如下——
%先输入为被旋转曲线的参数方程%再输入转轴的标准方程close all;clear all;clc;disp('请输入首先被旋转曲线'); %输入提示信息prompt1='请输入x=f(t),例如x=2t+3,则输入数组[2 3]nx=';f=input(prompt1);prompt2='请输入y=g(t),例如y=4t+5,则输入数组[4 5]ny=';g=input(prompt2);prompt3='请输入z=h(t),例如y=6t+7,则输入数组[6 7]nz=';h=input(prompt3);disp(['您的被旋转曲线方程是:']);disp(['x=(' num2str(f(1)) ')×t+(' num2str(f(2)) ')']);disp(['y=(' num2str(g(1)) ')×t+(' num2str(g(2)) ')']);disp(['z=(' num2str(h(1)) ')×t+(' num2str(h(2)) ')']);disp('请输入首先旋转轴的直线标准方程:(x-x0)/m=(y-y0)/n=(z-z0)/p'); %输入提示信息prompt4='请输入数组[m n p]n[m n p]=';mnp=input(prompt4);prompt5='请输入数组[x0 y0 z0]n[x0 y0 z0]=';xyz=input(prompt5);disp(['您的旋转轴直线方程是:']);disp(['(x-(' num2str(xyz(1)) '))/(' num2str(mnp(1)) ')=']);fprintf("%c",8) %删掉换行符号disp(['(y-(' num2str(xyz(2)) '))/(' num2str(mnp(2)) ')=']);fprintf("%c",8) %删掉换行符号disp(['(z-(' num2str(xyz(3)) '))/(' num2str(mnp(3)) ')']);F=[mnp(1)*f(1)+mnp(2)*g(1)+mnp(3)*h(1),mnp(2)*f(2)+mnp(2)*g(2)+mnp(3)*h(2)];disp(['F=(' num2str(F(1)) ')t+(' num2str(F(2)) ')']) %调试用if(F(1)==0)disp(['两直线垂直,方程退化,不予输出']);return;endF_1=[1/F(1) -F(2)/F(1)]; %F的逆为(1/a)t+(-b/a)disp(['F^(-1)=(' num2str(F_1(1)) ')t+(' num2str(F_1(2)) ')']) %调试用syms x y z;F_1u=F_1(1)*(mnp(1)*x+mnp(2)*y+mnp(3)*z); %F^(-1)(mx+ny+pz)Gamma=(x-xyz(1))^2+(y-xyz(2))^2+(z-xyz(3))^2 ...-(f(1)*F_1u+f(2)-xyz(1))^2-(g(1)*F_1u+g(2)-xyz(2))^2-(h(1)*F_1u+h(2)-xyz(3))^2;Gamma=expand(Gamma);disp(['旋转曲面方程为:' char(Gamma) '=0']);prompt6='请输入绘图区域[x0 x1 y0 y1 z0 z1],如输入0,则为默认区间n';plotrange=input(prompt6);if length(plotrange)==6fimplicit3(Gamma,plotrange); %绘图elsefimplicit3(Gamma); %绘图endxlabel('x');ylabel('y');
测试输入1:
%测试样例1:圆锥[1 0][0 0][1 0][0 0 1][0 0 0]0
用户交互界面如下:
绘图效果如下:
测试样例2:
%测试样例2:奇怪的图形[2 3][4 5][6 7][1 2 3][4 5 6][-15 15 -15 15 0 20]
用户交互界面如下:
绘图效果如下:
好了,去赶电磁学作业了。为啥网页上写的4月2日提交,截止日期设置的4月8日。今天4月4日才发现,哭了。