东南大学计算方法实验报告

东南大学计算方法实验报告
东南大学计算方法实验报告

计算方法与实习实验报告

学院:电气工程学院

指导老师:李翠平

班级:160093

姓名:黄芃菲

学号:16009330

实习题一

实验1 拉格朗日插值法

一、方法原理

n次拉格朗日插值多项式为:L n(x)=y0l0(x)+y1l1(x)+y2l2(x)+…+y n l n(x)

n=1时,称为线性插值,L1(x)=y0(x-x1)/(x0-x1)+ y1(x-x0)/(x1-x0)=y0+(y1-x0)(x-x0)/(x1-x0)

n=2时,称为二次插值或抛物线插值,精度相对高些

L2(x)=y0(x-x1)(x-x2)/(x0-x1)/(x0-x2)+y1(x-x0)(x-x2)/(x1-x0)/(x1-x2)+y2(x-x0)(x-x1)/(x2-x0)/(x2-x1)

二、主要思路

使用线性方程组求系数构造插值公式相对复杂,可改用构造方法来插值。

对节点x i(i=0,1,…,n)中任一点x k(0<=k<=n)作一n 次多项式l k(x k),使它在该点上取值为1,而在其余点x i(i=0,1,…,k-1,k+1,…,n)上为0,则插值多项式为L n(x)=y0l0(x)+y1l1(x)+y2l2(x)+…+y n l n(x) 上式表明:n 个点x i(i=0,1,…,k-1,k+1,…,n)都是l k(x)的零点。可求得l k

三.计算方法及过程:1.输入节点的个数n

2.输入各个节点的横纵坐标

3.输入插值点

4.调用函数,返回z

函数语句与形参说明

程序源代码如下:

形参与函数类型参数意义

int n 节点的个数

double x[n](double *x)存放n个节点的值

double y[n](double *y)存放n个节点相对应的函数值

double p 指定插值点的值

double fun() 函数返回一个双精度实型函数值,即插值点p

处的近似函数值

#include

#include

using namespace std;

#define N 100

double fun(double *x,double *y, int n,double p);

void main()

{int i,n;

cout<<"输入节点的个数n:";

cin>>n;

double x[N], y[N],p;

cout<<"please input xiangliang x= "<

for(i=0;i>x[i];

cout<<"please input xiangliang y= "<

for(i=0;i>y[i];

cout<<"please input LagelangrichazhiJieDian p= "<

cin>>p;

cout<<"The Answer= "<

system("pause") ;}

double fun(double x[],double y[], int n,double p)

{double z=0,s=1.0;

int k=0,i=0;

double L[N];

while(k

{ if(k==0)

{ for(i=1;i

L[0]=s*y[0];

k=k+1;}

else

{s=1.0;

for(i=0;i<=k-1;i++)s=s*((p-x[i])/(x[k]-x[i]));

for(i=k+1;i

L[k]=s*y[k];

k++;}

}

for(i=0;i

return z;

}

五.实验分析

n=2时,为一次插值,即线性插值

n=3时,为二次插值,即抛物线插值

n=1,此时只有一个节点,插值点的值就是该节点的函数值

n<1时,结果都是返回0的;这里做了n=0和n=-7两种情况

3

常用的是线性插值和抛物线插值,显然,抛物线精度相对高些

n次插值多项式Ln(x)通常是次数为n的多项式,特殊情况可能次数小于n.例如:通过三点的二次插值多项式L2(x),如果三点共线,则y=L2(x)就是一条直线,而不是抛物线,这时L2(x)是一次式。

拟合曲线光顺性差

实验2 牛顿插值法

一、方法原理及基本思路

在拉格朗日插值方法中,若增加一个节点数据,其插值的多项式需重新计算。现构造一个插值多项式Nn(x),只需对Nn-1(x)作简单修正(如增加某项)即可得到,这样计算方便。

利用牛顿插值公式,当增加一个节点时,只需在后面多计算一项,而前面的计算仍有用;另一方面Nn(x)的各项系数恰好又是各阶差商,而各阶差商可用差商公式来计算。

由线性代数知,对任何一个不高n次的多项式P(x)=b0+b1x+b2x2+…+bnxn (幂基) ①

也可将其写成P(x)=a0+a1(x-x0)+a2(x-x0) (x-x1)+…+a n(x-x0) …(x-x n-1)

其中ai为系数,xi为给定节点,可由①求出ai 一般情况下,牛顿插值多项式Nn(x)可写成:

Nn(x)= a0+a1(x-x0)+a2(x-x0) (x-x1)+…+a n(x-x0) …(x-x n-1))

只需求出系数ai,即可得到插值多项式。

二、计算方法及过程

1.先后输入节点个数n和节点的横纵坐标,插值点的横坐标,最后输入精度e

2. 用do-while循环语句得到跳出循环时k的值

3.将k值与n-1进行比较,若在达到精度时k

函数语句与形参说明

形参与函数类型参数意义

int n 节点的个数

float x[MAX] 存放n个节点的值(从小到大)

Float y[MAX]; 存放n个节点相对应的函数值

float x0,y0 指定插值点的横纵坐标

float e 精度

程序源代码如下:

#include

#include

using namespace std;

#define MAX 100

void main()

{ float x[MAX],y[MAX];

float x0,y0,e,N1;

float N0=0;

int i,k,n;

cout<<"输入节点的个数,n=";

cin>>n;

cout<<"请输入插值节点!"<

for(i=0;i>x[i];

cout<<"请输入对应的函数值!"<

for(i=0;i>y[i];

cout<<"请输入插值点,x0=";

cin>>x0;

cout<<"请输入精度,e=";

cin>>e;

y0=1; N1=y[0]; k=0;

do { k++;

N0=N1;

y0=y0*(x0-x[k-1]);

for(i=0;i

N1=N0+y0*y[k];

} while (fabs(N1-N0) > e && k<(n-1));

if (k==(n-1)) cout<<"计算失败!";

if (k<(n-1)) cout<<"输出结果y[x0]="<

system("pause");

}

三.运行结果测试:

题一:已知f(x)=sh(x)的函数表如下:计算f(0.23)的近似值

xi 0 0.20 0.30 0.50 Sh(xi) 0 0.20134 0.30452 0.52110

实习题二

1.用牛顿法求下列方程的根:

3)lg20 x x

+-=

实验代码:

#include

#include

#define N 100

#define eps 1e-6

#define eta 1e-8

float Newton(float(*f)(float),float(*f1)(float),float x0) {

float x1,d;

int k=0;

do

{

x1=x0-(*f)(x0)/(*f1)(x0);

if(k++>N||fabs((*f1)(x1))

{

printf("\n Newton 迭代发散");

break;

}

d=fabs(x1)<1?x1-x0:(x1-x0)/x1;

x0=x1;

printf("x(%d)=%f\t",k,x0);

}

while(fabs(d)>eps&&fabs((*f)(x1))>eta);

return x1;

}

float f(float x)

{

return log10(x)+x-2;

}

float fl(float x)

{

return 1.0/(x*log(10))+1;

}

void main()

{

float x0,y0;

printf("请输入迭代初值x0\n");

scanf("%f",&x0);

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

y0=Newton(f,fl,x0);

printf("方程的根为: %f\n",y0);

}

运行窗口:

实习题三

4.编写用追赶法解三对角线性方程组的程序,并解下列方程组:

2)Ax b

实验代码

#include

#include

using namespace std;

void main(){

float a=1;

float b=-4;

float c=1;

float d[11]={0,-27,-15,-15,-15,-15,-15,-15,-15,-15,-15};

float l[11];

float bb[11];

float y[11];

float x[11];

bb[1]=b;

y[1]=d[1];

int i;

for(i=2;i<11;i++){

l[i]=a/bb[i-1];

bb[i]=b-l[i]*c;

y[i]=d[i]-l[i]*y[i];

}

x[10]=y[10]/bb[10];

for(i=9;1>0;i--){

x[i]=(y[i]-c*x[i+1])/bb[i];

}

for(i=1;i<11;i++)

cout<<'x'<

}

运行窗口

#include

#include

#include

#include

#include

#define N 11

main()

{

float a[N]={0,0,1,1,1,1,1,1,1,1,1};

float b[N]={0,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4};

float c[N]={0,1,1,1,1,1,1,1,1,1,0};

float d[N]={0,-27,-15,-15,-15,-15,-15,-15,-15,-15,-15};

float x[N]={0,0,0,0,0,0,0,0,0,0,0};

float r[N]={0,0,0,0,0,0,0,0,0,0,0};

float y[N]={0,0,0,0,0,0,0,0,0,0,0};

float q;

//clrscr();

int k;

r[1]=c[1]/b[1];

y[1]=d[1]/b[1];

for(k=2;k

{

q=b[k]-r[k-1]*a[k];

r[k]=c[k]/q;

y[k]=(d[k]-y[k-1]*a[k])/q; }

y[N-1]=(d[N-1]-y[N-2]*a[N-1])/(b[N-1]-r[N-2]*a[N-1]); x[N-1]=y[N-1]; for(k=N-2;k>=1;k--) x[k]=y[k]-r[k]*x[k+1]; for(k=1;k

运行窗口

5.12310211x x x -+=- 2348311

x x x -+=- 1232106x x x -+= 123431125x x x x -+-+=

雅克比迭代法 ● 实验代码 #include #include #define eps 1e-6 #define max 100

void Jacobi(float *a,int n,float x[]) {

int i,j,k=0;

float epsilon,s;

float *y=new float[n];

for(i=0;i

while(1)

{

epsilon=0;

k++;

for(i=0;i

{

s=0;

for(j=0;j

{

if(j==i)continue;

s+=*(a+i*(n+1)+j)*x[j];

}

y[i]=(*(a+i*(n+1)+n)-s)/(*(a+i*(n+1)+i));

epsilon+=fabs(y[i]-x[i]);

}

for(i=0;i

if(epsilon

{printf("迭代次数为:%d\n",k);return;}

if(k>=max)

{printf("迭代发散");return;}

}

delete y;

}

void main()

{

int i;

float a[4][5]={10,-1,2,0,-11,0,8,-1,3,-11,2,-1,10,0,6,-1,3,-1,11,25};

float x[4];

Jacobi(a[0],4,x);

for(i=0;i<4;i++)printf("x[%d]=%f\n",i,x[i]);

}

运行窗口

高斯-塞德尔迭代法

实验代码

#include

#include

#define N 500

void main()

{

int i;

float x[4];

float c[4][5]={10,-1,2,0,-11,0,8,-1,3,-11,2,-1,10,0,6,-1,3,-1,11,25};

void GaussSeidel(float *,int,float[]);

GaussSeidel(c[0],4,x);

for(i=0;i<4;i++)printf("x[%d]=%f\n",i,x[i]);

}

void GaussSeidel(float *a,int n,float x[])

{

int i,j,k=1;

float d,dx,eps;

for(i=0;i

while(1)

{

eps=0;

for(i=0;i

{

d=0;

for(j=0;j

{

if(j==i)continue;

d+=*(a+i*(n+1)+j)*x[j];

}

dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));

eps+=fabs(dx-x[i]);

x[i]=dx;

}

if(eps<1e-6){printf("迭代次数为:%d\n",k);return;}

if(k>N)

{

printf("迭代发散\n");

return;

}

k++;

}

}

●运行窗口

实习题四

2. 按下列数据

Xi 0.30 0.42 0.50 0.58 0.66 0.72

Yi 1.04403 1.08462 1.11803 1.15603 1.19817 1.23223 作5次插值,并求X1=0.46,X2=0.55,X3=0.60时的函数近似值。

●实验代码

#include

#define N 5

void Difference(float x[],float y[],int n)

{

float *f=new float[n+1];

int k,i;

for(k=1;k<=n;k++)

{

f[0]=y[k];

for(i=0;i

f[i+1]=(f[i]-y[i])/(x[k]-x[i]);

y[k]=f[k];

}

delete f;

return;

}

void main()

{

int i;

float a,b,c,varx=0.46,vary=0.55,varz=0.60;

float x[N+1]={0.30,0.42,0.50,0.58,0.66,0.72};

float y[N+1]={1.04403,1.08462,1.11803,1.15603,1.19817,1.23223};

Difference(x,y,N);

a=y[N];b=y[N];c=y[N];

for(i=N-1;i>=0;i--)

a=a*(varx-x[i])+y[i];

for(i=N-1;i>=0;i--)

b=b*(vary-x[i])+y[i];

for(i=N-1;i>=0;i--)

c=c*(varz-x[i])+y[i];

printf("Nn(%f)=%f\n",varx,a);

printf("Nn(%f)=%f\n",vary,b);

printf("Nn(%f)=%f\n",varz,c);

}

运行窗口

实习题5

1.

1)试分别用抛物线y=a+bx+cxx和指数曲线y=ae(bx)拟合下列数据:

Xi 1 1.5 2 2.5 3 3.5

Yi 33.4 79.50 122.65 159.05 189.15 214.15 Xi 4 4.5 5 5.5 6 6.5

Yi 238.65 252.50 267.55 280.50 296.65 301.40

XI 7 7.5 8

YI 310.40 318.15 325.15 实验运行代码:

//最小二乘法拟合曲线

#include

#include

using namespace std;

const int n=15;//数据对个数

const int m=3;//线性无关函数个数

class ColPivot

{

friend class Approx;

private:

double c[m][m+1];

double x[m];

public:

ColPivot()

{

for(int i=0;i

{

for(int j=0;j

x[i]=0;

}

}

void Cal();

};

void ColPivot::Cal()

{

int i,j,t,k;

double p;

for(i=0;i

{

k=i;

for(j=i+1;j

{

if(fabs(c[j][i])>fabs(c[k][i])) k=j;

}

if(k!=j)

{

for(j=i;j

{

p=c[i][j];

c[i][j]=c[k][j];

c[k][j]=p;

}

}

for(j=i+1;j

{

p=c[j][i]/c[i][i];

for(t=i;t

{

c[j][t]-=p*c[i][t];

}

}

}

for(i=m-1;i>=0;i--)

{

p=c[i][m];

for(j=m-1;j>i;j--)

{

p-=c[i][j]*x[j];

}

if(c[i][i]==0) x[i]=0;

else x[i]=p/c[i][i];

}

}

class Approx

{

private:

double x[n],y[n],a[3],b[2];

public:

void GetValue(double[],double[]);

void Para();

void Expo();

void Show();

};

void Approx::GetValue(double a[n],double b[n]) {

for(int i=0;i

{

x[i]=a[i];

y[i]=b[i];

}

}

void Approx::Para()

{

int i,j,t;

ColPivot col;

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

{

for(j=0;j<3;j++)

{

for(t=0;t

}

for(t=0;t

}

col.Cal();

for(i=0;i<3;i++) a[i]=col.x[i];

}

void Approx::Expo()

{

int i,j,t;

ColPivot col;

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

{

for(j=0;j<2;j++)

{

for(t=0;t

}

for(t=0;t

}

col.Cal();

b[0]=exp(col.x[0]);

b[1]=col.x[1];

}

void Approx::Show()

{

cout<<"用抛物线拟合:"<

cout<<"a="<

cout<<"b="<

cout<<"c="<

cout<<"用指数曲线拟合:"<

cout<<"a="<

cout<<"b="<

}

int main()

{

Approx ap;

double x[15];

for(int i=0;i<15;i++) x[i]=1+i*0.5;

double

y[15]={33.4,79.5,122.65,159.05,189.15,214.15,238.65,252.5,267.55,280.5,296.65,301.4,310. 4,318.15,325.15};

ap.GetValue(x,y);

ap.Para();

ap.Expo();

ap.Show();

return 0;

}

《计算方法》课内实验报告

《计算方法》实验报告 姓名: 班级: 学号: 实验日期: 2011年10月26日

一、实验题目: 数值积分 二、实验目的: 1.熟悉matlab 编写及运行数值计算程序的方法。 2.进一步理解数值积分的基础理论。 3.进一步掌握应用不同的数值积分方法求解给定的积分并给出数据结果及误差分析。 三、实验内容: 1.分别用复合梯形求积公式及复合辛普森求积公式计算积分xdx x ln 10 ? , 要求计算精度达到410-,给出计算结果并比较两种方法的计算节点数. 2.用龙贝格求积方法计算积分dx x x ?+3 021,使误差不超过510-. 3.用3=n 的高斯-勒让德公式计算积分?3 1 sin x e x ,给出计算结果. 4.用辛普森公式(取2==M N ) 计算二重积分.5 .00 5 .00 dydx e x y ? ? - 四、实验结果: 1.(1)复合梯形法: 将区间[a,b]划分为n 等份,分点n k n a b h kh a x k ,2,1,0,,=-=+=在每个区间[1,+k k x x ](k=0,1,2,···n-1)上采用梯形公式,则得 )()]()([2)()(1 11 1 f R x f x f h dx x f dx x f I n n k k k b a n k x x k k ++===∑?∑? -=+-=+ 故)]()(2)([21 1 b f x f a f h T n k k n ++=∑-=称为复合梯形公式 计算步长和划分的区间 Eps=1E-4 h1=sqrt(Eps/abs(-(1-0)/12*1/(2+1))) h1 =0.0600 N1=ceil(1/h1) N1 =17 用复合梯形需要计算17个结点。 复合梯形: function T=trap(f,a,b,n) h=(b-a)/n;

计算方法上机实验报告

《计算方法》上机实验报告 班级:XXXXXX 小组成员:XXXXXXX XXXXXXX XXXXXXX XXXXXXX 任课教师:XXX 二〇一八年五月二十五日

前言 通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB 程序的编写。 以下为本次上机实验报告,按照实验内容共分为六部分。 实验一: 一、实验名称及题目: Newton 迭代法 例2.7(P38):应用Newton 迭代法求 在 附近的数值解 ,并使其满足 . 二、解题思路: 设'x 是0)(=x f 的根,选取0x 作为'x 初始近似值,过点())(,00x f x 做曲线)(x f y =的切线L ,L 的方程为))((')(000x x x f x f y -+=,求出L 与x 轴交点的横坐标) (') (0001x f x f x x - =,称1x 为'x 的一次近似值,过点))(,(11x f x 做曲线)(x f y =的切线,求该切线与x 轴的横坐标) (') (1112x f x f x x - =称2x 为'x

的二次近似值,重复以上过程,得'x 的近似值序列{}n x ,把 ) (') (1n n n n x f x f x x - =+称为'x 的1+n 次近似值,这种求解方法就是牛顿迭代法。 三、Matlab 程序代码: function newton_iteration(x0,tol) syms z %定义自变量 format long %定义精度 f=z*z*z-z-1; f1=diff(f);%求导 y=subs(f,z,x0); y1=subs(f1,z,x0);%向函数中代值 x1=x0-y/y1; k=1; while abs(x1-x0)>=tol x0=x1; y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1; end x=double(x1) K 四、运行结果: 实验二:

东南大学高等数学数学实验报告上

Image Image 高等数学数学实验报告 实验人员:院(系) ___________学号_________姓名____________实验地点:计算机中心机房 实验一 1、 实验题目: 根据上面的题目,通过作图,观察重要极限:lim(1+1/n)n =e 2、 实验目的和意义 方法的理论意义和实用价值。 利用数形结合的方法观察数列的极限,可以从点图上看出数列的收敛性,以及近似地观察出数列的收敛值;通过编程可以输出数列的任意多项值,以此来得到数列的收敛性。通过此实验对数列极限概念的理解形象化、具体化。 三、计算公式 (1+1/n)n 四、程序设计 五、程序运行结果 六、结果的讨论和分析 当n足够

Image Image 大时,所画出的点逐渐接近于直线,即点数越大,精确度越高。对于不同解题方法最后均能获得相同结果,因此需要择优,从众多方法中尽可能选择简单的一种。程序编写需要有扎实的理论基础,因此在上机调试前要仔细审查细节,对程序进行尽可能的简化、改进与完善。 实验二一、实验题目 制作函数y=sin cx的图形动画,并观察参数c对函数图形的影响。 二、实验目的和意义 本实验的目的是让同学熟悉数学软件Mathematica所具有的良好的作图功能,并通过函数图形来认识函数,运用函数的图形来观察和分析函数的有关性态,建立数形结合的思想。三、计算公式:y=sin cx 四、程序设计五、程序运行结果 六、结果的讨论和分析 c的不同导致函数的区间大小不同。 实验三 一、实验题目 观察函数f(x)=cos x的各阶泰勒展开式的图形。 二、实验目的和意义 利用Mathematica计算函数的各阶泰勒多项式,并通过绘制曲线图形,来进一步掌握泰勒展开与函数逼近的思想。 三、计算公式

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

太原理工大学数值计算方法实验报告

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 2016年 4 月 8 日

y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) < 0.000005) { cout << c <<"为方程的解"<< endl; return 0; } if (GetY(a)*GetY(c) < 0) { return Calculate(a,c); } if (GetY(c)*GetY(b)< 0) { return Calculate(c,b); } } }; int main() { cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

物理实验报告格式范文

物理实验报告格式范文 一、实验目的 二、实验仪器和器材(要求标明各仪器的规格型号) 三、实验原理:简明扼要地阐述实验的理论依据、计算公式、画出电路图或光路图 四、实验步骤或内容:要求步骤或内容简单明了 五、数据记录:实验中测得的原始数据和一些简单的结果尽可能用表格形式列出,并要求正确表示有效数字和单位 六、数据处理:根据实验目的对测量结果进行计算或作图表示,并对测量结果进行评定,计算误差或不确定度. 七、实验结果:扼要地写出实验结论 八、误差分析:当实验数据的误差达到一定程度后,要求对误差进行分析,找出产生误差的原因. 九、问题讨论:讨论实验中观察到的异常现象及可能的解释,分析实验误差的主要来源,对实验仪器的选择和实验方法的改进提出建议,简述自己做实验的心得体会,回答实验思考题. 物理探究实验:影响摩擦力大小的因素 技能准备:弹簧测力计,长木板,棉布,毛巾,带钩长方体木块,砝码,刻度尺,秒表。 知识准备: 1. 二力平衡的条件:作用在同一个物体上的两个力,如果大小相等,方向相反,并且在同一直线上,这两个力就平衡。 2. 在平衡力的作用下,静止的物体保持静止状态,运动的物体保持匀速直线运动状态。 3. 两个相互接触的物体,当它们做相对运动时或有相对运动的趋势时,在接触面上会产生一种阻碍相对运动的力,这种力就叫摩擦力。 4. 弹簧测力计拉着木块在水平面上做匀速直线运动时,拉力的大小就等于摩擦力的大小,拉力的数值可从弹簧测力计上读出,这样就测出了木块与水平面之间的摩擦力。

探究导引 探究指导: 关闭发动机的列车会停下来,自由摆动的秋千会停下来,踢出去的足球会停下来,运动的物体之所以会停下来,是因为受到了摩擦力。 运动物体产生摩擦力必须具备以下三个条件:1.物体间要相互接触,且挤压;2.接触面要粗糙;3.两物体间要发生相对运动或有相对运动的趋势。三个条件缺一不可。 摩擦力的作用点在接触面上,方向与物体相对运动的方向相反。由力的三要素可知:摩擦力除了有作用点、方向外,还有大小。 提出问题:摩擦力大小与什么因素有关? 猜想1:摩擦力的大小可能与接触面所受的压力有关。 猜想2:摩擦力的大小可能与接触面的粗糙程度有关。 猜想3:摩擦力的大小可能与产生摩擦力的两种物体间接触面积的大小有关。 探究方案: 用弹簧测力计匀速拉动木块,使它沿长木板滑动,从而测出木块与长木板之间的摩擦力;改变放在木块上的砝码,从而改变木块与长木板之间的压力;把棉布铺在长木板上,从而改变接触面的粗糙程度;改变木块与长木板的接触面,从而改变接触面积。 物理实验报告 .化学实验报告 .生物实验报告 .实验报告格式 .实验报告模板 探究过程: 1. 用弹簧测力计匀速拉动木块,测出此时木块与长木板之间的摩擦力:0.7N 2. 在木块上加50g的砝码,测出此时木块与长木板之间的摩擦力:0.8N 3. 在木块上加200g的砝码,测出此时木块与长木板之间的摩擦力:1.2N 4. 在木板上铺上棉布,测出此时木块与长木板之间的摩擦力:1.1N 5. 加快匀速拉动木块的速度,测出此时木块与长木板之间的摩擦力:0.7N 6. 将木块翻转,使另一个面积更小的面与长木板接触,测出此时木块与长木板之间的摩擦力:0.7N 探究结论:

c 计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为 calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单 选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成 员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始 化和完善各控件的响应函数代码。 (3)程序清单:

●添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法2.减法3. 乘法 4.除法 int append; //判断后面是否添加数字 ●成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0; }

实验报告格式

重庆工商大学 《统计学》实验报告 实验课程:统计学 _ 指导教师:陈正伟 _ 专业班级: 08 经济学 学生姓名:程剑波 学生学号: 2008011133 __

实验项目 实验日期实验地点80608 实验目的掌握统计学的基本计算方法和分析方法。 实验内容一、统计图绘制;二、动差、偏度系数、峰度系数的计算;三、趋势性的绘制; 四、相关分析与回归分析;五、时间数列的动态指标分析;六、循环变动的测 算分析。 通过统计学(2009.9.10-2009.12.15)实验报告如下: 一、统计图绘制; (一)过程: (二)结果: (三)分析: 二、动差、偏度系数、峰度系数的计算; (一)过程: (二)结果: (三)分析: 三、趋势性的绘制; (一)过程: (二)结果: (三)分析: 四、相关分析与回归分析; (一)过程: (二)结果: (三)分析:

五、时间数列的动态指标分析 (一)过程: (二)结果: (三)分析: 六、循环变动的测算分析。 (一)过程: (二)结果: (三)分析: 体会: 参考实验报告: 重庆工商大学数学与统计学院 综合评价方法及应用 实验报告

实验课程:非参数统计 _ 指导教师:陈正伟 _ 专业班级: 06市调2班 学生姓名:何春 学生学号: 2006004151 _

实验报告一 实验项目变异系数法相关系数法熵值发坎蒂雷法 实验日期2009-4-30 实验地点80608 实验目的 通过本实验本要求掌握综合评价指标体系中各个指标重要性权数的重要意义;掌握权数确定的定性和定量技术和技能;解决实际综合评价中重要性权数确定的处理技能。 实验内容 根据资料使用变异系数法、相关系数法、熵值法和坎蒂雷方法分别确定各个指标的权数。并进行权数比较分析。 检验方法的选择及实验步骤及结果: 1用变异系数求各个指标的权数: 基本步骤:(1)先求各个指标的均值Xi 和标准差 Si (2)接着求各个指标的变异系数Vi=Si/Xi (3)对Vi作作归一化处理,及得各个指标的权数 结果如下: 从这个表中可以看到最后一列的权数最大,即人均创造总收入这个指标在这项评价上的分辨信息丰富,这个指标的数值能明确区分开各个评价被评价对象差异。同理,第四列的权数最小,也就是说各个被评价对象在某项指标上的数值差异较小,那么这项指标区分开各评价对象的能力较弱。 2 用相关系数法求各个指标的权数: 基本步骤:(1)计算各个指标之间的相关系数矩阵 (2)构造分块矩阵 R1(去掉相关系数矩阵的第一行和第一列)R2 R3 R4 R5 R6 同理可得

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:宋元台 学号: 成绩:

数值计算方法与算法实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班 实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀 姓名:宋元台学号:实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #includeMAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i);

计算方法实验报告格式

计算方法实验报告格式 小组名称: 组长姓名(班号): 小组成员姓名(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一个完整的实验,应包括数据准备、理论基础、实验内容及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下: 一、实验名称 实验者可根据报告形式需要适当写出. 二、实验目的及要求 首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出. 三、算法描述(实验原理与基础理论) 数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详尽列出. 四、实验内容 实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备. 五、程序流程图 画出程序实现过程的流程图,以便更好的对程序执行的过程有清楚的认识,在程序调试过程中更容易发现问题. 六、实验结果 实验结果应包括实验的原始数据、中间结果及实验的最终结果,复杂的结果可以用表格

形式列出,较为简单的结果可以与实验结果分析合并出现. 七、实验结果分析 实验结果分析包括对对算法的理解与分析、改进与建议. 数值实验报告范例 为了更好地做好数值实验并写出规范的数值实验报告,下面给出一简单范例供读者参考. 数值实验报告 小组名称: 小组成员(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一、实验名称 误差传播与算法稳定性. 二、实验目的 1.理解数值计算稳定性的概念. 2.了解数值计算方法的必要性. 3.体会数值计算的收敛性与收敛速度. 三、实验内容 计算dx x x I n n ? += 1 10 ,1,2,,10n = . 四、算法描述 由 dx x x I n n ? += 1 10 ,知 dx x x I n n ?+=--101110,则

计算方法实验报告

计算方法实验报告(四) 方程和方程组的迭代解法 一、实验问题 利用简单迭代法,两种加速技术,牛顿法,改进牛顿法,弦割法求解习题5-1,5-2,5-3中的一题,并尽可能准确。 选取5-3:求在x=1.5附近的根。 二、问题的分析(描述算法的步骤等) (1)简单迭代法算法: 给定初始近似值,求的解。 Step 1 令i=0; Step 2 令(计算); Step 3 如果,则迭代终止,否则重复Step 2。 (2)Aitken加速法算法 Step 1 令k=0,利用简单迭代算法得到迭代序列; Step 2 令-(计算得到一个新的序列,其中k=0,1,2…);Step 3 如果,则迭代终止,否则重复Step 2。 (3)插值加速法算法 Step 1 令k=0,利用简单迭代算法得到迭代序列; Step 2 令+(计算得到一个新的序列,其中k=1,2,3…); Step 3 如果,则迭代终止,否则重复Step 2。 (4)牛顿法算法

Step 1给定初始近似值; Step 2令,其中k计算得到的序列; Step 3如果,则迭代终止,否则重复Step 2。 (5)改进牛顿法的算法 Step 1给定初始近似值; Step 2令,其中k迭代计算得到的序列; Step 3如果,则迭代终止,否则重复Step 2。 (6)弦割法算法(双点弦割法) Step 1给定初始近似值,; Step 2令其中k计算得到的序列; Step 3如果,则迭代终止,否则重复Step 2。 三、程序设计 (1)简单迭代法 利用迭代公式进行迭代运算。 #include #include #include double fun(double x) { double c=1+x*x; return pow(c,1/3.0); } void main() { double x=1.5; double y=0; double D=1;

高等数学下实验报告

高等数学实验报告 实验人员:院(系)化学化工学院 学号19013302 姓名 黄天宇 实验地点:计算机中心机房 实验七:空间曲线与曲面的绘制 一、 实验目的 1、利用数学软件Mathematica 绘制三维图形来观察空间曲线和空 间曲面图形的特点,以加强几何的直观性。 2、学会用Mathematica 绘制空间立体图形。 二、实验题目 利用参数方程作图,做出由下列曲面所围成的立体图形: (1) x y x y x z =+--=2 222,1及xOy 平面; (2) 01,=-+=y x xy z 及.0=z 三、实验原理 空间曲面的绘制 作参数方程],[],,[,),(),() ,(max min max min v v v u u v u z z v u y y v u x x ∈∈? ?? ??===所确定的曲面图形的 Mathematica 命令为: ParametricPlot3D[{x[u,v],y[u,v],z[u,v]},{u,umin,umax}, {v,vmin,vmax},选项] 四、程序设计及运行 (1)

(2)

六、结果的讨论和分析 1、通过参数方程的方法做出的图形,可以比较完整的显示出空 间中的曲面和立体图形。 2、可以通过mathematica 软件作出多重积分的积分区域,使积分能够较直观的被观察。 3、从(1)中的实验结果可以看出,所围成的立体图形是球面和圆柱面所围成的立体空间。 4、从(2)中的实验结果可以看出围成的立体图形的上面曲面的方程是xy z =,下底面的方程是z=0,右边的平面是01=-+y x 。 实验八 无穷级数与函数逼近 一、 实验目的 (1) 用Mathematica 显示级数部分和的变化趋势; (2) 展示Fourier 级数对周期函数的逼近情况; (3) 学会如何利用幂级数的部分和对函数进行逼近以及函数值的近似计算。 二、实验题目 (1)、观察级数 ∑ ∞ =1 ! n n n n 的部分和序列的变化趋势,并求和。 (2)、改变例2中m 及x 0的数值来求函数的幂级数及观察其幂级数逼近函数的情况 (3)、观察函数? ? ?<≤<≤--=ππx x x x f 0,10 ,)(展成的Fourier 级数

数值分析实验报告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 的帮助。

计算方法实验报告 拟合

南京信息工程大学实验(实习)报告 一、实验目的: 用最小二乘法将给定的十个点拟合成三次多项式。 二、实验步骤: 用matlab编制以函数为基的多项式最小二乘拟合程序,并用于对下列数据作三次多项式最小二乘拟合(取权函数wi=1) x -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 y -2.30 -1 -0.14 -0.25 0.61 1.03 1.75 2.75 4.42 6.94 给定直线方程为:y=1/4*x3+1/2*x2+x+1 三、实验结论: 最小二乘法:通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。 一般地。当测量数据的散布图无明显的规律时,习惯上取n次代数多项式。 程序运行结果为: a = 0.9731 1.1023 0.4862 0.2238 即拟合的三次方程为:y=0.9731+1.1023x+0.4862*x2+0.2238*x3

-2.5 -2-1.5-1-0.5 00.51 1.52 2.5 -4-20246 81012 x 轴 y 轴 拟合图 离散点 y=a(1)+a(2)*x+a(3)*x.2+a(4)*x.3 结论: 一般情况下,拟合函数使得所有的残差为零是不可能的。由图形可以看出最小二乘解决了残差的正负相互抵消的问题,使得拟合函数更加密合实验数据。 优点:曲线拟合是使拟合函数和一系列的离散点与观测值的偏差平方和达到最小。 缺点:由于计算方法简单,若要保证数据的精确度,需要大量的数据代入计算。

实验报告的书写格式模版

实验报告的书写格式模版 有关实验报告的书写格式 一、完整实验报告的书写 完整的一份实验报告一般包括以下项目:实验名称: 实验目的: 实验器材: 实验原理: 实验步骤: 实验数据记录(表格)及处理: 实验结论(结果推导): 实验讨论或分析等。 二、实验报告书写方法  1、实验名称:就是这个实验是做什么的。 2、实验目的:一般都写掌握什么方法啊;了解什么啊;知道什么啊;会什么啊;…… 等。 3、实验器材:就是做这个实验需要的所有器材(仪器)。 4、实验原理:就是这个实验是根据什么来做的,一般书上会写,抄一下也就可以啦。 5、实验步骤:就是你做实验的过程,开始操作时,(1)做什么; (2)做什么;(3)做什么;……

6、实验数据记录(表格)及处理:根据实验中涉及以及实验得到的数据,设计表格,将有关数据填在表格相应的位置;数据处理,就是该计算的,按要求计算后填入表格对应位置。 7、实验结论(结果推导):就是做这个实验要得到的结果。 8、分析于讨论:写你的实验结果是否适合真实值?如果有误差要分析产生误差的原因,还有实验的一些比较关键的步骤的注意事项等。 对于初中生或小学生来说,书写的实验报告也可简单一点,有时也可不要分析于讨论,也可不写实验原理等。 三、探究实验书写一般有七个环节 1.提出问题:就是在生活中发现、提出问题。 2.猜想与假设:发现问题,就要弄清楚问题,在没有搞清楚之前总有基本的猜测和设想,这就是猜想与假设。 3.制定计划与设计实验:有了猜想,就有了实验的目的,再根据实验的目的设计实验方案,制定实验计划,包括取得证据的途径和方法,确定收集证据的范围。包括实验的理论依据(实验原理)、实验器材、实验步骤等。 4.进行实验与收集证据:上一步是动脑、思维活动,这一步是手脑并用的实验过程。 5.分析与论证:通过上面的实验,收集到一些数据,观察到一些现象,对其分析,得出事实与假设的关系,通过归纳、概括等方法,得到结论。

计算方法实验报告

实验报告 一、求方程f(x)=x^3-sinx-12x+1的全部根, ε=1e -6 1、 用一般迭代法; 2、 用牛顿迭代法; 并比较两种迭代的收敛速度。 一、首先,由题可求得:12cos 3)(2 ' --=x x x f . 其次,分析得到其根所在的区间。 ① 令()0=x f ,可得到x x x sin 1123 =+-. ② 用一阶导数分析得到1123 +-x x 和x sin 两个函数的增减区间;再用二阶导数分析得到 两个函数的拐点以及凹凸区间. ③ 在直角坐标轴上描摹出01123 =+-x x 和0sin =x 的图,在图上可以看到他们的交点,然后估计交点所在的区间,即是所要求的根的区间。经过估计,得到根所在的区间为 []3,4--,[]1,0和[]4,3. 1、 一般迭代法 (1)算法步骤: 设ε为给定的允许精度,迭代法的计算步骤为: ① 选定初值0x .由()0=x f 确定函数()x g ,得等价形式()x g x =. ② 计算()0x g .由迭代公式得()01x g x =. ③ 如果ε≤-01x x ,则迭代结束,取1x 为解的近似值;否则,用1x 代替0x ,重复步骤②和步骤③. (2)程序代码: ① 在区间[]3,4--内, 代码: clc

x0=-3.5; %初值0x iter_max=100; %迭代的最大次数 ep=1e-6; %允许精度 ε k=0; while k<=iter_max %k 从0开始到iter_max 循环 x1=(sin(x0)+12*x0-1).^(1/3); %代入0x ,算出1x 的值 if abs(x1-x0)

高等数学(下册)数学实验报告

高等数学A(下册)实验报告 院(系): 学号:姓名: 实验一 利用参数方程作图,作出由下列曲面所围成的立体: (1) 2 2 1Y X Z- - = , X Y X= +2 2 及 xOy 面 ·程序设计: -1, 1},Axe s2=ParametricPlot3D[{1/2*Cos[u]+1/2,1/2*Sin[u],v},{u,- s3=ParametricPlot3D[{u,v,0},{u,-1,1},{v,- DisplayFunction 程序运行结果: 实验二 实验名称:无穷级数与函数逼近 实验目的:观察的部分和序列的变化趋势,并求和

实验内容: (1)利用级数观察图形的敛散性 当n 从1~400时,输入语句如下: 运行后见下图,可以看出级数收敛,级数和大约为1.87985 (2先输入: 输出: 输出和输入相同,此时应该用近似值法。输入: 输出: 1.87985 结论:级数大约收敛于1.87985 实验三: 1. 改变例2中m 的值及的数值来求函数的幂级数及观察其幂级数逼近函数的情况

·程序设计: m 5; f x_:1 x^m;x0 1; g n_,x0_ :D f x, x, n .x x0; s n_,x_: Sum g k,x0/k x x0 ^k, k, 0, t Table s n, x, n, 20; p1 Plot Evaluate t ,x,1,2,3 2; p2 Plot 1 x ^m , x,1 2,3 2, PlotStyle RGBColor 0,0,1; Show p1,p2 ·程序运行结果 实验四 实验名称:最小二乘法 实验目的:测定某种刀具的磨损速度与时间的关系实验内容:

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和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,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>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);

高等数学实验报告

课程实验报告 专业年级2016级计算机类2班课程名称高等数学 指导教师张文红 学生姓名李发元 学号20160107000215 实验日期2016.12 .21 实验地点勤学楼4-24 实验成绩 教务处制 2016 年9月21 日

实验项 目名称 Matlab软件入门与求连续函数的极限 实验目的 及要求 实验目的: 1.了解Matlab软件的入门知识; 2.掌握Matlab软件计算函数极限的方法; 3.掌握Matlab软件计算函数导数的方法。 实验要求: 1.按照实验要求,在相应位置填写答案; 2.将完成的实验报告,以电子版的形式交给班长, 转交给任课教师,文件名“姓名+ 学号”。 实验内容利用Matlab完成下列内容: 1、(1) 2 2 1 lim 471 x x x x →∞ - -+ ;(2) 3 tan sin lim x x x x → - ;(3) 1 lim 1 x x x x →∞ - ?? ? + ??2、(1)x x y ln 2 =,求y';(2)ln(1) y x =+,求()n y 实验步骤1.开启MATLAB编辑窗口,键入编写的命令,运行; 2.若出现错误,修改、运行直到输出正确结果; 3.将Matlab输入输出结果,粘贴到该实验报告相应的位置。第一题 2 2 1 lim 471 x x x x →∞ - -+ 运行编码是 >> syms x >> limit((x^2-1)/(4x^2x+1),x,inf) ans =

1/4 第二题3 0tan sin lim x x x x →- >> syms x >> limit((tanx-sinx)/(x^3),x,0) ans = 1 第三题1lim 1x x x x →∞-?? ?+?? >> syms x >> limit(((x-1)^x)/(x+1),x,inf) ans = 2 第四题(1)x x y ln 2=,求y '; >> syms x >>f(x)=x^2in(x) f(x)=x^2in(x) >>diff(f(x)), ans = 2xinx+x 第五题ln(1)y x =+,求()n y >> syms x >>f(x)In(1+x) f(x)In(1+x) >>diff(f(x),n), ans =

数值分析实验报告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 =

相关文档
最新文档