数值代数上机实验报告
数值分析第一次实验报告
数值分析上机实验报告
题目:插值法
学生姓名
学院名称计算机学院
专业计算机科学与技术时间
一. 实验目的
1、掌握三种插值方法:牛顿多项式插值,三次样条插值,拉格朗日插值
2、学会matlab提供的插值函数的使用方法
二.实验内容
1、已知函数在下列各点的值为
试用4次牛顿插值多项式P4(x)及三次样条函数S(x)(自然边界条件)对数据进行插值。用图给出
{(x i,y i),x i=0.2+0.08i,i=0,1,11,10},P4(x)及S(x)。
2、在区间[-1,1]上分别取n=10,20用两组等距节点对龙格函数
f(x)=1/(1+25x2)作多项式插值及三次样条插值,对每个n值,分别画出插值函数及f(x)的图形。
3、下列数据点的插值
可以得到平方根函数的近似,在区间[0,64]上作图。
(1)用这9个点作8次多项式插值L8(x)
(2)用三次样条(第一边界条件)程序求S(x)
从得到结果看在[0,64]上,哪个插值更精确,在区间[0,1]上。
两种插值哪个更精确?
三.实现方法
1. 进入matlab开发环境
2. 依据算法编写代码
3. 调试程序
4. 运行程序
5. (1)牛顿插值多项式:
P n=f(x0)+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+…+f[x0,x1,…,x n] (x-x0)(x-x n-1)
三次样条插值:
用三次样条插值函数由题目分析知,要求各点的M值:
6.实验代码如下:
(1)牛顿插值多项式程序:
function varargout=newton(varargin)
数值代数上机实验报告
数值代数上机实验报告
试验项目名称:平方根法与改进平方根法
实验内容:先用你熟悉的计算机语言将平方根法和改进平方根法编写成通用的子程序,然后用你编写的程
序求解对称正定方程组
Ax=b,其中,
A=[10
1 10 1
…
1 10 1
1 10]100*100
b随机生成,比较计算结果,评论方法优劣。
实验要求:平方根法与改进的平方根的解法步骤;存储单元,变量名称说明;系数矩阵与右端项的生成;结果分析。
实验报告
姓名:罗胜利班级:信息与计算科学0802 学号:u200810087 实验一、平方根法与改进平方根法
先用你所熟悉的计算机语言将平方根法和改进的平方根法编成通用的子程序,然后用你编写的程序求解对称正定方程组AX=b,其中系数矩阵为40阶Hilbert矩阵,即系数矩阵A的第i行第j列元素为=,
向量b的第i个分量为=.
平方根法函数程序如下:
function [x,b]=pingfanggenfa(A,b)
n=size(A);
n=n(1);
x=A^-1*b; %矩阵求解
disp('Matlab自带解即为x');
for k=1:n
A(k,k)=sqrt(A(k,k));
A(k+1:n,k)=A(k+1:n,k)/A(k,k);
for j=k+1:n;
A(j:n,j)=A(j:n,j)-A(j:n,k)*A(j,k);
end
end %Cholesky分解
for j=1:n-1
b(j)=b(j)/A(j,j);
b(j+1:n)=b(j+1:n)-b(j)*A(j+1:n,j);
end
b(n)=b(n)/A(n,n); %前代法
数值计算实验报告-欧拉法常微分方程
数学与计算科学学院实验报告
实验项目名称欧拉法解常微分方程
所属课程名称数值计算
实验类型验证型
实验日期2012-6- 4
班级隧道1002班
学号201008020233
姓名李彬彬
成绩
一、实验概述:
【实验目的】 通过运用相关的数值计算软件,解决最基本的常微分方
程的数值计算,并且能够熟练的运用这种方法。
【实验原理】 欧拉法
1.对常微分方程初始问题
(9.2)
)((9.1)
),(00⎪⎩⎪⎨⎧==y x y y x f dx
dy
用数值方法求解时,我们总是认为(9.1)、(9.2)的解存在且唯一。 欧拉法是解初值问题的最简单的数值方法。从(9.2)式由于y (x 0) = y 0已给定,因而可以算出
),()('000y x f x y =
设x 1 = h 充分小,则近似地有:
),()(')
()(00001y x f x y h
x y x y =≈-
(9.3)
记 ,n ,,
i x y y i i 10 )(== 从而我们可以取
),(0001y x hf y y ==
作为y (x 1)的近似值。利用y 1及f (x 1, y 1)又可以算出y (x 2)的近似值:
),(1112y x hf y y +=
一般地,在任意点x n +1 = (n + 1)h 处y (x )的近似值由下式给出
),(1n n n n y x hf y y +=+
(9.4)
这就是欧拉法的计算公式,h 称为步长。
不难看出,近似解的误差首先是由差商近似代替微商(见(9.3))引起的,这种近似代替所产生的误差称为截断误差。还有一种误差称为舍入误差,这种误差是由于利用(9.4)进行计算时数值舍入引起的。
(完整word版)数值线性代数第二版徐树方高立张平文上机习题第四章实验报告
第四章上机习题
1考虑两点边值问题
⎪⎩
⎪⎨⎧==<<=+.1)1(,0)0(10 ,22y y a a dx dy dx y d ε 容易知道它的精确解为
ax e e a
y x +---=--)1(111εε
为了把微分方程离散化,把[0,1]区间n 等分,令h=1/n ,
1,,1,-==n i ih x i
得到差分方程
,21211a h
y y h y y y i i i i i =-++-++-ε
简化为 ,)2()(211ah y y h y h i i i =++-+-+εεε
从而离散化后得到的线性方程组的系数矩阵为
⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡+-++-++-++-=)2()2()2()2(h h h h h h h A εεεεεεεεεε 对,100,2/1,1===n a ε分别用Jacobi 迭代法,G-S 迭代法和SOR 迭代法求线性方程组的解,要求有4位有效数字,然后比较与精确解得误差。 对,0001.0,01.0,1.0===εεε考虑同样的问题。
解 (1)给出算法:
为解b Ax =,令U L D A --=,其中][ij a A =,),,,(2211nn a a a diag D = ,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡------=-00001
,21323121
n n n n a a a a a a L
,⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡------=-0000,122311312 n n n n a a a a a a U 利用Jacobi 迭代法,G-S 迭代法,SOR 迭代法解线性方程组,均可以下步骤求解: step1给定初始向量x0=(0,0,...,0),最大迭代次数N ,精度要求c ,令k=1 step2令x=B*x0+g
数值分析实验报告模板
数值分析实验报告模板
篇一:数值分析实验报告(一)(完整)
数值分析实验报告
1
2
3
4
5
篇二:数值分析实验报告
实验报告一
题目:非线性方程求解
摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。即若x0 偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。
前言:(目的和意义)
掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收
敛,但精度不够。熟悉Matlab语言编程,学习编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。
数学原理:
对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。
对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk)
产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为
xk?1?xk?rf(xk) 'f(xk)
共轭梯度法优缺点
共轭梯度法优缺点
数值代数实验报告
一、实验名称:用共轭梯度法解线性方程组。
二、实验目的:进一步熟悉理解掌握共轭梯度法解法思路,提高matlab 编程能力
三、实验要求:已知线性方程矩阵,应用共轭梯度法在相关软件编程求解线性方程
组的解。
四、实验原理:
1.共轭梯度法:
考虑线性方程组
A某b
的求解问题,其中A是给定的n阶对称正定矩阵,b是给定的n维向量,某是待求解
的n维向量.为此,定义二次泛函
TT(某)某A某2b某.
定理1设A对称正定,求方程组A某b的解,等价于求二次泛函(某)的极小值点.
定理1表明,求解线性方程组问题就转化为求二次泛函(某)的极小值点问题.
求解二次函数极小值问题,通常好像盲人下山那样,先给定一个初始向量某0,确定
一个下山方向p0,沿着经过点某0而方向为p0的直线某某0p0找一个点
某某p,
1000
使得对所有实数有
某p某p,
00000
即在这条直线上某1使(某)达到极小.然后从某1出发,再确定一个下山的方向p1,沿着
直
线
某某p再跨出一步,即找到1使得某在某2某11p1达到极小:
11
某p某p.
11111
重复此步骤,得到一串
0,1,2,L和p0,p1,p2,L,
称pk为搜索方向,k为步长.一般情况下,先在某k点找下山方向pk,再在直线
某某p上确定步长k使
kk
某p某p
kkkkk
,
最后求出
某某p.然而对不同的搜索方向和步长,得到各种不同的算法.
k1kkk
1
由此,先考虑如何确定k.设从某k出发,已经选定下山方向pk.令
f某p
kk
TT
某pA某p2b某p
kkkkkk
2T2T
pAprp某,
kkkkk
(完整版)哈工大-数值分析上机实验报告
(完整版)哈工大-数值分析上机实验报告
实验报告一
题目:非线性方程求解
摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。
前言:
掌握二分法与Newton法的基本原理和应用。数学原理:
对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。
对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end
x=c%给出解
Newton法及改进的Newton法源程序:
clear
%%%% 输入函数
f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);
%%%改进常数或重根数 miu=2;
%%%初始值x0
x0=input('input initial value x0>>'); k=0;%迭代次数
max=100;%最大迭代次数
R=eval(subs(f,'x0','x'));%求解f(x0),以确定初值x0时否就是解
while (abs(R)>1e-8)
x1=x0-miu*eval(subs(f,'x0','x'))/eval(subs(df,'x0', 'x')); R=x1-x0; x0=x1; k=k+1;
if (eval(subs(f,'x0','x'))max;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值
上海大学课程实验报告-数值代数
课程实验报告
COURSE PAPER
课程名称:数值代数与计算方法
课程号:08305114
授课教师:
学号:
姓名:
所属:计算机科学与工程
打印时间:2015
评语:
题目一:
算法:
1、对于问题一:
2、对于问题二:
直接编写递归函数程序,算出三个差分方程的10个近似值程序:
1)
%main.m
clc;
clear all;
a=1;
b=-2;
c=-3;
[x1,x2]=roots(a,b,c)
%roots.m
function [x1,x2]=roots(a,b,c)
d=sqrt(b*b-4*a*c);
if d>0
x1=(-2*c)/(b+d);
x2=(-b-d)/(2*a);
elseif d<0
x1=(-b+d)/(2*a);
x2=(-2*c)/(b-d);
end
2)
%solu.m
function [X,R,P,Q]=solu(X0,R0,P0,P1,Q0,Q1) X(1)=X0;
R(1)=R0;
P(1)=P0;
P(2)=P1;
Q(1)=Q0;
Q(2)=Q1;
for i=1:9
X(i+1)=X(i)/2;
X(i)=X(i+1);
end
for i=1:9
R(i+1)=R(i)/2;
R(i)=R(i+1);
end
for i=3:10
P(i)=3/2*P(i-1)-1/2*P(i-2);
P(i-1)=P(i);
P(i-2)=P(i-1);
end
for i=3:10
Q(i)=5/2*Q(i-1)-Q(i-2);
Q(i-1)=Q(i);
Q(i-2)=Q(i-1);
end
%Xn.m
clc;
clear all;
《数值分析》上机实验报告
数值分析上机实验报告
《数值分析》上机实验报告
1.用Newton 法求方程 X 7-X 4+14=0
在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据:
设函数在有限区间[a ,b]上二阶导数存在,且满足条件
{}αϕ上的惟一解在区间平方收敛于方程所生的迭代序列
迭代过程由则对任意初始近似值达到的一个中使是其中上不变号
在区间],[0)(3,2,1,0,)
(')
()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20
)()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a
b c f x f b a x f b f x f k k k k k k ==-
==∈≤-≠>+
令
)9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3
2
2
5
333647>⋅''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f
故以1.9为起点
⎪⎩
⎪⎨
⎧
='-
=+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。
1.2 C语言程序原代码:
#include
数值线性代数第二版徐树方高立张平文上机习题第二章实验报告
(1)估计5到20阶Hilbert 矩阵的∞数条件数
(2)设n n R A ⨯∈⎥⎥⎥⎥⎥
⎥⎦
⎤⎢⎢⎢⎢⎢
⎢⎣⎡------=111
1
111110110
01
,先随机地选取n R x ∈,并计算出x A b n =;然
后再用列主元Gauss 消去法求解该方程组,假定计算解为∧
x 。试对n 从5到30估计计算解∧
x 的精度,并且与真实相对误差作比较。
解(1)分析:利用for 使n 从5循环到20,利用()hilb 函数得到Hilbert 矩阵A ;先将算
法2.5.1编制成通用的子程序,利用算法2.5.1编成的子程序)(B opt v =,对T
A B -=求解,
得到∞
-1
A
的一个估计值v v =~
;再利用inf),(A norm 得到∞A ;则条件数
inf),(1
A norm v A A K *==∞∞
-。
另,矩阵A 的∞数条件数可由inf),(A cond 直接算出,两者可进行比较。
程序为
1 算法2.5.1编成的子程序)(B opt v =
function v=opt(B)
k=1;
n=length(B);
x=1./n*ones(n,1); while k==1 w=B*x;
v=sign(w); z=B'*v;
if norm(z,inf)<=z'*x v=norm(w,1); k=0; else
x=zeros(n,1);
[s,t]=max(abs(z)); x(t)=1; k=1; end end end
2 问题(1)求解 ex2_1
for n=5:20
A=hilb(n);
B=inv(A.');
数值计算方法上机实验报告
数值计算方法上机实验报告
实验目的:复习和巩固数值计算方法的基本数学模型,全面掌握运用计算机进行数值计算的具体过程及相关问题。利用计算机语言独立编写、调试数值计算方法程序,培养学生利用计算机和所学理论知识分析解决实际问题的能力。
上机练习任务:利用计算机基本C 语言编写并调试一系列数值方法计算通用程序,并能正确计算给定题目,掌握调试技能。
掌握文件使用编程技能,如文件的各类操作,数据格式设计、通用程序运行过程中文件输入输出运行方式设计等。
一、
各算法的算法原理及计算机程序框图
1. 列主元高斯消去法
算法原理:
高斯消去法是利用现行方程组初等变换中的一种变换,即用一个不为零的数乘一个方程后加只另一个方程,使方程组变成同解的上三角方程组,然后再自下而上对上三角方程组求解。
列选住院是当高斯消元到第k 步时,从k 列的kk a 以下(包括kk a )的各元素中选出绝对值最大的,然后通过行交换将其交换到kk a 的位置上。交换系数矩阵中的两行(包括常数项),只相当于两个方程的位置交换了,因此,列选主元不影响求解的结果。
●源程序:
#define N 200
#include "stdio.h"
#include "math.h"
FILE *fp1,*fp2;
void LZ()
{
int n,i,j,k=0,l;
double d,t,t1;
static double x[N],a[N][N];
fp1=fopen("a1.txt","r");
fp2=fopen("b1.txt","w");
fscanf(fp1,"%d",&n);
(完整word版)数值计算方法实验报告(含所有)
本科实验报告
课程名称:计算机数值方法
实验项目:计算机数值方法实验
实验地点:虎峪校区致远楼B401
专业班级:软件学院1217班学号:201200xxxx 学生姓名:XXX
指导教师:xxx
2014 年5 月21日
太原理工大学学生实验报告
、实验目的和要求
熟悉使用、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:二分法f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-x n|<0.5 W5二、主要设备
笔记本HP ProBook 6470b —台编译软件:VC++6.0
三、实验内容和原理
函数f(x)在区间(x, y)上连续,先在区间(x, y)确定a与b,若f(a) , f(b) 异号,说明在区间(a , b)内存在零点,然后求f[(a+b)/2]。
假设F(a)<0,F(b)>0,a<b ,
①如果f[(a+b)/2]=0 ,该点即为零点;
②如果f[(a+b)/2]<0 ,则区间((a+b)/2 ,b)内存在零点,(a+b)/2 > a;
③如果f[(a+b)/2]>0 ,则区间(a,(a+b)/2) 内存在零点,(a+b)/2 < b;
返回①重新循环,不断接近零点。通过每次把f(x)的零点所在区间收缩一半的方法,使区间内的两个端点逐步逼近函数零点,最终求得零点近似值。
四、操作方法与实验步骤
1. 二分法:
#in clude<stdio.h>
#in clude<stdlib.h>
数值分析实验报告
《数值分析》
实验报告
学院:计算机科学与软件学院姓名:XXX
班级:计算机XX班
学号:XXXXXX
实验一:舍入误差与数值稳定性
实验目的:
1、 通过上机编程,复习巩固以前所学程序设计语言;
2、 通过上机计算,了解舍入误差所引起的数值不稳定性。
3、 通过上机计算,了解运算次序对计算结果的影响,从而尽量避免大数吃小数的现象。
实验内容:用两种不同的顺序计算644834.110000
12
≈∑=-n n ,分析其误差
的变化。
实验流程图:
实验源程序:
#include
#include
void main()
{ int i;
float s1=0,s2=0,d1,d2;
for (i=1;i<=10000;i++)
s1=s1+1.0f/(i*i);
for (i=10000;i>=1;i--)
s2=s2+1.0f/(i*i);
d1=(float)(fabs(1.644834-s1));
d2=(float)(fabs(1.644834-s2));
printf("正向求和结果为%f\n 误差为%f\n\n",s1,d1);
printf("反向求和结果为%f\n 误差为%f\n\n",s2,d2);
if(d1
printf("正向求和误差小于负向求和误差\n");
else if(d1==d2)
printf("正向求和误差等于负向求和误差\n"); else
printf("正向求和误差大于负向求和误差\n");
}
实验结果:
实验分析:第一次做数值实验,又一次使用C语言编程,没有了刚学习C语言的艰难,能够将实验步骤转换成流程图并编写出完整的实验代码,在经过多次调试、改正后得到正确的程序和结果。这个实验较简单,计算误差时如果输入数据有误差,而在计算过程中舍入误差不增长,则称此算法是稳定的,否则称此算法是数值不稳定的,减少运算次数可以减小舍入误差。在运算中,如果参加运算的数的数量级相差很大,而计算机位数有限,如不注意运算次序就可能出现大数“吃掉”小数的现象,进而影响计算结果的可靠性,所以计算过程中要注意运算次序,避免出现这种现象。
大学数学实验五_线性代数方程组的数值解法
X0=[1:20] 17 14
对雅可比迭代法和高斯-赛德尔迭代法的函数略作修改,以便输出图形,观察迭代向量 序列是否收敛。
修改后的 Jacobi 函数
function [xj,k,P]=Jacobi(A,X0,b,e) D=diag(diag(A)); n=length(A); L=-(tril(A)-D); U=-(triu(A)-D); fj=D\b; Bj=D\(L+U); xj=X0; k=0; P=X0; while norm(A*xj-b)/norm(b)>e
亿元假定每个部门的产出与它的投入成正比由上表可确定这三个部门的投入产出表如下表所产出投入农业制造业服务业农业0150102制造业0300503服务业0203121如果今年对农业制造业服务业的外部需求分别为50150100亿元问这三个部门的总产出分别为多少
大学数学实验五 线性代数方程组的数值解法 实验报告
模型: 已知某年该植物的数量为 x0,记第 k 年的植物数量为 xk,那么有 xk + pxk-1 + qxk-2 = 0 (k = 2, 3, …… , n)
其中 p = -a1bc,q = -a2b(1-a1)bc。若要求 n 年后数量达到 xn,则 Ax = b
其中
,
,
7
① 用稀疏系数矩阵求解。
雅可比迭代法 迭代次数 k B =ones(20,1) B =[1:20]
数值计算方法实验报告
数值计算方法实验报告
一、实验目的
本实验旨在通过数值计算方法的实验操作,深入理解数值计算方法的原理与应用,掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。
二、实验内容
1.数值微积分
2.数值代数
3.数值微分方程
4.数值线性代数
5.数值优化
6.数值统计分析
7.数值随机模拟
8.数值傅立叶分析
9.数值偏微分方程
三、实验步骤
1.数值微积分:通过不同的数值积分方法,计算给定函数的定积分值,并对不同数值积分方法的误差进行分析。
2.数值代数:通过使用线性代数方法,求解给定的线性方程组,并分析不同线性方程组求解方法的优劣。
3.数值微分方程:通过使用常微分方程数值解法,求解给定的微分方程,并比较不同求解方法的精度和稳定性。
4.数值线性代数:通过使用特征值分解方法,对给定的矩阵进行特征值分解,并分析不同特征值分解方法的优缺点。
5.数值优化:通过使用不同的优化方法,求解给定的优化问题,并比较不同的优化方法的效率和精度。
6.数值统计分析:通过使用不同的统计分析方法,对给定的数据进行统计分析,并分析不同的统计方法的优缺点。
7.数值随机模拟:通过使用随机模拟方法,模拟给定的概率分布,并分析不同随机模拟方法的效率和精度。
8.数值傅立叶分析:通过使用傅立叶分析方法,对给定的信号进行频谱分析,并分析不同的傅立叶分析方法的优缺点。
9.数值偏微分方程:通过使用偏微分方程数值解法,求解给定的偏微分方程,并比较不同求解方法的精度和稳定性。
四、实验结果与分析
本实验中,通过对不同的数值计算方法的实验操作,我们可以更深入地理解数值计算方法的原理与应用,并掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。同时,通过实验结果的分析,我们可以更好地比较不同数值计算方法的优缺点,为实际应用提供参考依据。
数值分析实验报告线性插值和二次插值计算LN0.54的近似值
篇一:数值分析-用线性插值及二次插值计算
数值分析上机报告
习题:给出f(x)?lnx的数值表,用线性插值及二次插值计算ln0.54的近似值。
解: (1)用线性插值计算
matlab程序
>> x=0.54;
>>
a=[0.5,0.6];
>>
b=[-0.693147,-0.510826];
>>
l1=b(1)*((x-a(2))/(a(1)-a(2)));
>>
l2=b(2)*((x-a(1))/(a(2)-a(1)));
>> y=l1+l2
y =
-0.6202
(2)用抛物插值计算
matlab程序
>> x=0.54;
>>
a=[0.4,0.5,0.6];
>>
b=[-0.916291,-0.693147,-0.510826];
>>
a=b(1)*(x-a(2))*(x-a(3))/((a(1)-a(2))*(a(1)-a(3))); >> b=b(2)*(x-a(1))*(x-a(3))/((a(2)-a(1))*(a(2)-a(3))); >> c=b(3)*(x-a(1))*(x-a(2))/((a(3)-a(1))*(a(3)-a(2))); >> y=a+b+c
y =
-0.6153
>>
篇二:数值分析上机实验报告二
实验报告二
题目:如何求解插值函数
摘要:在工程测量和科学实验中,所得到的数据通常都是离散的,如果要得到这些离散点意外的其他点的数值,就需要根据这些已知数据进行插值。这里我们将采用多种插值方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值代数课程设计实验报告
姓名: 班级: 学号: 实验日期:
一、实验名称 代数的数值解法 二、实验环境 MATLAB7.0
实验一、平方根法与改进平方根法
一、实验要求:
用熟悉的计算机语言将不选主元和列主元Gasuss 消元法编写成通用的子程序,然后用编写的程序求解下列方程组
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎦⎤
⎢⎢⎢⎢⎢
⎢
⎢⎢⎢⎣
⎡--⨯1415151515768
168
168
168
1681612321
n n n n n x x x x x x 用所编的程序分别求解40、84、120阶方程组的解。
二、算法描述及实验步骤 GAuss 程序如下:
(1)求A 的三角分解:LU A =;
(2)求解b y =L 得y ; (3)求解y x =U 得x ;
列主元Gasuss 消元法程序如下: 1求A 的列主元分解:LU PA =;
2求解b y P L =得y ; 3求解y x =U 得x ;
三、调试过程及实验结果:
%----------------方程系数----------------
>> A1=Sanduijiaozhen(8,6,1,40); >> A2=Sanduijiaozhen(8,6,1,84); >> A3=Sanduijiaozhen(8,6,1,120); >> b1(1)=7;b2(1)=7;b3(1)=7;
>> for i=2:39
b1(i)=15;
end
>> b1(40)=14;
>> for i=2:83
b2(i)=15;
end
>> b2(40)=14;
>> for i=2:119
b1(i)=15;
end
>> b3(120)=14;
%----------------方程解----------------
>> x11=GAuss(A1,b1')
>> x12=GAuss Zhu(A1,b1')
>> x21=GAuss(A2,b2')
>> x22=GAuss Zhu(A3,b3')
>> x31=GAuss(A3,b3')
>> x32=GAuss Zhu(A3,b3')
运行结果:(n=40)
GAuss消元法的解即为
x11 =
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
列主元GAuss消元法的解即为x12 =
1 1 1 1 1 1 1 1 1 1 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
六、源程序:
function A=Sanduijiaozhen(a,b,c,n)
%生成n阶以a,b,c为元素的三对角阵
A=diag(b*ones(1,n),0)+diag(c*ones(1,n-1),1)+diag(a*ones(1,n-1),-1);
function x=GAuss(A,b)
n=length(b);
x=b;
%-------分解---------------
for i=1:n-1
for j=i+1:n
mi=A(j,i)/A(i,i);
b(j)=b(j)-mi*b(i);
for k=i:n
A(j,k)=A(j,k)-mi*A(i,k);
end
AB=[A,b];
end
end
%-----------回代------------------
x(n)=b(n)/A(n,n);
for i=n-1:-1:1
s=0;
for j=i+1:n
s=s+A(i,j)*x(j);
end
x(i)=(b(i)-s)/A(i,i);
end
function x=GAussZhu(A,b)
n=length(b);
x=b;
%----------------------选主元---------------------