第七章课后习题

news/2024/11/16 20:36:12/文章来源:https://www.cnblogs.com/zlt-2005/p/18549766

习题7.1

点击查看代码
import numpy as np
from scipy.interpolate import interp1d
from scipy.integrate import quad
import matplotlib.pyplot as pltg = lambda x: (3 * x ** 2 + 4 * x + 6) * np.sin(x) / (x ** 2 + 8 * x + 6)
x0 = np.linspace(0, 10, 1000)
y0 = g(x0)
# 创建三次样条插值函数
gh = interp1d(x0, y0, 'cubic')
xn = np.linspace(0, 10, 10000)
yn = gh(xn)
Il = quad(g, 0, 10)
I2 = np.trapz(yn, xn)
print('Il =', Il) # 将会输出积分值,误差值
print('I2 =', I2)
plt.rc('font', family='SimHei')  # 设置字体为 SimHei
plt.rc('axes', unicode_minus=False)  # 正确显示负号
plt.plot(x0, y0, '*-', label='原来函数')
plt.plot(xn, yn, '.-', label='插值函数')
plt.legend()
plt.show()
print("学号后四位:3001")


习题7.3

点击查看代码
import numpy as np
import pylab as plt
from scipy.interpolate import interp1d
T0=np.linspace(700,780,5)
V0=np.array([0.0977,0.1218,0.1406,0.1551,0.1664])
T=[750,770]
fv1=interp1d(T0,V0);fv2=interp1d(T0,V0,'cubic')
V1=fv1(T);V2=fv2(T)
xn=np.linspace(700,780,81)
vn1=fv1(xn);vn2=fv2(xn)
plt.rc('font',family='SimHei')
plt.plot(xn,vn1,'-*',label="线性插值")
plt.plot(xn,vn2,'.-',label="三次样条插值")
plt.legend()
plt.show()
print("学号后四位:3001")


习题7.4

点击查看代码
import numpy as np
import pylab as plt  
import numpy.random as nr
from scipy.interpolate import griddata
z = lambda x, y: (x**2 - 2*x) * np.exp(-x**2 - y**2 - x*y)
# 生成随机点
x0 = nr.uniform(-3, 3, 60)
y0 = nr.uniform(-4, 4, 60)
z0 = z(x0, y0)
# 创建网格
xn = np.linspace(-3, 3, 61)
yn = np.linspace(-4, 4, 81)
xn, yn = np.meshgrid(xn, yn)
# 将随机点坐标组合成 (x, y) 对
xy0 = np.vstack([x0, y0]).T
# 使用 griddata 进行插值
zn1 = griddata(xy0, z0, (xn, yn), method='cubic')
zn2 = griddata(xy0, z0, (xn, yn), method='nearest')
# 处理 NaN 值(如果有的话),这里使用最近邻插值的结果来填充
zn1[np.isnan(zn1)] = zn2[np.isnan(zn1)]
# 创建子图
fig = plt.figure()
ax1 = fig.add_subplot(121, projection='3d')
ax2 = fig.add_subplot(122, projection='3d')
# 绘制原始函数曲面
ax1.plot_surface(xn, yn, z(xn, yn), cmap='summer')
ax1.set_title('原函数图形')
# 绘制插值后的曲面
# 注意:这里应该使用 ax2 而不是 ax1 来绘制第二个曲面
ax2.plot_surface(xn, yn, zn1, cmap='winter')
ax2.set_title('插值函数图形')
# 显示图形
plt.show()
print("学号后四位:3001")


习题7.7

点击查看代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit, leastsq, least_squares
from scipy.constants import edef g(x, a, b):return (10 * a) / (10 * b + (a - 10 * b) * np.exp(a * np.sin(x)))a = 1.1
b = 0.01x_values = np.arange(1, 21)
y_values = g(x_values, a, b)for i, (xi, yi) in enumerate(zip(x_values, y_values), start=1):print(f"({xi}, {yi:.6f})")popt_curve_fit, pcov_curve_fit = curve_fit(g, x_values, y_values, p0=[a, b])
y_fit_curve_fit = g(x_values, *popt_curve_fit)def func_leastsq(params, x, y):return y - g(x, *params)popt_leastsq = leastsq(func_leastsq, [a, b], args=(x_values, y_values))[0]
y_fit_leastsq = g(x_values, *popt_leastsq)popt_least_squares = least_squares(func_leastsq, [a, b], args=(x_values, y_values)).x
y_fit_least_squares = g(x_values, *popt_least_squares)print("\ncurve_fit parameters:", popt_curve_fit)
print("leastsq parameters:", popt_leastsq)
print("least_squares parameters:", popt_least_squares)plt.figure(figsize=(10, 6))
plt.scatter(x_values, y_values, label='Simulated data', color='red')
plt.plot(x_values, y_fit_curve_fit, label='curve_fit', linestyle='-')
plt.plot(x_values, y_fit_leastsq, label='leastsq', linestyle='--')
plt.plot(x_values, y_fit_least_squares, label='least_squares', linestyle='-.')
plt.xlabel('x')
plt.ylabel('g(x)')
plt.legend()
plt.title('Fitting of g(x) using curve_fit, leastsq, and least_squares')
plt.grid(True)
plt.show()print("学号后四位:3001")



习题7.10

点击查看代码
import numpy as np
from scipy.interpolate import interp1d,lagrange
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit# 加载数据
a = np.loadtxt('ti7.10.txt')
x0 = a[::2].flatten()
y0 = a[1::2].flatten()# Lagrange 插值
p1 = lagrange(x0, y0)
yx1 = interp1d(x0,y0)
yx2 = interp1d(x0, y0, 'quadratic')
yx3 = interp1d(x0, y0, 'cubic')# 生成用于绘图的x值
x = np.linspace(-2, 4.9, 200)# 设置绘图参数
plt.rc('font', family='SimHei')
plt.rc('axes', unicode_minus=False)# 绘制Lagrange插值
plt.subplot(221)
plt.plot(x, np.polyval(p1,x))
plt.title('Lagrange插值')# 绘制分段线性插值
plt.subplot(222)
plt.plot(x, yx1(x))
plt.title('分段线性插值')# 绘制二次插值
plt.subplot(223)
plt.plot(x, yx2(x))
plt.title('二次插值')# 绘制三次插值
plt.subplot(224)
plt.plot(x, yx3(x))
plt.title('三次插值')# 多项式拟合
m = len(x0)
RMSE = []
S = []
for n in range(1, 5):p = np.polyfit(x0, y0, n)rmse = np.sqrt(sum((np.polyval(p,x0) - y0) ** 2) / (m - n - 1))RMSE.append(rmse)S.append(p)ind = np.argmin(RMSE)  # 求RMSE最小值的索引
print("拟合的多项式次数:", ind + 1)
print(np.round(S[ind], 4))def gaussian(x, mu, sigma):return (1 / (np.sqrt(2 * np.pi) * sigma)) * np.exp(-((x - mu) ** 2) / (2 * sigma ** 2))# 使用curve_fit来拟合高斯函数到数据
params, covariance = curve_fit(gaussian, x0, y0, p0=[np.mean(x0), np.std(x0)])# 打印拟合的系数
print('拟合的均值和标准差:', np.round(params, 4))# 计算拟合函数的取值
yh = gaussian(x, *params)# 绘制拟合曲线
plt.figure()
plt.plot(x, yh, label='高斯拟合')
plt.plot(x0, y0, 'o', label='原始数据')
plt.legend()
plt.show()
print('学号:3001')



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

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

相关文章

第八章课后习题

习题8.4点击查看代码 from scipy.integrate import odeint import numpy as np import matplotlib.pyplot as plt # 设置 Matplotlib 不使用 LaTeX plt.rc(font, size=15) plt.rc(text, usetex=False)# 定义微分方程系统 dz = lambda z, t: [-z[0]**3 - z[1], z[0] - z[1]**3]#…

Solidity学习笔记-1

01.Hello World 开发工具 Remix // SPDX-License-Identifier: MIT // 软件许可,不写编译会出现警告 // 版本,“0.8.21”-->不能小于这个版本,"^"-->不能大于0.9.0 pragma solidity ^0.8.21; // 创建合约 contract HelloWorld {string public helloworld = &quo…

gofiber: 使用模板

一,安装模板库 $ go get github.com/gofiber/template/html/v2 go: downloading github.com/gofiber/template/html/v2 v2.1.2 go: downloading github.com/gofiber/utils v1.1.0 go: added github.com/gofiber/template/html/v2 v2.1.2 go: added github.com/gofiber/utils v…

书生共学大模型实战营第4期 L1G6000 OpenCompass评测作业

基础任务:使用OpenCompass评测浦语API记录复现过程并截图 按照教程流程进行,这里我们采用的测试样本数为2,所以不同于教程,Acc可能为0,25%,50%,75%,100%,介绍两个遇到的bug:metadata模块导入错误:ModuleNotFoundError: No module named importlib.metadata解决方法:…

ShardingSphere如何轻松驾驭Seata柔性分布式事务?

0 前文 上一文解析了 ShardingSphere 强一致性事务支持 XAShardingTransactionManager ,本文继续:讲解该类 介绍支持柔性事务的 SeataATShardingTransactionManagersharding-transaction-xa-core中关于 XAShardingTransactionManager,本文研究 XATransactionManager 和 Shar…

20222303 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容 1.1 本周学习内容回顾 使用了Metasploit框架,其是一个功能强大的渗透测试框架。在使用的过程当中,Metasploit 提供了种类繁多的攻击模块,涵盖了远程代码执行、服务拒绝、提权等多种攻击方式,支持对多种操作系统和应用程序进行测试。除了漏洞利用,它还具备强大的…

20222325 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 1.从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息: DNS注册人及联系方式;该域名对应IP地址;IP地址注册人及联系方式;IP地址所在国家、城市和具体地理位置。 PS:使用whois、dig、nslookup、traceroute、以及各类在线和离线…

识海社区打卡-6

这场掉回灰名了,本来必然上大分,原因无他-查寝 先来查波战绩:c题没过纯属是因为被查寝查了室友也是个不知变通的让查寝记我头上了,byd害我赶回去,本来这题必出 看看我最后一发提交错哪了 void solve() {int n;cin >> n;if (n % 2){if (n < 27){cout << -1 …

第七次高级程序语言设计作业

班级:https://edu.cnblogs.com/campus/fzu/2024C 作业要求:https://edu.cnblogs.com/campus/fzu/2024C/homework/13304 学号:102400115 姓名:洪育豪 7.1问题:无7.2问题:无7.3问题:无7.4问题:无 含义说明 int a; - 定义一个普通整型变量。 int a; - 定义一个指向整型变量…

工具“dotnet-cnblog”安装失败。此故障可能由以下原因导致

工具“dotnet-cnblog”安装失败。此故障可能由以下原因导致解决方法 我这边用的wifi 有问题,换到手机热点就好了。本文来自博客园,作者:lanwf,转载请注明原文链接:https://www.cnblogs.com/lccsdncnblogs/p/18549701

idea免费激活到2099年

idea免费激活到2099年 目录idea免费激活到2099年前言一去官网上下载idea二 下载idea激活工具并使用第一步点击scripts(uninstall-all-users.vbs)清除信息第二步点击(install.vbs)安装配置信息第三步打开(idea.vmoptions)拷贝配置信息到 idea配置中三激活idea1复制激活码 …

学期:2024-2025-1 学号:20241303 《 计算机基础与程序设计》第八周学习总结

作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第八周作业)这个作业的目标 <写上具体方面> 计算机科学概论(第七版)第9章 并完成云班课测试,《…