#-*-coding:utf-8 -*-

importmathimportnumpy as npimportmatplotlib.pyplot as plt#定义一个欧拉算法的类,从而实现不同步长的引用

classEuler:#y_list = [] # 定义一个空列表来实现y值的存储

def __init__(self, h, y0): #初始化Euler类的方法

self.h =h

self.y0=y0

self.y=y0

self.n= 1 /self.h

self.x=0def euler(self): #定义Euler算法的过程

#x = 0

#y = self.y0

#n = 1 / self.h

for i in range(int(self.n + 1)):

y_dere= 1 + math.log(self.x + 1)

self.y+= self.h *y_dere

self.y_list= Euler_y_list.append("%.10f" %self.y)

self.x+=self.h#print(Euler.y_list,)

return np.linspace(0, 1, self.n + 1, dtype=float), Euler_y_list #为了引用结果列表,从而返回两个列表

#定义一个实现龙格库塔方法

classRungeKutta:def __init__(self, h, y0=1):

self.h=h

self.y0=y0defmake_ks(self, x_k, y_k):defy_ders(x_k):

y_der= 1 + math.log(x_k + 1)returny_der#计算K1,K2,K3,K4

k1 =y_ders(x_k)

k2= y_ders(x_k + self.h / 2)

k3= y_ders(x_k + (self.h / 2))

k4= y_ders(x_k +self.h)

y_k= y_k + self.h / 6 * (k1 + (2 - math.sqrt(2)) * k2 + (2 + math.sqrt(2)) * k3 +k4)returnx_k, y_kdefmake(self):

n= int(1 /self.h)

y_k=self.y0

x_k=0for i in range(n): #用循环遍历来实现y值的计算

x_k, y_k =self.make_ks(x_k, y_k)

x_k+=self.h

RungeKutta_y_list.append(y_k)return np.linspace(0, 1, n+1, endpoint=True,dtype=float), RungeKutta_y_listclassPlots:def __init__(self, x, y, title):

self.x=list(x)

self.y=list(y)

self.title=titledefplots(self):

plt.figure(figsize=(8, 4))

plt.scatter(self.x, self.y, label="y'=1+ln(x+1),\ny0=1\n(0

plt.xlabel("x")

plt.ylabel("y")

plt.title(self.title)#plt.ylim(min(self.y), max(self.y))

plt.ylim()

plt.legend()

plt.show()if __name__ == "__main__":whileTrue:

name= input("本程序提供Euler算法和Rungekutta算法\n选择算法时输入exit退出\n请输入需要的算法名:")try:

a= float(input("请输入所需要的h值:"))if a =="exit" or a=="Exit":break

exceptValueError as ve:print(ve)if name == "Euler":

Euler_y_list=[]

l1= Euler(h=a, y0=1)

l1x, l1y=l1.euler()

with open("Euler.txt","a+") as f:

f.write("h=%s\n" %l1.h)

f.write("x值--------------y值\n")for i inrange(len(l1x)):print("x是:%.5f y是:%.10f" %(float(l1x[i]),float(l1y[i])))

a,b=str(l1x[i]),str(l1y[i])

f.write(a+" "*6+b+"\n")

l1p=Plots(l1x, l1y, name)

l1p.plots()print("请储存好你的x值,和y值")dell1, l1p, l1x, l1y

Euler.y_list=[]elif name == "Rungekutta":

RungeKutta_y_list=[0]

l2= RungeKutta(h=a)

l2x, l2y=l2.make()

with open("Rungekutta.txt", "a+") as f:

f.write("h=%s\n" %l2.h)

f.write("x值--------------y值\n")for i inrange(len(l2x)):print("x是:%.5f y是:%.10f" %(l2x[i], l2y[i]))

a, b=str(l2x[i]), str(l2y[i])

f.write(a+ " " * 6 + b + "\n")

l2p=Plots(l2x, l2y, name)

l2p.plots()print("请储存好你的x值,和y值")dell2, l2pelif name =="exit":break

else:print("请输入正确的算法名!!!!")

python龙格库塔_用python面向对象的方法实现欧拉算法和龙格库塔算法相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. 数值积分方法:欧拉积分、中点积分和龙格-库塔法积分

    目录 写在前面 原理 代码 CMakeLists.txt euler.cpp midpoint.cpp rk4.cpp compile&run 参考 完 写在前面 1.本文内容 数值积分方法: ...

  4. python 免费空间_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

  5. python选择题题目_《Python程序设计》题库 - 选择题

    一.基础知识 1 . Python 语言属于( ) . C A . 机器语言 B . 汇编语言 C .高级语言 D .科学计算语言 2 .下列选项中,不属于 Python 特点的是( ) . B A ...

  6. 用python读取股票价格_使用Python写一个量化股票提醒系统

    大家在没有阅读本文之前先看下python的基本概念, Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开 ...

  7. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  8. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  9. python机器学习预测_使用Python和机器学习预测未来的股市趋势

    python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...

  10. 大学计算机基础python学多久_基于Python 的“大学计算机基础”课程教学设计

    基于Python 的"大学计算机基础"课程教学设计 日期:2018-04-11 04:32 摘要 培养非计算机专业大学生的计算思维能力,在"大学计算机基础"课程 ...

最新文章

  1. Python与PHP的区别?
  2. 安装Rational Enterprise Suite(Robot...)时遇到的问题及解决办法!
  3. 分贝(BD)的含义以及关系(有助于深刻理解)
  4. java Flink使用addSink方法保存流到mysql数据库中
  5. 【大数据部落】 用机器学习识别不断变化的股市状况—隐马尔可夫模型(HMM)股票指数预测实战
  6. np-hard证明实例 规约
  7. 阿狸html浪漫代码,index.html
  8. java queue GATK_gatk4使用总结
  9. 每一个赞扬背后都有一两个“慕名而来”,而每一个抱怨背后都有100个“弃你而去”。
  10. 卸载 SQL Server Management Studio 的操作工具
  11. 消费者太穷不愿买手机?苹果的份额创新高,撕下国产手机遮羞布
  12. Linux:写一个简单的shell求和脚本并运行
  13. 沈博研:你一定要看的黄金投资优势分析!
  14. 极客云上使用anaconda配置python2.7+tensorflow1.8
  15. IP地址大全之IPV4版
  16. Tarena - 关联查询
  17. manjaro 开机启动项_Re:从零开始的Manjaro配置
  18. WRAP验厂咨询,WRAP认证证书是受到广泛认可的符合社会和道德标准的象征
  19. 要闻君说:印度公司要在京沪建立数据中心;超 10 万个 GitHub 仓库可泄漏 API 令牌及密钥...
  20. python 爬取cosplay福利图片

热门文章

  1. 《Python程序设计基础(第2版)》习题答案
  2. 地理坐标系转换工具,支持WGS84/GCJ02/BD09等常用坐标系互转
  3. CnOpenData中国行政区划数据
  4. 【GOF】三种工厂模式~
  5. 机载激光雷达原理与应用科普(二)
  6. Linux mysql 主从 配置
  7. 简洁明了的个人求职简历如何写?
  8. 微信小程序 图片长按识别功能 笔记
  9. 什么样的人适合学编程?
  10. ssh: connect to host github.com port 22: Connection refused