当前位置: 首页 > news >正文

数值实验作业(第一章)

数值实验作业(第一章)

《数值计算方法》丁丽娟

P14. 2

利用级数
π 4 = 1 − 1 3 + 1 5 − 1 7 + ⋯ \frac{\pi}{4}=1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\cdots 4π=131+5171+
计算无理数 π \pi π的近似值。由于交错级数的部分和数列 S N S_N SN在级数的和上下摆动,截断误差将小于第一个被舍弃的项 ∣ a n + 1 ∣ \left|a_{n+1}\right| an+1. 试分析:若要使截断误差小于 1 0 − 4 10^{-4} 104 1 0 − 8 10^{-8} 108,应该取多少项求和?并分别计算 π \pi π的近似值。

实验内容、步骤及结果

由于截断误差将小于第一个被舍弃的项 ∣ a n + 1 ∣ \left|a_{n+1}\right| an+1,易编程实现:

def is_term_less_than(n, threshold):term = (-1) ** n / (2 * n + 1)return abs(term) < thresholddef calculate_series(n):series_sum = .0for i in range(n):term = (-1) ** i / (2 * i + 1)series_sum += termreturn series_sumdef main():expected_trunc_errs = [1e-4, 1e-5, 1e-6, 1e-8]for trunc_err in expected_trunc_errs:print(f'期望截断误差为{trunc_err}')n = 0while not is_term_less_than(n, trunc_err):n += 1print(f'需要计算{n}项')print(f'π的近似值为{4 * calculate_series(n)}')if __name__ == '__main__':main()

实验结果分析

期望截断误差为0.0001
需要计算5000项
π的近似值为3.141392653591791
期望截断误差为1e-05
需要计算50000项
π的近似值为3.1415726535897814
期望截断误差为1e-06
需要计算500000项
π的近似值为3.141590653589692
期望截断误差为1e-08
需要计算50000000项
π的近似值为3.1415926335902506

随截断误差减小, π \pi π的估计值越精确,但计算项数也随之增大。

P14. 3

在同一坐标系下,利用plot函数画出函数
y = sin ⁡ x , y n = ∑ i = 0 n ( − 1 ) i x 2 i + 1 ( 2 i + 1 ) ! , ( n = 2 , 5 , 10 ) y=\sin x, y_n=\sum_{i=0}^n(-1)^i \frac{x^{2 i+1}}{(2 i+1)!}, \quad(n=2,5,10) y=sinx,yn=i=0n(1)i(2i+1)!x2i+1,(n=2,5,10)
的图形,并加标注说明各条曲线的含义。

实验内容、步骤及结果

import math
import numpy as np
import matplotlib.pyplot as plt
from decimal import Decimal, getcontextgetcontext().prec = 50x = np.linspace(-2 * np.pi, 2 * np.pi, 80)y = np.sin(x)def taylor_series(x, n):result = np.zeros_like(x, dtype=np.float64)for i in range(n + 1):result += ((-1) ** i) * (x ** (2 * i + 1)) / float(Decimal(math.factorial(2 * i + 1)))return resulty_2 = taylor_series(x, 1)
y_5 = taylor_series(x, 5)
y_10 = taylor_series(x, 10)plt.plot(x, y, label='y=sin(x)', color='blue')
plt.plot(x, y_2, label='y_2', color='green')
plt.plot(x, y_5, label='y_5', color='red', linestyle='--')
plt.plot(x, y_10, label='y_10', color='orange', linestyle='-.')plt.ylim(-1.5, 1.5)ax = plt.gca()
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')plt.legend()plt.show()

实验结果分析

pic1

x → 0 x\to 0 x0时,用泰勒展开近似 sin ⁡ x \sin x sinx的截断误差较小。随着 x x x增大,截断误差越明显。


P13. 4, 7, 9, 10, 12

P13.4,7,9

⚠️ 10题算错了,求根公式x= (-b ± 根号Δ )/2a,分母有个2,这里是按分母是1算。感谢@十五csw指正!

P13.10,12

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 鸿蒙OpenHarmony【轻量系统内核扩展组件(动态加载)】子系统开发
  • Python青少年简明教程目录
  • 混合开发应用侧-JSBridge,在加载的网页中调用原生能力
  • ARM驱动学习之7 驱动模块传参数
  • CentOS入门宝典:从零到一构建你的Linux服务器帝国
  • 64. 求 1+2+…+n
  • MOS工作的三种状态及其分析——亚阈值区(截至区),深三极管区(又叫深线性区)和饱和区
  • 基于SpringBoot+定时任务实现地图上绘制车辆实时运动轨迹图
  • 第五章 继承、多态、抽象类与接口 课后训练(3)
  • eureka.client.service-url.defaultZone的坑
  • Java是怎么处理死锁的
  • Python|OpenCV-实现识别目标图像中的圆圈(20)
  • 本地部署大模型并使用知识库Windows下Ollama+Docker+MaxKB安装的记录
  • VMware虚拟机经常性卡死,打开运行一段时间后卡死,CPU占比增至100%
  • 【STM32】DAC数字模拟转换
  • @angular/forms 源码解析之双向绑定
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Android Volley源码解析
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • AngularJS指令开发(1)——参数详解
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • chrome扩展demo1-小时钟
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java程序员幽默爆笑锦集
  • java小心机(3)| 浅析finalize()
  • js数组之filter
  • mysql外键的使用
  • nginx 配置多 域名 + 多 https
  • PHP 小技巧
  • Shadow DOM 内部构造及如何构建独立组件
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • SSH 免密登录
  • vue-router的history模式发布配置
  • 分布式事物理论与实践
  • 排序算法学习笔记
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 思否第一天
  • 思维导图—你不知道的JavaScript中卷
  • 写给高年级小学生看的《Bash 指南》
  • 一天一个设计模式之JS实现——适配器模式
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 如何用纯 CSS 创作一个货车 loader
  • # centos7下FFmpeg环境部署记录
  • $nextTick的使用场景介绍
  • (¥1011)-(一千零一拾一元整)输出
  • (1)(1.13) SiK无线电高级配置(六)
  • (2)nginx 安装、启停
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (C++)八皇后问题
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (全注解开发)学习Spring-MVC的第三天