怎么用matlab编程表示欧拉常数的几何意义

怎么用matlab编程表示欧拉常数的几何意义,第1张

欧拉常数(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 欧拉方法和中点法问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10134901.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存