常系数奇次线性微分方程的求解(c语言程序编辑,下面哪错了,为什么程序运行不了!)
发布网友
发布时间:2022-06-02 11:43
我来回答
共1个回答
热心网友
时间:2023-10-18 04:53
第一行:#inlcude<stdio.h> include打错了
第七行:scanf("p=%f,q=%f",&p,&q);错误 改为scanf("%lf%lf",&p,&q);
第十四行:if(m=0) 改为if(m==0)
第十七行:{b=sqrt(-m);c=b/2; c没有定义过
对m大小的判断:因为我把m设为了double型根据该类型的精度判断它与正负(1e-6)的大小就行了,这样更精确。
剩下的我帮你改了下数据类型(float精度不够,或者你采用格式转换也行,编译器是VC的话不会报错只会警告)和输出格式。
#include<stdio.h>
#include<math.h>
main()
{
double p,q,m,a,b,r1,r2,c;
printf("input the feature of a differential equation:\n");
scanf("%lf%lf",&p,&q);
printf("your differential equation is:y''+%5.2fy'+%5.2fy=0\n",p,q);
printf("so you can get a feature equation:r^2+%5.2fr+%5.2f=0\n",p,q);
m=p*p-4*q;
if(m>(1e-6))
{
a=sqrt(m);r1=(-p/2)+(a/2);r2=(-p/2)-(a/2);
printf("your answer is y=(C1*e^(%5.2f*x))+(C2*e^(%5.2f*x))\n",r1,r2);}
if(m>=-(1e-6)&&m<=(1e-6))
{
r1=(-p)/2;
printf("your answer is y=(C1+C2)*e^(%5.2f*x)\n",r1);}
if(m<-(1e-6))
{
b=sqrt(-m);c=b/2;
printf("your answer is y=e^((-%5.2f/2)*x)(cos(%5.2f*i)+sin(%5.2f*i)\n",p,c,c);}
}