数值分析学习——从抄书开始

发布时间:2024-12-20 10:50

《从心开始:改变习惯的心理学》- 针对生活习惯的深度心理学分析 #生活知识# #生活心理学# #生活习惯改善# #生活习惯改变书籍#

前言

既然书中有了详尽的理论分析、公式推导以及源程序示例,还要抄书呢? 一方面督促自己学习, 另一方面也便于自己熟悉一些语言工具以及数值分析中的基本概念.

采用哪些工具

本次学习数值分析将会采用 MATLAB、Python 以及 R语言作为工具.

使用的教材

现代数值分析(MATLAB版) 马昌凤编著.
下面愉快地进入到第二章的学习吧!

非线性方程的求根方法

本章涉及到的求解方法本质上都是迭代法, 只是迭代函数在形式上的不同!

二分法

二分法的 MATLAB、Python、R程序分别如下

function [x,k] = mbisec(f,a,b,ep)%{Function: 二分法求 f(x)=0 在区间 [a,b] 中的一个根Input:f: 输入函数a: 左端点b: 右端点ep: 精度Process: 二分法Output:x: 近似解k: 迭代数%}x = (a + b) / 2.0; k = 0;while abs(feval(f,x)) > ep | (b - a) > epif feval(f,x) * feval(f,a) < 0b = x;elsea = x;endx = (a + b) / 2.0; k = k+1;end end %{ Example: f = @(x) x - exp(-x); [x,k] = mbisec(f,0,1,1e-5) %}

1234567891011121314151617181920212223242526272829

import numpy as np def mbisec(f,a,b,ep=1e-5):"""二分法求解函数的零点"""#利用 Python 写的程序运行效率要比 MATLAB 好,打开MATLAB太慢了!x = (a+b) / 2k = 0while np.abs(f(x)) > ep or b-a > ep:if f(x) * f(a) < 0:b = xelse:a = xx = (a + b) / 2k += 1print(x,k) def my_f(x):return x - np.exp(-x) #mbisec(f=my_f, a=0, b=1) #page31T2.1 g = lambda x: np.exp(x) + x -4 mbisec(f=g, a=1, b=2, ep=1e-4)

12345678910111213141516171819202122232425

mbisec <- function(f,a,b,ep=1e-5){ #二分法求根 x <- (a+b)/2 k <- 0 while(abs(f(x)) > ep || b-a >ep){ if(f(x) * f(a) <0){ b = x } else { a = x } x = (a+b)/2 k <- k + 1 } out=c(x,k) return(out) } my_fun <- function(x){ x - exp(-x) } out = mbisec(f=my_fun,a=0,b=1) print(out)

1234567891011121314151617181920212223

从语法上看, 三者没啥太大区别, 唯一不同的就是 MATLAB 的默认值设置有点麻烦.

简单迭代法

function [x, k] = miter(phi, x0, ep, N)%Function: 利用简单迭代法求解函数根%Input:% phi(x): 迭代函数% x0: 初始点% ep: 精度% N: 最大迭代次数%Output:% x: 所求根% k: 迭代次数%默认值设置if nargin < 4 N = 500; endif nargin < 3 ep = 1e-4; end%初始化迭代次数k = 0;while k < Nx = feval(phi, x0);if abs(x-x0) < ep break; endx0 = x;

123456789101112131415161718192021

网址:数值分析学习——从抄书开始 https://www.yuejiaxmz.com/news/view/525257

相关内容

学习 | 提升自我,从这7本心理学书开始
从零开始的游戏运营数据分析生活?如何构建数据分析的逻辑框架?
从零开始,打造 iPad 电子化学习环境
学会学习,从找到适合自己的方法开始
学会学习手抄报(精选13张)
提升自我,从这7本心理学书开始
从零开始学理财(白金版)
干货!史上最全数据分析学习路线(附资源链接)
从零开始学下厨
时间黑客:用数据分析做个明白人【全本

随便看看