计算方法结课大作业

发布 2020-02-25 21:36:28 阅读 7225

第一题:求数值积分,精确到。

解:romberg方法基本思想:

根据。分别算出t0(0), t0(1),t1(0)……的值,若对角线上的值的差足够小则停止,否则继续计算,直到足够小为止。

t0(0)=

其中sin1= 0.841471 sin(-1)= 0.841471

t0(1)= t0(0)+

t1(0)==0.479366

t0(2)=t0(1)

t1(1) =0.479289

t2(0)==0.479284

t0(3)=t0(2)=0.478645

t1(2)==0.478645

t2(1)=t0(1)=0.438098

t3(0)==0.479284

化简成缩略图,根据公式可一目了然:

t0(0)=,t0(1)=0.469049, t1(0)= 0.479366

t0(2)=0.476729, t1(1) =0.479289 t2(0)=0.479284

t0(3)= 0.478645, t1(2)=0.479284, t2(1)=0.479284,t3(0)=0.479284

由于t3(0)就已达预定精度,故取i t3(0)=0.479284

第二题:设实验数据如下。

建立形如最小二乘拟合。

解:已知曲线,将**中所有点依次代入得到方程:

改写成矩阵形式:

根据公式进行转置:

上式整理得: =

整理为方程如下:

得解为:于是所求拟合曲线为。

第三题 :给定初值问题。

经典四阶r-k方法,分别取,计算并打印各点的值,并于准确值相比较。

解:四阶龙格-库塔算法公式如下:

当步长h=0.1时,运行结果如下:

当步长h=0.025时,运行结果如下:

当步长h=0.01时,运行结果如下:

与准确值相比较:

注:(因数据庞大,此处只取前十一个数作比较)

用编程实现如下:

注:此处只举例出当步长h=0.1时执行的程序,当h=0.025和h=0.01时只需稍加修改即可。

#include<>

#include<>

*n表示几等分,n+1表示它输出的个数*/

int rungekutta(double y0,double a,double b,int n,double *x,double *y,double (*function)(double,double))

double h=(b-a)/n,k1,k2,k3,k4;

int i;

x[0]=a;

y[0]=y0;

for(i=0;i{

x[i+1]=x[i]+h;

k1=function(x[i],y[i]);

k2=function(x[i]+h/2,y[i]+h*k1/2);

k3=function(x[i]+h/2,y[i]+h*k2/2);

k4=function(x[i]+h,y[i]+h*k3);

y[i+1]=y[i]+h*(k1+2*k2+2*k3+k4)/6;

return 1;

double function(double x,double y)

return -30*y+30*x*x+2*x;

/例子求y'=-30y+30*x*x+2*x(0int main()

double x[11],y[11];

printf("用四阶龙格-库塔方法");

rungekutta(1,0,1,10,x,y,function);

for(int i=0;i<11;i++)

printf("x[%d]=%f,y[%d]=%f",i,x[i],i,y[i]);

return 1;

计算方法上机作业

计算方法上机报告。姓名 学号 班级 上课班级 1 算法思想。2 算法结构。3 matlab源程序。clear 清除工作空间变量。clc 清除命令窗口命令。m input 请输入有效数字的位数m输入有效数字的位数。s 0for n 0 50 t 1 16 n 4 8 n 1 2 8 n 4 1 8 n...

计算方法上机作业

表2 新算法迭代结果1 初值 0,精度ep 初始选择因子p 修正因子 0.1,最大迭代次数n 0,局部修正次数m分别取1,2,3次,f 49881192646492934000000000000.000000 表3 新算法迭代法结果2 初值 0,精度ep 初始选择因子p 修正因子 0.05,最大迭代...

计算方法上机作业

计算方法第四次上机报告。2.用欧拉方法解初值。y 10x 1 y 0 x 1 y 0 0 取步长h 0.1,保留5位有效数字,并与准确解相比较。分析 该题目考察欧拉方法解初值问题。程序如下 function heun a,b,y0,n h b a n x a h b y y0 ones 1,n 1 ...