###前提・実現したいこと
常微分方程式の初期値問題、y'=x+y、0≦x≦1、y(0)=1、分割幅h=0.1の条件のもとでx=0.1,0.2,…,1.0の時のyの値をオイラー法で求めるという問題です。どうしてもエラーが出てしまう為解決方法を教えて頂きたいです。
作ったコード
C++
1#include <stdio.h> 2#include <math.h> 3double F(double x, double y) // f(x)の微分値 f'(x) 4{ 5 return x+y; 6} 7 8double euler(double x0, double xn, double y0, int n, int modulo) 9{ 10 int i; 11 double x, y, h; 12 13 x = x0; y = y0; h = (xn - x0)/n; 14 for (i = 1; i <= n; i++) { 15 y += F(x) * h; 16 x = x0 + i * h; 17 if(i % modulo == 0) 18 printf("%-10f %-20.15f\n", x, y); 19 } 20 return y; 21} 22 23int main(void) 24{ 25 double x0=0.0; // x の初期値 26 double xn=1.0; // x の最終値 27 double y0=1.0; // y の初期値 28 int n= 10; // 区間の数 29 int modulo=1; // 区間番号がmodulo 30 31 printf(" %-8s %-20s\n", " x", " y = f(x) "); // %-8s は文字列を8桁の幅の中に左寄せで印字する指定 32 euler(x0, xn, y0, n, modulo); 33 34 return 0; 35}
エラー部分
C++
1for (i = 1; i <= n; i++) { 2 y += F(x) * h; No matching function for call to 'F' 3 x = x0 + i * h;
自分では解決方法が思いつかなかった為質問させて頂きました。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/28 14:03