![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数值分析
包含研究生数值分析上机python、Matlab上机实验,以及平时练习的编程代码
荔枝科研社
行百里者,半于九十。
展开
-
*数值分析(超全)
一、概述数值分析思维导图数值分析课后习题二、线性方程组的数值解法Jocobi迭代法(Python实现)高斯赛德尔算法(Python实现)高斯消元和列主消元(Matlab实现)迭代加速——松弛迭代(Python实现)三、非线性方程组的数值解法不动点迭代和Newwton迭代(Python实现)Newton下山法(Matlab实现)牛顿下山法(C语言实现)四、插值与拟合三次样条插值及三弯矩法完整(Matlab实现)数学建模中的插值问题.原创 2021-12-31 20:12:19 · 3646 阅读 · 0 评论 -
数值分析课后习题答案(百度网盘)
目录1 展示2 完整资源获取——百度网盘1 展示2 完整资源获取——百度网盘http://链接:https://pan.baidu.com/s/1r-btxnBo0_znBByQrJRYYQ提取码:6nbr原创 2021-12-31 18:18:43 · 2623 阅读 · 2 评论 -
数值分析完整思维导图
目录0 概述1 引论1.1 误差的来源与基本概念2 线性方程组的数值解法2.1 迭代法2.2 直接法3 非线性方程组求根3.1 迭代法3.2 Newton迭代法4 插值与拟合4.1 插值4.2 拟合5 数值积分与数值微分5.1 数值积分的概念5.2 Newton-Cotes求积公式5.3 复化求积公式6 常微分方程初值问题6.1 数值微分6.2 方法6.2.1 数值微分方法6.2.2 数值积分...原创 2021-12-31 17:43:31 · 6100 阅读 · 0 评论 -
牛顿下山法(Matlab实现)
目录1 原理2 案例3 程序实现4 结果5 总结与展望1 原理 2 案例 3 程序实现clear clcsyms xh=x.^0.5-x.^3+2;%代换函数x0=NW(h,1,100);%100为迭代最大次数function result=NW(h,x,n)f=matlabFunction(h);f1=matlabFunction(diff(h));X(1)=x;i=2;r=1;while 1 X(i)=X(i-...原创 2021-12-31 11:43:34 · 3865 阅读 · 0 评论 -
高斯消元和列主消元(Matlab实现)
目录1 原理2 案例3 代码4 结果5 总结与展望1 原理2 案例 3 代码%高斯消元function x = Guass(A,b)A=[0.4096 0.1234 0.3678 0.2943;0.2246 0.3872 0.4015 0.1129;0.3645 0.1920 0.3781 0.0643;0.1784 0.4002 0.2786 0.3927]b=[0.4043;0.1550;0.4240;-0.2557]...原创 2021-12-31 11:02:32 · 2287 阅读 · 0 评论 -
数值分析-----不动点迭代和牛顿迭代(Python)
1 概述 在工程和科学技术中,许多问题常归结为求解函数方程: f(x)=0 其中f(x)为一元连续函数,如果f(x)为多项式函数,该方程为代数方程;如果f(x)为超越函数,该方程称为超越方程。如何求解方程f(x)=0的根是一个古老的数学问题。五次以上的代数方程和超越方程一般没有求根公式,很难或者无法求得其精确解,而实际应用中要得到满足一定精度的近似解就...原创 2021-12-30 22:43:56 · 5518 阅读 · 0 评论 -
迭代加速——逐次超松弛迭代法(Python实现)
目录1、概述2、代码3、结果1、概述 逐次超松弛迭代法是在高斯赛德尔迭代法的基础上发展而来的,高斯赛德尔迭代法上一节我们已经讲过了,可以对比起来看。然后逐次超松弛迭代法中有一个很重要的思想:权重思想。我们下面直接上代码:2、代码import numpy as np##超松弛迭代法def SOR(n, A, B, x0, x, eps, k, w): times = 0 while times < k: for i in ...原创 2021-12-26 20:43:40 · 1930 阅读 · 0 评论 -
高斯赛德尔法迭代法(Python实现)
目录1、概述2、代码3、结果1、概述 这一经典思路是在雅可比迭代法思路上的一个创新点,有点作科研找创新点的感觉,雅可比迭代法我们在上一节课中讲过了,我们进行对比发现,高斯赛德尔迭代法明显比雅克比迭代法迭代速度快了很多,下面我们直接上代码。2、代码import numpy as np# 高斯赛德尔迭代法def Gauss_Seidel(n,A,B,x0,x,eps,k): times = 1 while times < k: ...原创 2021-12-26 20:37:07 · 4508 阅读 · 4 评论 -
数值分析---Jacobi迭代法
目录1、概述2、知识结构3、代码4、结果1、概述 许多实际问题的数学模型最终都要归结为求解线性方程组。例如:石油工业的油气资源探查、航天工业中飞机导弹的设计、天气预报和核武器的设计等,都需要求解线性方程组。这些方程组,大多规模很大,未知元达到几十万个,而且有的方程组对求解时间也有严格的限制,例如数值1天气预报,为了赶上每天发布预报的需要,只有短短几个小时的计算时间。如何快速求解线性方程组是科学与工程计算的核心问题之一。2、知识结构3、代码以三阶为例,成...原创 2021-12-25 22:13:52 · 2758 阅读 · 1 评论 -
四阶Runge-Kutta(Matlab实现)
目录1、原理2、案例3、代码4、结果1、原理2、案例3、代码function sijierungekutta(X0,Y0,Z0,h,T)dxdt=inline('-0.013*x-1000*x*y', 'x', 'y', 'z');dydt=inline('-2500*y*z', 'x', 'y', 'z');dzdt=inline('-0.013*x-1000*x*y-2500*y*z', 'x', 'y', 'z');x0 = [1...原创 2021-12-24 13:16:52 · 2093 阅读 · 0 评论 -
龙贝格算法(Matlab实现)
目录1、原理2、案例3、代码4、结果1、原理 2、案例3、代码clear;clc;close all;format longb=2*pi;a=0;h=b-a;eps=10^(-6);%误差epskmax=10;%最大递推次数T1=h*(a*sin(a)+b*sin(b))/2%代换公式S1=0;C1=0;C2=0;R1=0;R2=0;for k=1:kmax h=(b-a)/2^k; i=1:2^(k-1); ...原创 2021-12-22 10:43:14 · 6074 阅读 · 0 评论 -
三次样条插值及三弯矩法完整(Matlab实现)
目录1、原理2、案例3、代码实现4、结果1、原理 2、案例3、代码实现clear clcx=[-1 -0.54 0.13 1.12 1.89 2.06 2.54 2.82 3.5];y=[-2.46 -5.26 -1.87 0.05 1.65 2.69 4.56 7.89 10.31];%%方法一%for i=1:8% h(i)=x(i+1)-x(i); %步长% fyjcs(i)=(y(i+1)-y(i...原创 2021-12-21 10:45:13 · 5099 阅读 · 0 评论 -
数学建模中的插值问题
目录1 概述1.1 数学建模常见问题1.2 预测类问题1.3 插值预测2 Scipy一维插值方法2.1 直接法——splrep&splev(1)参数(2)案例(3)代码实现(包含画图的模板库)(4)结果2.2 内插法 ——interp1d(1)参数(2)案例(3)案例代码实现(4)案例结果(5)一维插值方法(内插)比较2.3 外插法——UnivariateSplin(1)参数(2)案例(3)代码实现...原创 2021-12-19 14:10:44 · 1890 阅读 · 0 评论 -
三次样条插值——三弯矩法(C语言实现)
目录1、原理2、案例3、代码实现4、结果5、误差分析与心得体会1、原理 2、案例3、代码实现#include<iostream>#include<iomanip>using namespace std;#define max 50 float x[max], y[max], h[max];//Define a specific array to store the original datafloat c[max], a...原创 2021-12-18 09:47:10 · 1043 阅读 · 1 评论 -
牛顿下山法(C语言实现)
目录1、原理2、案例3、代码实现4、结果5、误差分析与心得1、原理2、案例3、代码实现#include"iostream"#include"stdlib.h"#include"math.h"#include"conio.h"using namespace std;double function(double x){ return sqrt(x)-x*x*x+2; }double function_dao(dou...原创 2021-12-18 09:30:24 · 714 阅读 · 0 评论 -
Romberg算法(龙贝格求积公式C语言实现)
目录1、原理2、案例3、代码4、结果5、误差分析1、原理2、案例 3、代码#include<stdio.h>#include<math.h>float f(float x) { float f=0.0; f=x*sin(x); //f=exp(-x*x); return (f);}main() { int i=1,j,k,n=12; float pi; float T[12],a=0.0,b...原创 2021-12-18 09:24:08 · 2325 阅读 · 0 评论 -
牛顿下山法(Python实现)
目录1、原理2、案例3、Python实现4、结果5、展望1、原理2、案例3、Python实现import numpy as np# Store the iteration value of each stepresult = []# Store downhill factors for each stepall_r = []# Judge whether it is singular. True is singular and false...原创 2021-12-17 10:05:15 · 1657 阅读 · 0 评论 -
高斯消元法和列主销元法(Python实现)
目录1、原理(1)思维导图(2)原理2、案例及实现(1)案例(2)代码实现(3)结果3、误差分析及心得体会1、原理(1)思维导图(2)原理2、案例及实现(1)案例(2)代码实现import numpy as np# 判断系数矩阵是否为非奇异矩阵def IsItNonSingular(A): row = len(A) # 系数矩阵行数 col = len(A[0]) # 系数矩阵列数 # 控制...原创 2021-12-16 13:33:52 · 3064 阅读 · 0 评论 -
四阶Runge-Kutta(Python实现)
目录1、原理2、案例3、代码4、结果1、原理 2、案例3、代码import numpy as npimport mathimport matplotlib.pyplot as pltdef f1(x, y1, y2,y3): df = -0.013*y1-1000*y1*y2 return dfdef f2(x, y1, y2,y3): df = -2500*y2*y3 return dfde...原创 2021-12-15 11:27:22 · 3485 阅读 · 0 评论 -
三次样条插值(Python实现)
目录1、原理2、案例3、代码4、结果1、原理2、案例3、代码import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom scipy import interpolateimport matplotlib as mplmpl.rcParams["font.sans-serif"] = ["SimHei"]mpl.rcParams["axes.unicode_min...原创 2021-12-14 19:28:03 · 8244 阅读 · 2 评论 -
列主消元法(Matlab实现)
目录1、概述2、代码3、结果1、概述在前面一章知识点我们已经梳理清晰啦,这里直接上代码和运行结果。2、代码function [x]=abc(A,b,flag) if nargin<3,flag=0;end n=length(b); for k=1:(n-1) [ap,p]=max(abs(A(k:n,k))); p=p+k-1; if p>k A([k p],:)=A([p k],:); b([k p],:)=b([p k],:);原创 2021-12-10 20:58:43 · 1944 阅读 · 1 评论 -
列主消元法(C语言实现)
目录1、概述(1)线性方程组的数值解法(2)列主消元法2、案例及代码实现(1)案例(2)代码3、结果及分析1、概述(1)线性方程组的数值解法(2)列主消元法2、案例及代码实现(1)案例(2)代码#include"stdio.h"#include"math.h" main() { double A[9][9]={{12.38412,2.115237,-1.061074,1.112336,-0.113584,0.718...原创 2021-12-10 20:52:12 · 1597 阅读 · 0 评论 -
四阶Runge-Kutta算法(Matlab实现)
目录1、概述2、代码及结果(1)代码(2)结果1、概述 相关知识点我们在前一篇文章中已经总结啦,这里直接上代码和结果。2、代码及结果(1)代码function Y=R_K(df1,a,b,h) m=(b-a)/h;Y=zeros(3,1); S=zeros(3,1); K=zeros(3,4); x=a;y1=a;y2=a;y3=a; for n=1:m K(:,1)=feval(df1,x,y1,y2,y3); x=x+0.5*h;S(:...原创 2021-12-10 20:27:42 · 2448 阅读 · 0 评论 -
四阶Runge-Kutta算法(C语言实现)
目录1、概述(1)常微分初值问题(2)泰勒公式(3)四阶Runge-Kutta算法2、案例分析及代码(1)案例(2)代码3、结果及讨论1、概述(1)常微分初值问题(2)泰勒公式(3)四阶Runge-Kutta算法 2、案例分析及代码(1)案例(2)代码#include <stdio.h> #include <math.h> double F(d...原创 2021-12-10 20:18:05 · 1856 阅读 · 0 评论 -
Romberg算法(Matlab实现)
目录1、概述2、代码3、结果4、讨论1、概述 在前面一章,我们已经梳理了Romberg算法的相关知识点,下面我们就直接上Matlab代码以及运行结果。2、代码function [T,n]=mromb(f,a,b,eps) if nargin<4,eps=1e-6;end h=b-a; R(1,1)=(h/2)*(feval(f,a)+feval(f,b)); n=1;J=0;err=1; while (err>eps) J=J+1;...原创 2021-12-10 20:01:01 · 4224 阅读 · 0 评论 -
Romberg算法(C语言实现)
目录1、概述2、代码3、结果1、概述2、代码#include<stdio.h> #include<math.h> double f(double x) { double f=0.0; f=pow(3.0,x)*pow(x,1.4)*(5*x+7)*sin(x*x); return (f); }void main() { int i=1,j,k,n=12; double T[12],a=1.0,b=3...原创 2021-12-10 19:49:56 · 1213 阅读 · 0 评论 -
三次样条插值---三弯矩法(Matlab实现)
目录1、概述2、代码3、结果1、概述 在前面一章我们已经总结完知识点了,我们这篇文章直接用Matlab进行编程,下面直接上代码和运行结果。2、代码function Q=san(ssss,p) Q=zeros(2,1); x=[1;2;3;4;5;6;7;8;9;10]; y=[0;0.69314718;1.0986123;1.3862944;1.6094378;1.7917595;1.9459101;2.079445;2.1972246;2.3025851];...原创 2021-12-10 19:35:12 · 3434 阅读 · 0 评论 -
三次样条插值—三弯矩法(C语言实现)
目录1、概述2、案例分析(1)案例(2)分析3、代码及结果1、概述2、案例分析(1)案例(2)分析3、代码及结果#include<stdio.h> #include<math.h> #define N 9 void main() { double x[N+1]={1,2,3,4,5,6,7,8,9,10}, y[N+1]={0,0.69314718,1.0986123,1.386294...原创 2021-12-10 19:23:58 · 1467 阅读 · 2 评论 -
牛顿法求方程的根(C&Matlab&Python语言实现)
1、概述 详细知识点我在前面的牛顿迭代法开方已经总结啦,这里就稍做补充。下面我们就直接给出案例,然后分享代码和结果。2、案例3、程序源代码(1)C语言实现#include<stdio.h> #include<math.h> int main() {double pow(double x,double y);double x0,x,f1,f2; x0=1; do{ x=x0; //初值 f1=pow(x,7...原创 2021-12-10 17:01:39 · 2580 阅读 · 0 评论 -
蒙特卡罗法(随机模拟法)
目录1、概述2、代码1、概述 随机模拟方法也称为Monte Caro(孟特卡罗)方法,是一种基于“随机数”的计算方法。这一方法源于美国在第二次世界大战中研制原子弹的“曼哈顿计划”。该计划的主持人之一,数学家,冯-诺依曼用驰名世界的赌城—摩纳哥的Monte Caro来命名这种方法,为他蒙上神秘的面纱。(蒙特卡法)2、代码这个代码比较简单,但是要等好久好久,等得让你怀疑人生,哈哈哈.....from random import randomimport numpy as ...原创 2021-11-21 17:57:17 · 1688 阅读 · 0 评论 -
Python实现Gauss-Seider迭代法(超全)
#author:hewang#qq:207962168import numpy as npimport matplotlib.pyplot as pltdef matvec(A,v): M,N = A.shape if N != M: print("Matrix is not square") return -1 N1 = v.shape[0] if N1 != M: print("The dimension o.原创 2021-11-18 10:16:17 · 968 阅读 · 0 评论 -
Python实现时间(秒,时,天,年)
#authon:hewangqq:2079862168import numpy as npimport matplotlib.pyplot as pltdef frac(n:int): result =1 if n == 0: return 0 if n < 0: return -1 for i in range(1,n+1,1): result=result*i return resultdef .原创 2021-11-17 18:22:28 · 909 阅读 · 0 评论 -
常微分方程初值问题数值解法[完整公式](Python)
目录1、概述(1)常微分方程初值问题数值解法(2)解题步骤(3)数值微分解法(4)数值积分解法2、所有知识点代码3、结果---以三阶Runge-Kutta公式为例(其他的类示)1、概述(1)常微分方程初值问题数值解法(2)解题步骤 (3)数值微分解法(4)数值积分解法2、所有知识点代码import numpy as npimport matplotlib.pyplot as ...原创 2021-11-30 23:10:54 · 2945 阅读 · 0 评论 -
数值积分求解卫星轨道长(Python)
目录1、概述2、代码方法一 3、代码方法二4、运行结果 1、概述 微积分在科学和工程中有着广泛的应用,例如,人造地球卫星的轨道可视为平面的椭圆,我国第一颗人造地球卫星近地球距离表面439km,远地点距离地球表面2384km,地球半径为6371km,求该卫星的轨道长度。 本文题可用椭圆参数方程来描述人造地球卫星轨道,取a=8755km,b=6810km分别为椭圆的长短半轴,该轨...原创 2021-11-21 14:46:36 · 2206 阅读 · 0 评论 -
Newton迭代法开方(Python)
1、概述 在对非线性方程根求解时,5次以上的代数方程和超越方程一般没有求根公式,很难或者无法求得其精确解,而在实际应用中要得到满足一定精度的近似解就可以了。 我们数值解法一般有二分法和Newton迭代法,如图所示。二分法的优点是算法简单,缺点是收敛速度慢,不能求重根。对于本章我们主要讲解Newton迭代法。 2、Newton迭代法的原理: 设 x'是f(x)的根,选取作为x'的初始近似值,则我们可以过点做曲线的切线,我们知道切线与轴有交点,...原创 2021-11-16 13:49:59 · 778 阅读 · 0 评论 -
显式Euler公式和隐式Euler公式精确度(Python)
目录1、概述(1)常微分初值问题(2)数值微分方法2、显式Euler公式和隐式Euler公式精度比较(1)代码(2)结果3、图像直观图1、概述(1)常微分初值问题(2)数值微分方法2、显式Euler公式和隐式Euler公式精度比较(1)代码import numpy as npimport matplotlib.pyplot as plt#y'=-30y,y(0)=1,0<=x<=0.6def funEval(x,y): ..原创 2021-11-30 22:38:20 · 3382 阅读 · 0 评论 -
python画椭圆、星形线、菱形、圆角矩形
目录1、代码2、结果1、代码import numpy as npimport matplotlib.pyplot as pltdef normp(num:int,ntype:int): delta = 2/(2*num) points1=np.zeros((2*(2*num+1),2),dtype=np.float64) points=np.zeros(((2*num+1),2),dtype=np.float64) for i in range(2*nu原创 2021-11-16 22:46:34 · 1891 阅读 · 0 评论 -
二分法求方程的根(Python)
目录1、概述2、代码3、结果1、概述 求方程 f(x)=0的近似根的最简单方法为二分法,其基本思想是:首先根据方程有根定理(函数零点定理)确定方程的有根区间,然后不断的将有根区间一分为二,直到有根区间的长度在允许误差范围内,然后取有根区间的中点作为方程近似根,二分法的优点是算法简单,缺点是收敛速度慢,不能求重根。然后就用迭代法伺候。2、代码import numpy as npdef func(x): result = x - np.tan(x) ...原创 2021-11-21 16:33:33 · 5564 阅读 · 0 评论 -
python矩阵的分解及其应用(LU分解)
import numpy as np from scipy import linalgdef getMatrix(epsion): A=np.array([[epsion,1],[1,0]],dtype=np.float64) return A def getRHS(): b=np.array([[1],[3.0]],dtype=np.float64) return bdef LUsolution(A,b,epsion): L=np.array([[1,0].原创 2021-11-16 22:51:15 · 1673 阅读 · 0 评论 -
Euler方法和改进的Euler方法
目录1、概述2、代码3、结果(1)Euler方法(2)改进的Euler方法1、概述 Euler方法就是用直线近似来求解微分方程的方法。Euler方法知识点、数值分析的点点滴滴总结得特别棒。我们这里直接上代码。2、代码import numpy as npimport matplotlib.pyplot as pltdef funEval(x,y): #fxy = (x*y-y**2)/x**2 fxy=2*y/x+x**2*np.e**...原创 2021-11-21 17:39:52 · 1534 阅读 · 0 评论