问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用MTALAB编程实现四阶龙格库塔解二元二阶微分方程组

发布网友 发布时间:2022-05-07 17:55

我来回答

2个回答

热心网友 时间:2022-06-30 22:50

#include<stdlib.h>
#include<stdio.h>
/*n表示几等分,n+1表示他输出的个数*/
int RungeKutta(double y0,double a,double b,int n,double *x,double *y,int style,double (*function)(double,double))
{
double h=(b-a)/n,k1,k2,k3,k4;
int i;
// x=(double*)malloc((n+1)*sizeof(double));
// y=(double*)malloc((n+1)*sizeof(double));
x[0]=a;
y[0]=y0;
switch(style)
{
case 2:
for(i=0;i<n;i++)
{
x[i+1]=x[i]+h;
k1=function(x[i],y[i]);
k2=function(x[i]+h/2,y[i]+h*k1/2);
y[i+1]=y[i]+h*k2;
}
break;
case 3:
for(i=0;i<n;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,y[i]-h*k1+2*h*k2);
y[i+1]=y[i]+h*(k1+4*k2+k3)/6;
}
break;
case 4:
for(i=0;i<n;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;
}
break;
default:
return 0;
}
return 1;
}
double function(double x,double y)
{
return y-2*x/y;
}
//例子求y'=y-2*x/y(0<x<1);y0=1;
/*
int main()
{
double x[6],y[6];
printf("用二阶龙格-库塔方法\n");
RungeKutta(1,0,1,5,x,y,2,function);
for(int i=0;i<6;i++)
printf("x[%d]=%f,y[%d]=%f\n",i,x[i],i,y[i]);
printf("用三阶龙格-库塔方法\n");
RungeKutta(1,0,1,5,x,y,3,function);
for(i=0;i<6;i++)
printf("x[%d]=%f,y[%d]=%f\n",i,x[i],i,y[i]);
#include<stdlib.h>
#include<stdio.h>
/*n表示几等分,n+1表示他输出的个数*/
int RungeKutta(double y0,double a,double b,int n,double *x,double *y,int style,double (*function)(double,double))
{
double h=(b-a)/n,k1,k2,k3,k4;
int i;
// x=(double*)malloc((n+1)*sizeof(double));
// y=(double*)malloc((n+1)*sizeof(double));
x[0]=a;
y[0]=y0;
switch(style)
{
case 2:
for(i=0;i<n;i++)
{
x[i+1]=x[i]+h;
k1=function(x[i],y[i]);
k2=function(x[i]+h/2,y[i]+h*k1/2);
y[i+1]=y[i]+h*k2;
}
break;
case 3:
for(i=0;i<n;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,y[i]-h*k1+2*h*k2);
y[i+1]=y[i]+h*(k1+4*k2+k3)/6;
}
break;
case 4:
for(i=0;i<n;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;
}
break;
default:
return 0;
}
return 1;
}
printf("用四阶龙格-库塔方法\n");
RungeKutta(1,0,1,5,x,y,4,function);
for(i=0;i<6;i++)
printf("x[%d]=%f,y[%d]=%f\n",i,x[i],i,y[i]);
return 1;

热心网友 时间:2022-06-30 22:51

你好、我来为你解答:
513350959
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 可爱女生BB霜 三阶、四阶龙格库塔函数matlab代码 用MATLAB龙格库塔法解决二阶微分方程y&#39;&#39;+ay=0,a为常数,可以随便设,初值为y0=0,程序怎么写啊?? 用龙格库塔算法解二阶常微分方程,利用c++编程 急急急!求助matlab用龙格-库塔方法求解方程组 用MATLAB按二阶龙格库塔法求解微分方程组,大神速来,急急急 求二阶龙格库塔matlab程序 ,写了一天,一大堆错误 怎么用龙格库塔法 mathematic用龙格库塔法解二阶方程 如何用MATLAB编写的拉格朗日插值算法的程序、二阶龙格-库塔方法的程序和SOR迭代法的程序 关于二阶和四阶龙格库塔法的计算与编程调试 二阶龙格库塔法迭代公式用Matlab怎么编程 给别人备注名叫土豆,有什么含义阿! 网络用语:灌水 ,土豆 是什么意思呀? 男生喊女生土豆是什么意思? 对了,老说土豆土豆的,土豆到底什么意思 山西城镇医保报销比例2019年 太原门诊医保怎么报销比例 办公用品清单有哪些??? 谁晓得办公用品使用清单有哪些 19岁的女生有什么样的bb霜 龙格库塔的方法解 弹性动力学线性变系数二阶微分方程组求解,急求。。。非常感谢。。 女生的网名中有bb有什么含义 女孩子成年与未成年人的bb有什么不同? 弱弱的问一句,女生都说的BB霜是不是女生用在(B)那个地方的啊? 为什么一定要女孩子生BB啊 sxss,xzzz^=-;sz 艾尔之光各职业的连招 艾尔之光锋刃武者往前撞的连招是什么? 艾尔之光刀文(锋刃武者)最简单的连招是什么 台式键盘错乱怎么修复,我按z显示xz按住不放就是xzzzzzzz按一下放一下再按就是xzxzxz 艾尔之光烈刃武者连招 暗黑破坏神2 1.14版本怎么多开?输入&quot;X:&#92;ZZZ&#92;DIABLO II.exe&quot;-w显示无效? VHDL7段译码源程序中,zzzzzzz表示什么意思? when others=&gt;dout&lt;=&quot;ZZZZZZZ&quot; Java 2、下面的程序段的功能是( )。 File file1=new File(&quot;d:&#92;&#92;x 艾尔之光锋刃武者PK要怎么连招? 400号码怎么申请 我的车贷是工商银行卡,车贷是4256.24,卡里余额是4270,为什么提示余额不足扣款失败? 扣车贷余额不足会把银行卡存上的定期的扣掉吗? 车贷卡上个月多交了2200这个月就少交了上个月的2200怎么还说我逾期扣款不够?