{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "8fe2fac3", "metadata": { "execution": { "iopub.execute_input": "2024-11-15T03:59:21.772470Z", "iopub.status.busy": "2024-11-15T03:59:21.772084Z", "iopub.status.idle": "2024-11-15T03:59:22.355181Z", "shell.execute_reply": "2024-11-15T03:59:22.354817Z" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/user/anaconda3/lib/python3.11/site-packages/pandas/core/arrays/masked.py:60: UserWarning: Pandas requires version '1.3.6' or newer of 'bottleneck' (version '1.3.5' currently installed).\n", " from pandas.core import (\n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "9a94b5e3", "metadata": {}, "source": [ "## 实现差商和牛顿插值多项式" ] }, { "cell_type": "code", "execution_count": 2, "id": "989e6afe", "metadata": { "execution": { "iopub.execute_input": "2024-11-15T03:59:22.357313Z", "iopub.status.busy": "2024-11-15T03:59:22.357119Z", "iopub.status.idle": "2024-11-15T03:59:22.360095Z", "shell.execute_reply": "2024-11-15T03:59:22.359760Z" }, "tags": [] }, "outputs": [], "source": [ "def generate_diff_quotient_table(x, f):\n", " # x包含插值节点\n", " # f包含节点的函数值\n", " n = len(x)-1 # n次多项式\n", " \n", " a = np.zeros((n+1, n+1)) * np.nan\n", " a[:,0] = f\n", " \n", " for col in range(1,n+1):\n", " for row in range(col,n+1):\n", " a[row,col] = (a[row,col-1] - a[row-1,col-1])/(x[row]-x[row-col])\n", " \n", " return a" ] }, { "cell_type": "markdown", "id": "c17c5a8d", "metadata": {}, "source": [ "### 课本例子2.3" ] }, { "cell_type": "code", "execution_count": 3, "id": "4fa5002a", "metadata": { "execution": { "iopub.execute_input": "2024-11-15T03:59:22.362007Z", "iopub.status.busy": "2024-11-15T03:59:22.361883Z", "iopub.status.idle": "2024-11-15T03:59:22.369898Z", "shell.execute_reply": "2024-11-15T03:59:22.369564Z" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", " | 0 | \n", "1 | \n", "2 | \n", "3 | \n", "4 | \n", "5 | \n", "
---|---|---|---|---|---|---|
0 | \n", "0.41075 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
1 | \n", "0.57815 | \n", "1.116000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
2 | \n", "0.69675 | \n", "1.186000 | \n", "0.280000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
3 | \n", "0.88811 | \n", "1.275733 | \n", "0.358933 | \n", "0.197333 | \n", "NaN | \n", "NaN | \n", "
4 | \n", "1.02652 | \n", "1.384100 | \n", "0.433467 | \n", "0.212952 | \n", "0.031238 | \n", "NaN | \n", "
5 | \n", "1.25382 | \n", "1.515333 | \n", "0.524933 | \n", "0.228667 | \n", "0.031429 | \n", "0.000293 | \n", "