数值积分与线性方程组的解法

数值积分与线性方程组的解法
数值积分与线性方程组的解法

华北科技学院上机报告

系(部)建筑工程学院

专业、班级测绘B112 姓名学号 201105064226

课程名称数值分析

上机题目数值积分与线性方程组的解法

任课教师李慧

指导教师李慧

成绩(优、良、中、及格、不及格)

华北科技学院基础部

一.实验目的:

1)熟悉求解线性方程组以及数值积分的有关理论和方法;

2)会编制列主元消去法、LU分解法、平方根法、追赶法以及雅可比迭代和高斯-塞德尔迭代法的程序;

3)通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法,体会各种方法的精确度。

二.实验内容:

1.数值积分

梯形公式、辛普森公式、复化求积公式;

2.线性方程组求解

(1)高斯消去法、追赶法;

(2)雅可比迭代法、高斯塞德尔迭代法。

三、实验步骤与分析

1.数值积分的几种方法:

题目:已知积分精确值I=4.006994,分别用复化题型公式和复化辛普森公式计算其值。

I=?02)

+dx

1x

exp(

(1).复化梯形公式

代码:

function I=trapez_v(f,h)

I=h*(sum(f)-(f(1)+f(length(f)))/2);

功能:复化求积公式进行函数积分

调用格式:I=trapez_v(f,h)

%f:等距节点上的函数值序列

%h:步长

程序如下:

clear

lexact=4.006994;

a=0;b=2;

fprintf('\n Extended Trapezoidal Rule\n');

fprintf(' n I Error\n');

n=1;

for k=1:6,n=2 * n;

h=(b-a)/n;i=1:n+1;

x=a+(i-1)*h; f=sqrt(1+exp(x));

I=trapez_v(f,h);

I=h*(sum(f)-(f(1)+f(length(f)))/2);

fprintf('%3.0f %10.5f %10.5f\n',n,I,Iexact-I);

end

结果:

Extended Trapezoidal Rule

n I Error

2 4.08358 -0.07659

4 4.02619 -0.01919

8 4.01180 -0.00480

16 4.00819 -0.00120

32 4.00729 -0.00030

64 4.00707 -0.00008

(2).复化辛普森公式

代码:

M文件:

function I=Simps_v(f,h)

n=length(f)-1;

if n==1,...

fprintf('Data has only one interval'),return; end

if n==2,...

I=h/3*(f(1)+4*f(2)+f(3));

return;end

I=0;

if n==3,...

I=3/8*h*(f(1)+3*f(2)+3*f(3)+f(4));

return;end

I=0;

if 2*floor(n/2)~=n,

I=3/8 * h * (f(n-2)+3*f(n-1)+3*f(n)+f(n+1));

m=n-3;

else

m=n;

end

I=I+(h/3)*(f(1)+4*sum(f(2:2:m))+f(m+1));

if m>2,I=I+(h/3)*2*sum(f(3:2:m));

end

function I=Simps_n(f_name,a,b,n)

h=(b-a)/n;

x=a+(0:n)*h;

f=feval(f_name,x);

I=Simps_v(f,h)

调用格式为: I=Simps_n('f_name',0,2,20)

结果为:

I=

4.0070

2.线性方程组的数值解法

(1)高斯消去法

题目:????????????

??????????????-2313122434024121 ????????????4321x x x x =?

????

???????6202813 代码:

M 文件:

function x = gauss(A, b)

n = length(b);

for k = 1 : n-1

if A(k,k)==0

fprintf('Error: the %dth pivot element equal to zero!\n',k); return;

end

index = [k+1:n];

m = -A(index,k)/A(k,k);

A(index,index) = A(index,index) + m*A(k,index);

b(index) = b(index) + m*b(k);

end

x = zeros(n,1);

x(n) = b(n)/A(n,n);

for i = n-1:-1:1

x(i) = ( b(i) - A(i,[i+1:n])*x([i+1:n]) )/A(i,i);

end

在Command Window 输入

>>A=[1 2 1 4;

2 0 4 3;

4 2 2 1;

-3 1 3 2];

b=[13,28,20,6]'

b =

13

28

20

6

>> gauss(A,b)

结果: ans =

3

-1

4

2

(2)追赶法

题目:???????????????

?????????????????------5300342002310012 ????????????4321x x x x =?????

???????-1216 代码:

function x=zhuiganfa %首先说明:追赶法是适用于三对角矩阵的线性方程组求解的方法,并不适用于其他类型矩阵。

%定义三对角矩阵A 的各组成单元。方程为Ax=d

% b 为A 的对角线元素(1~n),a 为-1对角线元素(2~n),c 为+1对角线元素(1~n-1)。 % A=[2 -1 0 0

% -1 3 -2 0

% 0 -2 4 -3

% 0 0 -3 5]

a=[0 -1 -2 -3];c=[-1 -2 -3];b=[2 3 4 5];d=[6 1 -2 1];

n=length(b);

u0=0;y0=0;a(1)=0;

%“追”的过程

L(1)=b(1)-a(1)*u0;

y(1)=(d(1)-y0*a(1))/L(1);

u(1)=c(1)/L(1);

for i=2:(n-1)

L(i)=b(i)-a(i)*u(i-1);

y(i)=(d(i)-y(i-1)*a(i))/L(i);

u(i)=c(i)/L(i);

end

L(n)=b(n)-a(n)*u(n-1);

y(n)=(d(n)-y(n-1)*a(n))/L(n);

%“赶”的过程

x(n)=y(n);

for i=(n-1):-1:1

x(i)=y(i)-u(i)*x(i+1);

end

在命令窗口输入:

A=[2 -1 0 0;

-1 3 -2 0;

0 -2 4 -3;

0 0 -3 5];

a=[0 -1 -2 -3];c=[-1 -2 -3];b=[2 3 4 5];d=[6 1 -2 1];

zhuiganfa

结果:ans =

5.0000 4.0000 3.0000 2.0000

(3)雅克比迭代法和高斯赛德尔迭代法

题目:分别用雅克比迭代法和高斯赛德尔迭代法求解线性方程组Ax=B,其中:

A=[4 -1 1;4 -8 1;-2 1 5] ; B=[7 -21 15]’。

代码:

a.雅克比迭代

M文件:

function X=jacobi(A,B,P,delta,maxl)

fprintf('It. k x(1) x(2) x(3) err\n');

N=length(B);

for k=1:maxl

for j=1:N

x(j)=(B(j)-A(j,[1:j-1,j+1:N])*P([1:j-1,j+1:N]))/A(j,j); end

err=abs(norm(x'-P));

fprintf('%3.0f,%10.6f,%10.6f,%10.6f,%10.6f\n', k, x, err); relerr=err/(norm(x)+eps);

P=x';

if(err

break

end

end

x=x'

命令窗口输入以下命令,并执行m文件。

>> A=[4 -1 1;4 -8 1;-2 1 5];

B=[7 -21 15]';

P=[0 0 0]';

delta=0.0001;

max1=12;

det(A);

eig(A);

X=jacobi(A,B,P,delta,maxl);

计算结果:

It. k x(1) x(2) x(3) err

1, 1.750000, 2.625000, 3.000000, 4.353519

2, 1.656250, 3.875000, 3.175000, 1.265667

3, 1.925000, 3.850000, 2.887500, 0.394345

4, 1.990625, 3.948437, 3.000000, 0.163257

5, 1.987109, 3.995312, 3.006563, 0.047463

6, 1.997187, 3.994375, 2.995781, 0.014788

7, 1.999648, 3.998066, 3.000000, 0.006122

8, 1.999517, 3.999824, 3.000246, 0.001780

9, 1.999895, 3.999789, 2.999842, 0.000555

10, 1.999987, 3.999927, 3.000000, 0.000230

X =

2.0000

3.9999

3.0000

b.高斯赛德尔迭代

M文件:

function X=jseid(A,B,P,delta,max1)

N=length(B)

for k=1:max1

for j=1:N

if j==1

X(1)=(B(1)-A(1,2:N)*P(2:N))/A(1,1);

elseif j==N

X(N)=(B(N)-A(N,1:N-1)*(X(1:N-1))')/A(N,N);

else

X(j)=(B(j)-A(j,1:j-1)*X(1:j-1)-A(j,j+1:N)*P(j+1:N))/A(j,j); end

end

err=abs(norm(X'-P));

relerr=err/(norm(X)+eps);

P=X';

if(err

break

end

end

X

命令窗口输入以下命令,并执行m文件。

>> A=[4 -1 1;4 -8 1;-2 1 5];

B=[7 -21 15]';

P=[0 0 0]';

delta=0.0000001;

max1=80;

X=gseid(A,B,P,delta,max1)

计算结果:

X =

2.0000 4.0000

3.0000

四.实验总结

这次实验让我对MATLAB的使用更加熟练。明白了如何定义M文件以及调用M文件得到结果。也体会到数值微分的几种方法各自的特点以及线性方程组几种解法的优越性。MATLAB软件在计算方面的确发挥了重要的作用,我应该对它有更进一步的学习,并熟练应用它来解决问题。

第二章 线性方程组的数值解法

第二章 线性方程组的数值解法 在科技、工程技术、社会经济等各个领域中很多问题常常归结到求解线性方程组。例如电学中的网络问题,样条函数问题,构造求解微分方程的差分格式和工程力学中用有限元方法解连续介质力学问题,以及经济学中求解投入产出模型等都导致求解线性方程组。 n 阶线性方程组的一般形式为 ?? ???? ?=+++=+++=+++n n nn n n n n n n b x a x a x a b x a x a x a b x a x a x a L K K K K L L 22112 222212********* (1.1) 其矩阵形式为 b Ax = (1.2) 其中 ????? ???????=??? ?????????=? ? ????? ?????= n n nn n n n n b b b b x x x x a a a a a a a a a A M M L K K K K L L 2121212222111211 ),,2,1,(n j i a ij L =,),,2,1(n i b i L =均为实数,i b 不全为0,且A 为非奇异。 关于线性方程组的数值解法一般分为两类: 1.直接法 就是不考虑计算机过程中的舍入误差时,经有限次的四则运算得到方程组准确解的方法。 而实际中由于计算机字长的限制,舍入误差的存在和影响,这种算法也只能求得线性方程组的近似解。本章将阐述这类算法中最基本的消去法及其某些变形。这些方法主要用于求解低阶稠密系数矩阵方程组。 2.迭代法 从某个解的近似值出发,通过构造一个无穷序列,用某种极限过程去逐步逼近线性方程组的精确解的方法。本章主要介绍迭代法与迭代法。迭代法是解大型稀疏矩阵(矩阵阶数高而且零元素较多)的线性方程组的重要方法。 §1 高斯)(Gauss 消去法 1.1 Gauss 消去法 Gauss 消去法是将线性方程组化成等价的三角形方程组求解。首先举例说明Gauss

matlab数值微积分与方程数值求解

电子一班王申江 实验九数值微积分与方程数值求解 一、实验目的 1、掌握求数值导数和数值积分的方法 2、掌握代数方程数值求解的方法 3、掌握常微分方程数值求解的方法 二、实验内容 1、求函数在指定点的数值导数。 () 23 2 123,1,2,3 026 x x x f x x x x x == >>syms x >>f=[x x^2 x^3;1 2*x 3*x^2;0 2 6*x]; >>F=det(f) F=2*x^3 >>h=0.1 >>x=[0:h:4]; >>f=2*x^3; >>[dy,dx]=diff_ctr(f,h,1); >>y1=dy(dx==1) y1=6.0000 >>y2=dy(dx==2)

y2=24.0000 >>y3=dy(dx==3) y3=54.0000 2、用数值方法求定积分。 (1) 210I π =?的近似值 a=inline('sqrt(cos(t.^2)+4*sin((2*t).^2)+1)'); I=quadl(a,0,2*pi) I = 6.7992 + 3.1526i (2)()1 202ln 11x I dx x +=+? b=inline('log(1+x)./(1+x.^2)'); I=quadl(b,0,1) I = 0.2722 3、分别用3种不同的数值方法解线性方程组。 6525494133422139211 x y z u x y z u x y z u x y u +-+=-??-+-=??++-=??-+=? A=[6,5,-2,5;9,-1,4,-1;3,4,2,-2;3,-9,0,2]; b=[-4,13,1,11]'; x=A\b

线性方程组的数值解法实验

线性方程组的数值解法 实验 题目 用Gauss消元法和Seidel迭代法求线性方程组的解。 实验目的 通过本次实验了解Gauss消元法和Seidel迭代法的基本原理,掌握其算法,学会用Matlab编程进行计算,并能用这些方法解决实际问题。 Gauss 顺序消元法的基本原理算法: (1)输入:,. A b (2)对1,2,,1 k n =???-做 1)if0 kk a=then输出算法失败信息,停机; 2)对1,, i k n =+???做 1/; ik ik ik kk a l a a ←= 2; i i ik k b b l b =- 3对1,, j k n =+???做; ij ij ik kj a a l a =- (3)if0 nn a=then输出算法失败信息,并停机else做 1)/; n n n nn b x b a ←= 2)对1,,2,1 i n =-???做 1 ()/; n i i i ij j ii j i b x b a x a =+ ←=-∑ (4)输出方程组的解.X

流程图见附页 Seidel 迭代法的基本原理算法: (1)输入:,; A b (2)输入:初始解向量 ;x (3)对1,2,, i n =???做 1) 1 ()/; n i i ij j ii j j i y b a x a = ≠ =-∑ 2); i i i e y x =- 3); i i x y = (4)if 1 {||} max i i n eε ≤≤ 时方程组无解,当RB RA n ==时方程组有唯一解,当RB RA n =<时,方程组有无穷多解; ②根据公式 (1)()() (1)()() (,1,,) (1,,) k k k ij ij ik kj k k k i i ik k a a l a i j k n b b l b i k n + + =-=+??? =-=+??? 将增广矩阵[,] B A b =化为上三角形矩阵; (2)建立. backsub m文件; (3)调用. backsub m文件,在Matlab命令窗口输入,A b矩阵,再输入[,,,](,) RA RB n X gaus A b =,进行Matlab实现得出方程的解。

常微分方程初值问题数值解法.

常微分方程初值问题数值解法 朱欲辉 (浙江海洋学院数理信息学院, 浙江舟山316004) [摘要]:在常微分方程的课程中讨论的都是对一些典型方程求解析解的方法.然而在生产实 际和科学研究中所遇到的问题往往很复杂, 在很多情况下都不可能给出解的解析表达式. 本篇文章详细介绍了常微分方程初值问题的一些数值方法, 导出了若干种数值方法, 如Euler法、改进的Euler法、Runge-Kutta法以及线性多步法中的Adams显隐式公式和预测校正 公式, 并且对其稳定性及收敛性作了理论分析. 最后给出了数值例子, 分别用不同的方法计算出近似解, 从得出的结果对比各种方法的优缺点. [关键词]:常微分方程;初值问题; 数值方法; 收敛性; 稳定性; 误差估计 Numerical Method for Initial-Value Problems Zhu Yuhui (School of Mathematics, Physics, and Information Science, Zhejiang Ocean University, Zhoushan, Zhejiang 316004) [Abstract]:In the course about ordinary differential equations, the methods for analytic solutions of some typical equations are often discussed. However, in scientific research, the problems are very complex and the analytic solutions about these problems can’t be e xpressed explicitly. In this paper, some numerical methods for the initial-value problems are introduced. these methods include Euler method, improved Euler method, Runge-Kutta method and some linear multistep method (e.g. Adams formula and predicted-corrected formula). The stability and convergence about the methods are presented. Some numerical examples are give to demonstrate the effectiveness and accuracy of theoretical analysis. [Keywords]:Ordinary differential equation; Initial-value problem; Numerical method; Convergence; Stability;Error estimate

线性方程组的解法

线性方程组的解法 1 引言 在科学研究和大型工程设计中出现了越来越多的数学问题,而这些问题往往需要求数值解。在进行数值求解时,经离散后,常常归结为求解形如Ax= b的大型线性方程组。而如插值公式,拟合公式等的建立,微分方程差分格式的构造等,均可归结为求解线性方程组的问题.在工程技术的科学计算中,线性方程组的求解也是最基本的工作之一.因此,线性方程组的解法一直是科学和工程计算中研究最为普遍的问题,它在数值分析中占有极其重要的地位。20世纪50年代至70年代,由于电子计算机的发展,人们开始考虑和研究在计算机上用迭代法求线性方程组Ax =b的近似解,用某种极限过程去逐渐逼近精确解,并发展了许多非常有效的迭代方法,迭代法具有需要计算机存储单元少、程序设计简单、原始系数矩阵在计算过程中始终不变等优点。例如Jacobi方法、Gauss—Seidel 方法、SOR方法、SSOR 方法,这几种迭代方法是最常用的一阶线性定常迭代法。 2 主要算法 20世纪50年代至70年代,人们开始考虑和研究用迭代法求解线性方程组。 Ax = b (1) 的近似解,发展了许多有效的方法,其中有Jacobi方法、Gauss—Seidel方法,SOR方法、SSOR方法,这几种迭代方法均属一阶线性定常迭代法,即若系数矩阵A的一个分裂:A =M-N ;M 为可逆矩阵,线性方程组(1)化为: (M-N)X =b; →M X = NX + b; →X= M -1NX+ M-1b 得到迭代方法的一般公式: X(k+1)=HX(k)+d (2) 其中:H =MN-1,d=M-1b,对任意初始向量X(0) 一阶定常迭代法收敛的充分必要条件是: 迭代矩H的谱半径小于1,即ρ(H) < 1;又因为对于任何矩阵范数恒有ρ(H)≤‖H‖,故又可得到收敛的一个充分条件为:‖H‖< 1。 2.1 Jacobi迭代法 若D为A的对角素构成的对角矩阵,且对角线元素全不为零。系数矩阵A的一个分解:A =

常微分方程初值问题的数值解法

第七章 常微分方程初值问题的数值解法 --------学习小结 一、本章学习体会 通过本章的学习,我了解了常微分方程初值问题的计算方法,对于解决那些很难求解出解析表达式的,甚至有解析表达式但是解不出具体的值的常微分方程非常有用。在这一章里求解常微分方程的基本思想是将初值问题进行离散化,然后进行迭代求解。在这里将初值问题离散化的方法有三种,分别是差商代替导数的方法、Taylor 级数法和数值积分法。常微分方程初值问题的数值解法的分类有显示方法和隐式方法,或者可以分为单步法和多步法。在这里单步法是指计算第n+1个y 的值时,只用到前一步的值,而多步法则是指计算第n+1个y 的值时,用到了前几步的值。通过对本章的学习,已经能熟练掌握如何用Taylor 级数法去求解单步法中各方法的公式和截断误差,但是对线性多步法的求解理解不怎么透切,特别是计算过程较复杂的推理。 在本章的学习过程中还遇到不少问题,比如本章知识点多,公式多,在做题时容易混淆,其次对几种R-K 公式的理解不够透彻,处理一个实际问题时,不知道选取哪一种公式,通过课本里面几种方法的计算比较得知其误差并不一样,,这个还需要自己在往后的实际应用中多多实践留意并总结。 二、本章知识梳理 7.1 常微分方程初值问题的数值解法一般概念 步长h ,取节点0,(0,1,...,)n t t nh n M =+=,且M t T ≤,则初值问题000 '(,),()y f t y t t T y t y =≤≤??=?的数值解法的一般形式是 1(,,,...,,)0,(0,1,...,)n n n n k F t y y y h n M k ++==- 7.2 显示单步法 7.2.1 显示单步法的一般形式 1(,,),(0,1,...,1)n n n n y y h t y h n M ?+=+=-

线性方程组的解法及其应用

线性方程组的解法及其应用 The solution of linear equation and its application 专业:测控技术与仪器 班级: 2010-1班 作者:刘颖 学号: 20100310110105

摘要 线性方程组是线性代数的一个重要组成部分,也在现实生产生活中有着广泛的运用,在电子工程、软件开发、人员管理、交通运输等领域都起着重要的作用。在一些学科领域的研究中,线性方程组也有着不可撼动的辅助性作用,在实验和调查后期利用线性方程组对大量的数据进行处理是很方便简捷的选择。本文主要围绕如何解线性方程组来进行讲解,对于不同类型的线性方程组的不同方法,并简述线性方程组的一些实际应用。 关键词: 齐次线性方程组,非齐次线性方程组,克莱姆法则,消元法,矩阵,矩阵的秩,特解,通解。

Abstract Linear equations linear algebra is one of the important component parts, and in real life has extensive production use,and it plays an important role in electronic engineering, software development, personnel management, transportation, etc. In some discipline study, it also has the reigns of linear equations of the auxiliary function.In experiment and survey using the linear equations of the late on the data processing is very convenient simple choice. This article, focusing on how to solve linear equations to explain, for different types of linear equations of different methods, and briefly introduces some of the practical application of linear equations. Keywords: Homogeneous linear equations, Non homogeneous linear equation,Clem’s law,Elimination method,Matrix,Rank of matrix,Special solution,General solution.

实验报告七常微分方程初值问题的数值解法

实验报告七常微分方程 初值问题的数值解法 Document number【SA80SAB-SAA9SYT-SAATC-SA6UT-SA18】

浙江大学城市学院实验报告 课程名称 数值计算方法 实验项目名称 常微分方程初值问题的数值解法 实验成绩 指导老师(签名 ) 日期 2015/12/16 一. 实验目的和要求 1. 用Matlab 软件掌握求微分方程数值解的欧拉方法和龙格-库塔方法; 2. 通过实例学习用微分方程模型解决简化的实际问题。 二. 实验内容和原理 编程题2-1要求写出Matlab 源程序(m 文件),并有适当的注释语句;分析应用题2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab 源程序和运行结果和结果的解释、算法的分析写在实验报告上。 2-1 编程 编写用向前欧拉公式和改进欧拉公式求微分方程数值解的Matlab 程序,问题如下: 在区间[],a b 内(1)N +个等距点处,逼近下列初值问题的解,并对程序的每一句添上注释语句。 Euler 法 y=euler(a,b,n,y0,f,f1,b1) 改进Euler 法 y=eulerpro(a,b,n,y0,f,f1,b1) 2-2 分析应用题 假设等分区间数100n =,用欧拉法和改进欧拉法在区间[0,10]t ∈内求解初值问题 ()()20(0)10y t y t y '=-??=? 并作出解的曲线图形,同时将方程的解析解也画在同一张图上,并作比较,分析这两种方法的精度。 2-3 分析应用题 用以下三种不同的方法求下述微分方程的数值解,取10h = 画出解的图形,与精确值比较并进行分析。 1)欧拉法; 2)改进欧拉法; 3)龙格-库塔方法; 2-4 分析应用题 考虑一个涉及到社会上与众不同的人的繁衍问题模型。假设在时刻t (单位为年), 社会上有人口()x t 人,又假设所有与众不同的人与别的与众不同的人结婚后所生后代也是与众不同的人。而固定比例为r 的所有其他的后代也是与众不同的人。如果对所有人来说出生率假定为常数b ,又如果普通的人和与众不同的人的婚配是任意的,则此问题可以用微分方程表示为:

实验报告七 常微分方程初值问题的数值解法

课程名称 数值计算方法 实验项目名称 常微分方程初值问题的数值解法 实验成绩 指导老师(签名 ) 日期 2015/12/16 一. 实验目的和要求 1. 用Matlab 软件掌握求微分方程数值解的欧拉方法和龙格-库塔方法; 2. 通过实例学习用微分方程模型解决简化的实际问题。 二. 实验内容和原理 编程题2-1要求写出Matlab 源程序(m 文件),并有适当的注释语句;分析应用题2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab 源程序和运行结果和结果的解释、算法的分析写在实验报告上。 2-1 编程 编写用向前欧拉公式和改进欧拉公式求微分方程数值解的Matlab 程序,问题如下: 在区间[],a b 内(1)N +个等距点处,逼近下列初值问题的解,并对程序的每一句添上注释语句。 0(,)()y f x y a x b y a y '=≤≤= Euler 法 y=euler(a,b,n,y0,f,f1,b1) 改进Euler 法 y=eulerpro(a,b,n,y0,f,f1,b1) 2-2 分析应用题 假设等分区间数100n =,用欧拉法和改进欧拉法在区间[0,10]t ∈内求解初值问题 ()()20 (0)10 y t y t y '=-?? =? 并作出解的曲线图形,同时将方程的解析解也画在同一张图上,并作比较,分析这两种方法的精度。 2-3 分析应用题 用以下三种不同的方法求下述微分方程的数值解,取10h =

201 (0)1 y y x x y '=+≤≤?? =? 画出解的图形,与精确值比较并进行分析。 1)欧拉法; 2)改进欧拉法; 3)龙格-库塔方法; 2-4 分析应用题 考虑一个涉及到社会上与众不同的人的繁衍问题模型。假设在时刻t (单位为年),社会上有人口()x t 人,又假设所有与众不同的人与别的与众不同的人结婚后所生后代也是与众不同的人。而固定比例为r 的所有其他的后代也是与众不同的人。如果对所有人来说出生率假定为常数b ,又如果普通的人和与众不同的人的婚配是任意的,则此问题可以用微分方程表示为: () (1())dp t rb p t dt =- 其中变量()()()i p t x t x t =表示在时刻t 社会上与众不同的人的比例,()i x t 表示在时刻t 人口中与众不同的人的数量。 1)假定(0)0.01,0.02p b ==和0.1r =,当步长为1h =年时,求从0t =到50t =解()p t 的近似值,并作出近似解的曲线图形。 2)精确求出微分方程的解()p t ,并将你当50t =时在分题(b)中得到的结果与此时的精确值进行比较。 【MATLAB 相关函数】 求微分方程的解析解及其数值的代入 dsolve(‘egn1’, ‘egn2’,L ‘x ’) subs (expr, {x,y,…}, {x1,y1,…} ) 其中‘egn i ’表示第i 个方程,‘x ’表示微分方程中的自变量,默认时自变量为t 。 subs 命令中的expr 、x 、y 为符合型表达式,x 、y 分别用数值x1、x2代入。 >> syms x y z >> subs('x+y+z',{x,y,z},{1,2,3}) ans = 6 >> syms x >> subs('x^2',x,2) ans = 4 >> s=dsolve(‘12Dy y ∧=+’, ‘(0)1y =’, ‘x ’) ans = tan(14)x pi -*

线性方程组数值解法总结

好久没来论坛,刚刚发现以前的帖子现在那么火很欣慰,谢谢大家支持! 今天趁着不想做其他事情,把线性方程组的数值解法总结下,有不足的地方希望大神指教!数学建模中也会用到线性方程组的解法,你会发现上10个的方程手动解得话把你累个半死,而且不一定有结果,直接用matlab的函数,可以,关键是你不理解用着你安心吗?你怎么知道解得对不对? 我打算开个长久帖子,直到讲完为止!这是第一讲,如有纰漏请多多直接,大家一起交流!线性方程组解法有两大类:直接法和迭代法 直接法是解精确解,这里主要讲一下Gauss消去法,目前求解中小型线性方程组(阶数不超过1000),它是常用的方法,一般用于系数矩阵稠密,而有没有特殊结构的线性方程组。 首先,有三角形方程组的解法引入Gauss消去法,下三角方程组用前代法求解, 这个很简单,就是通过第一个解第二个,然后一直这样直到解出最后一个未知数,代码如下:前代法: function [b]= qiandai_method(L,b) n=size(L,1); %n 矩阵L的行数 for j=1:n-1 %前代法求解结果存放在b中 b(j)=b(j)/L(j,j); b(j+1:n)=b(j+1:n)-b(j)*L(j+1:n,j); end b(n)=b(n)/L(n,n); 上三角方程组用回代法,和前面一样就是从下面开始解x,代码: 后代法: function [y]=houdai_method(U,y) n=size(U,1); %n 矩阵L的行数 for j=n:-1:2 %后代法求解结果存放在y中 y(j)=y(j)/U(j,j); y(1:j-1)=y(1:j-1)-y(j)*U(1:j-1,j); end y(1)=y(1)/U(1,1); Gauss消去的前提就是这两个算法: 具体思想是把任何一个线性方程组的系数矩阵A,分解为一个上三角和一个下三角的乘积,即A=LU,其中L为下三角,U为上三角。 那么具体怎么做呢? 有高斯变换,什么是高斯变换?由于时间有限我不可能去输入公式,所以我用最平白的话把它描述出来。 你先想一下怎么把一个矩阵的某一列的从第j个分量后全部变0? 高斯变换就是通过每次一个矩阵Li把A的第i列对角线元素以下的都变为0,最后把这么多Li一次左乘起来就是一个矩阵L’=L(n-1)L(n-2)…L2L1,而L’A=U, 那么L=L’的转置,这样就得到了A得分解。 我们要求Ax=b A=LU

浅析线性方程组的解法

目录 摘要................................................................................... I Abstract. ............................................................................. II 第一章绪论............................................................................ I 1.1引言 (1) 1.2线性方程组解的求解方法的研究现状 (1) 1.3本文对线性方程组解法的研究结构 (1) 第二章线性方程组理论基础 (2) 2.1 线性方程组概念 (2) 2.2 线性方程组的解的情况分析 (2) 2.3 齐次线性方程组解的结构 (4) 2.4非齐次线性方程组解的结构 (4) 第三章线性方程组的数值解 (5) 3.1 迭代法 (5) 3.1.1 Jacobi方法 (6) 3.2.2 高斯-赛德尔方法 (8) 第四章全文总结和展望 (10) 4.1 全文总结 (10) 4.2 未来展望 (10) 参考文献 (11) 致谢................................................................. 错误!未定义书签。

线性方程组的求解方法 学生:指导教师: 摘要:本文在对线性方程组解的结构的研究背景与意义分析的基础上,对线性方程组的求解方法的研究现状进行了介绍,之后针对线性方程组展开了研究,包括线性方程组的概念、线性方程组的求解方法以及线性方程组的作用等,在对线性方程组有了全面的认识后,基于线性方程组解的结构展开了研究,包括线性方程组解的基本定理,齐次和非齐次线性方程组解的结构形式,以及齐次和非齐次线性方程组解的结构,我们用迭代法中最常用的Jacobi方法中的相似上三角矩阵定理和迭代法中的收敛性讨论线性方程组的数值解法,并用高斯-赛德尔方法进行验证。得到线性方程组的数值解的一般方法。最后,对全文进行了总结和展望。 关键词:线性方程组;数值解;迭代法;Jacobi方法;高斯-赛德尔方法

线性方程组的直接解法

第2章线性方程组的直接解法 2.1实验目的 理解线性方程组计算机解法中的直接解法的求解过程和特点,学习科学计算的方法和简单的编程技术。 2.2概念与结论 1. n阶线性方程组 如果未知量的个数为 n ,而且关于这些未知量x1,x2, …,x n的幂次都是一次的(线性的)那末, n 个方程 a11x1+a12x2+ … +a1n x n=b1 ┆┆┆ (1) a n1x1+a n2x2+ … +a nn x n= b n 构成一个含n个未知量的线性方程组,称为n阶线性方程组。其中,系数a11,…,a1n,a21, …,a2n, …,a n1, …,a nn 和b1, …,b n都是给定的常数。 方程组(1)也常用矩阵的形式表示,写为 Ax=b 其中,A是由系数按次序排列构成的一个n阶矩阵,称为方程组的系数矩阵,x和b都是n维向量,b称为方程组的右端向量。 2. n阶线性方程组的解 使方程组(1)中每一个方程都成立的一组数x1*,x2*, …,x n*称为式(1)的解,把它记为向量的形式,称为解向量. 3.一些特殊的线性方程组 1) 上三角方程组 2) 三对角方程组 ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - n n nn n n n n n n n n b b b x x x a a a a a a a a a a a a 2 1 2 1 1 1 1 2 1 2 23 22 1 1 1 13 12 11

4.矩阵的Doolittle 分解 5.Doolittle 分解的紧凑格式 6.矩阵的Crout 分解 ????????? ? ??=?????????? ???????????? ? ?--n n n n n n d d d x x x b a c b c b a c b a c b 21 2111333 22211???? ?? ? ? ???????? ??=??????? ??nn n n n n nn n n n n u u u u u u l l l a a a a a a a a a 222 11211 2 1 21 2 1 2222111211111 ???? ?? ? ? ???????? ??=??????? ??11 1 21122 1 2221 11 2 1 2222111211 n n nn n n nn n n n n u u u l l l l l l a a a a a a a a a ????? ?? ? ??nn n n n n n n u l l l u u l l u u u l u u u u 3 2 1 333323122322211131211

线性方程组的数值解法

第三章线性方程组地数值解法 范数 (1> 常用范数 ① 向量 1- 范数: ② 向量 2- 范数: ③ 向量∞- 范数: ④ 向量 p- 范数: 向量1- 范数,向量2- 范数,向量∞- 范数实际上为任意 p- 范数地特例. (2> 矩阵范数 设,则 (1>,A地行范数 (2>,A地列范数 (3>,A地 2- 范数,也称谱范数 (4>, F- 范数 其中指矩阵地最大特征值 (3>谱半径(用于判断迭代法地收敛值> 设为矩阵A地特征值,则

称为A地谱半径 谱半径小于任何半径,若,则 (4>设A为非奇异矩阵,称 为A地条件数 矩阵地条件数与范数选取有关,通常有 显然当A对称时 直接法 Gauss消去法 ①Gauss顺序消去法 对线性方程组Ax=b,设,按顺序消元法,写出增广矩阵(A┆b>第一步,写出,将2~n行中地变为0 第k步,写出,将k+1~n行中地变为0 具体步骤可参照下面地例题 例5:用Gauss消去法解方程组

解: Guass列主元消去法 消去过程与Guass消元法基本相同,不同地是每一步消元时,都要将所选到地绝对值最大元素作为主元. 具体分析参见习题详解1 ②矩阵三角(LU>分解法 基本思想:将Ax=b化为LUx=b,令Ux=y 可得Ly=b,Ux=y,相当于先求出y,再求出x 其中,L,U分别为下三角矩阵和上三角矩阵 若L为单位下三角矩阵,则称为Doolittle分解。若U为单位上三角矩阵,则称为Crout分解. ③矩阵Doolittle分解法

计算公式 具体解题见习题详解2 注意计算顺序,先行再列,用简图表示为 虚线上地元素为对角元,划为行元. ④ 分解法 计算公式

线性方程组的几种求解方法

线性方程组的几种解法 线性方程组形式如下: 常记为矩阵形式 其中 一、高斯消元法 高斯(Gauss)消元法的基本思想是:通过一系列的加减消元运算,也就是代数中的加减消去法,将方程组化为上三角矩阵;然后,再逐一回代求解出x 向量。现举例说明如下: (一)消元过程 第一步:将(1)/3使x 1的系数化为1 得 再将(2)、(3)式中x 1的系数都化为零,即由(2)-2×(1)(1) 得 )1(32)2( (03) 4 32=+x x )1(321)1(......23132=++ x x x

由(3)-4×(1)(1) 得 第二步:将(2)(1) 除以2/3,使x 2系数化为1,得 再将(3)(1) 式中x 2系数化为零,即 由(3)(1) -(-14/3)*(2)(2) ,得 第三步:将(3)(2) 除以18/3,使x 3系数化为1,得 经消元后,得到如下三角代数方程组: (二)回代过程 由(3)(3) 得 x 3=1, 将x 3代入(2)(2) 得x 2=-2, 将x 2 、x 3代入(1)(1) 得x 2=1 所以,本题解为[x]=[1,2,-1]T (三)、用矩阵演示进行消元过程 第一步: 先将方程写成增广矩阵的形式 第二步:然后对矩阵进行初等行变换 初等行变换包含如下操作 (1) 将某行同乘或同除一个非零实数 ) 3(3)3(......1-=x )2(3)3( (63) 18-=x ) 2(32) 2(......02=+x x ) 1(32)3( (63) 10 314-=-- x x

(2)将某行加入到另一行 (3)将任意两行互换 第三步:将增广矩阵变换成上三角矩阵,即主对角线全为1,左下三角矩阵全为0,形式如下: 示例: (四)高斯消元的公式 综合以上讨论,不难看出,高斯消元法解方程组的公式为 1.消元 (1)令 a ij(1) = a ij , (i,j=1,2,3,…,n) b i(1) =b i , (i=1,2,3,…,n) (2)对k=1到n-1,若a kk(k)≠0,进行 l ik = a ik(k) / a kk(k) , (i=k+1,k+2,…,n) a ij(k+1) = a ij(k) - l ik * a kj(k), (i,j= k+1,k+2,…,n) b i(k+1) = b i(k) - l ik * b k(k), (i= k+1,k+2,…,n) 2.回代 若a nn(n) ≠0 x n = b n(n) / a nn(n) x i = (b i(i) – sgm(a ij(i) * x j)/- a ii(i),(i = n-1,n-2,…,1),( j = i+1,i+2,…,n ) (五)高斯消元法的条件 消元过程要求a ii(i) ≠0 (i=1,2,…,n),回代过程则进一步要求a nn(n) ≠0,但就方程组Ax=b 讲,a ii(i)是否等于0时无法事先看出来的。 注意A的顺序主子式D i(i=1,2,…,n),在消元的过程中不变,这是因为消元所作的变换是“将某行的若干倍加到另一行”。若高斯消元法的过程进行了k-1步(a ii(i) ≠0,i

计算方法实验报告-线性方程组的数值解法

重庆大学 学生实验报告实验课程名称计算方法 开课实验室DS1421 学院年级专业 学生姓名学号 开课时间至学年第学期

1.实验目的 (1)高斯列主元消去法求解线性方程组的过程 (2)熟悉用迭代法求解线性方程组的过程 (3)设计出相应的算法,编制相应的函数子程序 2.实验内容 分别用高斯列主元消去法 ,Jacobi 迭代法,Gauss--Saidel 迭代法,超松弛迭代法求解线性方程组 ????? ???????-=????????????????????????------725101391444321131243301024321x x x x 3.实验过程 解:(1)高斯列主元消去法 编制高斯列主元消去法的M 文件程序如下: %高斯列主元消元法求解线性方程组Ax=b %A 为输入矩阵系数,b 为方程组右端系数 %方程组的解保存在x 变量中 format long;%设置为长格式显示,显示15位小数 A=[2,10,0,-3;-3,-4,-12,13;1,2,3,-4;4,14,9,-13] b=[10,5,-2,7]' [m,n]=size(A); %先检查系数正确性 if m~=n error('矩阵A 的行数和列数必须相同'); return; end if m~=size(b) error('b 的大小必须和A 的行数或A 的列数相同'); return; end %再检查方程是否存在唯一解 if rank(A)~=rank([A,b]) error('A 矩阵的秩和增广矩阵的秩不相同,方程不存在唯一解'); return; end c=n+1; A(:,c)=b; %(增广) for k=1:n-1

实验09 数值微积分与方程数值解(第6章)

实验09 数值微积分与方程数值求解 (第6章 MATLAB 数值计算) 一、实验目的 1. 掌握求数值导数和数值积分的方法。 2. 掌握代数方程数值求解的方法。 3. 掌握常微分方程数值求解的方法。 二、实验内容 1. 求函数在指定点的数值导数 232()1 23,1,2,302 6x x x f x x x x x == 程序及运行结果: 2. 用数值方法求定积分 (1) 22210 cos 4sin(2)1I t t dt π = ++? 的近似值。 程序及运行结果: 《数学软件》课内实验 王平

(2) 222 1I dx x π =+? 程序及运行结果: 3. 分别用3种不同的数值方法解线性方程组 6525494133422139211 x y z u x y z u x y z u x y u +-+=-??-+-=? ? ++-=??-+=? 程序及运行结果: 4. 求非齐次线性方程组的通解 123412341 2342736352249472 x x x x x x x x x x x x +++=?? +++=??+++=? 5. 求代数方程的数值解 (1) 3x +sin x -e x =0在x 0=1.5附近的根。 程序及运行结果(提示:要用教材中的函数程序line_solution ): (2) 在给定的初值x 0=1,y 0=1,z 0=1下,求方程组的数值解。 23 sin ln 70 3210 50y x y z x z x y z ?++-=?+- +=??++-=?

6. 求函数在指定区间的极值 (1) 3cos log ()x x x x x f x e ++=在(0,1)内的最小值。 (2) 332 12112122(,)2410f x x x x x x x x =+-+在[0,0]附近的最小值点和最小值。 7. 求微分方程的数值解,并绘制解的曲线 22 50(0)0 '(0)0xd y dy y dx dx y y ?-+=??? =??=??? 程序及运行结果(注意:参数中不能取0,用足够小的正数代替): 令y 2=y,y 1=y ',将二阶方程转化为一阶方程组: '112' 21 12 5 1(0)0,(0)0 y y y x x y y y y ?=-??=??==?? 8. 求微分方程组的数值解,并绘制解的曲线 123213 312123'''0.51(0)0,(0)1,(0)1 y y y y y y y y y y y y =??=-?? =-??===? 程序及运行结果:

数值分析讲义——线性方程组的解法

数值分析讲义 第三章线性方程组的解法 §3.0 引言 §3.1 雅可比(Jacobi)迭代法 §3.2 高斯-塞德尔(Gauss-Seidel)迭代法 §3.3 超松驰迭代法§3.7 三角分解法 §3.4 迭代法的收敛性§3.8 追赶法 §3.5 高斯消去法§3.9 其它应用 §3.6 高斯主元素消去法§3.10 误差分析 §3 作业讲评3 §3.11 总结

§3.0 引言 重要性:解线性代数方程组的有效方法在计算数学和科学计算中具有特殊的地位和作用.如弹性力学、电路分析、热传导和振动、以及社会科学及定量分析商业经济中的各种问题. 分类:线性方程组的解法可分为直接法和迭代法两种方法. (a) 直接法:对于给定的方程组,在没有舍入误差的假设下,能在预定的运算次数内求得精确解.最基本的直接法是Gauss消去法,重要的直接法全都受到Gauss消去法的启发.计算代价高. (b) 迭代法:基于一定的递推格式,产生逼近方程组精确解的近似序列.收敛性是其为迭代法的前提,此外,存在收敛速度与误差估计问题.简单实用,诱人.

§3.1 雅可比Jacobi 迭代法 (AX =b ) 1 基本思想: 与解f (x )=0 的不动点迭代相类似,将AX =b 改写为X =BX +f 的形式,建立雅可比方法的迭代格式:X k +1=BX (k )+f ,其中,B 称为迭代矩阵.其计算精度可控,特别适用于求解系数为大型稀疏矩阵(sparse matrices)的方程组. 2 问题: (a) 如何建立迭代格式? (b) 向量序列{X k }是否收敛以及收敛条件? 3 例题分析: 考虑解方程组??? ??=+--=-+-=--2.453.82102 .72103 21321321x x x x x x x x x (1) 其准确解为X *={1, 1.2, 1.3}. 建立与式(1)相等价的形式: ??? ??++=++=++=84.02.01.083.02.01.072 .02.01.02 13312321x x x x x x x x x (2) 据此建立迭代公式: ?????++=++=++=+++84 .02.01.083.02.01.072.02.01.0)(2)(1)1(3 )(3 )(1)1(23)(2)1(1k k k k k k k k k x x x x x x x x x (3) 取迭代初值0) 0(3 )0(2)0(1===x x x ,迭代结果如下表. JocabiMethodP31.cpp

(整理)常微分方程数值解法

i.常微分方程初值问题数值解法 i.1 常微分方程差分法 考虑常微分方程初值问题:求函数()u t 满足 (,), 0du f t u t T dt =<≤ (i.1a ) 0(0)u u = (i.1b) 其中(,)f t u 是定义在区域G : 0t T ≤≤, u <∞上的函数,0u 和T 是给定的常数。我们假设(,)f t u 对u 满足Lipschitz 条件,即存在常数L 使得 121212(,)(,), [0,]; ,(,)f t u f t u L u u t T u u -≤-?∈∈-∞∞ (i.2) 这一条件保证了(i.1)的解是适定的,即存在,唯一,而且连续依赖于初值0u 。 通常情况下,(i.1)的精确解不可能用简单的解析表达式给出,只能求近似解。本章讨论常微分方程最常用的近似数值解法--差分方法。先来讨论最简单的Euler 法。为此,首先将求解区域[0,]T 离散化为若干个离散点: 0110N N t t t t T -=<<<<=L (i.3) 其中n t hn =,0h >称为步长。 在微积分课程中我们熟知,微商(即导数)是差商的极限。反过来,差商就是微商的近似。在0t t =处,在(i.1a )中用向前差商 10()()u t u t h -代替微商du dt ,便得 10000()()(,())u t u t hf t u t ε=++ 如果忽略误差项0ε,再换个记号,用i u 代替()i u t 便得到 1000(,)u u hf t u -= 一般地,我们有 1Euler (,), 0,1,,1n n n n u u hf t u n N +=+=-L 方法: (i.4) 从(i.1b) 给出的初始值0u 出发,由上式可以依次算出1,,N t t L 上的差分解1,,N u u L 。

相关文档
最新文档