史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   關於積分的c語言寫法 (http://forum.slime.com.tw/thread230223.html)

hoio121 2008-05-23 10:58 PM

關於積分的c語言寫法
 
引用:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int x,n;
float y,up,down;
float b,sum=0,a,high;
printf("此方程式為y=ax+b\n");
printf("請輸入係數a ");
scanf("%f",&a);
printf("請輸入係數b ");
scanf("%f",&b);
printf("請輸入積分上限 ");
scanf("%f",&up);
printf("請輸入積分下限 ");
scanf("%f",&down);
printf("請輸入分割數n ");
scanf("%d",&n);
high=(up-down)/(2*n);
printf("%f\n",high);

for(x=0;x<n;x++)
{

y=2*high*(a*x+b)+high*a;
sum+=y;
}
printf("函數下的面積為 %f\n",sum);







system("PAUSE");
return 0;
}

不知道這個寫法有問題嗎?
我是用代公式梯型法則寫出來的
可是只有在分割數=(上限-下限)的時候才會是準的
由於是線性方程,所以應該不管分割多少也不會改變答案
可是不知道哪裡出了問題
請大家指教

hoio121 2008-05-24 04:09 PM

引用:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n;
float x,y,up,down;
float c,b,sum=0,a,h;
printf("此方程式為y=ax^2+bx+c\n");
printf("請輸入係數a = ");
scanf("%f",&a);
printf("請輸入係數b = ");
scanf("%f",&b);
printf("請輸入係數c = ");
scanf("%f",&c);
printf("請輸入積分上限 = ");
scanf("%f",&up);
printf("請輸入積分下限 = ");
scanf("%f",&down);
printf("請輸入分割數n = ");
scanf("%d",&n);
h=(up-down)/(2*n);
printf("每單位寬度 = %f\n",h*2);

for(x=down;x<up;x+=2*h)
{

y=h*(a*x*x+b*x+c+a*x*x+2*x*h*a+4*h*h*a+b*x+2*h+c);
sum+=y;
}
printf("函數下的面積為 %f\n",sum);

system("PAUSE");
return 0;
}

我完成了,有需要的人可以指教

rank 2008-05-26 02:26 PM

小弟我來指教啦~
其實這修改還不是很完整

語法:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n;
float x,y,up,down;
float c,b,sum=0,a,h;
printf("此方程式為y=ax^2+bx+c\n");
printf("請輸入係數a = ");
scanf("%f",&a);
printf("請輸入係數b = ");
scanf("%f",&b);
printf("請輸入係數c = ");
scanf("%f",&c);
printf("請輸入積分上限 = ");
scanf("%f",&up);
printf("請輸入積分下限 = ");
scanf("%f",&down);
printf("請輸入分割數n = ");
scanf("%d",&n);
h=(up-down)/n;
printf("每單位寬度 = %f\n",h);

for(x=down;x<up;x+=h)
{
y=h*(a*x*x+b*x+c+a*(x+h)*(x+h)+b*(x+h)+c)/2;
if(y<0)
  y=-y;
sum+=y;
}
printf("函數下的面積為 %f\n",sum);

system("PAUSE");
return 0;
}

運行結果
此方程式為y=ax^2+bx+c
請輸入係數a = 1
請輸入係數b = 0
請輸入係數c = 0
請輸入積分上限 = 2
請輸入積分下限 = -2
請輸入分割數n = 10000
每單位寬度 = 0.000400
函數下的面積為 5.334602
請按任意鍵繼續 . . .


所有時間均為台北時間。現在的時間是 09:33 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1