计算方法/数值分析 期末复习整理

简介: 计算方法/数值分析 期末复习整理

1.多项式计算的秦九韶算法

image.png

计算顺序按表格从上往下,从左往右

0a0 1a1 2a2 {n-1}an1 nan
0x=x0 0b0x0 0b1x0 0bn2x0 {n-1}x_0bn1x0
0b0 1b1 2b2 {n-1}bn1 n=f(x_0)bn=f(x0)

image.png

3 0 -1 1 2
0=2x0=2 6 12 22 46
3 6 11 23 48

2.方程求根的二分法算法描述

伪代码示例:

input a,b//满足f(a)f(b)<0
input 精度要求e
do{
  x=(a+b)/2;
  if (f(a)f(x)<0)
    b=x
  else
    a=x
}while(b-a>e);
output x

真实代码:求一个数的三次方根

#include <iostream>
#include <iomanip>
double n;
using namespace std;
int main() {
    cin >> n;
    double l, r, mid;
    l = -2147483648;
    r =  2147483647;
    while (r - l >= 1e-7) {
        mid = (l + r) / 2;
        if (mid * mid * mid >= n)
            r = mid;
        else l = mid;
    }
    cout << fixed << setprecision(6) << mid;
}

3.方程求根的简单迭代法


image.png

4.线性方程组数值解的高斯消去法

普通的高斯消元法:输入一个包含n 个方程 n 个未知数的线性方程组。方程组中的系数为实数。求解这个方程组。

高斯消元法分两个步骤:1.消元 2.回代。在列主元高斯消元法中,每一次消元都需要交换行,选择

image.png

伪代码描述:

for k=1 to n-1 do
  for i=k+1 to n do
    {
      l=-a[i][k]/a[k][k];
      for j = 1 to n do
        a[i][j]=a[i][j]+l*a[k][j]
      b[i]=b[i]+l*b[k];
    }
for k = n downto 1 do
  {
    s=0;
    for j=k+1 to n do
      s=s+a[k][j]*x[j];
    x[k]=(b[k]-s)/a[k][k];
  }

真实代码:

#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
const double ep=1e-6;
double a[105][105];
int n;
int main(){
    cin>>n;
    for(int i=0;i<n;i++)
        for(int j=0;j<=n;j++)
            cin>>a[i][j];
    int c,r;
    for(c=0,r=0;c<n;c++){
        int t=r;
        for(int i=r;i<n;i++){
            if (fabs(a[i][c])>fabs(a[t][c]))    
                t=i;
        }
        if (fabs(a[t][c])<ep)
            continue;
        for(int i=c;i<=n;i++)
            swap(a[t][i],a[r][i]);
        for(int i=n;i>=c;i--)
            a[r][i]/=a[r][c];
        for(int i=r+1;i<n;i++)
            if (fabs(a[i][c])>ep)
                for(int j=n;j>=c;j--)
                    a[i][j]-=a[r][j]*a[i][c];
        r++;
    }
    if (r<n){
        for(int i=r;i<n;i++)
            if(fabs(a[i][n])>ep){
                puts("No solution");
                return 0;
            }
        puts("Infinite group solutions");
        return 0;
    }
    else{
        for(int i=n-1;i>=0;i--)
            for(int j=i+1;j<=n;j++)
                a[i][n]-=a[j][n]*a[i][j];
        for (int i = 0; i < n; i ++ ) 
            printf("%.2lf\n", a[i][n]);
    }
    return 0;        
}

5.拉格郎日插值多项式与插值余项

image.png


(3)为插值多项式余项。其中,

image.png


6.曲线拟合的最小二乘法多项式拟合方程组

image.png

7.定积分计算的复化辛卜生公式算法描述

image.png

伪代码:

for (i=1;i<=n-1;i++){
    x1=x1+h;
    x2=x2+h;
    y1=y1+f(x1);
    y2=y2+f(x2);
}
S=(f(a)+f(b)+2*y1+4*y2)*h/6
output S

8. 复化求积公式的阶与变步长求积公式稳定性

image.png

该公式p阶收敛

复化梯形:2阶。复化辛卜生:4阶。复化柯特斯:6阶

image.png


复化梯形公式:


image.png

9.数值微分计算的中点公式

image.png

10.一阶常微分方程数值解法梯形公式

image.png

x_i y_i
0 1
0.1 0.9901
0.2 0.96098
0.3 0.9143
0.4 0.8527


目录
相关文章
|
自然语言处理 前端开发 Java
Go语言学习路线 - 1.方向篇:明确Go语言的成长方向
目前,后端开发语言的就业方向主要分为两块:业务系统开发 与 基础平台开发 。Go语言自然也不会例外。
529 0
|
小程序
微信小程序的初始数据
微信小程序的初始数据
270 0
|
XML 监控 负载均衡
Jacoco的覆盖率原理
JaCoCo(Java Code Coverage)是一种广泛使用的代码覆盖率工具,通过在字节码中插入探针(Probe)来收集覆盖率信息。
940 6
Jacoco的覆盖率原理
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
271 1
|
机器学习/深度学习 人工智能 算法
【算法】最长公共子序列(C/C++)
【算法】最长公共子序列(C/C++)
|
图形学
【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏2(附项目源码)
【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏2(附项目源码)
595 0
|
弹性计算 Serverless 持续交付
聊聊如何把项目从Gitee部署到阿里云上
【7月更文挑战第11天】聊聊如何把项目从Gitee部署到阿里云上
671 1
|
监控 安全 测试技术
ms17-010(永恒之蓝)漏洞复现
ms17-010(永恒之蓝)利用的端口是445端口。 本文主要讲解ms17-010(永恒之蓝)漏洞复现,分为四个部分:了解渗透测试流程,使用nmap工具对win7进行扫描,尝试ms17-010漏洞利用,结果展示。第一部分“了解渗透测试流程”可以略过,可以直接从第二部分“使用nmap工具对win7进行扫描”开始看起。
2881 5
ms17-010(永恒之蓝)漏洞复现
|
安全 Linux 网络安全
Greenplum【部署 01】CentOS Linux release 7.5 环境单机版详细安装配置步骤+问题解决(含安装包资源)
Greenplum【部署 01】CentOS Linux release 7.5 环境单机版详细安装配置步骤+问题解决(含安装包资源)
328 2
|
存储 定位技术 数据格式
Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容
Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容
236 1