当前位置:首页 » 编程语言 » c语言微分方程

c语言微分方程

发布时间: 2022-12-15 21:45:04

A. c语言程序,欧拉公式求解常微分方程,步长0.01,就是求出100个点,然后

floatdx=0.01;//步长
floatx=0,y=1;//初始值
inti=1;
while(i<100)
{
floatk=y-(2*x)/(3*y);//求斜率,也就是y'
y+=k*dx;
x+=dx;
printf("x=%f,y=%f ",x,y);//输出
i++;
}

B. c语言编程,常微分方程初值问题的taylor求解方法的完整编程,急急急,从头到尾,分两次发也没问题

#include//y'=x+ydoublef1(doublex,doubley){returnx+y;}//y'=3y/(1+x)doublef2(doublex,doubley){return3*y/(1+x);}//y'=y*y;doubleftest(doublex,doubley){returny*y;}voidsolve(double(*func)(doublex,doubley),doubleminX,doublemaxX,doubley0,doubleh,doubleresult[][7],int*resultNum){doubleK1,K2,K3,K4;doubleXn_1,Yn_1;intn=0;result[n][0]=n;result[n][1]=minX;result[n][2]=0;result[n][3]=0;result[n][4]=0;result[n][5]=0;result[n][6]=y0;for(n=1;n*h<=maxX;n++){Xn_1=result[n-1][1];Yn_1=result[n-1][6];K1=(*func)(Xn_1,Yn_1);K2=(*func)(Xn_1+h/2,Yn_1+h/2*K1);K3=(*func)(Xn_1+h/2,Yn_1+h/2*K2);K4=(*func)(Xn_1+h,Yn_1+h*K3);result[n][0]=n;result[n][1]=minX+n*h;result[n][2]=K1;result[n][3]=K2;result[n][4]=K3;result[n][5]=K4;result[n][6]=Yn_1+h*(K1+2*K2+2*K3+K4)/6;}*resultNum=n;}voidprint(doubleresult[][7],intresultNum){inti;doublex;printf("%5s%15s%15s%15s%15s%15s%15s\n","n","Xn","K1","K2","K3","k4","Y");for(i=0;i<95;i++)printf("-");printf("\n");for(i=0;i

C. 微分方程 C语言

难度太大,不过可以找到的,不要为难别人

D. 跪求线性多步法求解微分方程数值解的C语言程序(Adams外插)

c=getchar()!=EOF语句的执行顺序是 1、temp=(getchar()!=EOF); 2、c=temp; 所以,当你的输入不为EOF时,c始终为1。 这里的EOF为文件结束符,对于它的宏定义位于stdio.h头文件中,如果你去看的话会发现 #define EOF -1

E. C语言 经典R-K方法解微分方程 谢谢大家了,新手~~最好还写点说明,非常感谢!!

#include<stdio.h>
/*
针对你给的问题
dy/dt=t/y
y(2.0)=1 2.0<=t<=2.6 h=0.2 怎么输入、输出呢?

*/
double f(double x,double y)//这是你给的问题的函数t/y
{
return x/y;
}
void Runge_Kutta4(double y0,double x0,double h,double b)//四阶的Runge_Kutta法
{
double y1;double k[4];int i=0;
while (1){
i++;
k[0]=f(x0,y0);
k[1]=f(x0+h/2.0,y0+h*k[0]/2.0);
k[2]=f(x0+h/2.0,y0+h*k[1]/2.0);
k[3]=f(x0+h,y0+h*k[2]);
y1=y0+h*(k[0]+2*k[1]+2*k[2]+k[3])/6.0;
printf("%d\t%f\t%f\n",i,x0+h,y1);//这里是C语言的输出
//cout<<i<<'\t'<<x0+h<<'\t'<<y1<<'\n'; 这是C++语言的输出
if(x0+2*h>=b)break;
y0=y1;x0=x0+h;
}
}

void main()
{
Runge_Kutta4(1.0,2.0,0.2,2.6);
}
结果:
1 2.200000 1.356505
2 2.400000 1.661361

全改C语言了 如有不明再问我吧
你的串号我已经记下,采纳后我会帮你制作

F. 用c语言实现分别用欧拉法和改进的欧拉法计算常微分方程:y'=-x*y^2 (x>=0且x<=3) ;y(0)=2,,可用vc6.0运行

// zifuchuan.cpp : Defines the entry point for the console application.
//
#include "stdio.h"
#include “stdlib.h”
#define N 20
//#define exit 0
int length(char *p)
{
int i,count=0;
for(i=0;p[i]!='\0';i++)
count++;
return count;
}
void (char *p1,char *p2)
{
int i;
for(i=0;p2[i]!='\0';i++)
p1[i]=p2[i];
if(p1[i]!='\0')
p1[i]='\0';
printf("复制完成\n");
printf("%s\n",p1);
}
int compare(char *p1,char *p2)
{
int i,j;
for(i=0;p1[i]!='\0'||p2[i]!='\0';i++)
if(p1[i]!=p2[i])
{
j=p1[i]-p2[i];
return j;
}
return 0;
}
int main(int argc, char* argv[])
{
char p1[20],p2[20];
int e,f;
printf("请输入字符串\n");
printf("请输入字符串p1\n");
scanf("%s",p1);
printf("请输入字符串p2\n");
scanf("%s",p2);
// printf("请输入字符串p2\n");
// scanf("%s",p2);
while(1)
{
printf("----------1.求字符串长度----------\n");
printf("------------2.复制拷贝字符串----------\n");
printf("------------3.比较字符串------------\n");
printf("--------------4.退出程序--------------\n");
int choose;
printf("请选择:");
scanf("%d",&choose);
switch(choose)
{
case 1:e=length(p1);printf("%d\n",e);break;
case 2:(p1,p2);break;
case 3:f=compare(p1,p2);printf("%d\n",f);break;
case 4:exit(0);
}
}
}

G. 请问这个微分方程式用c语言怎么写

引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,
struct h int i;int j;;
主要区别:c语句是面向结构的语言,c++是面向对象的语言,C++从根本上已经发生质飞跃,并对c进行丰富的扩展。

H. 运用C语言,龙格库塔求解微分方程组

一下微分方程组,我加分 function df=ode45_fun(t,xyzuvw) %%注意小写的v和大写的V %常数(请修正) R_0=1; rho_0=1; beta=1; G=6.67 ..

I. 数值分析,C语言实现用改进的欧拉方法求解题微分方程,其中步长取为0.1。急求,在线等。

何为改进的欧拉方法?是Euler-Richardson算法吗?

#include<stdio.h>
#include<conio.h>
#include<math.h>
doubleWeiFen(doublex,doubley){
returny*y*(cos(x)-sin(x))-y;
}
voidEulerRichardson(double&x,double&y,doubledx){
//欧拉理乍得算法进行迭代
doubledy_dx,ymid,xmid,dx_2;
dx_2=dx/2;
dy_dx=WeiFen(x,y);//得到起点的变化率
ymid=y+dy_dx*dx_2;
xmid=x+dx_2;
dy_dx=WeiFen(xmid,ymid);//得到中间点的变化率
y+=dy_dx*dx;
x+=dx;
}
intmain(){
doublex=0,y=1,xm=1.0,dx=0.1;
printf("x y %lg %lg ",x,y);
while(x<xm){
EulerRichardson(x,y,dx);
printf("%lg %lg ",x,y);
}
printf(" Finished! ");
getch();
return0;
}

看看这是不是就你想要的?

J. 如何编写C语言程序求解这个微分方程

没微分方程应该用MATLAB解决

热点内容
取票人的密码是什么 发布:2024-05-20 08:21:43 浏览:962
天猫帐号密码应输入什么 发布:2024-05-20 08:16:26 浏览:272
plsql异常处理 发布:2024-05-20 07:54:47 浏览:542
dreamweaver上传网页 发布:2024-05-20 07:51:24 浏览:462
拍摄车的分镜头脚本 发布:2024-05-20 07:50:15 浏览:137
mg名爵最高配置是哪个 发布:2024-05-20 07:45:11 浏览:376
辅助官网源码 发布:2024-05-20 07:31:48 浏览:866
androidbutton的属性 发布:2024-05-20 07:18:58 浏览:637
查找重复字段的sql 发布:2024-05-20 07:18:17 浏览:303
我的世界创造房子服务器 发布:2024-05-20 06:48:36 浏览:818