作业
文章平均质量分 61
金刚归来
模拟人生
展开
-
解三对角线性方程组的追赶法
解三对角线性方程组的追赶法,在解偏微分方程时常用原创 2024-04-26 22:10:39 · 313 阅读 · 0 评论 -
Adams隐式4阶方法解常微分方程,fortran实现
解微分方程的时候,大多数方程都是隐式方法比较稳定。虽然隐式方法需要迭代,写起来比较麻烦,我还是建议尽量使用隐式方法。Adams隐式是一种精度高,稳定性高的算法,属于隐式四阶龙格库塔法的一个特例。我之前写过用python解微分方程的code,这里改成fortran版本对微分方程dy/dx=f(x),Adams法,公式求解的时候用Adams公式构造隐式方程,将y_{n+1}移到右边,然后用牛顿迭代对每个点求解y_{n+1}。下面直接上代码 ...原创 2021-01-17 03:26:22 · 5756 阅读 · 1 评论 -
多重网格法-松弛迭代法-二维泊松方程-python实现(非等距网格情形)
上一篇文章写了正方形网格的情形,实际计算中常常用到非等距矩形网格,因此我把上个代码改成了非等距形式。改成非等距形式后,五点差分法将泊松方程化成方程组时,公式形式和正方形形式稍微不一样,我推了一下,没查任何文献,不保证正确。方程左边是f,右边是原函数二阶导数的差分形式。将u[i,j]移到左边,除掉系数就得到u的方程组。代码如下import numpy as np import matplo...原创 2020-02-03 13:47:50 · 2287 阅读 · 2 评论 -
多重网格法-松弛迭代法-二维泊松方程-python实现
这几天在家躲避疫情,闲来无事,写了这个多重网格法求解泊松方程的算法的代码。多重网格法可能是目前为止解泊松方程最快的算法,n个格点需要n次计算就可以收敛,而快速傅里叶变换的收敛速度是n*logn, 共轭梯度法是n^2.。多重网格法可以方便的应对各种边界条件,这一点比傅里叶变换之类的谱方法要好得多。多重网格法可以这么理解。泊松方程化为差分方程后,每个格点都可以写成一个方程,因此得到一个方程组。使用...原创 2020-02-03 12:59:10 · 6454 阅读 · 8 评论 -
多重网格法(multigrid)求解1d泊松方程--python
多重网格法(multigrid)求解1d泊松方程写多重网格法可能是目前已知最快的求解泊松方程的算法,特别是在边界复杂的情况下,实用性远高于快速傅里叶算法。原创 2019-12-26 13:05:15 · 3085 阅读 · 9 评论 -
用有限差分和牛顿法解非线性微分方程(边值问题)-python
最近师兄让我解一个微分方程,我随口就答应下来了。结果仔细研究以后发现是个大坑。方程式一个复杂的非线性方程,而且是边值问题(知道两个端点的值)。微分方程的初值问题(知道一个端点的值和导数)相对简单,因为可以降阶,但边值问题不能降阶,相对麻烦一些,先上方程:(1−μ2)T′′(μ)+v(v−1)T(μ)−(1−μ2)2T(μ)T′′(μ)M2T(μ)−1−2/v=0(1-\mu^2)T&#x...原创 2019-08-14 19:48:38 · 6420 阅读 · 7 评论 -
二维泊松方程数值解-五点差分法-共轭梯度法-python实现
泊松方程有很多现成的工具可以用,这里主要是为了加深对算法的理解。题目如下题目的要点在于找到泊松方程的系数矩阵。在五点法里面,系数矩阵一共五条对角线,一条主对角线,四条副对角线。碰到边界的时候有的对角线上的值会变。下面是n=4时系数矩阵的样子程序分以下几个子程序coefficientmatrix(n):计算系数矩阵网格向右平移半格以后,系数矩阵是一个[(n-1)(n+2)]^2的矩阵。...原创 2019-01-25 20:31:51 · 13307 阅读 · 9 评论 -
Adams隐式4阶方法解常微分方程,python实现
Adams隐式4阶方法解常微分方程,由4阶Runge-Kutta方法提供初值,隐式方法必显式复杂一些,主要是因为需要解方程。这里使用弦截法解微分方程。import mathimport numpy as np import matplotlib.pyplot as pltimport timedef Secant(y3,x3,y2,x2,y1,x1,y0,x0,h): ...原创 2019-01-08 18:45:31 · 5379 阅读 · 0 评论 -
共轭梯度法求解线性方程组-python实现
共轭梯度法求解线性方程组 Ax = b 的子程序,其中,A为系数矩阵,x为待求未知数向量,b为方程右端向量。具体算法见https://wenku.baidu.com/view/f5157b0c9a6648d7c1c708a1284ac850ac02047c.html?rec_flag=default29页这里需要注意的是共轭梯度法要求系数矩阵A是对称正定矩阵,也就意味着A不对称情况下没有稳...原创 2019-01-24 12:17:53 · 6722 阅读 · 0 评论 -
python 实现(拟)牛顿法解非线性方程组
最近需要解一个非线性方程组,发现网上资料很少,我自己写了一个,供大家参考。例题参考https://wenku.baidu.com/view/a87f1e6a58fafab069dc0260.html?from=searchimport mathimport numpy as np from numpy import * import matplotlib.pyplot as plt...原创 2019-01-07 22:52:11 · 11000 阅读 · 16 评论 -
解线性方程组的迭代法-Gauss-Seidel迭代和SOR迭代的python实现
直接上代码1) 通用程序本程序主要包含三个程序GaussS(a,b, x): Gauss-Seidel的子程序,输入量包括系数矩阵a,等式右侧矩阵b,未知数x的初始值矩阵0Relax(a,b,x, omiga)SOR法迭代的通用程序,omiga是松弛因子Reform(a,b)列主元法将方程进行变换,以避免对角线元素为0。2) 程序里面包含一个例子。 Gauss-Seidel方法求根,误...原创 2018-12-18 15:12:13 · 2683 阅读 · 0 评论 -
4阶显式Runge-Kutta法解常微分方程的通用程序--python实现
方法很简单,根据前一步点推算后一步点。里面有个地方判断步长是否合适。例子中步长要小于0.066。 读者可取n=5, 10,100对比下。import mathimport numpy as np from numpy import * import matplotlib.pyplot as pltdef RK(y0, a, b, n):#输入y0,x的区间【a,b】以及等分数 ...原创 2018-12-19 16:28:47 · 5417 阅读 · 0 评论 -
列主元的Gauss-Jordan消元法-python实现
算法参考https://wenku.baidu.com/view/d7d169d0be23482fb4da4c96.html?from=search直接上代码import mathimport numpy as np from numpy import * import matplotlib.pyplot as pltdef Fun(n): ...原创 2018-11-11 00:29:30 · 4017 阅读 · 0 评论 -
用Newton迭代,二分法,弦截法求根的通用程序-
用Newton迭代,二分法,弦截法求根的通用程序数值计算课程作业,供大家参考语言:python程序介绍:本程序适用于一元方程数值求解,要求一元方程对应的函数在定义域内连续,但不要求可导。本程序可以处理方程有多个根的情形,程序自动寻找x0的初值,但如果函数在x轴上下波动特别剧烈,程序可能无法找到全部根,这时需要手动增加分辨率。import mathimport numpy as np ...原创 2018-11-09 22:03:33 · 1578 阅读 · 0 评论 -
Romberg 积分的python 程序
Romberg 积分的python 程序程序作用:用Romberg算法计算一重积分语言:python具体算法见链接https://wenku.baidu.com/view/b60243f27e192279168884868762caaedd33ba14.html?from=search直接上代码import mathdef T_2n(a, b, n, T_n): #计算T...原创 2018-11-09 16:29:33 · 3748 阅读 · 2 评论