1-1 基于matlab的平面曲线曲率的数值计算
-
工具
向量函数:设曲线 r ( s ) = ( x ( s ) , y ( s ) ) r(s)=(x(s),y(s)) r(s)=(x(s),y(s))是一条正则曲线,其中 s s s是弧长参数。 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 = ∫ 0 t ∣ r ′ ′ ( u ) ∣ d u s=\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 ) ( 3 2 ) (2) k=\frac{|f''(x)|}{\sqrt{(1+f'^2)}^{(\frac{3}{2})}}\tag {2} k=(1+f′2)(23)∣f′′(x)∣(2)
- 给定函数为向量函数
r
(
s
)
=
(
x
(
s
)
,
y
(
s
)
)
r(s)=(x(s),y(s))
r(s)=(x(s),y(s))形式:
-
matlab程序实现
1.计算圆 r ( t ) = ( 2 c o s t , 2 s i n t ) , t ∈ ( 0 , 2 π ) r(t)=(2cost,2sint),t\in (0,2\pi) r(t)=(2cost,2sint),t∈(0,2π)的曲率
解: 由公式 ( 1 ) (1) (1)计算曲率时发现参数不是弧长参数,所以我们要计算弧微分s = ∫ 0 t ∣ r ′ ′ ( u ) ∣ d u s=\displaystyle \int^{t}_{0}{|r''(u)|du} s=∫0t∣r′′(u)∣du
于是s = ∫ 0 t 2 d u = 2 t s=\displaystyle \int^{t}_{0}{2du}=2t s=∫0t2du=2t
从而转换成计算 r ( t ) = ( 2 c o s s 2 , 2 s i n s 2 ) , 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
=
s
i
n
x
,
x
∈
(
0
,
π
)
y=sinx,x\in(0,\pi)
y=sinx,x∈(0,π)的曲率
由公式 ( 2 ) (2) (2) k = ∣ s i n x ∣ ( 1 + c o s x 2 ) ( 3 2 ) 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));