python龙格库塔_用python面向对象的方法实现欧拉算法和龙格库塔算法
#-*-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面向对象的方法实现欧拉算法和龙格库塔算法相关推荐
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- 数值积分方法:欧拉积分、中点积分和龙格-库塔法积分
目录 写在前面 原理 代码 CMakeLists.txt euler.cpp midpoint.cpp rk4.cpp compile&run 参考 完 写在前面 1.本文内容 数值积分方法: ...
- python 免费空间_用python做大数据
不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...
- python选择题题目_《Python程序设计》题库 - 选择题
一.基础知识 1 . Python 语言属于( ) . C A . 机器语言 B . 汇编语言 C .高级语言 D .科学计算语言 2 .下列选项中,不属于 Python 特点的是( ) . B A ...
- 用python读取股票价格_使用Python写一个量化股票提醒系统
大家在没有阅读本文之前先看下python的基本概念, Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开 ...
- python集群_使用Python集群文档
python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...
- python 网页编程_通过Python编程检索网页
python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...
- python机器学习预测_使用Python和机器学习预测未来的股市趋势
python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...
- 大学计算机基础python学多久_基于Python 的“大学计算机基础”课程教学设计
基于Python 的"大学计算机基础"课程教学设计 日期:2018-04-11 04:32 摘要 培养非计算机专业大学生的计算思维能力,在"大学计算机基础"课程 ...
最新文章
- Python与PHP的区别?
- 安装Rational Enterprise Suite(Robot...)时遇到的问题及解决办法!
- 分贝(BD)的含义以及关系(有助于深刻理解)
- java Flink使用addSink方法保存流到mysql数据库中
- 【大数据部落】 用机器学习识别不断变化的股市状况—隐马尔可夫模型(HMM)股票指数预测实战
- np-hard证明实例 规约
- 阿狸html浪漫代码,index.html
- java queue GATK_gatk4使用总结
- 每一个赞扬背后都有一两个“慕名而来”,而每一个抱怨背后都有100个“弃你而去”。
- 卸载 SQL Server Management Studio 的操作工具
- 消费者太穷不愿买手机?苹果的份额创新高,撕下国产手机遮羞布
- Linux:写一个简单的shell求和脚本并运行
- 沈博研:你一定要看的黄金投资优势分析!
- 极客云上使用anaconda配置python2.7+tensorflow1.8
- IP地址大全之IPV4版
- Tarena - 关联查询
- manjaro 开机启动项_Re:从零开始的Manjaro配置
- WRAP验厂咨询,WRAP认证证书是受到广泛认可的符合社会和道德标准的象征
- 要闻君说:印度公司要在京沪建立数据中心;超 10 万个 GitHub 仓库可泄漏 API 令牌及密钥...
- python 爬取cosplay福利图片