分别用改进的欧拉法和四阶龙格-库塔公式求解微分方程初值问题 20

分别用改进的欧拉法和四阶龙格-库塔公式求解微分方程初值问题(1)Y'=Y-2X/Y,Y(0)=1,X=[0,1],H=0.1(2)Y'=X2+Y2.Y(0)=0,X=[0... 分别用改进的欧拉法和四阶龙格-库塔公式求解微分方程初值问题
(1) Y'=Y-2X/Y,Y(0)=1, X=[0,1],H=0.1
(2) Y'=X2+Y2.Y(0)=0, X=[0,1] H=0.1 注释;X2为X的平方,Y2为Y的平方,先求解,

然后用C语音编程的帮我编程一下
展开
肖城兮1973
2011-12-27 · TA获得超过158个赞
知道答主
回答量:41
采纳率:0%
帮助的人:80.3万
展开全部
求解就自己算吧,程序如下,其中RK4与改进欧拉法分别写成一个模块,方便阅读:

#include <stdio.h>
#include <stdlib.h>

double f1(double x,double y) {//定义方程1
return (y-2*x/y);
}

double f2(double x,double y) {//定义方程2
return (x*x+y*y);
}

double RK4(double xn,double yn) {
double h=0.1,k1=0,k2=0,k3=0,k4=0,d=1,h2=h/2;//RK4解方程2
printf(" x2 y2\n");
printf("%3.1lf%10.6lf\n",xn,yn);
while(xn<=d) {
k1=f2(xn,yn);
xn+=h2;
k2=f2(xn,yn+h2*k1);
k3=f2(xn,yn+h2*k2);
xn+=h2;
k4=f2(xn,yn+h*k3);
yn+=h/6*(k1+2*k2+2*k3+k4);
printf("%3.1lf%10.6lf\n",xn,yn);
}
return 1;
}

double ELR(double xn,double yn){
double h=0.1,yp,yc,d=1;//改进欧拉法解方程1
printf(" x1 y1\n");
printf("%3.1lf%10.6lf\n",xn,yn);
while(xn<=d) {
yp=yn+h*f1(xn,yn);
xn+=h;
yc=yn+h*f1(xn,yp);
yn=(yc+yp)/2.0;
printf("%3.1lf%10.6lf\n",xn,yn);
}
return 1;
}
void main() {
ELR(0.0,1.0);
RK4(0.0,0.0);
system("pause");
}

我没写什么注释,算法就参考一下书本好了,有什么不懂的请追问。
江苏华简晟01
2024-10-21 广告
色谱检测服务热线18721007633, 江苏华简晟检测科技是研究性测试服务机构,基于多年的分析表征专业技术积累和辐射全国的服务网络,每年出具数万分技术报告,累计服务客户数千万家。... 点击进入详情页
本回答由江苏华简晟01提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式