トップページ > プログラム > 2015年01月12日 > GOoAet7L

書き込み順位&時間帯一覧

8 位/130 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000003000000003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net

書き込みレス一覧

スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net
19 :デフォルトの名無しさん[]:2015/01/12(月) 15:35:19.43 ID:GOoAet7L
式を選択した後ニュートン法で解を求めるプログラムなのですが、最後のpfのとこに波線が現れ「関数型(もしくはpointer to object型)である必要がありますとでてエラーになります。
どこが間違っているか教えていただけるととても助かります
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define max 1000 //最大繰り返し回数
#define eps 1.0e-5 //収束条件

double f1(double x);
double f2(double x);
double f3(double x);
double df(double x,int pf,int j);
void newton(void);


int main()
{
newton();

return 0;
}

void newton(void)
{
int(*pf[])() = { f1, f2, f3 };
int i,j;
double a=1, na;
printf("equation NO.\n");
printf("0: 3cos(x2)-sin(x)\n");
printf("1: x3-x2-x-3\n");
スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net
20 :デフォルトの名無しさん[]:2015/01/12(月) 15:36:39.01 ID:GOoAet7L
printf("2: x*sin(x)+log(x)\n");
printf("which equation:");
scanf("%d", &j);

if ((j < 0) | (j > 2)) return 0;
for (i=0;i<max+1;i++) {

na = a - (*pf[j])(a)/df(a,pf,j);
if (fabs(na - a)<eps) break;

a = na;

if (i== max) {
printf("収束しませんでした。\n");
exit(1);
}
}

printf("解は%fです\n", na);

}
スレを勃てるまでもないC/C++の質問はここで 23 [転載禁止]©2ch.net
21 :デフォルトの名無しさん[]:2015/01/12(月) 15:37:16.70 ID:GOoAet7L
double f1(double x)
{
return 3*cos(x*x)-sin(x);
}

double f2(double x)
{
return x*x*x - x*x - x - 3;
}

double f3(double x)
{
return x*sin(x) + log(x);
}

double df(double x,int *pf,int j)
{
return ((pf[j])(x+eps)-f(x))/eps;
}


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。