欧拉常数(Euler-Mascheroni constant)
欧拉-马歇罗尼常数(Euler-Mascheroni constant)是一个主要应用于数论的数学常数。它的定义是调和级数与自然对数的差值的极限。
由无穷级数理论可知,调和级数 是发散的。但可以证明,
存在极限。由不等式 可得
故 有下界。而
再一次根据不等式 ,取 ,即可得
所以 单调递减。由单调有界数列极限定理,可知 必有极限,即
存在。该极限被称作欧拉常数,现在通常将该常数记为γ。
欧拉法比较简单,但中点法相对麻烦,因其属于多步法,启动需要初始两个时刻的值,其中y1、z1可以用后退欧拉法来求。
我编写的代码如下:
% 用四阶龙格库塔方法求解,可以视为真值dY = @(t,Y)[Y(2); ((1-Y(1)^2)Y(2)-Y(1))];
[t,Y] = ode45(dY,[0 10],[1 1]);
plot(t,Y(:,1))
hold all;
% 欧拉法,步长025
h = 025;
T = (0:h:10)';
y = T0;
z = y;
y(1) = 1;
z(1) = 1;
for k = 2 : length(y)
dz = (1-y(k-1)^2)z(k-1)-y(k-1);
dy = z(k-1);
y(k) = y(k-1) + h dy;
z(k) = z(k-1) + h dz;
end
Y1 = y;
plot(T,Y1,'-');
% 欧拉法,步长0125
h = 0125;
T = (0:h:10)';
y = T0;
z = y;
y(1) = 1;
z(1) = 1;
for k = 1 : length(y) - 1
dz = (1-y(k)^2)z(k)-y(k);
dy = z(k);
y(k+1) = y(k) + h dy;
z(k+1) = z(k) + h dz;
end
Y2 = y;
plot(T,Y2,'-');
% 中点法,步长025
h = 025;
T = (0:h:10)';
y = T0;
z = y;
y(1) = 1;
z(1) = 1;
% 中点法属于多步法,启动需要初始两个时刻的值,其中y1、z1用后退欧拉法来求
[y1,z1] = solve('z1=z0+025((1-y1^2)z1-y1)','y1=y0+025z1','y1','z1');
y0 = y(1); z0 = z(1);
% 方程存在多组解,需要找出实数解
y1 = subs(y1);
z1 = subs(z1);
inx = find(abs(imag(y1))<=eps);
y(2) = y1(inx);
z(2) = z1(inx);
for k = 2 : length(y)-1
dz = (1-y(k)^2)z(k)-y(k);
dy = z(k);
y(k+1) = y(k-1) + 2 h dy;
z(k+1) = z(k-1) + 2 h dz;
end
Y3 = y;
plot(T,Y3,'-');
% 中点法,步长0125
h = 0125;
T = (0:h:10)';
y = T0;
z = y;
y(1) = 1;
z(1) = 1;
% 中点法属于多步法,启动需要初始两个时刻的值,其中y1、z1用后退欧拉法来求
[y1,z1] = solve('z1=z0+0125((1-y1^2)z1-y1)','y1=y0+0125z1','y1','z1');
y0 = y(1); z0 = z(1);
% 方程存在多组解,需要找出实数解
y1 = subs(y1);
z1 = subs(z1);
inx = find(abs(imag(y1))<=eps);
y(2) = y1(inx);
z(2) = z1(inx);
for k = 2 : length(y)-1
dz = (1-y(k)^2)z(k)-y(k);
dy = z(k);
y(k+1) = y(k-1) + 2 h dy;
z(k+1) = z(k-1) + 2 h dz;
end
Y4 = y;
plot(T,Y4,'-');
hold off
ylim([-1 1]3)
legend('RK4','Euler''s method, h=025','Euler''s method, h=0125',
'Midpoint formula, h=025', 'Midpoint formula, h=0125',2)
结果如图:
理论上说,中点法应该比欧拉法数值稳定性高,但从上面的程序看,中点法得到的结果却是发散的。我仔细查了好几遍程序,可能是因为已经形成思维定势的原因,没发现问题。请题主再自己检查一下看看。
至于说画导数dy/dt的轨迹,只是一个简单的保存数据并绘图的问题,请题主自行补上吧。
以上就是关于怎么用matlab编程表示欧拉常数的几何意义全部的内容,包括:怎么用matlab编程表示欧拉常数的几何意义、matlab 欧拉方法和中点法问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)