y=x^3-4x+1という関数において、a<=x<=bの範囲でn分割し、yの最小値を求めるプログラムを作成しています。for文を使って、計算値の比較を行いたいのですが、関数の計算方法が分かりません。
int main(int argc,char* argv[]){ float a = atof(argv[1]); float b = atof(argv[2]); int n = atoi(argv[3]); float min = 0; for(int i=a;i<=b;i+=n){ } }
変数x,yを定義してyに上記の関数を代入し、xにiを代入してfor文を回そうとしましたがうまくいきませんでした。
> 関数の計算方法が分かりません。
どこまで書いてみて、何に詰まっている状況でしょうか?
その関数の「何が」分からないのでしょうか?
- 関数そのもの(x=-1のときのyの値の計算方法)が分からない。
- その関数をC言語での演算子を使った計算式として表現する方法が分からない。
また、y=xという関数だった場合、プログラムは作成できますか?
書いて見たのが上記のところまでです。y=x^3-4x+1という関数の定義方法がわかりません。
>うまくいきませんでした。
うまくいかなかったコードを提示していただけませんか。
また、xが2の時のyは計算できますか。
c言語において関数をどのように表現すれば良いのかがわからないです。
> 変数x,yを定義してyに上記の関数を代入し
実際に書いたコードと、どのような事態になったのかをご提示ください。
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main(int argc,char* argv[]){
float a = atof(argv[1]);
float b = atof(argv[2]);
int n = atoi(argv[3]);
float min = 0;
float x;
for(int i=a;i<=b;i+=n){
float y = (i*i*i)-(4*i)+1;
if(min>y){
min = y;
x = i;
}
else{
min = min;
x = x;
}
}
printf("[x,y]=[%.4f,%.4f]\n",x,min);
}
このような形で書きました。a,bにたとえば2.3,8.9と入力した時にxに0が出力されてしまいます。a,bはxの範囲ですので0が入るのはおかしいのですがどこがおかしいのかわかりません。ちなみにa,bに1.0,2.0を入れた時はうまくいきました。
回答3件
あなたの回答
tips
プレビュー