改进欧拉公式

import numpy as np
import matplotlib.pyplot as plt

x1 = 0
x2 = 0
y1 = 1
y2 = 1
h = 0.1 # x(n+1) - x(n)
X1 = np.zeros(100)
Y1= np.zeros(100)
X2 = np.zeros(100)
Y2 = np.zeros(100)

def f(x, y):
    return y - 2 * (x / y)

for i in range(0,100):
    y1 = y1 + 0.05 * ( f(x1, y1) + f( x1 + h, y1 + 0.1 * f(x1, y1)) )
    x1 = x1 + h
    Y1[i] = y1
    X1[i] = x1
    print(Y1[i], X1[i])
1.0929761904761905 0.1
1.1778321038457131 0.2
1.256135190384483 0.30000000000000004
1.3289255090966436 0.4
1.3969131621203812 0.5
1.4605841666711676 0.6
1.5202605105195306 0.7
1.5761349500530002 0.7999999999999999
1.6282905854696912 0.8999999999999999
1.6767103568548303 0.9999999999999999
1.72127910216094 1.0999999999999999
1.7617793927441254 1.2
1.797881423902427 1.3
1.8291264816568051 1.4000000000000001
1.8549027339756012 1.5000000000000002
1.8744111200174338 1.6000000000000003
1.8866176893489026 1.7000000000000004
1.8901864643978414 1.8000000000000005
1.8833829877262636 1.9000000000000006
1.8639315774100327 2.0000000000000004
1.828795420987003 2.1000000000000005
1.7738195031189075 2.2000000000000006
1.6931093964581405 2.3000000000000007
1.577845810541459 2.400000000000001
1.4137099967220328 2.500000000000001
1.174089343413283 2.600000000000001
0.7949418090592373 2.700000000000001
-0.04581579648560541 2.800000000000001
6.318660264291585 2.9000000000000012
6.872599825938077 3.0000000000000013
7.487986961757877 3.1000000000000014
8.171120444650981 3.2000000000000015
8.928900498648225 3.3000000000000016
9.768897372230537 3.4000000000000017
10.699426725532945 3.5000000000000018
11.72963231112202 3.600000000000002
12.869576554388049 3.700000000000002
14.130339767590321 3.800000000000002
15.524128858878676 3.900000000000002
17.064396524048437 4.000000000000002
18.765972035730275 4.100000000000001
20.64520487440429 4.200000000000001
22.720122580697907 4.300000000000001
25.010604351625872 4.4
27.538572057451173 4.5
30.328200523269526 4.6
33.406149102719375 4.699999999999999
36.80181677279951 4.799999999999999
40.54762320102935 4.899999999999999
44.67931848155403 4.999999999999998
49.236324507826716 5.099999999999998
54.26211124890561 5.1999999999999975
59.804611527107404 5.299999999999997
65.91667825994776 5.399999999999997
72.65658853245989 5.4999999999999964
80.08859931095043 5.599999999999996
88.28356010025172 5.699999999999996
97.31958838822197 5.799999999999995
107.28281431876972 5.899999999999995
118.2682016937123 5.999999999999995
130.38045313058015 6.099999999999994
143.73500800496015 6.199999999999994
158.45914268975415 6.299999999999994
174.69318357822402 6.399999999999993
192.59184445217699 6.499999999999993
212.32570094134522 6.5999999999999925
234.08281612621423 6.699999999999992
258.0705327766962 6.799999999999992
284.5174493068464 6.8999999999999915
313.67559827640883 6.999999999999991
345.82284820003173 7.099999999999991
381.26555155290185 7.19999999999999
420.34146420758645 7.29999999999999
463.4229641233958 7.39999999999999
510.92059996123567 7.499999999999989
563.2870034408808 7.599999999999989
621.0212027238244 7.699999999999989
684.6733779263831 7.799999999999988
754.8501040809623 7.899999999999988
832.2201315084866 7.999999999999988
917.5207586862086 8.099999999999987
1011.5648583412612 8.199999999999987
1115.2486237251887 8.299999999999986
1229.5601088876226 8.399999999999986
1355.5886443336424 8.499999999999986
1494.535217791298 8.599999999999985
1647.7239190127455 8.699999999999985
1816.614557672123 8.799999999999985
2002.8165746022783 8.899999999999984
2208.1043789372925 8.999999999999984
2434.434257315874 9.099999999999984
2683.963016281604 9.199999999999983
2959.0685355324695 9.299999999999983
3262.372427881515 9.399999999999983
3596.76502186628 9.499999999999982
3965.432905078334 9.599999999999982
4371.889290686522 9.699999999999982
4820.007496531112 9.799999999999981
5314.057855827187 9.89999999999998
5858.748411217088 9.99999999999998
for i in range(0,100):
    y2 = 1.1 * y2 - 0.2 * (x2 / y2)
    x2 = x2 + h
    Y2[i] = y2
    X2[i] = x2
    print(Y2[i], X2[i])
1.1 0.1
1.191818181818182 0.2
1.277437833714722 0.30000000000000004
1.35821259956029 0.4
1.4351329186577972 0.5
1.5089662535663324 0.6
1.580338237655218 0.7
1.6497834310477122 0.7999999999999999
1.717779347860088 0.8999999999999999
1.7847708324979834 0.9999999999999999
1.8511887110822296 1.0999999999999999
1.917465025144291 1.2
1.984046272046332 1.3
2.0514055684725467 1.4000000000000001
2.1200543441219546 1.5000000000000002
2.190553971934533 1.6000000000000003
2.2635275998130764 1.7000000000000004
2.339672339345207 1.8000000000000005
2.419771873967288 1.9000000000000006
2.504709464330856 2.0000000000000004
2.595481249764899 2.1000000000000005
2.6932096736597324 2.2000000000000006
2.7991568033689833 2.3000000000000007
2.914737281245499 2.400000000000001
3.0415306441486285 2.500000000000001
3.181292795402083 2.600000000000001
3.335966513495211 2.700000000000001
3.507691036387956 2.800000000000001
3.6988109593575618 2.9000000000000012
3.9118849066249957 3.0000000000000013
4.149694651664416 3.1000000000000014
4.415255533297773 3.2000000000000015
4.711829113820219 3.3000000000000016
5.042939033576937 3.4000000000000017
5.412390933993009 3.5000000000000018
5.824297167194873 3.600000000000002
6.283106817950801 3.700000000000002
6.793641370604512 3.800000000000002
7.36113619361956 3.900000000000002
7.991287909888882 4.000000000000002
8.690307681027537 4.100000000000001
9.464980455133118 4.200000000000001
10.322730298367317 4.300000000000001
11.271692036022365 4.4
12.320789553742157 4.5
13.479821242455882 4.6
14.759553203479546 4.699999999999999
16.1718209590997 4.799999999999999
17.72964053779977 4.899999999999999
19.447329923268757 4.999999999999998
21.340641974831755 5.099999999999998
23.42691004691238 5.1999999999999975
25.725207659648923 5.299999999999997
28.256523704780307 5.399999999999997
31.04395481310721 5.4999999999999964
34.11291666469445 5.599999999999996
37.491376192797986 5.699999999999996
41.21010681943666 5.799999999999995
45.30296906669943 5.899999999999995
49.80721911541924 5.999999999999995
54.76384813397673 6.099999999999994
60.217955477080224 6.199999999999994
66.21915915995032 6.299999999999994
72.82204735019371 6.399999999999993
80.08667499082237 6.499999999999993
88.07911007670793 6.5999999999999925
96.87203455693935 6.699999999999992
106.54540533113622 6.799999999999992
117.18718135323435 6.8999999999999915
128.89412345653736 6.999999999999991
141.77267417434913 7.099999999999991
155.93992555725364 7.19999999999999
171.52468378767807 7.29999999999999
188.66864027201905 7.39999999999999
207.52765985831195 7.499999999999989
228.2731978919703 7.599999999999989
251.0938589931828 7.699999999999989
276.19711172777073 7.799999999999988
303.8111747603836 7.899999999999988
334.18709163772365 7.999999999999988
367.60101306420745 8.099999999999987
404.3567074186819 8.199999999999987
444.7883223356561 8.299999999999986
489.26342245685134 8.399999999999986
538.1863309694535 8.499999999999986
592.0018053091021 8.599999999999985
651.199080443467 8.699999999999985
716.3163164938686 8.799999999999985
787.9454911281639 8.899999999999984
866.7377812014655 8.999999999999984
953.4094825689436 9.099999999999984
1048.748521887409 9.199999999999983
1153.6216196040705 9.299999999999983
1268.982169250727 9.399999999999983
1395.878904673502 9.499999999999982
1535.4654339912613 9.599999999999982
1689.0107269552052 9.699999999999982
1857.9106510493766 9.799999999999981
2043.7006612058437 9.89999999999998
2248.0697584957 9.99999999999998
plt.plot(X1, Y1, ls='-', lw=2, label='cosine', color='purple')
plt.plot(X2, Y2, ls='-', lw=2, label='cosine', color='blue')
plt.legend()
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值