- 博客(13)
- 收藏
- 关注
原创 Python最简单的多线程
以阶乘计算为例,例如计算一个30的阶乘,强行把他四等分,从1乘到6,6乘到15,以此类推,最后把四个部分的结果乘起来# -*- coding: utf-8 -*-"""Created on Fri Mar 15 22:58:08 2019@author: Minghua Chen"""import threading from time import ctimeanser=[...
2019-03-16 17:50:13 536 1
原创 c++笔记:自制答案,计算概论——程序设计阅读理解
去年年底买了本《计算概论————程序设计阅读理解》,两周前才打定主意下个学期要修一个信科的双学位,就拿起来学了一下。我想搞定了这本再去搞premier会方便一点。在网上没有看到习题的答案,于是我自制了一份。1、我胡写的orz。2、我看到第十二章的时候才被提醒写程序还要考虑时间和占用内存,之前也没怎么注意算法的简单,能用就行。后面几章稍微考虑了一下速度,但是没有考虑内存。3、没有写全。递归好...
2019-03-13 16:48:52 275
原创 c++笔记:秒解10亿以内素数及因式分解
最近在学c++,看到一种神奇的算法可以秒解10亿以内的所有素数,据说用了指针(还没学到,嘤),看不懂,姑且抄了下来,改吧改吧变成一个实现因式分解的程序#include<stdio.h>#include<memory.h>#include<malloc.h>#include<iostre
2019-03-03 16:17:40 1696
原创 Python玩耍:一个小小的爬虫,在一堆公司列表里筛选出总部位于中国的公司
这周接了个小活,发个博客庆祝一下需要从https://www.mwcbarcelona.com/exhibition/2019-exhibitors/这个网站上将所有的公司照下来(24000+),并在其中找到所有总部位于中国的公司,列成一张列表。这项任务考察了关于爬虫的诸多要点,从难度上来说还是比较简单的。难点在于,由于网站并没有列出这些公司到底是哪一个国家的,因此需要自己到网上找信息,而...
2019-02-22 14:23:18 808
原创 Newton迭代法与Newton下山法的Python实现
Newton迭代法是利用Taylor展开将f(x)线性化,忽略二次导及以上的高阶项,得到x*=x0-f(x0)/f’(x0),令x*=x(k+1),x0=x(k),重复迭代Newton又称切线法Newton下山法是在考虑到Newton法在区间内可能是发散的,因而增加一项参数l,要求abs(f(x(k)))在迭代时具有单调性,若不具有单调性,则令l减半例子同前代码如下# -*- codin...
2019-02-16 20:45:19 3446
原创 Aitkin加速算法求解线性收敛的方程的根的Python实现
Aitkin加速算法可对线性收敛的简单迭代法起到加速作用由于(x(k+1)-x*)=phi’(m1)(x(k)-x*),m1是介于x(k)与x之间的一个值(x(k+2)-x)=phi’(m2)(x(k+1)-x*),m2是介于x(k+1)与x之间的一个值在需要求的方程f(x)=0的左右两端各加一个x,即得到新方程phi(x)=x若phi’(m1)≈phi’(m2),则有(x(k+1)-...
2019-02-16 08:37:24 1016
原创 J,GS,SOR算法解线性方程组的收敛性判别的Python实现
迭代过程是收敛的的充要条件是矩阵B收敛于0,矩阵B收敛于0的充要条件是矩阵B的谱半径小于1于是在前述J,GS,和SOR算法中的main()函数中可以加入一项判别式,从而判断线性方程组迭代法是否能够算出解例如在前述SOR算法的main()中,代码如下import numpy as npdef judgement(A,B): if np.linalg.det(A)==0: ...
2019-02-14 13:43:19 2640
原创 超松弛迭代法(SOR)的Python实现
在Gauss-Seidel迭代法中M=D-L的基础上,我们令M=(1/w)(D-wL),B=I-M的逆A,f=M的逆b,其中w为可选择的松弛因子,要求w>0于是M的逆=w((D-wL)的逆),B=I-M的逆A=I-w((D-wL)的逆)A=((D-wL)的逆)((1-w)D+wU)从而得到解方程组的SOR解法B=I-M的逆A=I-w((D-wL)的逆)A=((D-wL)的逆)((1-w...
2019-02-14 10:42:26 5192
原创 Gauss-Seidel迭代法的Python实现
Gauss Deidel迭代法与Jacobi迭代法无本质区别,唯一的区别是,Jacobi算法需要将一个完整的数组x=(x11,x12,…,x1n)迭代算出x21,仍使用x=(x11,x12,…,x1n),直到算出x2n,凑出下一个完整的x=(x21,x22,…,x2n),而Gauss Seidel迭代法则是在利用x=(x11,x12,…,x1n)算出x21之后,直接将x21代入x,变为x=(x21...
2019-02-14 08:06:38 3358
原创 Jacobi迭代法的python实现
设有线性方程组Ax=b,其中n阶矩阵A=(aij)使非奇异矩阵将A分解为A=M-N,因而Mx=Nx+b,求解Ax=b转化为求解x=M的逆Nx+M的逆b可构造一阶梯定常迭代法x(k+1)=Bx(k)+f令A=D-L-U,其中D是有A的主对角元组成的对角矩阵,L是A的下三角矩阵每一行乘以-1,U是A的上三角矩阵每一行乘以-1Jacobi迭代法中,令M=D,A=D-N,因而B=M的逆N=M的逆(...
2019-02-13 10:24:49 4707 4
原创 Doolittle分解法(LU分解法)的Python实现
在解一般的非奇异矩阵线性方程组的时候,或者在迭代改善算法中,需要使用LU分解法。对于一个一般的非奇异矩阵A=(a11, a12,…,a1n,a21,…ann),可分解为一个下三角矩阵L和一个上三角矩阵U。其中L的主对角线元素都是1.希望得到一个M,最后在需要的时候将M拆分为L和UM=[[u11 u12 u13 ...... u1n l21 u22 u23 ...... u2n ...
2019-02-12 14:01:19 7418 3
原创 追赶法求解三对角矩阵线性方程组的Python实现
追赶法是求大型稀疏方程之三对角线性方程组的三角分解方法,即求解方程组Ax=b,其中A为三对角矩阵,主对角线上的元素记为(a1, a2, …, an) ,紧贴主对角线上方的一根对角线上的元素记为(c1,…c(n-1) ),紧贴主对角线下方的一根对角线上的元素记为(d2, d3, …, dn),b=(b1,…bn)对三对角矩阵A进行Crout分解,有A=[[α1 0 0 0 ....... ...
2019-02-12 10:18:20 8836 4
原创 平方根法求解正定矩阵的线性方程组的Python实现
平方根法求解正定矩阵的线性方程组的Python实现定理:对线性方程组Ax=b,若A唯正定矩阵,则有唯一分解A=LU,且U的对角线元素大于0,而U可以进一步分解为一个对角矩阵D与一个上三角矩阵的乘积,设为U=DM,进而A=LDM,又由于A是一个正定矩阵,因此A’=(LDM)’=M’DL’=A=LDM,于是有M=L’,即A=LDL’,令D=D^0.5 * D0.5,再令G=L*D0.5,则有A=G*...
2019-02-11 19:52:29 4133 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人