数学建模 两点边值问题的两种数值解法及代码
- 格式:doc
- 大小:74.00 KB
- 文档页数:4
数学建模介绍1.1 数学模型及其分类数学建模作为用数学方法解决问题的第一步,它与数学本身有着同样悠久的历史。
一个羊倌看着他的羊群进入羊圈,为了确信他的羊没有丢失,他在每只羊进入羊圈时,则在旁边放一颗小石子,如果每天羊全部入圈而他那堆小石子刚好全部放完,则表示他的羊和以前一样多。
究竟羊倌数的是石子还是羊,那是毫无区别的,因为羊的数目同石子的数目彼此相等。
这实际上就使石子与羊“联系”起来,建立了一个使石子与羊一一对应的数学模型。
(1)什么是数学模型人们在认识研究现实世界里的客观对象时,常常不是直接面对那个对象的原形,有些是不方便,有些甚至是不可能直接面对原形,因此,常常设计、构造它的各种各样的模型。
如各式各样的玩具模型、展览厅里的三峡大坝模型、化学上的分子结构模型等。
这些模型都是人们为了一定目的,对客观事物的某一部分进行简化、抽象、提炼出来的原形替代物,集中反映了原形中人们需要的那一部分特征,因而有利于人们对客观对象的认识。
数学模型也是反映客观对象特征的,只不过它刻画的是事物在数量方面的特征或数学结构及其变化规律。
数学模型是人们为了认识客观对象在数量方面的特征、定量地分析对象的内在规律、用数学的语言和符号去近似地刻画要研究的那一部分现象时,所得到的一个数学表述。
建立数学模型的过程称为数学建模。
(2) 数学模型的重要作用进入20世纪以来,数学以空前的广度和深度向一切领域渗透,作为数学的应用,数学建模也越来越受到人们的重视。
在一般工程技术领域,数学模型仍是工程技术人员定量研究有关工程技术问题的重要工具;而随着数学与其他学科领域诸如经济、人口、生态、地质等所谓非物理领域的渗透,一些交叉学科如计量经济学、人口控制论、数学生态学、数学地质学等应运而生;计算机的发展给数学及作为数学应用的数学建模带来了前所未有的机遇和挑战。
计算机改变了人类的生活方式、思考方式和研究方式,极大地提高了人们的计算能力、搜索和分析海量数据和信息的能力。
数学建模中的图论方法一、引言我们知道,数学建模竞赛中有问题A和问题B。
一般而言,问题A是连续系统中的问题,问题B是离散系统中的问题。
由于我们在大学数学教育内容中,连续系统方面的知识的比例较大,而离散数学比例较小。
因此很多人有这样的感觉,A题入手快,而B题不好下手。
另外,在有限元素的离散系统中,相应的数学模型又可以划分为两类,一类是存在有效算法的所谓P类问题,即多项式时间内可以解决的问题。
但是这类问题在MCM中非常少见,事实上,由于竞赛是开卷的,参考相关文献,使用现成的算法解决一个P类问题,不能显示参赛者的建模及解决实际问题能力之大小;还有一类所谓的NP问题,这种问题每一个都尚未建立有效的算法,也许真的就不可能有有效算法来解决。
命题往往以这种NPC问题为数学背景,找一个具体的实际模型来考验参赛者。
这样增加了建立数学模型的难度。
但是这也并不是说无法求解。
一般来说,由于问题是具体的实例,我们可以找到特殊的解法,或者可以给出一个近似解。
图论作为离散数学的一个重要分支,在工程技术、自然科学和经济管理中的许多方面都能提供有力的数学模型来解决实际问题,所以吸引了很多研究人员去研究图论中的方法和算法。
应该说,我们对图论中的经典例子或多或少还是有一些了解的,比如,哥尼斯堡七桥问题、中国邮递员问题、四色定理等等。
图论方法已经成为数学模型中的重要方法。
许多难题由于归结为图论问题被巧妙地解决。
而且,从历年的数学建模竞赛看,出现图论模型的频率极大,比如:AMCM90B-扫雪问题;AMCM91B-寻找最优Steiner树;AMCM92B-紧急修复系统的研制(最小生成树)AMCM94B-计算机传输数据的最小时间(边染色问题)CMCM93B-足球队排名(特征向量法)CMCM94B-锁具装箱问题(最大独立顶点集、最小覆盖等用来证明最优性)CMCM98B-灾情巡视路线(最优回路)等等。
这里面都直接或是间接用到图论方面的知识。
要说明的是,这里图论只是解决问题的一种方法,而不是唯一的方法。
一、介绍1. Python是一种高级编程语言,具有简单易学、功能强大、开源免费等优点。
在科学计算、数据分析、机器学习等领域被广泛应用。
2. 微分方程是数学中的一个重要分支,描述了变化的规律。
微分方程求解是许多科学工程问题的基础和关键。
二、微分方程的数值求解1. 微分方程的数值求解是通过数值方法近似计算微分方程的解。
常用的数值方法包括欧拉方法、隐式欧拉方法、龙格-库塔方法等。
2. 对于一阶微分方程y'=f(x,y),欧拉方法的迭代公式为y_n+1=y_n+hf(x_n,y_n),其中h为步长。
3. 隐式欧拉方法则采用y_n+1=y_n+hf(x_n+1,y_n+1),需要通过迭代求解非线性方程。
4. 龙格-库塔方法是一种更精确的数值方法,通常采用四阶龙格-库塔方法。
三、使用Python进行微分方程数值求解1. Python具有丰富的数值计算库,如NumPy、SciPy等,能方便地进行微分方程的数值求解。
2. 使用SciPy库中的odeint函数可以方便地对常微分方程进行数值求解。
3. 以一阶常微分方程y'=2x+y,y(0)=1为例,可以使用Python实现如下:import numpy as npfrom scipy.integrate import odeintdef model(y, x):return 2*x + yx = np.linspace(0, 5, 100)y = odeint(model, 1, x)4. 这段代码首先定义了微分方程的模型函数model,并使用odeint 函数进行数值求解。
最终得到的y即为微分方程的近似解。
四、实例分析1. 以一个具体的物理问题为例,考虑一个简谐振动系统,其运动方程为mx''+kx=0。
假设m=1,k=1,初始条件为x(0)=0,x'(0)=1。
2. 可以将这个二阶微分方程转化为一对一阶微分方程,令y1=x,y2=x',则转化得到y1'=y2,y2'=-y1。
第8章MATLAB方程数值求解例8-1用直接解法求解下列线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';x=A\b例8-2用LU分解求解例8-1中的线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';[L,U]=lu(A);x=U\(L\b)例8-3 用QR分解求解例8-1中的线性方程组。
程序如下:A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];b=[13,-9,6,0]';[Q,R]=qr(A);x=R\(Q\b)例8-4 用Cholesky分解求解例8-1中的线性方程组。
命令如下:>> A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; >> b=[13,-9,6,0]';>> R=chol(A)Jacobi迭代法的MA TLAB函数文件jacobi.m如下:function [y,n]=jacobi(A,b,x0,ep)if nargin==3ep=1.0e-6;elseif nargin<3errorreturnendD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵B=D\(L+U);f=D\b;y=B*x0+f;n=1; %迭代次数while norm(y-x0)>=epx0=y;y=B*x0+f;n=n+1;end例8-5 用Jacobi迭代法求解下列线性方程组。
设迭代初值为0,迭代精度为10-6。
在程序中调用函数文件jacobi.m,程序如下:A=[10,-1,0;-1,10,-2;0,-2,10];b=[9,7,6]';[x,n]=jacobi(A,b,[0,0,0]',1.0e-6)Gauss-Serdel迭代法的MA TLAB函数文件gauseidel.m如下:function [y,n]=gauseidel(A,b,x0,ep)if nargin==3ep=1.0e-6;elseif nargin<3errorreturnendD=diag(diag(A)); %求A的对角矩阵L=-tril(A,-1); %求A的下三角阵U=-triu(A,1); %求A的上三角阵G=(D-L)\U;f=(D-L)\b;y=G*x0+f;n=1; %迭代次数while norm(y-x0)>=epx0=y;y=G*x0+f;n=n+1;end例8-6 用Gauss-Serdel迭代法求解例8-5中的线性方程组。
半解析法与半解析数值法的缩写半解析法和半解析数值法是数值计算中常用的两种方法,它们在求解一些特定类型的数学问题时具有一定的优势。
下面将对半解析法和半解析数值法的定义、原理和应用进行详细说明。
半解析法(Semi-Analytical Method)是指通过对问题进行分析和推导,得到问题的一种解析形式,但仍然需要使用数值计算方法来求解的方法。
与传统的纯解析法相比,半解析法可以更好地处理一些复杂的问题,因为它可以通过分析和推导将问题转化为更简单的形式。
半解析法的应用十分广泛,特别是在物理学、工程学和数学建模等领域。
例如,在电磁场计算中,经常需要通过求解电磁场的边值问题来得到电磁场的分布情况。
传统的纯解析法很难处理复杂边界条件下的电磁场问题,而半解析法可以通过数学推导得到电磁场的一种解析形式,并进一步使用数值计算方法得到精确的数值解。
半解析法的原理基于分析和推导,通常可以采用比较精确的数学工具,如微分方程、积分变换和级数展开等。
通过对问题进行适当的简化和近似,可以得到问题的解析形式。
然后,可以使用数值计算方法对解析形式进行进一步处理,求取数值解。
与半解析法相对应的是半解析数值法(Semi-Analytical Numerical Method)。
半解析数值法是指将数值计算方法与解析方法相结合的一种数值计算方法。
它通过分析和推导的方法,得到问题的解析形式,并且使用数值计算方法对解析形式进行进一步处理,求取数值解。
半解析数值法的优势在于既保留了解析法的精确性,又克服了纯解析法无法处理复杂问题的困难。
半解析数值法在求解偏微分方程、积分方程和边值问题等数学问题时具有很大的优势。
半解析数值法的应用范围广泛,包括流体力学、结构力学、电磁场计算、热传导等领域。
例如,在流体力学中,常常需要求解Navier-Stokes方程来描述流体的运动行为。
传统的纯解析法很难处理复杂的流动问题,而半解析数值法可以通过求解Navier-Stokes方程的一种解析形式,并通过数值计算方法对解析形式进行进一步处理,得到精确的数值解。
米勒问题的数学建模及应用张俊畅 杨柳忠广东省大埔县虎山中学 514299一、关于米勒问题:1471年,德国数学家米勒向诺德尔教授提出了如下十分有趣的问题:在地球表面的什么部位,一根垂直的悬杆呈现最长?即在地球上什么部位,视角最大?最大视角问题,是数学史上100个著名的极值问题中第一个极值问题,因而引人注目。
因为德国数学家米勒曾提出这类问题,因此最大视角问题又称之为“米勒问题”。
二、米勒问题的数学模型及其求解:米勒问题可以转化为这样的几何模型:如图1,线段AB 垂直于直线EF ,垂足为点O ,在直线EF 上任选一点C ,使得ACB ∠的值最大,求此时点C 的位置.(1)米勒问题代数解法:解:不妨设AB 长度为a ,OB 长度为b ,ACB θ∠=,OC 距离为x ,因为AB EF ⊥,所以AOC ∆和BOC ∆,都是RT ∆,所以tan tan tan 1tan tan ACO BCO ACO BCO θ∠-∠=+∠⋅∠ ()()()221a b b ax a a x x a b b a b b x a b b a b b x x x x+-===≤++⋅++⋅++⋅+ 当()a b b x x +⋅=,即()x a b b =+⋅时,取等号,评注:通过构建tan θ关于x 的函数,然后利用基本不等式求得tan θ最大值,进而确定角θ的最大值。
(2)米勒问题几何解法(Ad.Lorsch 解法):在水平直线上选择点C ,使得ABC ∆外接圆与水平直线刚好相切于点C ,则切点就是视角最大的点。
证明:如图,在OF 上任取一点'C ,连接','AC BC ,设'BC 与圆的交点为D ,因为ADB ACB ∠=∠,(同户所对的圆周角相等),又ADB ∠是'ADC ∆的外角,所以'ADB AC B ∠>∠,所以'ACB AC B ∠>∠,因此切点C 就是ACB ∠取得最大值时的点,由切割线定理可知:2OC OB OA =⋅,所以 ()2x a b b =+⋅,即()x a b b =+⋅。
一、数学建模的理解例子:二、经典最优化方法1、微分与极值2、无约束极值问题3、约束极值问题三、无约束优化问题数值解法(向量)1、最优梯度法(梯度下降法)2、牛顿法3、共轭梯度法4、阻尼牛顿法5、变尺度法1.1 无约束优化的一般形式无约束非线性规划问题为其最优解通常都是局部最优解,寻找全局最优解需要对局部最优解进行比较以后得到(如果能够求出所有局部最优解的话)。
1.2 最优性条件是最优解的必要条件为;充分条件为,且正定。
1.3 下降法的基本思想在迭代的第k步,确定一个搜索方向和一个步长,使沿此方向、按此步长走一步到达下一点时,函数值下降。
其基本步骤为1)选初始解;2)对于第次迭代解,确定搜索方向并在此方向确定搜索步长令,使<;3)若符合给定的迭代终止原则,停止迭代,最优解;否则,转2。
搜索方向的选择(不同方向产生不同的算法):1)最速下降法(梯度法)2)牛顿法3)拟牛顿法:利用第和步得到的,用BFGS公式,DFP公式,GM公式等迭代公式构造正定矩阵近似代替,或直接构造近似代替,从而由,或得到下降方向d k+1。
搜索步长的确定——线性搜索:用二分法、黄金分割法(即0.618法)、Fibonacci 法,牛顿切线法和割线法,插值方法等近似方法求一维优化问题:来确定步长。
2.1 非线性最小二乘拟合问题有一组数据要拟合一个已知函数y=f(x, t), x=(x1,x2,…,xm),, x为待定系数。
记误差,,拟合误差定义为的平方和,于是问题表示为如下的优化模型:当对(的某些分量)是非线性函数时,称非线性最小二乘拟合。
四线性规划1、线性规划的数学模型某工厂安排生产1、2两种产品,2、线性规划的图解法单纯形及其求解法1.1 线性规划的图解法线性规划的图解法只能用于求解两个决策变量(2维)的情形。
由于线性规划的约束条件和目标函数均为线性函数,所以对于2维情形,可以在平面坐标系下画出可行域和目标函数的等值线。
常微分方程组两点边值问题的数值解法
3)1(1)0(04y
y
yy
可化为微分方程组3)1(1)0(41221yyyyyy
方法一:配置法
Matlab程序:
function bvcollation
clc
solinit = bvpinit(linspace(0,1,20),[100 600]);%
sol = bvp4c(@twoode,@twobc,solinit);
x = linspace(0,1,20);
y = deval(sol,x);
y'
plot(x,y(1,:),x,y(2,:));
end
%微分方程组
function dydx = twoode(x,y)
dydx = [ y(2)
4*y(1)];
end
%边值条件
function res = twobc(ya,yb)
res = [ ya(1)-1
yb(1)-3];
end
运行结果:
1.0000 -0.4203
0.9834 -0.2117
0.9777 -0.0055
0.9828 0.2007
0.9988 0.4091
1.0259 0.6220
1.0644 0.8419
1.1147 1.0710
1.1774 1.3121
1.2531 1.5677
1.3427 1.8407
1.4472 2.1341
1.5678 2.4512
1.7057 2.7954
1.8626 3.1707
2.0401 3.5811
2.2402 4.0313
2.4652 4.5261
2.7175 5.0712
3.0000 5.6724
方法二:打靶法
程序:积分用ode45,搜索用二分法
function shoot_first_try
clc
clear all
a=0;
b=1;
a2=-1;
b2=0;
s=0;
tol=1.0*10e-6;
h1=Fun(a2)
h2=Fun(b2)
s=bisect(@Fun,a2,b2,tol)
[t1,y1]=ode45(@f,[a,b],[1,s])
plot(t1,y1(:,1),t1,y1(:,2))
function xc=bisect(f,a,b,tol)
if sign(f(a))*sign(f(b))>=0
error('f(a)*f(b)<0 not satisfied!')
end
fa=f(a);
fb=f(b);
k=0;
while (b-a)/2>tol
c=(a+b)/2;
fc=f(c);
if fc==0
break
end
if sign(f(a))*sign(f(b))<0
b=c;fb=fc;
else
a=c;fa=fc;
end
end
xc=(a+b)/2;
function z=Fun(s)
a=0;b=1;yb=3;
h=linspace(a,b,20);
y0=[1;s];
[t,y]=ode45(@f,h,y0);
z=y(end,1)-yb;
function ydot=f(t,y)
%ydot=[0;0];
ydot(1)=y(2);
ydot(2)=4*y(1);
ydot=[ydot(1);ydot(2)];
运行结果:
1.0000 -0.5000
0.9969 -0.4749
0.9940 -0.4499
0.9913 -0.4250
0.9887 -0.4001
0.9799 -0.3017
0.9736 -0.2041
0.9697 -0.1069
0.9683 -0.0100
0.9692 0.0868
0.9726 0.1839
0.9784 0.2814
0.9867 0.3797
0.9974 0.4788
1.0106 0.5792
1.0264 0.6811
1.0447 0.7846
1.0656 0.8901
1.0892 0.9978
1.1155 1.1080
1.1446 1.2210
1.1766 1.3370
1.2115 1.4564
1.2495 1.5794
1.2905 1.7064
1.3348 1.8377
1.3825 1.9735
1.4335 2.1143
1.4882 2.2603
1.5466 2.4120
1.6089 2.5698
1.6751 2.7339
1.7456 2.9049
1.8204 3.0832
1.8998 3.2692
1.9840 3.4633
2.0731 3.6661
2.1674 3.8781
2.2671 4.0998
2.3724 4.3317
2.4837 4.5745
2.5711 4.7637
2.6621 4.9596
2.7569 5.1625
2.8555 5.3726