📄 列主元高斯消元法.cpp
字号:
#include<stdio.h>
#include<math.h>
#define f(x,y) -(x*x*y*y)//导数
#define y(x) 2.0/(1.0+x*x*x)//准确解
void main()
{
int i,j;
long double h[4]={0.1,0.05,0.025,0.0125};//步长
int m[4]={15,30,60,120};//不同步长时迭代到1.5的循环次数
long double x0,y0,xn,yn,yn1,yn2;
long double k1,k2,k3,k4;
yn2=(long double)y(1.5);//计算准确值
x0=0.0;y0=3.0;
printf("h 数值结果y(1.5) 精确解 数值误差 \n");
for(i=0;i<4;i++)
{ xn=x0;yn=y0;//初始化
for(j=0;j<m[i];j++)
{
k1=f(xn,yn);
k2=f((xn+h[i]/2.0),(yn+h[i]*k1/2.0));
k3=f((xn+h[i]/2.0),(yn+h[i]*k2/2.0));
k4=f((xn+h[i]),(yn+h[i]*k3));
yn1=yn+h[i]/6.0*(k1+2*k2+2*k3+k4);//龙格-库塔四阶公式
xn=xn+h[i];
yn=yn1;
}
printf("%.12lf %.12lf %.12lf %.12lf \n",h[i],yn1,yn2,fabs(yn2-yn1));//输出
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -