当前位置:首页 » 编程语言 » c语言求解微分方程
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求解微分方程

发布时间: 2022-01-14 03:08:28

‘壹’ 用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);
}
}
}

‘贰’ c语言怎样实现绘图,解微分方程跪求源代码。。。

你连题都没有,想要源代码,估计希望不大了,不过有本书里有将如何用C语言解微分方程。
好像是叫计算方法 C语言版。哦,找到了
《计算方法(C语言版)》是作者十多年计算方法研究应用和教学经验的结晶。全书共分9章,主要内容包括算法与误差、非线性方程求根、线性方程组的直接求解和迭代求解、代数插值、数值积分、矩阵特征值与特征向量的计算、常微分方程初值问题的数值解

‘叁’ 如何编写C语言程序求解这个微分方程

没微分方程应该用MATLAB解决

‘肆’ 四阶R-K求常微分方程初值的C语言编程

#include <stdio.h>
// y' = x + y
double f1(double x,double y)
{
return x + y ;
}
// y' = 3y/(1 + x)
double f2(double x,double y)
{
return 3*y/(1 + x) ;
}
// y' = y * y;
double ftest(double x,double y)
{
return y*y;
}

void solve( double (*func)(double x,double y),
double minX,double maxX,
double y0,
double h,
double result[][7],int* resultNum
)
{
double K1,K2,K3,K4;
double Xn_1,Yn_1;

int n = 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;
}

void print(double result[][7],int resultNum)
{
int i;
double x;
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 < resultNum ; i ++)
{
printf("%5d%15f%15f%15f%15f%15f%15f\n",
(int)result[i][0],
result[i][1],
result[i][2],
result[i][3],
result[i][4],
result[i][5],
result[i][6]
);
}
for(i = 0 ; i < 95; i ++ )
printf("-");
printf("\n\n");
}

int main(int argc, char *argv[])
{
double minX, maxX;
double y0;
double h;
double result[10000][7];
int resultNum ;

/****************************************
* y'=x+y
* y(0)=1 (0<x<1)
****************************************/
printf("y'=x+y ; y(0)=1 (0<x<1)\n");
minX = 0.0,maxX = 1;
y0 = 1;
h = 0.1;
solve( ftest,
minX,maxX,
y0,
h,
result,&resultNum
);
print(result,resultNum);

/****************************************
* y'=3y/(1+x)
* y(0)=1 (0<x<1)
****************************************/
printf("y'=3y/(1+x) ; y(0)=1 (0<x<1)\n");
minX = 0.0,maxX = 1;
y0 = 1;
h = 0.1;
solve( ftest,
minX,maxX,
y0,
h,
result,&resultNum
);
print(result,resultNum);

/****************************************
* y'=y*y
* y(0)=1 (0<x<0.5)
****************************************/
printf("y'=y*y ; y(0)=1 (0<x<0.5)\n");
minX = 0.0,maxX = 0.5;
y0 = 1;
h = 0.1;
solve( ftest,
minX,maxX,
y0,
h,
result,&resultNum
);
print(result,resultNum);

/****************************************/

return 0;
}

/*
运行结果:

y'=x+y ; y(0)=1 (0<x<1)
n Xn K1 K2 K3 k4 Y
-----------------------------------------------------------------------------------------------
0 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000
1 0.100000 1.000000 1.102500 1.113289 1.235052 1.111110
2 0.200000 1.234567 1.375551 1.392136 1.563310 1.249998
3 0.300000 1.562495 1.763910 1.790762 2.042253 1.428566
4 0.400000 2.040801 2.342756 2.389201 2.780510 1.666653
5 0.500000 2.777733 3.259974 3.347626 4.005666 1.999963
6 0.600000 3.999853 4.839806 5.026356 6.263001 2.499883
7 0.700000 6.249414 7.909333 8.383049 11.143498 3.332844
8 0.800000 11.107850 15.118384 16.717986 25.046449 4.996628
9 0.900000 24.966293 38.999310 48.255163 96.474521 9.929124
10 1.000000 98.587505 220.775003 439.651750 2904.595478 81.996399
-----------------------------------------------------------------------------------------------

y'=3y/(1+x) ; y(0)=1 (0<x<1)
n Xn K1 K2 K3 k4 Y
-----------------------------------------------------------------------------------------------
0 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000
1 0.100000 1.000000 1.102500 1.113289 1.235052 1.111110
2 0.200000 1.234567 1.375551 1.392136 1.563310 1.249998
3 0.300000 1.562495 1.763910 1.790762 2.042253 1.428566
4 0.400000 2.040801 2.342756 2.389201 2.780510 1.666653
5 0.500000 2.777733 3.259974 3.347626 4.005666 1.999963
6 0.600000 3.999853 4.839806 5.026356 6.263001 2.499883
7 0.700000 6.249414 7.909333 8.383049 11.143498 3.332844
8 0.800000 11.107850 15.118384 16.717986 25.046449 4.996628
9 0.900000 24.966293 38.999310 48.255163 96.474521 9.929124
10 1.000000 98.587505 220.775003 439.651750 2904.595478 81.996399
-----------------------------------------------------------------------------------------------

y'=y*y ; y(0)=1 (0<x<0.5)
n Xn K1 K2 K3 k4 Y
-----------------------------------------------------------------------------------------------
0 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000
1 0.100000 1.000000 1.102500 1.113289 1.235052 1.111110
2 0.200000 1.234567 1.375551 1.392136 1.563310 1.249998
3 0.300000 1.562495 1.763910 1.790762 2.042253 1.428566
4 0.400000 2.040801 2.342756 2.389201 2.780510 1.666653
5 0.500000 2.777733 3.259974 3.347626 4.005666 1.999963
-----------------------------------------------------------------------------------------------

请按任意键继续. . .
*/

‘伍’ 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语言了 如有不明再问我吧
你的串号我已经记下,采纳后我会帮你制作

‘陆’ 如何编写C语言程序求解这个微分方程

红烧肉做法:

1、把油烧热,放两勺白糖和姜片进去翻炒片刻。
2、放入五花肉块翻炒,直至颜色金黄,油也煸出一些。
3、加水将将漫过肉块,加酱油少许、盐少许和五香粉少许,煮至五花肉软糯。
4、起锅前十来分钟可加胡萝卜块。
5、水收干后起锅。

‘柒’ c语言如何做微分

你连题都没有,想要源代码,估计希望不大了,不过有本书里有将如何用C语言解微分方程。
好像是叫计算方法 C语言版。哦,找到了
《计算方法(C语言版)》是作者十多年计算方法研究应用和教学经验的结晶。全书共分9章,主要内容包括算法与误差、非线性方程求根、线性方程组的直接求解和迭代求解、代数插值、数值积分、矩阵特征值与特征向量的计算、常微分方程初值问题的数值解法等。

‘捌’ 请问这个微分方程式用c语言怎么写

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

‘玖’ c语言用龙格库塔法求微分方程 问题急求😢😢😢

希望可以帮到你

‘拾’ C语言:常微分方程初值问题的Taylor求解方法

可以用MATLAB中的函数求解
使用Euler法求解,运算程序简单,但是计算结果准确度不高。使用改进的Euler法求解过程相对复杂,但是准确度会更高。准确度最高的是四阶龙格库塔法,求解步骤也是最复杂的。问题(1)使用Euler求解,并与准确解对比。问题(3)使用改进的Euler法求解。问题(4)(I)(IV)使用四届标准龙格库塔法求解。