|
: for(j=0;j<n+1;j++)
: {
: s+=a[j]*pow(z,j);
: }
: sum+=s*0.0001;
sum = s = .0;
// ...
for (j=0; j<n+1; ++j)
{
s += a[j] * pow(z, j);
sum += s * pow(0.0001, j+1);
}
sum 과 s 는 0 으로 초기화 하고 ...
sum 에 s 를 그때 그때 더해야 할 듯이 보입니다.
비슷한 예로
(1 cm)^3 == (1 m)^3 * (0.01)^3
!= (1 m)^3 * (0.01)^1
이죠.
오호살덩 님이 쓰신 글 :
: #include<stdio.h>
:
: main()
: {
:
:
: int a[100]={0,};
: int n,i,p,q,j;
: double z,s,t,sum;
:
:
:
: printf("n= ");
: scanf("%d",&n);
:
: for(i=0;i<n+1;i++)
: {
: printf("a%d=",i);
: scanf("%d",&a[i]);
: }
:
:
: printf("b1=");
: scanf("%d",&p);
:
:
: printf("b2=");
: scanf("%d",&q);
:
:
: t=(q-p)*10000;
:
: for(i=0;i<t+1;i++)
: {
: z=p+(i*0.0001);
:
: for(j=0;j<n+1;j++)
: {
:
:
: s+=a[j]*pow(z,j);
: }
: sum+=s*0.0001;
: }
:
: printf("%.3f\n",sum);
:
: }
:
: n차 연립 방정식의 적분값을 구하는 프로그램을 짤려고 합니다.
:
: a0~an 은 엑스 영승의 계수에서 ~ 엑스 n승의 계수입니다.
: 그리고 b1,b2는 적분할려고 하는 구간이이구요.
:
: b1 과 b2 사이를 0.0001의 간격으로 나눈다고 생각하고요.
:
: b1에서 0.0001씩 증가시킨값을 식에 대입해서 나온값에 0.0001를 곱해서 하나의 직사각형을 만들어 냅니다.
:
: 이런 직사각형을 전부 더하면 적분이 되는거죠.
:
: 구분구적법이라고 하나요..하이튼 이런씩이 되게 프로그램을 짰습니다.
:
: 나름대론 맞다고 생각하고 해보았는데 결과치가 도저히 안 맞는군요..왜 그런지 모르겠습니다.
:
:
: 저번에도 이거 할려다 꼴아 박은적 있거든요.
:
: 뭐가 잘못됐느지 몰르겠습니다. 조언 좀 해주세요.
|