数值计算方法与算法第三版课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值计算方法与算法第三版课后习题答案
1. 矩阵乘法
问题描述
给定两个矩阵A和B,尺寸分别为n×m和m×p,求矩阵A 和矩阵B的乘积矩阵C,尺寸为n×p。
算法实现
import numpy as np
def matrix_multiplication(A, B):
n, m = A.shape
m, p = B.shape
C = np.zeros((n, p))
for i in range(n):
for j in range(p):
for k in range(m):
C[i][j] += A[i][k] * B[k][j] return C
示例
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = matrix_multiplication(A, B)
print(C)
输出结果:
[[19. 22.]
[43. 50.]]
2. 数值积分
问题描述
给定一个函数f(x),以及积分区间[a, b],求函数f(x)在区间[a, b]上的定积分值∫abf(x)dx。
算法实现
简单的数值积分算法是采用小梯形法,将区间[a, b]均分成n个子区间,然后计算每个子区间的面积,最后将这些子区间面积相加得到定积分值。
def numerical_integration(f, a, b, n):
h = (b - a) / n
integral =0
for i in range(n):
x1 = a + i * h
x2 = a + (i +1) * h
integral += (f(x1) + f(x2)) * h /2 return integral
示例
import math
f =lambda x: math.sin(x)
a =0
b = math.pi
n =100
result = numerical_integration(f, a, b, n) print(result)
输出结果:
1.9998355038874436
3. 非线性方程求解
问题描述
给定一个非线性方程f(x) = 0,求方程的根x。
算法实现
简单的非线性方程求解算法是采用二分法,首先根据方程f(a)和f(b)的符号确定方程在区间[a, b]上是否存在根,如果存在,则不断将区间[a, b]均分找到方程的根。
```python def bisection_method(f, a, b, tol): if f(a) * f(b) > 0: print(