非線性方程求解 不動點迭代法

非線性方程求解 不動點迭代法

Solution

在這裏插入圖片描述

Knowledge

收斂定理一
在這裏插入圖片描述
可以嘗試證明一下
1、不動點的存在性
2、不動點的唯一性
3、序列收斂

收斂定理二
在這裏插入圖片描述
這個的條件2更加簡潔

可以嘗試證明
1、不動點的存在性(其實同定理一的證明過程一樣的)
2、不動點的唯一性
3、收斂性證明

誤差估計(有公式)
在這裏插入圖片描述

如何判斷迭代函數是否收斂
在這裏插入圖片描述

還有一個局部收斂的定義
在這裏插入圖片描述

example

在這裏插入圖片描述

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

void out_put(double x){
    printf("%.5f\n", x);
}
double cal_1(double x){///x = exp(-x)
    return exp(-x);
}
double cal_2(double x){/// x = -ln(x);
    if(x < 0.0){
        printf("ERROR, log a negtive number\n");
        exit(-1);
    }
    return -log(x);
}
int main(){
    double x = 0.5;
    int n = 20;
    for(int i = 1; i <= n; i++){
        out_put(x);
        x = cal_1(x);
    }
    printf("The ans is: %.4f\n", x);

    x = 0.5;
    for(int i = 1; i <= n; i++){
        out_put(x);
        x = cal_2(x);
    }
    printf("The ans is: %.4f\n", x);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章