教你如何利用python进行数值分析

一、准备

噪声是在拟合过程中常用的干扰手段,常用的噪声:

1.统一分布 U(a,b)

f ( x ) = { 1 i f a ≤ x < b 0 o t h e r f(x)=\begin{cases}\begin{aligned}1&\quad if\quad a\le x<b \\ 0&\quad other\end{aligned}\end{cases} f(x)={10​ifa≤x<bother​​

import numpy as np
x=np.random.uniform(a,b,100) #产生长度为100的U(a,b)

2.正态分布N( μ \mu μ, σ 2 \sigma^2 σ2)

import numpy as np
x=np.random.normal(mu, sig, 100) #产生长度为100的N(mu, sqart(sig))

二、三次样条插值

def spline_fit():
	size = 20
    x = np.linspace(-10, 10, size)
    y = np.sin(x) + np.random.normal(0, 0.1, size)
    y2 = [0] * len(y)
    # for y_i in y:

    pp.plot(x, y)
    cs = CubicSpline(x, y)
    x2 = x = np.linspace(-10, 10, size * 100)
    pp.plot(x2, cs(x2))
    pp.show()

三、最小二乘拟合

def least_square():
    f = lambda p0, xx: p0[0] * np.sin(xx * p0[1]) + p0[2]
    LEN = 100
    x = np.linspace(-1, 1, LEN)
    y = x ** 2 + 5
    # 默认情况,param只会返回求得的参数和返回的错误码,1-4为成功,5-8为失败,如果想输出更多参数,可以指定full_out=1,可以看到出错原因和其他参数
    param = leastsq(lambda p0, xx, yy: f(p0, xx) - yy, (1, 1, 1), args=(x, y)) #初值的选择比较重要,如果选取不当,容易陷入局部最优
    print(param)
    pp.scatter(x, y)
    p0 = param[0]
    pp.plot(x, f(p0, x))
    pp.show()

最小二乘的初值选取非常重要,以下是三份完全相同的数据,虽然最后都收敛了,但是初值不同,得到了完全不同的拟合结果
初值为 ( 1 , 2 , 1 ) (1,2,1) (1,2,1)

初值为 ( 1 , 1 , 1 ) (1,1,1) (1,1,1)

初值为 ( 10 , 10 , 1 ) (10,10,1) (10,10,1)

四、拉格朗日乘子法

def lagrange()
	from scipy.optimize import minimize
    import numpy as np
    e = 1e-10
    fun = lambda x: 8 * (x[0] * x[1] * x[2])  # f(x,y,z) =8 *x*y*z
    cons = ({'type': 'eq', 'fun': lambda x: x[0] ** 2 + x[1] ** 2 + x[2] ** 2 - 1},  # x^2 + y^2 + z^2=1
            {'type': 'ineq', 'fun': lambda x: x[0] - e},  # x>=e等价于 x > 0
            {'type': 'ineq', 'fun': lambda x: x[1] - e},
            {'type': 'ineq', 'fun': lambda x: x[2] - e}
            )
    x0 = np.array((1.0, 1.0, 1.0))  # 设置初始值
    res = minimize(fun, x0, method='SLSQP', constraints=cons)
    print('最大值:', res.fun)
    print('最优解:', res.x)
    print('迭代终止是否成功:', res.success)
    print('迭代终止原因:', res.message)

到此这篇关于教你如何利用python进行数值分析的文章就介绍到这了,更多相关python数值分析内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示

    一.当我们用Python matplot时作图时,一些数据需要以百分比显示,以更方便地对比模型的性能提升百分比. 二.借助matplotlib.ticker.FuncFormatter(),将坐标轴格式化. 例子: # encoding=utf-8 import matplotlib.pyplot as plt from matplotlib.ticker import FuncFormatter plt.rcParams['font.family'] = ['Times New Roman']

  • python实现各种插值法(数值分析)

    一维插值 插值不同于拟合.插值函数经过样本点,拟合函数一般基于最小二乘法尽量靠近所有样本点穿过.常见插值方法有拉格朗日插值法.分段插值法.样条插值法. 拉格朗日插值多项式:当节点数n较大时,拉格朗日插值多项式的次数较高,可能出现不一致的收敛情况,而且计算复杂.随着样点增加,高次插值会带来误差的震动现象称为龙格现象. 分段插值:虽然收敛,但光滑性较差. 样条插值:样条插值是使用一种名为样条的特殊分段多项式进行插值的形式.由于样条插值可以使用低阶多项式样条实现较小的插值误差,这样就避免了使用高阶多项

  • Python实现列表中非负数保留,负数转化为指定的数值方式

    简单的小练习,实现将一个指定列表中的数值进行转化,对于其中的非负数不作处理,对于负数需要转化为制定的数值,很简单就不多说了,下面是具体的实现: #!usr/bin/env python #encoding:utf-8 from __future__ import division ''' __Author__:沂水寒城 功能:Python实现列表中非负数保留,负数转化为指定的数值 ''' def handle_list_negative_nums(data_list,specificvalue=

  • python实现数值积分的Simpson方法实例分析

    本文实例讲述了python实现数值积分的Simpson方法.分享给大家供大家参考.具体如下: #coding = utf-8 #simpson 法计算积分,数值积分,效果非常理想 from math import * def func(x): """ 定义被积分函数 """ return x*sin(x) def Get_N(a,b,width): # width为步长 N=int((b-a)/width + 1) if N%2 == 0: N=

  • python 解决微分方程的操作(数值解法)

    Python求解微分方程(数值解法) 对于一些微分方程来说,数值解法对于求解具有很好的帮助,因为难以求得其原方程. 比如方程: 但是我们知道了它的初始条件,这对于我们叠代求解很有帮助,也是必须的. 那么现在我们也用Python去解决这一些问题,一般的数值解法有欧拉法.隐式梯形法等,我们也来看看这些算法对叠代的精度有什么区别? ```python ```python import numpy as np from scipy.integrate import odeint from matplot

  • Python导入数值型Excel数据并生成矩阵操作

    riginal_Data 因为程序是为了实现对纯数值型Excel文档进行导入并生成矩阵,因此有必要对第五列文本值进行删除处理. Import_Data import numpy as np import xlrd def import_excel_matrix(path): table = xlrd.open_workbook(path).sheets()[0] # 获取第一个sheet表 row = table.nrows # 行数 col = table.ncols # 列数 datamat

  • Python如何将函数值赋给变量

    本博文的知识点一个是模块的调用和一个自定义函数返回值赋值给变量 编写一个简单的函数模块: [root@bigdata zw]# more d.py #!/usr/bin/python # -*- coding:utf-8 -*- def run(name): list1 = 'hello ' + name return list1 编写一个调用的脚本: [root@bigdata zw]# more test.py import sys import os reload(sys) sys.set

  • 教你如何利用python进行数值分析

    一.准备 噪声是在拟合过程中常用的干扰手段,常用的噪声: 1.统一分布 U(a,b) f ( x ) = { 1 i f a ≤ x < b 0 o t h e r f(x)=\begin{cases}\begin{aligned}1&\quad if\quad a\le x<b \\ 0&\quad other\end{aligned}\end{cases} f(x)={10​ifa≤x<bother​​ import numpy as np x=np.random.u

  • 教你如何利用Python批量翻译英文Word文档并保留格式

    一.需求描述 手上有大量外文文档(本案例以5份为例,分别命名为 test1.docx test2.docx 以此类推),其中一份如下: 基本需求:「批量将这些文档的内容全部翻译成中文,并转存到新的文件中」,效果如下: 高级需求:基本需求满足的同时,要求 「保留原文档的格式」,效果如下: 二.逻辑梳理 2.1 翻译 API 本需求的核心是翻译,策略是利用网络的翻译 API,这里推荐百度翻译开放平台,不考虑并发数的话可以用标准版,免费使用不限字符量! " 百度翻译开放平台:http://api.fa

  • 利用python调用摄像头的实例分析

    这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.打开摄像头 import cv2 import numpy as np def video_demo(): capture = cv2.VideoCapture(0)#0为电脑内置摄像头 while(True): ret, frame = capture.read()#摄像头读取,ret为是否成功打开摄像头,true,false. frame为视频的每一帧图像 frame = c

  • 教你利用Python+Turtle绘制简易版爱心表白

    一.效果 快放10倍 总共分为三部分,左上角的正文,下方的心形和右下角的署名 特别需要注意的一点是这种东西不但要装Python,还与分辨率有关(换个屏幕可能效果雪崩,因为用的是绝对坐标),因此并不建议实际拿去弄(哪怕能解决上述两个问题) 二.正文部分 效果: 本质是每写一行话,然后将坐标下移换行,再写一行,以此类推 # content就是该行的内容了,想些啥写啥吧 def drawLine(content, x, y, sleep=3): goto(x, y) write(content, fo

  • 教你利用Python破解ZIP或RAR文件密码

    一.破解原理 其实原理很简单,一句话概括就是「大力出奇迹」,Python 有两个压缩文件库:zipfile 和 rarfile,这两个库提供的解压缩方法 extractall()可以指定密码,这样的话首先生成一个密码字典(手动或用程序),然后依次尝试其中的密码,如果能够正常解压缩表示密码正确. 二.实验环境 本文采取的虚拟环境为 Pipenv. 库 zipfile:Python 标准库,使用时直接导入即可 rarfile:Python 第三方库 利用 Pipenv 安装 rarfile pipe

  • 教你利用python实现企业微信发送消息

    一.需要的参数 1.通讯用户:touser 或 通讯组:toparty 2.企业ID:corpid 3.应用ID/密钥:agentId,secret 二.获取通讯用户/组 通讯录 用户的账号或创建组的部门ID 三.获取企业ID 我的企业最下方 四.获取应用ID/密钥 企业微信管理员登录企业微信, 应用管理创建应用 可见范围:发给谁 五.脚本代码 #! /usr/bin/env python # -*- coding: UTF-8 -*- import requests, sys class Se

  • 教你一步步利用python实现贪吃蛇游戏

    0 引言 前几天,星球有人提到贪吃蛇,一下子就勾起了我的兴趣,毕竟在那个Nokia称霸的年代,这款游戏可是经典中的经典啊!而用Python(蛇)玩Snake(贪吃蛇),那再合适不过了

  • 教你利用python如何读取txt中的数据

    目录 前言 方法一:运用open()函数 方法二:使用numpy包的loadtxt方法 方法三:使用pandas的read_table方法进行读取 总结 前言 当我们在用python时可能会遇到想要把txt文档里的数据读取出来然后进行绘图,那么我们要怎么才能够将txt里的数据读取出来呢? 假设有txt文本如下: 想要把上述文本数据读取出来,可以用以下方法: 方法一:运用open()函数 该方法使用最基本的open函数进行读取,此处将会把数据读取到一个列表中,这个方法一般就是open打开文件.re

  • 教你利用python的matplotlib(pyplot)绘制折线图和柱状图

    目录 前言 一.折线图 二.柱状图 总结 前言 今天帮师兄赶在deadline之前画论文的图,现学现卖很是刺激,现把使用matplotlib的子库pyplot画折线图和柱状图的代码记录分享一下,方便大家参考,个人感觉pyplot真的蛮方便的,非常值得使用. 先看下官方对pyplot的描述:“Provides a MATLAB-like plotting framework.”.对,就是一个类似matlab的画图框架.就不多多说了,直接上代码吧: 一.折线图 代码: import matplotl

  • 手把手教你利用Python创建一个游戏窗口

    目录 前言 安装Pyagme 检查是否安装Pygame:  一 (检查python是否配置环境变量) 检查是否安装Pygame:  二 (检查pygame是否安装) 未安装Pygame : 一 (检查是否安装pip) 未安装Pygame : 二 (利用pip安装Pygame) 步入正题: 利用Pygame制作一个简单的游戏窗口 总结: 前言 想要利用Python创建一个游戏窗口就需要用到一个强大的第三方功能库: Pygame 那么既然需要用到Pygame这个第三方库 所以在写程序之前需要做一个准

随机推荐