★ 大学生ですが質問させてください! NEW / クロカ 引用
f'(x)=3f(x)+1 これの求め方は
「f(0)=2であれば、f'(0)3×2+1であるから、オイラー法によって、f(Δx)=2+7×Δx と求まっていく。 f(2Δx)は求まった f(Δx)を使えばよい。」
と書いてありますが、
さっぱり意味がわかりません。
それで、解く必要のある問題は
「実際にこのもんだいをオイラー法を用いて解き、f(3)を求めなさい。また、解析解と比較せよ。」
です。
それで、友人がつくった答えが
#include <stdio.h>
#include <math.h>
main()
{
int i, n;
double f,f0,x,dx,sum;
dx=0.0000001;
n=3.0/dx;
f0=2.0;
sum=0.0;
for(i=0;i<n+1;i++){
sum=sum+(7.0*exp(3.0*i*dx))*dx;
}
f=f0+sum;
printf("%f %f\n",f,(-1.0/3.0)+(7.0/3.0)*exp(9.0));
return(0);
}
なんですが、あっているかはともかく
この文自体が理解できません。
この文の意味をだれか教えてくださいませんか? よろしくおねがいします
オイラーの公式を使う解法
Re:オイラーの公式を使う解法
>なんですが、あっているかはともかく
あっていないと思います。
>sum=sum+(7.0*exp(3.0*i*dx))*dx;
ってことは、微分方程式を解いてますよね。
解いてしまったら、オイラー法の意味がありません。
オイラー法というのは、ある値xのときのf(x)がわかるなら、
f(x+dx)=f(x)+f'(x)*dx で、dxだけ大きくなった時の値がわかるでしょって考え方です。
で、最初の初期値としてf(0)=2がわかっているなら、次々にわかるよねって考え方。
>この文自体が理解できません。
あってないんだから、理解しなくていいんじゃないの?
あっていないと思います。
>sum=sum+(7.0*exp(3.0*i*dx))*dx;
ってことは、微分方程式を解いてますよね。
解いてしまったら、オイラー法の意味がありません。
オイラー法というのは、ある値xのときのf(x)がわかるなら、
f(x+dx)=f(x)+f'(x)*dx で、dxだけ大きくなった時の値がわかるでしょって考え方です。
で、最初の初期値としてf(0)=2がわかっているなら、次々にわかるよねって考え方。
>この文自体が理解できません。
あってないんだから、理解しなくていいんじゃないの?
Re:オイラーの公式を使う解法
返信ありがとうございます。
そうですよね指摘されて気付きましたが
既にオイラーを使わずに解いてしまっていいるんですよね。
ただ、最後に比較しているらしいのですが、そこがよく分からなかったもので・・・
ありがとうございました
そうですよね指摘されて気付きましたが
既にオイラーを使わずに解いてしまっていいるんですよね。
ただ、最後に比較しているらしいのですが、そこがよく分からなかったもので・・・
ありがとうございました
Re:オイラーの公式を使う解法
暇が出来たので、作ってみました。
#include <stdio.h> #include <math.h> int main(void) { int i, n; double f,dx; dx=0.0000001; n=3.0/dx; f=2.0; for(i=0;i<=n;i++){ f=f+(3*f+1)*dx; } printf("%f %f\n",f,(-1.0/3.0)+(7.0/3.0)*exp(9.0)); return(0); }