《工程常用算法》综合实践作业七

发布 2022-09-12 12:35:28 阅读 7081

完成日期:2023年12月20日。

小组成员:学号姓名。

学号姓名。学号姓名。

常微分初值问题如下:

请用euler方法、四阶经典runge-kutta格式和四阶adams方法求解。要求:任选一种方法,但希望得到“优秀”成绩的小组必须完成后两种求解方法。

完成四阶经典runge-kutta、四阶adams】

二、程序流程图。

三、完整的程序及简要的注释。

四阶经典runge-kutta】

#include <>

#include <>

# define n 40

int pos(int n, int m)

double f(double x,double y)

return y-2*x/y; /定义函数f(x,y)

void rungekutta(double a,double b, double h)

printf("经典四阶runge-kutta算法:");

float** p;float** p1;

double x[n],y[n];

p = float**)x;p1 = float**)y;

printf("n\tx[n]\t y[n]");

printf("0\t0.000000\t1.000000");

double k1,k2,k3,k4;

int n=1;

while(n<=n)

x[0]=a;y[0]=b;

x[n]=x[n-1]+h;

k1=f(x[n-1],y[n-1]);四阶runge-kutta算法。

k2=f(x[n-1]+h/2,y[n-1]+h*k1/2);

k3=f(x[n-1]+h/2,y[n-1]+h*k2/2);

k4=f(x[n-1]+h,y[n-1]+h*k3);

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

printf("%d\t%lf\t%lf",n,x[n],y[n]);

n++;int main(void初值输入

rungekutta(0,1,0.025);

return 0;

四阶adams】

#include <>

#include <>

# define n 40

int pos(int n, int m)

double f(double x,double y)

return y-2*x/y; /定义函数f(x,y)

void rungekutta(double a,double b, double h)

printf("四阶adams算法:");

float** p;float** p1;

double x[n],y[n];

p = float**)x;p1 = float**)y;

printf("n\tx[n]\t y[n]");

printf("0\t0.000000\t1.000000");

double k1,k2,k3,k4;

int n=1;

while(n<=3)

x[0]=a;y[0]=b;

x[n]=x[n-1]+h;

k1=f(x[n-1],y[n-1]);四阶runge-kutta算法。

k2=f(x[n-1]+h/2,y[n-1]+h*k1/2);

k3=f(x[n-1]+h/2,y[n-1]+h*k2/2);

k4=f(x[n-1]+h,y[n-1]+h*k3);

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

printf("%d\t%lf\t%lf",n,x[n],y[n]);

n++;int m=4;

while(m<=n)

x[m]=x[m-1]+h四阶adams算法。

y[m]=y[m-1]+h/24*(55*f(x[m-1],y[m-1])

59*f(x[m-2],y[m-2])

37*f(x[m-3],y[m-3])

9*f(x[m-4],y[m-4]))

printf("%d\t%lf\t%lf",m,x[m],y[m]);

mint main(void初值输入

rungekutta(0,1,0.025);

return 0;

四、程序运行结果。

以下部分是手写的部分】

五、对不同实现方法的运行结果进行比较。

六、问题与总结(必须给出自评成绩a/b/c/d)

写出简要总结】

自评成绩: 】

一、计算公式及计算方法(手写在作业最后即可)

工程常用算法综合实践作业

工程常用算法 综合实践作业三。完成日期 年月日。一 作业题目。用复化simpson 复化cotes和复化romberg公式计算,精确到小数点后12位,比较不同方法的计算结果。二 程序流程图。sinpson法。科斯特法。龙贝格法。三 完整的程序及简要的注释。辛普森法。function simpson ...

《工程常用算法》综合实践作业一

完成日期 2010年11月15日。小组成员 学号姓名。学号姓名。学号姓名。已知方程,请用二分法 牛顿法和割线法求此方程实根的近似值,使误差不超过0.0001。注意先确定出方程的有根区间。完成二分法 牛顿法 割线法 二 程序流程图。三 完整的程序。1 二分法 include include doubl...

《工程常用算法》综合实践作业一

哈尔滨工程大学机电工程学院。综合实践大作业。2015年 7 月 10 日。作业名称 非线性方程求根完成日期 15 年 6月 1日。已知方程,请分别用二分法 牛顿法和割线法求此方程的根。误差限取 注意先确定出方程的有根区间。f 0 0 0 1 0 f 1 1 2 e 0 所以在区间 0,1 内有根。2...