差分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));
}