1-1 基于matlab的平面曲线曲率的数值计算
-
工具
向量函数:设曲线r(s)=(x(s),y(s))r(s)=(x(s),y(s))r(s)=(x(s),y(s))是一条正则曲线,其中sss是弧长参数。r(s)r(s)r(s)是以向量形式表示的,所以称为向量函数。 -
曲率公式
- 给定函数为向量函数r(s)=(x(s),y(s))r(s)=(x(s),y(s))r(s)=(x(s),y(s))形式:
曲率的计算公式为:k=∣r′′(s)∣(1)k=|r''(s)| \tag {1}k=∣r′′(s)∣(1) 注意 : 当 给定函数r(t)=(x(t),y(t))r(t)=(x(t),y(t))r(t)=(x(t),y(t))参数不是弧长参数时我们需要计算函数的弧长参数,才能进行下一步计算。其中弧长参数计算方法为计算弧微分s=∫0t∣r′′(u)∣dus=\displaystyle \int^{t}_{0}{|r''(u)|du}s=∫0t∣r′′(u)∣du. - 给定函数为y=f(x)y=f(x)y=f(x)形式:
曲率k=∣f′′(x)∣(1+f′2)(32)(2)k=\frac{|f''(x)|}{\sqrt{(1+f'^2)}^{(\frac{3}{2})}}\tag {2}k=(1+f′2)(23)∣f′′(x)∣(2)
-
matlab程序实现
1.计算圆r(t)=(2cost,2sint),t∈(0,2π)r(t)=(2cost,2sint),t\in (0,2\pi)r(t)=(2cost,2sint),t∈(0,2π)的曲率
解: 由公式(1)(1)(1)计算曲率时发现参数不是弧长参数,所以我们要计算弧微分s=∫0t∣r′′(u)∣dus=\displaystyle \int^{t}_{0}{|r''(u)|du}s=∫0t∣r′′(u)∣du
于是s=∫0t2du=2ts=\displaystyle \int^{t}_{0}{2du}=2ts=∫0t2du=2t
从而转换成计算r(t)=(2coss2,2sins2),s∈(0,4π)的曲率r(t)=(2cos\frac{s}{2},2sin\frac{s}{2}),s\in (0,4\pi)的曲率r(t)=(2cos2s,2sin2s),s∈(0,4π)的曲率
MATLAB程序:
clc,clear
h=0.01; %步长
s=0:h:4*pi;
x=2*cos(s./2);y=2*sin(s./2); %定义x,y
r=[x,y]; %定义向量函数
r1=diff(r)./h; %一阶导
r2=diff(r1)./h; %二阶导
k=r2;
for i=1:length(r2)
k(i)=norm(r2(i));
end
- 计算y=sinx,x∈(0,π)y=sinx,x\in(0,\pi)y=sinx,x∈(0,π)的曲率
由公式(2)(2)(2)k=∣sinx∣(1+cosx2)(32)k=\frac{|sinx|}{\sqrt{(1+cosx^2)}^{(\frac{3}{2})}}k=(1+cosx2)(23)∣sinx∣
MATLAB程序:
clc,clear
h=0.01; %步长
x=0:h:pi;
y=sin(x); %定义x,y
y1=diff(y)./h; %一阶导
y2=diff(y1)./h; %二阶导
y2(length(y1))=y2(end); %二阶导右端点用向后差商代替,否则会有维度不一致情况
k=abs(y2)./(sqrt(1+y1.^2).^(3/2));