数值分析课程课程设计

数值分析课程课程设计
数值分析课程课程设计

课程设计

我再也回不到大二了,

大学是那么短暂

设计题目数值分析

学生姓名李飞吾

字亏xxxxxxxx

专业班级信息计xxxxx班

指导教师_________________________

设计目的:

通过不同题目的理解,进行算法分析。 通过MATLAB 软件进行编程对题目进行解决。 个别题目设计验证,加深对数值分析的理解。 函数的图像绘制的运用 设计题目: ① 题1. 1 利用逆向递推的方法求解问题,通过条件终止地推 ② 题1. 2

从某个初始值开始,利用递推公式进行积分估值 @题1. 3 绘制Koch 分形曲线,节点之间的关系与坐标变换

(4题2. 1

用高斯消元法的消元过程作矩阵分解, LU 分解

⑤题2. 2 矩阵分解方法求上题中 A 的逆矩阵,针对不同的 b,而重复利用已知的 LU ?题2. 3 验证希尔伯特矩阵的病态性 ,矩阵基本运算

⑦ 题3. 1 用泰勒级数的有限项逼近正弦函数,由图像观察逼近效果 ⑧ 题3. 2 绘制飞机的降落曲线,线性方程组求解,与绘图 ⑤题4. 1 线性拟合的函数表达式的推导,使用了两种代码方法 面题5. 1 用几种不同的方法求积分,观察数值积分的逼近效果 ?题5. 5

求空间曲线L 弧长。求导后使用符号函数积分计算

O 题6. 1 用欧拉公式和四阶龙格-库塔法分别求解下列初值问题,代码搜索内容。 (0题6. 4

常微分方程的解,dsolve()函数使用 @)题8. 2

差分法解常微分方程边值问题,

ode 函数无能为力,Matlab 中提供bvp

食军算器。 solinit=bvpinit(x,yinit,params)sol= bvpsolver(odefun,bcfun,solinit,options) (g 题8. 3 求解圆的半径,圆心。线性方程组解参数

设计总结:

(1) 算法是题目的解题核心,好的算法可以使计算更加精确 (题5.1)

(2) 图形绘制在今后的课程设计,或者是论文中可以用到。 (3) 无法解决的问题,需要请教室友,或者上网查阅。

(4)

MATLAB 是一个很强大的软件,提供了很多内置的数学函数,直接进行解题。 查阅资料时了解到一些 MATLAB 论坛。通过帖子阅读,了解到了 MATLAB 在科

学计算方面,模拟,图形,视频等起到的作用。增加了对“计算科学“的理解。

建议:从学生的工作态度、工作量、设计(论文的)创造性、学术性、使用性及书面表达能力等方面给出评价。

签名: 20 年 月 日

课 程 设 计 主 要 内 容

指 导 老 师 评 语

数值分析谋程设计

1. 1水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的

一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子? ( 15621)试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题解:算法

分析:解该问题主要使用递推算法,关于椰子数目的变化规律可以设起初的椰子数为p o,第一至五次猴子在夜里藏椰子后,椰子的数目分别为p o,p1,p2,P3,P4再设最后每个人分得x个椰子,由题:

R 1 7( p k 1)(k=0,1,2,3,4 ) x -(p5 1)

5 5

所以P5 5x 1, p< p< 1 1利用逆向递推方法求解

R 5妇1, (k=0,1,2,3,4 )

4

MATLAB码:n=input('n='); n= 15621 Array

for x=1:n p=5*x+1; for k=1:5 p=5*p/4+1; end

if p==fix(p), break end end

disp([x,p])

d n

1 x

1. 2 设,I n----------------- dx

05 x

(1) 从10尽可能精确的近似值出发,利用递推公式:

1 I n 5I n 1 —(n 1,2,L 20) n

计算机从I I到I 20的近似值;

(2) 从I30较粗糙的估计值出发,用递推公式:

I n i -I n — (n 30,29,L ,3,2)

5 5n

计算从I l到I20的近似值;

解:首先第一步,估计I o和I30的值:

syms x n;

int (x A0/(5+x),0,1)

ans=log(2)+log(3)-log(5)

eval(ans)

ans=

0.1823

则取I。为0.18

syms x n;

int(xA30/(5+x),0,1) ans =

931322574615478515625*log(2)+931322574615478515625*log(3)-931 322574615478515625*log(5)-79095966183067699902965545527073/46 5817912560

eval(ans)

ans =

MATLAB中小数点后保留四位,由上面计算知道积分的值不为了零。

所以I30的取值为0.00001-0.0001

MATLAB码:

i=input('i=');

i=0.18;

>> if i>=0.1&&i<=0.2

for n=1:1:20

i=-5*i+1/n

end

elseif i>0&&i<=0.0001

for n=30:-1:2

i=(-1/5)*i+1/(5*n)

end

end

i =

1.1336e+005

i =

-5.6679e+005

i =

2.8339e+006

i =

-1.4170e+007

i =

7.0848e+007

i =

-3.5424e+008

i =

1.7712e+009

i =

-8.8560e+009

i =

4.4280e+010

i =

-2.2140e+011

同理输入积分初始值i=0时可以得i=0.0884

结果分析:第二种方法所得的结果相对来说比较精确一些,也比较可靠因为第一种方法每一迭代都将最初的误差放大了五倍,使得最终的误差

越来越大;而第一种方法经过每一次迭代都将误差缩小为初始误差的五分之一,使得最终的误差越来越小,因此相对来说比较可靠,性能较好。

1. 3绘制Koch分形曲线

问题描述:从一条直线段开始,将线段中间的三分之一部分用一个等边

三角形的另两条边代替,形成具有5个结点C0SJ的国写(图1-4);在新的图形中,又将图中每一直线段中间的询之丁部分都用一个等边三角形的另两条边代替,再次形成新的图形(图si t5),cos时,图形中共有17

个结点。这种迭代继续进行下去可以形成Koch分形曲线。

问题分析:考虑由直线段(2个点)产生第一个图形(5个点)的过程,设p1和R分别为原始直线段的两个端点。现在需要在直线段的中间依次插入三个点

P2,R,P4产生第一次迭代的图形(图1-4)。显然,只位于P点右端直线段的三分之一处,已点绕p2旋转60度(逆时针方向)而得到的,故可以处理为向量巳已经正交变换而得到向量P2P3,形成算法如下:

(1) P2 P (任P)/3.

(2) R P 2(P5 R)/3.

(3) P3 % (E E) A T.

在算法的第三步中,A为正交矩阵。

这一算法将根据初始数据(P和R点的坐标),产生图1-4中5个结点的

坐标。这5个结点的坐标数组,组成一个 5X 2矩阵。这一矩阵的第一 行为为

R 的坐标,第二行为R 的坐标,第二行为P2的坐标……第五行为P

5 的坐标。矩阵的第一列元素分别为 5个结点的x 坐标,第二列元素分 别为5个结点的y 坐标。

问题思考与实验:

(1) 考虑在Koch 分形曲线的形成过程中结点数目的变化规律。设第 k 次迭代

产生结点数为nk ,第k 1迭代产生结点数为nk 1,试写出nk 和nk 1之 间的递推关系式;

(2) 参考问题分析中的算法,考虑图1-4到图1-5的过程,即由第一次 迭代的5个结点的结点坐标数组,产生第二次迭代的 17个结点的结点 坐标数组的算

法;

(3) 考虑由第k 次迭代的n k 个结点的结点坐标数组,产生第k 1次迭代 的n k 1个结点的结点坐标数组的算法;

(4) 设计算法用计算机绘制出如下的

解:(1) n k1 4n k 3

(2)(3辩法及(4)代码分析:

p=[0 0;10 0]; %P 为初始两个点的坐标,第一列为x 坐标,第二列为y 坐标 n=2; %n 为结点数

A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)]; % 旋转矩阵

计算相邻两个点的坐标之差,得到相邻两点确定的向量

则d 就计算出每个向量长度的三分之一 ,与题中将线段三等分对应

迭代公式

以原点为起点,前n-1个点的坐标为终点形成向量 迭代后处于4k+1位置上的点的坐标为迭代前的相应坐标 用向量方法计算迭代后处于 用向量方法计算迭代后处于 用向量方法计算迭代后处于 迭代后新的结点数目

2. 1用高斯消元法的消元过程作矩阵分解。设

20 2 3 A 1 8 1

2

3 15

消元过程可将矩阵 A 化为上三角矩阵U,试求出消元过程所用的乘数 m21

、m 31、伉1并以如下格式构造下三角矩阵L 和上三角矩阵U

1 20

2 3

L

m 21 1

,U

a 22) a 23)

4

(2)

Koch 分形曲线(图1-6)

for k=1:4

d=diff(p)/3; %diff % m=4*n-3; % q=p(1:n-1,:); % p(5:4:m,:)=p(2:n,:); % p(2:4:m,:)=q+d; % p(3:4:m,:)=q+d+d*A'; % p(4:4:m,:)=q+2*d; % n=m; % end

plot(p(:,1),p(:,2)) % axis([0 10 0 3.5])

4k+2位置上的点的坐标 4k+3位置上的点的坐标 4k 位置上的点的坐标

m31 m32 1 a33

验证:矩阵A可以分解为L和U的乘积,即A=LU。

矩阵LU分解MATLAB代码:

function hl=zhjLU(A)

[n,n]=size(A);RA=rank(A);

if RA~=n

disp('因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的

秩RA如下:’);

RA,hl=det(A);

return

end

if RA==n

for p=1:n

h(p)=det(A(1:p,1:p));

end

hl=h(1:n);

for i=1:n

if h(1,i)==0

disp(' 因为A的各阶主子式等不等于零,所以A能进彳f LU

分解.A的秩RA和各阶顺序主子式值hl庆次如下:’);

RA,hl

return

end

end

if h(1,i)~=0

disp(' 因为A的各阶主子式都不等于零,所以A能进行LU分解.A的秩RA 和各阶顺序主子式值hl如下:’);

for j=1:n

U(1,j)=A(1,j);

end

for k=2:n

for i=2:n

for j=2:n

L(1,1)=1;L(i,i)=1; if i>j

L(1,1)=1;L(2,1)=A(2,1)/U(1,1);L(i,1)=A(i,1)/U(1,1);

L(i,k)=(A(i,k)-L(i,1:k-1)*U(1:k-1,k))/U(k,k);

else

U(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);

end

end

end

end

RA,hl,U,L

end

end

仅上上代码保存为M文件,并在命令窗口输入

A=[20 2 3;1 8 1; 2 -3 15];

b=[0 0 0]';

h=zhjLU(A)

程序运行结果:

L = U=

1.0000 0 0 20.0000

2.0000

3.0000

0.0500 1.0000 0 0 7.9000 0.8500

0.1000 -0.4051 1.0000 0 0 15.0443

实验验证:可以直接使用MATLAB内置LU分解

A=[20 2 3;1 8 1; 2 -3 15];

[L U]=lu(A) 输出结果与上程序输出结果一致。

2. 2用矩阵分解方法求上题中A的逆矩阵。记

1 0 0

b 0 ,b2 1 ,b3 0

0 0 1分别求解方程组AX b

1,AX b2,AX

由于三个方程组系数矩阵相同,可以将分解后的矩阵重复使用。对第一

个方程组,由于A=LU ,所以先求解下三角方程组LY

知再求解上三角 方程组UX Y,则可得逆矩阵的第一列列向量;类似可解第二、第三方 程组,得逆矩阵的第

二列列向量的第三列列向量。由三个列向量拼装可 得逆矩阵A 1

。 解:MATLAB 代码如下:

b1=[1;0;0]; b2=[0;1;0]; b3=[0;1;1]; A=[20,2,3;1,8,1;2,-3,15];

L=[1,0,0;0.05,1,0;0.1,-0.4051,1]; U=[20 2 3;0 7.9 0.85;0 0 15.0443]; Y1=L\b1 X1=U\Y1

Y2=L\b2 X2=U\Y2 Y3=L\b3 X3=U\Y3 Y1 = 1.0000 -0.0500 -0.1203 X1 = 0.0517 -0.0055 -0.0080 Y2 =

0 1.0000 0.4051 X2 =

-0.0164

0.1237

0.0269

Y3 = 0 1.0000 1.4051

X3 = -0.0257 0.1165 0.0934

实验验证: [X1 X2 X3] ans = 0.0517 -0.0164 -0.0257 -0.0055 0.1237 0.1165 -0.0080 0.0269 0.0934 而:inv (A) =[X1 X2 X3]

得证

2. 3验证希尔伯特矩阵的病态性:对于三阶矩阵

1 1/

2 1/

3 H

1/2 1/3 1/4 1/3

1/4 1/5

取右端向量b 【11/6 13/12 47/6°]T ,验证:

(1) 向量

X [X 1 X 2 X 3

]T [1 1 1]T

是方程组HX b 的准确解;

(2) 取右端向量b 的三位有效数字得 b [1.83

L08 0.783]T

,求方程组 的准确解X ,

并与X 的数据I

1,1,1

】'作比较。说明矩阵的病态性。

解:⑴

H=[1 1/2 1/3;1/2 1/3 1/4;1/3 1/4 1/5]; X=[1;1;1]; b=H*X b =

1.8333 1.0833 0.7833

与题中相同

(2)先求出解X,与数据[〔,"亍作比较 H=[1 1/2 1/3;1/2 1/3 1/4;1/3 1/4 1/5]; b=[1.83;1.08;0.783]; X=H\b X =

1.0800 0.5400 1.4400

与[1,1,1]相差较大,矩阵为病态矩阵

3. 1用泰勒级数的有限项逼近正弦函数

sin x,x [0,] x,x [0, /2] 3

x x /6,x [0, /2] x x 3/6 x 5/120, x

y °(x ) y 〔(x ) y 2(x ) [0,

用计算机绘出上面四个函数的图形。

解:

MATLAB代码如下(1) syms x; taylor(sin(x)) x=0:0.01*pi:pi plot(x,sin(x))

syms x;

taylor(x)

x=0:0.01*pi:pi/2

plot(x)

syms x;

taylor(x-x A3/6)

fplot('x-x A3/6',[0 pi/2]) (4)

syms x;

taylor(x-xA3/6+xA5/120)

fplot('x-xA3/6+xA5/120',[0 pi/2])

结果图形右:

x=0:0.1:pi;

y=sin(x);

plot(x,y,'-sk');

hold on

x=0:0.1:pi/2;

y=x;

plot(x,y,'-b*')

hold on

fplot('x-x.A3/6',[0,pi/2,0,2],2e-3,'-gx')

hold on fplot('x-x.A3/6+x.A5/120',[0,pi/2,0,2],2e-3,'-r.') hold off

legend('sin(x)','x','x-xA3/6','x-A3/6+xA5/120',2)

xlabel('x')

ylabel('y')

title('Taylor approximation')

结果分析:图中红色点线为正弦曲线,蓝色的星线为一阶泰勒逼近,

绿色叉线为二阶

豪勒逼近,黑色正方形线为三阶泰勒逼近。可见三阶泰勒逼近效果最好,泰勒级改越高,逼近效果尬婷。

3. 2绘制飞机的降落曲线

一架飞机飞临北京国际机场上空时,其水平速度为540km/h,飞行高度为1 000m。飞机从距机场指挥塔的横向距离12 000m处开始降落。

根据经验,一架水平飞行的飞机其降落曲线是一条三次曲线。建立直角坐标系,设飞机着陆点为原点O,降落的飞机为动点P(x,y),则x表示飞机距指挥塔的距离,y表示飞机的飞行高度,降落曲线为

2 3

y(x) a0 a1x a2x a3x

该函数满足条件:

y(0) 0, y(12 000) 1000

y'(0) 0, y'(12000) 0

(1) 试利用y(x)满足的条件确定三次多项式中的四个系数;

(2) 用所求出的三次多项式函数绘制出飞机降落曲线。

function S=f(x1,y1,x2,y2,x3,y3,x4,y4) format long

a1=[1 ,x1,x1A2,x1A3];

a2=[1 ,x2,x2A2,x2A3];

a3=[0,1,2*x3,3*x3A2];

a4=[0,1,2*x4,3*x4A2];

a=[a1; a2;a3;a4];

b=[y1; y2;y3;y4];

s=a\b;

x=-12000:250:0;

y=s(3)*x.A2-s(4)*x.A3

plot(x,y,'-d')

xlabel('x')

ylabel('y')

以上为M文件内容,在命令窗口键入

f(0,0,12000,1000,0,0,12000,0)

运行结桌:ans为多项土索数

ans =

1.0e-004 *

0.20833333333333 -0.00001157407407

4. 1曾任英特尔公司董事长的摩尔先生早在 1965年时,就观察到 一件很

有趣的现象:集成电路上可容纳的零件数量,每隔一年半左右 就会增长一

倍,性能也提升一倍。因而发表论文,提出了大大有名的

MATLAB :码:

x=[1959,1962,1963,1964,1965]; y=[1,3,4,5,6]; p1=polyfit(x,y,1) y1=polyval(p1,x) plot(x,y1,'-',x,y,'r*') xlabel('x'),ylabel('y'); 运行结果: p1 =

1.0e+003 *

0.0008 -1.6255 y1 =

0.8113 3.3019 4.1321 4.9623 5.7925 线性拟合的函数表达式: Y=0.8302x-1.6255e+003 解法二:

x=[1959 1962 1963 1964 1965]; y=[1;3;4;5;6]; for i=1:length(x)

for j=1:2

A(i,j)=x(i)”1); end end

[L,U]=lu(A'*A); xs=U\(L\(A'*y))

从而年代y 与增加倍数x 之间的关系为: y=-1625.528301891238+0.830188679248x

摩尔定律(Moore' s LaW,并预测未来这种增长仍会延续下去。下面 数据中,第二行数据为晶片上晶体数目在不同年代与 1959年时数目

比较的倍数。这些数据是推出摩尔定律的依据: 试从表中数据出发,推导线性拟合的函数表达式。 解:解法一

运行结果: xs =

1.0e+003 *

-1.625528301891238 0.000830188679248

(1)牛顿-莱布尼茨公式;(2)梯形公式;(3)辛卜生公式;(4)复 合梯形公式。

解: syms x

i1=int(4/(1+x A 2),x,0,1) a=0;b=1; h=b-a;

i2=(4/(1+aA2)+4/(1+bA2))/2

i3=h/6*(4/(1+aA2)+4*4/(1+(a+b/2)A2)+4/(1+bA2)) M=100; h=(b-a)/M; i4=0;

for k=1:(M-1)

x=a+h*k;

i4=i4+4/(1+x"2); end

i4=h*(4/(1+aA2)+4/(1+bA2))/2+h*i4

牛顿莱布尼兹公式得到精确结果a 采用挣形公式得到的结果比采用 Simpson 公式的精蒲I 度鱼很,米用复祝榜形公式在步长取得越束裁小 的状态下可以提高精度。

x cost

5. 1用几种不同的方法求积分

―火的值。

运行结果:

11 =

pi

12 =

3 13 = 3.1333 1

4 = 3.1416

5. 5求空间曲线L:

y sint

z 2 cost sint

弧长公式为

L : .x'2

(t)

y'2(t) z'2

(t)dt

解:运行程序为:

syms t;

x=diff(cos(t)); y=diff(sin(t));

z=diff(2-cos(t)-sin(t));

y=int((xA2+yA2+zA2)A0.5,t,0,2*pi); % digits(14); i=vpa(y)

运行结果:i =

8.7377525709894

符号函数积分

6. 1用欧拉公式和四阶龙格-库塔法分别求解下列初值问题;

0.9y

(i)y' , y(0) i;x [0,1]

1 2x

⑵y' 闩顶。)

1 x

解:(1) <1>欧拉公式:

function [t,x]=Euler(fun,t0,tt,x0,N) h=(tt-t0)/N;

t=t0+[0:N]'*h;

x(1,:)=x0';

for k=1:N

f=feval(fun,t(k),x(k,:));

f=f;

x(k+1,:)=x(k,:)+h*f;

end

以'Euler.m'保存

function f=Euler_fun(t,x) f=0.9*x./(1+2*t)「以'Euler_fun.m'保存function

main_Euler

[t,x]=Euler('Euier_fun',0,1,1,20);

fh=dsolve('Dx=0.9*x/(1+2*t)','x(0)=1'); for k=1:8

ft(k)=t(k);

fx(k)=subs(fh,ft(k));

end

[t,x] , 4

以'main_Euler.m'保存输入:main_Euler <2>四阶龙杯-库塔法

function R=rk4(f,a,b,ya,N)

%y'=f(x,y)

%a,b为左右端点

%Nfe迭代步长

%h为步长

%ya为初值

h=(b-a)/N;

T=zeros(1,N+1);

Y=zeros(1,N+1);

T=a:h:b;

Y(1)=ya;

for j=1:N

k1=h*feval(f,T(j),Y(j));

k2=h*feval(f,T(j)+h/2,Y(j)+k1/2);

k3=h*feval(f,T(j)+h/2,Y(j)+k2/2);

k4=h*feval(f,Y(j)+h,Y(j)+k3);

2;x [0,1]

1.0000

1.0450

1.0878

1.1285

1.1676

1.2051

1.2413

1.2762

1.3100

1.3427

1.3745

1.4055

1.4356

1.4649

1.4936

1.5216

1.5490

1.5758

1.6021

1.6278

1.6531

Y(j+1)=Y(j)+(k1+2*k2+2*k3+k4)/6;

end

ans=[T' Y']

以'rk4.m'保存

function z=f(x,y)

z=0.9*y./(1+2*x);

以'f.m'保存

输入:rk4(T,0,1,1,8)

6. 4列出函数f(x) [1 ln (x)] (x)在区间[0, e]上的函数值表并作出

它的图象。其中,(x)是初值问题

d ln[ (x)] 2x dx

(0) 0

的解

v=dsolve('Dv*log(x)=2*x','v(0)=0','x');

f=(1-log(v))*v

f =

-2*(1-log(-2*Ei(1,-2*log(x))))*Ei(1,-2*log(x)) ezplot(T)

输出结果:

f =

-2*(1-log(-2*Ei(1,-2*log(x))))*Ei(1,-2*log(x))

7.4 一个10次项式

10 9 8 .

P(x) x a1x a2x L

的系数为

[1 a1 a2 …a9 a10]=[1 -55 1320 T81 50 157 773 电02 055 341 693 0

-840 950 0 127 535 76 -106 286 40 632 880 0]

试用多项式的求根指令roots求出该10次方程的10个根,然后修改9次项的系数-55为-56,得新的10次方程,求解新的方程,观

察根的变化是否很显著。

解:

p=[1 -55 1320 -18150 157773 -902055 3416930 -8409500 12753576 -10628640 6328800];

>> roots(p)

ans =

10.6051 + 1.0127i

10.6051 - 1.0127i

8.5850 + 2.7898i

8.5850 - 2.7898i

5.5000 + 3.5058i

5.5000 - 3.5058i

2.4150 + 2.7898i

2.4150 - 2.7898i

0.3949 + 1.0127i

0.3949 - 1.0127i

p=[1 -56 1320 -18150 157773 -902055 3416930 -8409500 12753576 -10628640 6328800];

>> roots(p)

ans =

21.7335

7.3501 + 7.7973i

7.3501 - 7.7973i

4.3589 + 3.3285i

4.3589 - 3.3285i

5.1831

2.4378 + 2.7974i

2.4378 - 2.7974i

0.3949 + 1.0127i

0.3949 - 1.0127i

结果分析:改变系数之后,根的变化显著

8. 2用差分法解常微分方程边值问题:

y y 1 0,x (0,1) y(0) 0,y(1) 0

取h=0.1,xj=jh(j=0,1,2,』,10)求y1, y2, ? y9并与该问题的准确解

y(x) ―e e x e x 1 1 e 1 e

比较,列出各节点处的近似解、准确解和误差。

解析:ode**函数无能为力Matlab中,提供了bvp解算器。

solinit = bvpinit(x, yinit, params) sol bvpsolver(odefun,bcfun,solinit,options)

解题代码:

clear;close;

sinit=bvpinit(0:1,[0,0]);

odefun=inline('[y(2);y(1)-1]','t','y');

bcfun=inline('[ya(1);yb(1)]','ya','yb sol=bvp4c(odefun,bcfun,sinit)

t=linspace(0,1,101);

y=deval(sol,t);

plot(t,y(1,:),sol.x,sol.y(1,:),'o') legend('解曲线','解点',2) xlabel('x'),ylabel('y') 运行结果:

sol =

x: [0 0.2500 0.5000 0.7500 1] y: [2x5 double] yp: [2x5 double] solver: 'bvp4c'

8. 3通过平面上的三个点P1 (x1,y1)尸2(x2,y2),P3(x3,y第以确定一个圆的方程。设已知圆通过三点P1 (1,3) ,P2(1,-7),P3(6,-2票方程为

(x-x0)2+(y-y)2=R2

按下列步骤求圆的半径R和圆心的坐标(x0,y0)

(1)设圆的一般方程为

x2+y+ax+by+c=0

将圆上三个点的坐标数据分别代入上面方程;

(2) 整理后写关于未知数a,b,c的三元线性方程组AX=b

(3) 用MATLAB解方程组的指令A\ b求解;

(4) 通过配方求出圆的半径R和圆心坐标。

解:(1)将圆上三个点的坐标数据分别代入x2y2a x b y c0可得:

2 _2

1232 a 3b c 0

2

127 a 7b c 0

62 2 2 6a 2b c 0

(2)整理上述方程组得:Ax b

其中,A [1 3 1;1 -7 1;6 -2 1] ; b [-10;-50;-40]

(3) (4)

MATLAB:码:

A=[1 3 1;1 -7 1;6 -2 1];

b=[-10;-50;-40];

x=A\b

r=sqrt((x(1)A2+x(2)A2)/4-x(3)) x0=-(x(1)/2);

y0=-(x(2)/2);

O=[x0,y0]

结果:半径为5,圆心坐标(1, -2)运行结果为: x =

-2

4

-20

r =

5

O =

1 -2

数值分析课程设计

淮海工学院计算机工程学院课程设计报告书 课程名:《数值分析》 题目:数值分析课程设计 班级: 学号: 姓名:

数值分析课程设计 课程设计要求 1、研究第一导丝盘速度y与电流周波x的关系。 2、数据拟合问题运用样条差值方法求出温度变化的拟合曲线。 课程设计目的 1、通过编程加深对三次样条插值及曲线拟合的最小二乘法的理解; 2、学习用计算机解决工程问题,主要包括数据处理与分析。 课程设计环境 visual C++ 6.0 课程设计内容 课程设计题目1: 合成纤维抽丝工段中第一导丝盘的速度对丝的质量有很大的影响,第一丝盘的速度和电流周波有重要关系。下面是一组实例数据: 其中x代表电流周波,y代表第一导丝盘的速度 课程设计题目3: 在天气预报网站上获得你家乡所在城市当天24小时温度变化的数据,认真观察分析其变化趋势,在此基础上运用样条差值方法求出温度变化的拟合曲线。然后将该函数曲线打印出来并与原来的温度变化数据形成的曲线进行比较,给出结论。写出你研究的心得体会。 课程设计步骤 1、利用最小二乘法写出题1的公式和算法; 2、利用excel表格画出数据拟合后题1的图像; 3、在Visual C++ 6.0中编写出相应的代码; 4、搜索11月12日南通当地一天的温度变化数据; 5、在Visual C++ 6.0中编写出相应的代码; 6、利用excel表格画出数据拟合后题3的图像 课程设计结果 课程设计题目1 数值拟合

解:根据所给数据,在excel窗口运行: x=[49.2 50.0 49.3 49.0 49.0 49.5 49.8 49.9 50.2 50.2] y=[16.7 17.0 16.8 16.6 16.7 16.8 16.9 17.0 17.0 17.1] 课程设计题目3 数据为:X=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]; Y=[12,12,11,12,12,12,12,12,13,15,16,17,17,18,17,17,17,16,15,15,15,15,14,14]; 源代码为: 第一题: #include #include"math.h" using namespace std; //double x[100],y[100]; int main(){ int i; double k,b; double sum1=0,sum2=0,sum3=0,sum4=0; double x[10]={49.2,50.0,49.3,49.0,49.0,49.5,49.8,49.9,50.2,50.2}; double y[10]={16.7,17.0,16.8,16.6,16.7,16.8,16.9,17.0,17.0,17.1}; for(i=0;i<10;i++){ sum1+=x[i]*y[i]; sum2+=x[i];

数值分析课程设计题目与要求

数值分析课程设计题目与要求 (10级应数及创新班) [设计题一] 编写顺序Gauss消去法和列主元Gauss消去法的函数,再分别调用这两个函数求解下面的84阶方程组: = , 然后考虑将方程组的阶数取为10至100之间多个值进行求解。将你的计算结果与方程组的精确解进行比较。从“快”、“准”、“省”三个方面分析以上两个算法,试提出改进的算法并加以实现和验证。 [设计题二] 编写平方根法和改进的平方根法(参见教材《计算方法》P54的例题2.5)的函数,然后分别调用这两个函数求解对称正定方程组Ax=b,其中A和b分别为: (1)系数矩阵A为矩阵(阶数取为10至100之间多个值): , 向量b随机地选取; (2)系数矩阵A为Hilbert矩阵(阶数取为5至40之间多个值),即A的第i行第j列元素,向量b的第i个分量取为。将你的计算结果与方程组的精确解进 行比较。 若出现问题,分析其原因,提出改进的设想并尝试实现之。

对于迭代法 ,......)2,1,0(99.021=-=+k x x x k k k , 它显然有不动点0* =x 。试设计2个数值实验 得到收敛阶数的大概数值(不利用判定收敛阶的判据定理): (1) 直接用收敛阶的定义; (2) 用最小二乘拟合的方法。 [设计题四] 湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低。这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。如果把水温T 看成深度x 的函数T(x),有某个湖的观测数据如下: 环境工程师希望: 1) 用三次样条插值求出T(x)。 2) 求在什么深度处dx dT 的绝对值达到最大( 即02 2=dx T d )。 [设计题五] 某飞机头部的光滑外形曲线的型值点坐标由下表给出: ...值y 及一阶、二阶导数值y ’,y ”。绘出模拟曲线的图形。

《数值分析课程设计》教学大纲

《数值分析课程设计》教学大纲 课程编号:1512110303 课程名称: 数值分析课程设计 周数/学分:3/3 先修课程:《数值分析》 适用专业: 信息与计算科学 开课教研室:应用数学教研室 一、目的与要求: 《数值分析课程设计》是实践性教学内容之一,是《数值分析》课程的辅助教学过程,是信息与计算科学专业的必修课。通过设计,使学生深化对所学理论知识的理解,掌握数值计算方法的程序设计能力,初步具备解决实际数值计算问题的能力。 二、课程设计内容: 1.掌握数值分析的基本内容。误差的基本概念,插值与拟合,数值积分,线性代数方程组的解法,非线性方程求根,常微分方程初值问题的数值解法。 2.对每部分内容设计一定难度的问题,要求学生对问题进行分析,确定解决方案。 3.进行模拟与仿真,进行结果分析,编写课程设计报告 三、课程设计步骤与方法 1.教师向学生讲解课程设计目的和要求,补充相关基本知识,布置课程设计任务。 2.学生查找资料,编程、调试程序。本步骤是课程设计的核心内容之一,要求学生分析算法,写出相应程序,并对结果进行解释 3.撰写课程设计报告。 四、课程设计的基本要求 1.算法说明正确无误,图表符合技术规范要求。 2.毎生一台计算机,要求学生使用Matlab软件或Mathematica软件编写相关程序。 3.按要求完成一篇的课程设计报告。 4.课程设计的方式:以集中学习为主;独立完成课程设计阶段规定的全部工作任务。 五、课程设计进度表 序号 内 容 所用时间 1 教师讲解,布置任务 1天 2 学生编写程序并撰写设计报告 11天

3 教师反馈意见,学生修改设计报告 3天 合计 15天 六、课程设计考核方式 平时设计环节中的表现占总成绩30%,课程设计报告和软件运行情况占总成绩70%。 执笔:赵国喜 审定:朱耀生 梁桂珍

数值计算课程设计任务书

数值计算课程设计任务书 学院信息与计算科学/应用数学专业班级学生: 题目:典型数值算法的C++语言程序设计 课程设计从2017 年 6 月12 日起到2017 年7月 1 日 1、课程设计的内容和要求(包括原始数据、技术要求、工作要求等): 每人需作10个算法的程序、必做6题、自选4题。 对每个算法要求用C++语言进行编程。 必选题: 1、高斯列主元法解线性方程组 2、牛顿法解非线性方程组 3、经典四阶龙格库塔法解一阶微分方程组 4、三次样条插值算法(压紧样条)用C++语言进行编程计算 依据计算结果,用Matlab画图并观察三次样条插值效果。 5、龙贝格求积分算法 6、M次多项式曲线拟合,据计算结果,用Matlab画图并观察拟合效果。 自选题:自选4道其他数值算法题目.每道题目重选次数不得超过5次. 2、对课程设计成果的要求〔包括图表、实物等硬件要求〕: 2.1 提交课程设计报告 按照算法要求,应用C++语言设计和开发算法程序,提交由: 1)每个算法的原理与公式说明; 2)每个算法相应的程序设计说明(程序中的主要变量语义说明,变量的数据类型说明,数据在内存中组织和存储结构说明,各函数的输入形参和输出形参说明,函数功能说明,函数中算法主要流程图,函数的调用方法说明); 3)每个程序使用的实例(引用的实例可以自拟,也可以借用相关数值计算参考书中的例题作为作为验证程序是否正确的实例,无论是自拟实例还是引用实例,实例都应详细写入报告的正文中); 4)每个算法的调试记录(包括程序调试(静态调试和动态调试)和程序修改记录、程序测试(可以手工计算进行测试、也可以利用Matlab的函数或

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

偏微分方程数值解课程设计

课程设计报告 课程:偏微分方程数值解学号: 姓名: 班级: 教师:

《偏微分方程数值解》 课程设计指导书 一.课程设计的目的 1.帮助掌握偏微分方程数值解相关知识。 2.理解偏微分方程数值解差分隐格式解决自由振动方程问题的方法。 3.锻炼编写程序代码的能力。 二.设计名称 差分法求自由振动问题的周期解。 三.设计要求 1.要求写出差分隐格式的理论方法。 2.要求编写matlab 程序,画出函数图形。 3.要求写出实验总结及心得体会。 四.设计题目 用差分法求自由振动问题的周期解: 2222000,,0|0,|sin (0,)(2,)t t u u x t t x u u x t u t u t π==???-=-∞<<∞>???? ??==??? =??? 要求用差分隐格式求解,其中14 θ= 。 五.设计细则 1.区域剖分: 构造上式的差分逼近,取空间步长h 和时间步长τ,用两族平行直线 ?? ?===±±=== ,2,1,0,, ,2,1,0,n n t t j jh x x n j τ 作矩形网格。 2.离散格式: 显格式: 于网点),(n j t x 用Taylor 展式,并整理方程得: ??? ?? ??--++=+-++==-+-++-121121102 10102100 )1(2)(),()()1()]()([2),(n j n j n j n j n j j j j j j j j u u r u u r u x x r x x r u x u τ?????

隐格式: 上述显格式并不是绝对稳定的差分格式,为了得到绝对稳定的差分格式,用第1-n 层、 n 层、1+n 层的中心差商的权平均去逼近xx u ,得到下列差分格式: ? ??? ?? ???+-++--++-=+-+-++==----+-++-+++-++-]22)21(2[2), ()()1()]()([2),(2111112112111112 211102 10102100h u u u h u u u h u u u a u u u x x r x x r u x u n j n j n j n j n j n j n j n j n j n j n j n j j j j j j j j θθθττ?????其中10≤≤θ是参数。当0=θ时就是显格式,而当4 1 =θ时可以证明该格式绝对稳定。 隐格式的矩阵形式是: ??? ???????? ???????????=??????????????????????????????????????????????? ?-+-+-+-+--+-+-+++122111121121 12222 222 2222221212121J J j n J n J n j n n z z z z z u u u u u r r r r r r r r r r r r θθθθ θθθθθ θ θθ 其中: 1 111111122]2()2)(21[(-----+-+-++-++--=n j n j n j n j n j n j n j n j j u u u u u u u u r z θθ 3.格式稳定性: 1)显格式: 显格式稳定的充分必要条件是:网格比1

数值分析课程设计

课程设计报告 课程名称 课题名称 专业 班级 学号 姓名 指导教师 年月日

湖南工程学院课程设计任务书 课程名称数值分析 课题 专业班级 学生姓名 学号 指导老师 审批 任务书下达日期2009 年 5 月 4 日任务完成日期2009 年 5 月18日

一、设计内容与设计要求 1.设计内容: 对课程《计算方法》中的常见算法进行综合设计或应用(具体课题题目见后面的供选题目)。 2.设计要求: ●课程设计报告正文内容 a.问题的描述及算法设计; b.算法的流程图(要求画出模块图); c.算法的理论依据及其推导; d.相关的数值结果(通过程序调试),; e.数值计算结果的分析; f.附件(所有程序的原代码,要求对程序写出必要的注释)。 ●书写格式 a.要求用A4纸打印成册 b.正文格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。 c.正文的内容:正文总字数要求在3000字左右(不含程序原代码)。 d.封面格式如下页。 ●考核方式 指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分: a.平时出勤(占10%) b.系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%) c.程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%) d.设计报告(占30%) 注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。 e.独立完成情况(占10%)。 ●课程验收要求 a.判定算法设计的合理性,运行相关程序,获得正确的数值结果。

《数值分析》课程设计报告

《数值分析》课程设计实验报告 龙格—库塔法分析Lorenz 方程 200820302033 胡涛 一、问题叙述 考虑著名的Lorenz 方程 () dx s y x dt dy rx y xz dt dz xy bz dt ?=-???=--???=-?? 其中s ,r ,b 为变化区域内有一定限制的实参数,该方程形式简单,表面上看并无惊人之处,但由该方程揭示出的许多现象,促使“混沌”成为数学研究的崭新领域,在实际应用中也产生了巨大的影响。 二、问题分析 Lorenz 方程实际上是一个四元一阶常微分方程,用解析法精确求解是不可能的,只能用数值计算,最主要的有欧拉法、亚当法和龙格- 库塔法等。为了得到较高精度的,我们采用经典四阶龙格—库塔方法求解该问题。 三、实验程序及注释 (1)算法程序 function [T]=Runge_Kutta(f,x0,y0,h,n) %定义算法,其中f 为待解方程组, x0是初始自变量,y0是初始函数 值,h 是步长,n 为步数 if nargin<5 n=100; %如果输入参数个数小于5,则步数 n=100 end r=size(y0);r=r(1); %返回初始输出矩阵的行列数,并将 值赋给r(1) s=size(x0);s=s(1); %返回初始输入矩阵的行列数,并 将值赋给s(1) r=r+s; T=zeros(r,n+1); T(:,1)=[y0;x0]; for t=2:n+1 %以下是具体的求解过程 k1=feval(f,T(1:r-1,t-1)); k2=feval(f,[k1*(h/2)+T(1:r-1,t-1);x0+h/2]); k3=feval(f,[k2*(h/2)+T(1:r-1,t-1);x0+h/2]); k4=feval(f,[k3*h+T(1:r-1,t-1);x0+h]); x0=x0+h; T(:,t)=[T(1:r-1,t-1)+(k1+k2*2+k3*2+k4)*(h/6);x0]; end

12级数值分析课程设计

数值分析课程设计题目与要求 (12级应数及创新班) [设计题一] 编写顺序Gauss消去法和列主元Gauss消去法的函数,再分别调用这两个函数求解下面的84阶方程组: = , 然后考虑将方程组的阶数取为10至100之间多个值进行求解。将你的计算结果与方程组的精确解进行比较。从“快”、“准”、“省”三个方面分析以上两个算法,试提出改进的算法并加以实现和验证。 [设计题二] 编写平方根法和改进的平方根法(参见教材《计算方法》P54的例题2.5)的函数,然后分别调用这两个函数求解对称正定方程组Ax=b,其中A和b分别为: (1)系数矩阵A为矩阵(阶数取为10至100之间多个值): , 向量b随机地选取; (2)系数矩阵A为Hilbert矩阵(阶数取为5至40之间多个值),即A的第i行第j列元素,向量b的第i个分量取为。将你的计算结果与方程组的精确解进 行比较。 若出现问题,分析其原因,提出改进的设想并尝试实现之。

对于迭代法 ,......)2,1,0(99.02 1=-=+k x x x k k k , 它显然有不动点0*=x 。试设计2个数值实验 得到收敛阶数的大概数值(不利用判定收敛阶的判据定理): (1) 直接用收敛阶的定义; (2) 用最小二乘拟合的方法。 [设计题四] 湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低。这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。如果把水温T 看成深度x 的函数T(x),有某个湖的观测数据如下: 环境工程师希望: 1) 用三次样条插值求出T(x)。 2) 求在什么深度处dx dT 的绝对值达到最大( 即02 2=dx T d )。 [设计题五] 某飞机头部的光滑外形曲线的型值点坐标由下表给出: ...值y 及一阶、二阶导数值y ’,y ”。绘出模拟曲线的图形。

数值分析课程课程设计汇总

课 程 设 计 我再也回不到大二了, 大学是那么短暂 设计题目 数值分析 学生姓名 李飞吾 学 号 x x x x x x x x 专业班级 信息计x x x x x 班 指导教师 设 计 题 目 共15题如下 成绩

数值分析课程设计 1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?(15621) 试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题 解:算法分析:解该问题主要使用递推算法,关于椰子数目的变化规律可以设起初的椰子数为0p ,第一至五次猴子在夜里藏椰子后,椰子的数目分别为01234,,,,p p p p p 再设最后每个人分得x 个椰子,由题: 14 (1)5 k k p p +=- (k=0,1,2,3,4)51(1)5 x p =- 所以551p x =+,11k k p p +=+利用逆向递推方法求解 15 1,4 k k p p +=+ (k=0,1,2,3,4) MATLAB 代码: n=input('n= '); n= 15621 for x=1:n p=5*x+1; for k=1:5 p=5*p/4+1; end if p==fix(p), break end end disp([x,p]) 1.2 设,1 5n n x I dx x =+? (1)从0I 尽可能精确的近似值出发,利用递推公式: 11 5(1,2,20)n n I I n n -=-+= 计算机从1I 到20I 的近似值; (2)从30I 较粗糙的估计值出发,用递推公式:

数值分析课程设计分析方案

郑州轻工业学院 《数值分析》 课程设计报告 题目: 1.非线性方程求解 8.最小二乘法 姓名:杨君芳 院<系):数学与信息科学学院 专业班 级:信科 11-01 学号:541110010148 指导教 师:汪远征 时间:2018年12月30日至2018年1月4日

摘要 本文的内容主要属于数值代数问题的迭代解法和差值问题。 在VC++6.0环境下对非线性方程求根的三种迭代解法<即一般迭代法,牛顿迭代法和弦截法)的算法实现,将抽象问题转化为计算机编程的一般解法思想,实现运用计算机解非线性方程的根。同时完成了运用最小二乘法的思想解决实际问题的简单设计, 本文也对该程序设计的难点、解决技巧、每种方法的理论基础、程序的算法分析、功能分析、模块设计以及算法的优点、缺点和主要参考文献等进行了详细的作答。 ,

目录 《数值分析》1 课程设计报告1 摘要2 目录3 1 理论基础4 1.1 非线性方程的迭代解法4 1.2最小二乘法4 2 算法分析5 2.1 功能分析5 2.1.1非线性方程的迭代解法5 2.2 算法分析5 3 程序设计8 3.1 选单和主窗口设计8 3.1.1非线性方程的迭代解法8 3.1.2最小二乘法10 3.2 模块设计14 3.2.1非线性方程的迭代解法14 3.2.2 最小二乘法18 4 总结24 5 参考文献25

1 理论基础 1.1 非线性方程的迭代解法 1、 一般迭代法:首先将方程f

数值分析课程课程设计

课程设计 我再也回不到大二了, 大学是那么短暂 设计题目________ 数值分析 学生姓名________ 李飞吾 _________ 学号 ______ XXXXXXXX 专业班级信息计XXXXX班 指导教师_________________________

数值分析课程设计 1.1水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的 一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫, 很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只 给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水 手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子, 私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆, 每人分一堆,正好余一只再给猴子,试问原先共有几只椰子? ( 15621) 试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题 解:算法分析:解该问题主要使用递推算法,关于椰子数目的变化规律 可以设起初的椰子数为p o ,第一至五次猴子在夜里藏椰子后,椰子的数 目分别为Pb ,p 1 ,p 2,P 3,P 4再设最后每个人分得x 个椰子,由题: 4 1 p k 1 ( p k 1) ( k=0,1,2,3,4 ) x -( p 5 1) 5 5 所以P 5 5x 1, p< p< 1 1利用逆向递推方法求解 P k - P k 1 1, ( k=0,1,2,3,4 ) 4 MATLAB^码: n 二in put(' n 二'); n= 15621 for x=1: n p=5*x+1; for k=1:5 p=5*p/4+1; end if P==fix(p), break end end disp([x,p]) 1 n 1. 2 设,I n — dx 05 x (1) 从I 。尽可能精确的近似值出发,利用递推公式: 1 I n 5I n 1 -(n 1,2,L 20) n 计算机从h 到I 20的近似值; (2) 从%较粗糙的估计值出发,用递推公式: 1 1 I n 1 —I n (n 30,29,L ,3,2) 5 5n 输出结果: 1023 15621 结果分析:此题的解题思想是在迭代法 中,判断p 为整数时,输出与p

数值分析课程设计(最终版)

本文主要通过Matlab 软件,对数值分析中的LU 分解法、最小二乘法、复化Simpon 积分、Runge-Kutta 方法进行编程,并利用这些方法在MATLAB 中对一些问题进行求解,并得出结论。 实验一线性方程组数值解法中,本文选取LU 分解法,并选取数据于《数值分析》教材第5章第153页例5进行实验。所谓LU 分解法就是将高斯消去法改写为紧凑形式,可以直接从矩阵A 的元素得到计算L 、U 元素的递推公式,而不需要任何步骤。用此方法得到L 、U 矩阵,从而计算Y 、X 。 实验二插值法和数据拟合中,本文选取最小二乘拟合方法进行实验,数据来源于我们课堂学习该章节时的课件中的多项式拟合例子进行实验。最小二乘拟合是一种数学上的近似和优化,利用已知的数据得出一条直线或者曲线,使之在坐标系上与已知数据之间的距离的平方和最小。利用excel 的自带函数可以较为方便的拟合线性的数据分析。 实验三数值积分中,本文选取复化Simpon 积分方法进行实验,通过将复化Simpson 公式编译成MATLAB 语言求积分∫e ;x dx 1 0完成实验过程的同时,也对复化Simpon 积分章节的知识进行了巩固。 实验四常微分方程数值解,本文选取Runge-Kutta 方法进行实验,通过实验了解Runge-Kutta 法的收敛性与稳定性同时学会了学会用Matlab 编程实现Runge-Kutta 法解常微分方程,并在实验的过程中意识到尽管我们熟知的四种方法,事实上,在求解微分方程初值问题,四阶法是单步长中最优秀的方法,通常都是用该方法求解的实际问题,计算效果比较理想的。 实验五数值方法实际应用,本文采用最小二乘法拟合我国2001年到2015年的人口增长模型,并预测2020年我国人口数量。 关键词:Matlab ;LU 分解法;最小二乘法;复化Simpon 积分;Runge-Kutta

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

数值分析-课程设计doc

课程设计报告 课程名称数值分析 课题名称数值积分 专业信息与计算科学 班级 学号 姓名 指导教师 2015 年12 月20 日

湖南工程学院 课程设计任务书 课程名称数值分析 课题数值积分 专业班级信息与计算科学0901班 学生姓名 学号 指导老师辉 审批 任务书下达日期2015 年12 月7 日任务完成日期2015 年12 月20日

设计内容与设计要求 1. 设计内容: 非奇异矩阵矩阵A ∈R n*n ,已知A -1的一个近似矩阵D (0)∈R n*n ,则由矩阵公式: ?????+=-=--)()1()1(K K K K K F I D D AD I F , K=0,1,2,3........... (1).已知矩阵A 及其逆矩阵的一个近似D (k)为: A=?? ??? ?? ?? ???--------7.49.43.49.19.47.11.88.78.26 .21.27.07.37.08.38.1 D= ???? ? ???? ???---------185.0061.0388.0293.0199.0009.0046.0230.0089.0016.0169.0035.0270.0163.0460.0211.0 用以上方法计算序列{D (k)}迭代次数超过100次时结束。 (2)分析最后得到的D (k)是否A 的一个较好的近似逆矩阵 2.设计要求: ● 课程设计报告正文内容 a. 问题的描述及算法设计; b. 算法的流程图(要求画出模块图); c. 算法的理论依据及其推导; d. 相关的数值结果(通过程序调试),; e. 数值计算结果的分析; f. 附件(所有程序的原代码,要求对程序写出必要的注释)。 ● 书写格式

数值分析实验报告

学生实验报告实验课程名称 开课实验室 学院年级专业班 学生姓名学号 开课时间至学年学期

if(A(m,k)~=0) if(m~=k) A([k m],:)=A([m k],:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end y=x; format short;%设置为默认格式显示,显示5位 (2)建立MATLAB界面 利用MA TLAB的GUI建立如下界面求解线性方程组: 详见程序。 五、计算实例、数据、结果、分析 下面我们对以上的结果进行测试,求解:

? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - 7 2 5 10 13 9 14 4 4 3 2 1 13 12 4 3 3 10 2 4 3 2 1 x x x x 输入数据后点击和,得到如下结果: 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341 x x x x ?? ???? ?? ???? ?? ???? = ?? ???? - ?? ???? - ???? ?? 得到如下结果:

数值分析实验— MATLAB实现

数值分析实验 ——MATLAB实现 姓名sumnat 学号2013326600000 班级13级应用数学2班 指导老师 2016年1月

一、插值:拉格朗日插值 (1) 1、代码: (1) 2、示例: (1) 二、函数逼近:最佳平方逼近 (2) 1、代码: (2) 2、示例: (2) 三、数值积分:非反常积分的Romberg算法 (3) 1、代码: (3) 2、示例: (4) 四、数值微分:5点法 (5) 1、代码: (5) 2、示例: (6) 五、常微分方程:四阶龙格库塔及Adams加速法 (6) 1、代码:四阶龙格库塔 (6) 2、示例: (7) 3、代码:Adams加速法 (7) 4、示例: (8) 六、方程求根:Aitken 迭代 (8) 1、代码: (8) 2、示例: (9) 七、线性方程组直接法:三角分解 (9) 1、代码: (9) 2、示例: (10) 八、线性方程组迭代法:Jacobi法及G-S法 (11) 1、代码:Jacobi法 (11) 2、示例: (12) 3、代码:G-S法 (12) 4、示例: (12) 九、矩阵的特征值及特征向量:幂法 (13) 1、代码: (13) 2、示例: (13)

一、插值:拉格朗日插值 1、代码: function z=LGIP(x,y)%拉格朗日插值 n=size(x); n=n(2);%计算点的个数 syms a; u=0;%拉格朗日多项式 f=1;%插值基函数 for i=1:n for j=1:n if j==i f=f; else f=f*(a-x(j))/(x(i)-x(j)); end end u=u+y(i)*f;f=1; end z=expand(u);%展开 2、示例: >> x=1:6; y1=x.^5+3*x.^2-6; y2=sin(x)+sqrt(x); >> f1=LGIP(x,y1) f1 = -6+3*a^2+a^5 %可知多项式吻合得很好 >> f2=vpa(LGIP(x,y2),3) f2 = .962e-1*a^4+1.38*a+.300*a^2+.504-.436*a^3-.616e-2*a^5

数值分析实验报告1

实验一 误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =

数值分析课程设计学生题目

《数值分析》课程设计

本课程设计的内容为:每个小组的同学均应完成以下五个案例; 目标:能将数值分析课程中所学的算法知识熟练应用于实际问题中。 案例1 土木工程和环境工程师在设计一条排水渠道时必须考虑渠道的各种参数(如宽度,深度,渠道内壁光滑度)及水流速度、流量、水深等物理量之间的关系。 假设修一条横断面为矩形的水渠,其宽度为B ,假定水流是定常的,也就是说水流速度不随时间而变化。 根据质量守恒定律可以得到 Q=UBH (1.1) 其中Q 是水的流量(s m /3 ),U 是流速(s m /),H 是水的深度(m )。 在水工学中应用的有关流速的公式是 3 /23 /22/1)2()(1H B BH S n U += (1.2) 这里n 是Manning 粗糙系数,它是一个与水渠内壁材料的光滑性有关的无量纲量;S 是水渠 的斜度系数,也是一个无量纲量,它代表水渠底每米内的落差。 把(1.2)代入(1.1)就得到 3 /23 /52/1)2()(1H B BH S n U += (1.3) 为了不同的工业目的(比如说要把污染物稀释到一定的浓度以下,或者为某工厂输入一定量 的水),需要指定流量Q 和B ,求出水的深度。这样,就需要求解 0) 2()(1)(3 /23 /52/1=-+=Q H B BH S n H f (1.4) 一个具体的案例是 s m Q S n m B /5 ,0002.0 ,03.0 ,203==== 求出渠道中水的深度H 。 所涉及的知识——非线性方程解法。 案例2 在化学工程中常常研究在一个封闭系统中同时进行的两种可逆反应 C D A C B A ?+?+2 其中A ,B ,C 和D 代表不同的物质。反应达到平衡是有如下的平衡关系: d a c b a c C C C k C C C k == 22 1 , 其中2 24 1107.3 ,104--?=?=k k 称为平衡常数,),,,(d c b a n C n =代表平衡状态时该物质的浓度。假定反应开始时各种物质的浓度为:

数值分析课程设计报告(95分)

数值分析课程设计报告 设计题1、2、3、5 学院、系: 专业: 姓名: 学号: 任课教师: 提交日期: 电子邮箱:

目录 [设计题一] (3) 1.1问题分析与设计思路 (3) 1.2程序清单 (4) 1.4 结果分析 (5) 1.5设计总结 (6) [设计题二] (6) 2.1问题分析与设计思路 (7) 2.2程序清单 (7) 2.3 运行结果 (9) 2.4结果分析与设计总结 (9) [设计题三] (10) 3.1问题分析与设计思路 (10) 3.2程序清单 (10) 3.3 运行结果 (12) 3.4结果分析与设计总结 (13) [设计题五] (13) 4.1问题分析与设计思路 (14) 4.2程序清单 (15) 4.3 运行结果 (20) 4.4结果分析 (21) 【数值分析课程设计总结】 (22)

11121112 31 111121n n H n n n n ?? ? ? ? ?=+ ? ? ? ?+-?? [设计题一] 设计实验验证Hilbert 矩阵的病态性。 1.1问题分析与设计思路 在求解任何反问题的过程中通常会遇到病态矩阵问题,而且病态矩阵问题还未有很好的解决方法,尤其是长方形、大型矩阵。目前主要有Tikhonov 、奇异值截断、奇异值修正等方 法。 求解方程组时对数据的小扰动很敏感的矩阵就是病态矩阵。解线性方程组Ax =b 时,若对于系数矩阵A 及右端项b 的小扰动δA 、δb ,方程组(A +δA )χ=b +δb 的解χ与原方程组Ax =b 的解差别很大,则称矩阵A 为病态矩阵。方程组的近似解χ一般都不可能恰好使剩余r=b -A χ为零,这时χ亦可看作小扰动问题A χ=b -r(即δA =0,δb =-r)的解,所以当A 为病态时,即使剩余很小,仍可能得到一个与真解相差很大的近似解。 因此,设计思路如下: 令x0=(1,1…..1),计算出b=Hx0,求出b ,然后再用高斯消去法球解Hx=b ,得到近似解x ,然后利用标准差:

相关文档
最新文档