第二章。
1. 题目:运用matlab编程实现牛顿迭代。
2. 实验操作。
1、打开matlab程序软件。
2、在matlab中编辑如下的m程序。
function [p1,err,k,y]=newton(f,df,p0,delta,max)
f 是要求根的方程(f(x)=0);
df 是f(x)的导数;
p0是所给初值,位于x*附近;
delta是给定允许误差;
max是迭代的最大次数;
p1是newton法求得的方程的近似解;
err是p0的误差估计;
k是迭代次数;
p0for k=1:max
p1=p0-feval('f',p0)/feval('df',p0);
err=abs(p1-p0);
p0=p1;kp1
erry=feval('f',p1)
if (err break;
endend
4、m文件2
function y=f(x)
y=x^3-3*x+2;
5、m文件3
function y=df(x)
y=3*x^2-3;
6、在程序窗口中,调用上面的m文件,对具体问题求解。
>> newton('f','df',1.2,10^(-6),20)
3.实验结果。
p0 = 1.2000
k =1 p1=1.1030 err=0.0970 y=0.0329
k= 2 p1=1.0524 err=0.0507 y=0.0084
k =3 p1=1.0264 err=0.0260 y=0.0021
k =4 p1=1.0133 err=0.0131 y=5.2963e-004
k =5 p1=1.0066 err=0.0066 y=1.3270e-004
k =6 p1=1.0033 err=0.0033 y=3.3211e-005
k =7 p1=1.0017 err=0.0017 y=8.3074e-006
k =8 p1=1.0008 err=8.3157e-004 y = 2.0774e-006
k =9 p1=1.0004 err=4.1596e-004 y =5.1943e-007
k=10 p1=1.0002 err=2.0802e-004 y= 1.2987e-007
k=11 p1=1.0001 err=1.0402e-004 y =3.2468e-008
k=12 p1=1.0001 err=5.2014e-005 y=8.1170e-009
k=13 p1=1.0000 err=2.6008e-005 y= 2.0293e-009
k=14 p1=1.0000 err=1.3004e-005 y=5.0732e-010
k=15 p1 =1.0000 err=6.5020e-006 y=1.2683e-010
k=16 p1 =1.0000 err=3.2510e-006 y=3.1708e-011
k=17 p1 =1.0000 err=1.6255e-006 y =7.9272e-012
k=18 p1 =1.0000 err =8.1279e-007 y= 1.9820e-012
ans = 1.0000
结果说明:经过18次迭代得到精确解为1,误差为8.1279e-007。
第三章。1. 题目:
用最小二乘法求一个形如y=a+bx^2的经验公式,使他与下列数据相拟合,并求均方误差。
2.程序如下:
> x=[19 25 31 38 44];
> y=[19.0 32.3 49.0 73.3 97.8];
> [p,v]=zxrc_poly(x.^2,y,1)p =
v =3. 运行结果:
a=0.972578656906791 b=0.0500351242191601
均方误差为: 0.122569200640555
第四章。1. 题目:
用龙贝格法计算积分:[^dy', altimg': w':
73', h': 58'}]要求[\\large}^0\\end}}}scriptsize\\large}^0\\end}}}scriptsize\\end\\large}}\scriptsize', altimg': w':
165', h': 30'}]
2. 程序如下:
#include<>
#include<>
double romb(double a,double b,double eps)
double rombf();
int m,n,i,k;
double y[10],h,ep,p,x,s,q;
h=b-a;
y[0]=h*(rombf(a)+rombf(b))/2.0;
m=1;n=1;ep=eps+1.0;
while((ep>=eps)&&m<=9))
p=(y[0]+h*p)/2.0;
s=1.0;
for(k=1;k<=m;k++)
ep=fabs(q-y[m-1]);
m=m+1;y[m-1]=q;n=n+n;h=h/2.0;
return q;
double rombf(double x)
main()
double a=1;
double b=3;
double eps=1e-5;
double t=romb(a,b,eps);
printf("the result is:%.3f",t);
3.运行结果:
the result is:1.099
第五章。1.题目:用追赶法解三对角矩阵方程ax=b,其中:
2. 程序如下:
> a=-1*ones(1,5);
> c=a;
> b=2*ones(1,6);
> f=[1 0 1 0 0 1];
>> x]=zhuigan(a,b,c,f)’x =
数值分析作业
12.求在 0,1 上的一次最佳平方逼近多项式与二次最佳平方逼近多项式。函数 function s zjpfbj n,a,b 创建一个函数,里面填入次数,和区间范围。base inline x j 1 x j 定义多项式。quan inline 1 x 权函数。a zeros n 1 y zeros...
数值分析作业
实验2.2算法设计与比较。实验目的 编制不同方法的matlab程序,这些方法的计算效果和特点。问题提出 非线性方程的数值解法很多,不同的方法效果如何,要靠计算的实践来分析 比较。实验内容 考虑下列算法 1 牛顿法 2 弦割法 3 抛物线法。分别编写它们的matlab程序。牛顿法程序 function...
数值分析作业
数值分析上机作业。zhh mushan 班级 土木工程一班。姓名 赵惠惠。班级 2010510359 二零一一年六月 舍入误差与有效数。一 问题说明。1 设,其精确值为。1 编制按从小到大的顺序计算通用程序。2 编制按从小到大的顺序计算通用程序。3 按两种顺序分别计算并指出有效位数。编制程序用单精度...