第七章习题

news/2024/11/18 0:05:23/文章来源:https://www.cnblogs.com/wdew/p/18551450

学号后四位:3018
7.3:

点击查看代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d, CubicSplineT = np.array([700, 720, 740, 760, 780])
V = np.array([0.0977, 0.1218, 0.1406, 0.1551, 0.1664])# 线性插值
linear_interp = interp1d(T, V)
V_linear_750 = linear_interp(750)
V_linear_770 = linear_interp(770)# 三次样条插值
cubic_interp = CubicSpline(T, V)
V_cubic_750 = cubic_interp(750)
V_cubic_770 = cubic_interp(770)print(f"线性插值:T = 750 时,V = {V_linear_750};T = 770 时,V = {V_linear_770}")
print(f"三次样条插值:T = 750 时,V = {V_cubic_750};T = 770 时,V = {V_cubic_770}")# 绘制图形
T_new = np.linspace(700, 780, 100)
V_linear_new = linear_interp(T_new)
V_cubic_new = cubic_interp(T_new)plt.plot(T, V, 'o', label='原始数据')
plt.plot(T_new, V_linear_new, label='线性插值')
plt.plot(T_new, V_cubic_new, label='三次样条插值')
plt.xlabel('温度 T')
plt.ylabel('体积变化 V')
plt.legend()
plt.show()
print("xuehao3018")

7.4:

点击查看代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata# 定义函数
def f(x, y):return (x**2 - 2*x) * np.exp(-y**2/2)# 生成随机散乱点
np.random.seed(0)
n_points = 100
x_random = np.random.uniform(-3, 3, n_points)
y_random = np.random.uniform(-4, 4, n_points)
z_random = f(x_random, y_random)# 定义插值网格
grid_x, grid_y = np.mgrid[-3:3:100j, -4:4:100j]# 进行插值
z_interpolated = griddata((x_random, y_random), z_random, (grid_x, grid_y), method='cubic')# 绘制结果
plt.figure(figsize=(10, 5))
plt.subplot(121)
plt.scatter(x_random, y_random, c=z_random, cmap='viridis')
plt.title('Scattered Points')
plt.xlabel('x')
plt.ylabel('y')plt.subplot(122)
plt.imshow(z_interpolated.T, extent=[-3, 3, -4, 4], origin='lower', cmap='viridis')
plt.title('Interpolated Result')
plt.xlabel('x')
plt.ylabel('y')plt.show()
print("xuehao3018")

7.7:

点击查看代码
import numpy as np
from scipy.optimize import curve_fit, least_squares
import matplotlib.pyplot as plt# 定义函数 g(x)
def g(x, j0, q, r):return j0 * (1.1 ** x) + (q - 1.1 * j0) * r * x# 生成模拟观测值
a = 1.1
b = 0.01
x_data = np.arange(1, 21)
y_data = [g(x, a, a + b, b) for x in x_data]# 1. 用 curve_fit 拟合函数 g(x)
popt_curve_fit, _ = curve_fit(g, x_data, y_data)
y_curve_fit = g(x_data, *popt_curve_fit)# 2. 用 leastsq 拟合函数 g(x)(注意:leastsq 在较新版本的 scipy 中已被弃用,这里只是为了演示)
from scipy.optimize import leastsqdef residuals(params, x, y):return y - g(x, *params)initial_guess = [1, 1, 1]
popt_leastsq, _ = leastsq(residuals, initial_guess, args=(x_data, y_data))
y_leastsq = g(x_data, *popt_leastsq)# 3. 用 least_squares 拟合函数 g(x)
def fun(params):return g(x_data, *params) - y_datainitial_guess_ls = [1, 1, 1]
res_ls = least_squares(fun, initial_guess_ls)
popt_least_squares = res_ls.x
y_least_squares = g(x_data, *popt_least_squares)# 绘制结果
plt.plot(x_data, y_data, 'o', label='模拟观测值')
plt.plot(x_data, y_curve_fit, label='curve_fit')
plt.plot(x_data, y_leastsq, label='leastsq')
plt.plot(x_data, y_least_squares, label='least_squares')
plt.legend()
plt.xlabel('x')
plt.ylabel('g(x)')
plt.show()
print("xuehao3018")

7.10:

点击查看代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
from scipy.optimize import curve_fit# 数据
x_data = np.array([-2, -1.7, -1.4, -1.1, -0.8, -0.5, -0.2, 0.1, 0.4, 0.7, 1, 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4, 4.3, 4.6, 4.9])
y_data = np.array([0.1029, 0.1174, 0.1316, 0.1448, 0.1566, 0.1662, 0.1733, 0.1775, 0.1785, 0.1764, 0.1711, 0.1630, 0.1526, 0.1402, 0.1266, 0.1122, 0.0977, 0.0835, 0.0702, 0.0588, 0.0479, 0.0373, 0.0291, 0.0224])# 1. 插值方法绘制曲线并比较
# 线性插值
linear_interp = interp1d(x_data, y_data, kind='linear')
x_linear = np.linspace(-2, 4.9, 100)
y_linear = linear_interp(x_linear)# 三次样条插值
cubic_interp = interp1d(x_data, y_data, kind='cubic')
x_cubic = np.linspace(-2, 4.9, 100)
y_cubic = cubic_interp(x_cubic)# 绘制插值结果
plt.figure(figsize=(10, 6))
plt.plot(x_data, y_data, 'o', label='原始数据')
plt.plot(x_linear, y_linear, label='线性插值')
plt.plot(x_cubic, y_cubic, label='三次样条插值')
plt.xlabel('x')
plt.ylabel('y')
plt.title('插值方法比较')
plt.legend()# 比较优劣(简单描述)
print("线性插值简单快速,但在曲线变化剧烈处可能不够准确。三次样条插值通常更光滑,但计算量较大。")# 2. 多项式拟合
def polynomial_func(x, *coeffs):y = 0for i, c in enumerate(coeffs):y += c * x**ireturn ydegrees = [2, 3, 4, 5]
best_degree = None
best_residuals = None
best_coeffs = Nonefor degree in degrees:initial_coeffs = np.ones(degree + 1)popt, _ = curve_fit(polynomial_func, x_data, y_data, p0=initial_coeffs)residuals = y_data - polynomial_func(x_data, *popt)if best_residuals is None or np.sum(residuals**2) < best_residuals:best_degree = degreebest_residuals = np.sum(residuals**2)best_coeffs = poptprint(f"最佳多项式阶次为 {best_degree},系数为 {best_coeffs},剩余标准差为 {np.sqrt(best_residuals / len(x_data))}")# 3. 正态分布拟合
def normal_dist_func(x, mu, sigma):return 1 / (sigma * np.sqrt(2 * np.pi)) * np.exp(-(x - mu)**2 / (2 * sigma**2))popt_normal, _ = curve_fit(normal_dist_func, x_data, y_data)
mu_fit, sigma_fit = popt_normalx_normal = np.linspace(-2, 4.9, 100)
y_normal = normal_dist_func(x_normal, mu_fit, sigma_fit)plt.figure(figsize=(10, 6))
plt.plot(x_data, y_data, 'o', label='原始数据')
plt.plot(x_normal, y_normal, label='正态分布拟合')
plt.xlabel('x')
plt.ylabel('y')
plt.title('正态分布拟合')
plt.legend()plt.show()
print("xuehao3018")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/835596.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6502 指令译码器

引言 CPU 要执行指令需要先识别指令,弄清楚要执行的指令是什么类型、需要几个周期、操作数在哪里、目的地在哪里等信息,才能在后续的指令执行过程中打开对应的数据通路。“识别指令”的过程叫译码,完成指令识别功能的机构,叫译码器。 两个译码器 因为 6502 CPU 有一个两级流…

随笔5

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13234这个作业的目标 完成昨天的计划总结:问题 答案昨天完成的工作 完成个人中心和发表博客页面今天计划完成的工作 完成分类模块以及登录部分的接口对接遇到…

随笔4

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13234这个作业的目标 完成昨天的计划总结:问题 答案昨天完成的工作 完成首页的搭建今天计划完成的工作 完成个人中心和发表博客页面遇到的困难 发表页面需要…

Nukem pg walkthrough Intermediate

nmap 扫描 ┌──(root㉿kali)-[~] └─# nmap -p- -A 192.168.157.105 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-17 12:32 UTC Nmap scan report for 192.168.157.105 Host is up (0.071s latency). Not shown: 65529 filtered tcp ports (no-response) PORT …

Scrum冲刺-Day4

Scrum冲刺-Day4 1站立式会议 1.1站立会议照片1.2会议纪要 - Day4成员姓名 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难张易欣 订单模块接口的开发 实现对用户的请求和响应进行处理 需要解决前端和后端之间的数据传递和同步问题苏清仪 分类模块接口的开发 业务逻辑处…

第七天 项目冲刺

情况 前端提出浏览器访问出现错误的问题 定位发现是跨域问题先有前端通过配置代理也能通过,但还是决定再后端也配置一下解决跨域问题由于使用了springSecurity,所有还要在security中开启这个功能 前后端沟通时发现他对我的分类的理解完全不一样,而是类似于这样的于是按照他的…

Scrum冲刺-Day3

1.站立式会议 1.1站立会议照片1.2会议纪要成员姓名 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难张易欣 管理员模块接口的开发 订单模块接口的开发 暂无苏清仪 商品模块接口开发 分类模块接口的开发 暂无李心怡 登录注册 购物车功能的逻辑设计与ui图 暂无郑梦翰 确定…

Scrum冲刺-Day2

1站立式会议 1.1站立会议照片1.2会议纪要成员姓名 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难张易欣 后端用户模块 管理员模块接口开发 需要更深入学习数据库知识苏清仪 项目环境搭建 商品模块接口开发 暂无李心怡 前端接口设计 登录注册 暂无郑梦翰 前端接口设计 …

Scrum冲刺-Day7

Scrum冲刺-Day7 1站立式会议 1.1站立会议照片1.2会议纪要 - Day7成员姓名 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难张易欣 设计网页数据的回显及错误提示 总结七天冲刺进度 确保数据的准确性和完整性苏清仪 商品库存管理开发 商品展示顺序选择功能 处理算法的选择…

第六天 项目冲刺

任务完成情况 基本接口都写完了 评论的回复功能实现比较复杂一些,对原来的对象嵌套包装一层完成2级评论的功能 现在难题是前后端的协调调用比较麻烦,单纯的视频或者聊天以及不能满足需求 考虑到前端能及时调用后端接口比较直观,干脆部署后端项目到服务器上 申请服务器利用宝…

第五天 项目冲刺

迟迟未实现分页,今天决定实现分页功能,之前都是使用pagehelper插件来进行分页的,在mybatisplus官方文档发现它也有分页功能 于是干脆使用它的进行了分页插件的配置 学习了这种分页的使用测试显然有了分页特有的标志 基于xml的写法发现有些查询语句太多重复了,使用标签提取,…

为正在运行的 Docker 容器重启策略,以提高服务的可用性

--restart=always 是 Docker 中一个常用的参数,用来设置容器的重启策略。它的作用是确保容器在一定条件下能够自动重启,以提高服务的可用性。为正在运行的 Docker 容器重启策略,以提高服务的可用性。 为正在运行的 Docker 容器添加 --restart=always --restart=always 是 Doc…