篇一 :数值分析实验报告(一)(完整)

数值分析实验报告

…… …… 余下全文

篇二 :数值分析实验报告(包含源程序)

课程实验报告

课程实验报告

课程实验报告

课程实验报告

…… …… 余下全文

篇三 :哈工大-数值分析上机实验报告

实验报告一

题目: 非线性方程求解

摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。

前言:(目的和意义)

掌握二分法与Newton法的基本原理和应用。

数学原理:

对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。

对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式

xk?1?xk?f(xk) 'f(xk)

产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为

xk?1?xk?rf(xk) f'(xk)

其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。

程序设计:

本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下

function y=f(x);

y=-x*x-sin(x);

写成如上形式即可,下面给出主程序。

二分法源程序:

clear

.1.

%%%给定求解区间

b=1.5;

a=0;

%%%误差

R=1;

k=0;%迭代次数初值

while (R>5e-6) ;

…… …… 余下全文

篇四 :数值分析 实 验 报 告

数值分析               

                   

                    

             

                

                 

                         

教务处制

2013  6   20 

…… …… 余下全文

篇五 :数值分析matlab完整版实验报告

《数值分析》报告

运用Matlab求解非线性方程的根

    院:

    业:

    级:

    名:

    号:

1.      目的

掌握非线性方程求根的方法,并选取实例运用MATLAB软件进行算法的实现,分别用牛顿法、弦截法和抛物线法求非线性方程的根。

2.      报告选题

报告选取《数值分析(第四版)》290页习题7作为研究对象,即求附近的根。根的准确值,要求结果准确到四位有效数字。

(1)  用牛顿法;

(2)  用弦截法,取

(3)  用抛物线法,取

3.      理论基础

(1)   牛顿迭代法

牛顿迭代法是一种特殊的不动点迭代法,其计算公式为

   其迭代函数为      

                

牛顿迭代法的收敛速度,当时,容易证明,,牛顿迭代法是平方收敛的,且 。                

(2)弦截法

将牛顿迭代法中的处的一阶差商来代替,即可得弦截法

…… …… 余下全文

篇六 :数值分析实验报告

实验2.1 多项式插值的振荡现象

实验目的:

在一个固定的区间上用插值逼近一个函数,显然Lagrange插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项式的次数增加时,Ln(x)是否也更加靠近被逼近的函数。Runge给出的一个例子是极著名并富有启发性的。

实验内容:

       设区间[-1,1]上函数 f(x)=1/(1+25x2)。

考虑区间[-1,1]的一个等距划分,分点为         xi= -1 + 2i/n,i=0,1,2,…,n,

则拉格朗日插值多项式为

.

其中,li(x),i=0,1,2,…,n是n次Lagrange插值基函数。

实验步骤与结果分析:

实验源程序

function Chap2Interpolation

% 数值实验二:“实验2.1:多项式插值的震荡现象”

% 输入:函数式选择,插值结点数

% 输出:拟合函数及原函数的图形

promps = {'请选择实验函数,若选f(x),请输入f,若选h(x),请输入h,若选g(x),请输入g:'};

titles = 'charpt_2';

result = inputdlg(promps,'charpt 2',1,{'f'});

Nb_f = char(result);

if(Nb_f ~= 'f' & Nb_f ~= 'h' & Nb_f ~= 'g')errordlg('实验函数选择错误!');return;end

result = inputdlg({'请输入插值结点数N:'},'charpt_2',1,{'10'});

Nd = str2num(char(result));

if(Nd <1)errordlg('结点输入错误!');return;end

…… …… 余下全文

篇七 :数值分析实验报告三

数学与信息工程学院

实 验 报 告

课程名称:   计算方法               

实 验 室:    7404                  

实验台号:                           

班    级:                

姓    名:                      

实验日期:    2014     5   21  

…… …… 余下全文

篇八 :数值分析实验报告程序

一、Newton插值法

#include<stdio.h>

#define MAX_N 20

typedef struct tagPOINT

{double x;

double y;

}POINT;

int main()

{int n,i,j;

POINT points[MAX_N+1];double diff[MAX_N+1];

double x,tmp,newton=0;

printf("\nInput n value:");

scanf("%d",&n);

printf("Now input the (x_i,y_i),....,%d:\n",n);

for(i=0;i<=n;i++)

scanf("%lf%lf",&points[i].x,&points[i].y);

printf("Now input the x value:");

scanf("%lf",&x);

for(i=0;i<=n;i++) diff[i]=points[i].y;

for(i=0;i<=n;i++)

{for(j=n;j>i;j--)

{diff[j]=(diff[j]-diff[j-1])/(points[j].x-points[j-1-i].x);

}

}

tmp=1;newton=diff[0];

for(i=0;i<n;i++)

{tmp=tmp*(x-points[i].x);

newton=newton+tmp*diff[i+1];

}

printf("newton(%f)=%f\n",x,newton);

return 0;

…… …… 余下全文