数值分析作业

发布 2022-08-27 20:38:28 阅读 2736

第二章。

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 按两种顺序分别计算并指出有效位数。编制程序用单精度...