- スレを勃てるまでもない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; }
|
|