差分c语言
没有初始化low,就会报运行时错误,初始化一下low就好了
#include "stdio.h"
#define List_Size 20
struct RecordType
{
int key; //简单查找
char otherkey;
};
struct RecordList
{
RecordType r[List_Size+1];
int length;
}list1,*p;
void init_list()
{
int i; //初始化数据
p=&list1;
for(i=0;i<List_Size+1;i++)
{
p->r[i].key =i;
p->r[i].otherkey =i+1;
}
p->length =List_Size+1;
for(i=0;i<List_Size+1;i++) //确认初始化数据
{
printf("list.r[%d].key=%d,list.r[%d].otherkey=%d\n",i,p->r[i].key,i,p->r[i].otherkey);
}
printf("list.length=%d\n",p->length);
}
int BinSrch(RecordList L,int k) //二分差算法
{
int low,high,mid;
int i=0;
low = 0; //初始化low
high=L.length-1;
while(low<=high)
{
mid=(low+high)/2;
if(k==L.r[mid].key)
{
i=mid;break;
}
else
{
if(k < L.r[mid].key)
{
high=mid-1;
}
else
low=mid+1;
}
}
// if((low==high)&&(k!=L.r[mid].key))
// {
// return (0);
// }
return (i);
}
void main()
{
int result=0;
p=&list1;
init_list();
result=BinSrch(list1,7);
printf("the reslut=%d",result);
getchar();
}
Ⅱ 用c语言计算差分方程c(k+2)=1.025c(k+1)-0.4733c(k)+0.2385r(k+1)+0.2089r(k)
#include <stdio.h> int r(int k){ if(k<0)return 0; return 1;}double TC(int k){ if(k<=0)return 0; if(k==1)return 0.238; return 1.025*TC(k-1)-0.4733*TC(k-2)+0.2385*r(k-1)+0.2089*r(k-2);}void main(){ int i; for(i=0;i<=30;i++) printf("%lf\n",TC(i));}图发给你了
Ⅲ 用C语言画差分方程 C(K+2)=1.025C(K+1)-0.4733C(K)+0.2385R(K+1)+0.2089R(K)图象
#include <stdio.h>
#include <conio.h>
#define N 100
main()
{
int i;
double c[N+1];
FILE *fp;
fp=fopen("d:\\.txt","w");
if (!fp)
{
printf("File Open ERROR:\nPress any to exit:");
getch();
exit(1);
}
c[0]=0;
c[1]=0.238;
fprintf(fp,"0\t%g\n",c[0]);
fprintf(fp,"1\t%g\n",c[1]);
for (i=2;i<=N;i++)
{
c[i]=1.025*c[i-1]-0.4733*c[i-2]+0.2385*1+0.2089*1;
fprintf(fp,"%d\t%g\n",i,c[i]);
}
fclose(fp);
printf("OK");
getch();
}
得到数据文件.txt后用origin或excel进行作图。
注:
你的C(0)我直接用0代替,因为你的没有给全。
Ⅳ C语言解下面的差分方程,求大神指导哇!
求ax^2+bx+c=0方程的根:
(输入a回车,输入b回车,输入c回车,最后回车出结果)
#include<stdio.h>
#include<math.h>
main()
{
float
a,b,c,x1,x2;
printf("已知方程为:ax^2+bx+c=0.\n请输入a,b,c:");
scanf("%f%f%f",&a,&b,&c);
if(b*b-4*a*c>=0)
{
x1=(-b+(sqrt(b*b-4*a*c)))/2*a;
x2=(-b-(sqrt(b*b-4*a*c)))/2*a;
printf("x1=%f\nx2=%f\n",x1,x2);
}
else
printf("此方程无解\n");
getchar();
return
0;
}
Ⅳ 怎么用C语言实现向前向后差分算法
没有初始化low,就会报运行时错误,初始化一下low就好了
#include
"stdio.h"
#define
List_Size
20
struct
RecordType
{
int
key;
//简单查找
char
otherkey;
};
struct
RecordList
{
RecordType
r[List_Size+1];
int
length;
}list1,*p;
void
init_list()
{
int
i;
//初始化数据
p=&list1;
for(i=0;i<List_Size+1;i++)
{
p->r[i].key
=i;
p->r[i].otherkey
=i+1;
}
p->length
=List_Size+1;
for(i=0;i<List_Size+1;i++)
//确认初始化数据
{
printf("list.r[%d].key=%d,list.r[%d].otherkey=%d\n",i,p->r[i].key,i,p->r[i].otherkey);
}
printf("list.length=%d\n",p->length);
}
int
BinSrch(RecordList
L,int
k)
//二分差算法
{
int
low,high,mid;
int
i=0;
low
=
0;
//初始化low
high=L.length-1;
while(low<=high)
{
mid=(low+high)/2;
if(k==L.r[mid].key)
{
i=mid;break;
}
else
{
if(k
<
L.r[mid].key)
{
high=mid-1;
}
else
low=mid+1;
}
}
//
if((low==high)&&(k!=L.r[mid].key))
//
{
//
return
(0);
//
}
return
(i);
}
void
main()
{
int
result=0;
p=&list1;
init_list();
result=BinSrch(list1,7);
printf("the
reslut=%d",result);
getchar();
}
Ⅵ 怎么用C语言实现向前向后差分算法
没有初始化low,就会报运行时错误,初始化一下low就好了
#include "stdio.h"
#define List_Size 20
struct RecordType
{
int key; //简单查找
char otherkey;
};
struct RecordList
{
RecordType r[List_Size+1];
int length;
}list1,*p;
void init_list()
{
int i; //初始化数据
p=&list1;
for(i=0;i<List_Size+1;i++)
{
p->r[i].key =i;
p->r[i].otherkey =i+1;
}
p->length =List_Size+1;
for(i=0;i<List_Size+1;i++) //确认初始化数据
{
printf("list.r[%d].key=%d,list.r[%d].otherkey=%d\n",i,p->r[i].key,i,p->r[i].otherkey);
}
printf("list.length=%d\n",p->length);
}
int BinSrch(RecordList L,int k) //二分差算法
{
int low,high,mid;
int i=0;
low = 0; //初始化low
high=L.length-1;
while(low<=high)
{
mid=(low+high)/2;
if(k==L.r[mid].key)
{
i=mid;break;
}
else
{
if(k < L.r[mid].key)
{
high=mid-1;
}
else
low=mid+1;
}
}
// if((low==high)&&(k!=L.r[mid].key))
// {
// return (0);
// }
return (i);
}
void main()
{
int result=0;
p=&list1;
init_list();
result=BinSrch(list1,7);
printf("the reslut=%d",result);
getchar();
}
Ⅶ c语言 m = (++i,++j);怎么差分
赋值号右侧是一个逗号表达式,表达式执行时,顺序执行逗号分隔的式子,最后一个式子的结果为表达式取值,因此计算顺序为:
++i;
++j;
m=j;
Ⅷ 请教c程序 差分求导
我是学的c++,可能不太一样吧,但是大体应该是一样的。
那个调用的函数,被调用的那个long double dcmtcf(x,y),在c++中应该是在xy前面加上定义的类型的。long double dcmtcf(double x,double y)
Ⅸ 差分方程的C语言怎么编程
楼主写错了吧,后面两项偶可以合并了
Ⅹ 请问: 用C语言编写(TC) 差分方程:c(k+2)=1.025c(k+1)-0.4733c(k)+0.2385r(k+1)+0.2089r(k)
这是一道递归的题,计算的代码给你。图就不画了。
#include<stdio.h>
intr(intk)
{
if(k<0)return0;
return1;
}
doubleTC(intk)
{
if(k<=0)return0;
if(k==1)return0.238;
return1.025*TC(k-1)-0.4733*TC(k-2)+0.2385*r(k-1)+0.2089*r(k-2);
}
voidmain()
{
inti;
for(i=0;i<=30;i++)
printf("%lf ",TC(i));
}