dポイントプレゼントキャンペーン実施中!

問題.
2m+1次までの展開を計算する関数、
        m (-1)^n・x^(2n+1)
sinx|2m+1 = Σ  ーーーーーーーーー  
         n=0  (2n+1)!
(^は乗)を作れ、関数の宣言は、

float MySin(float x, int m)とせよ。

上記MySinを使って、次数を増やすにつれて、三角関数に近づくこと示せ。

xの範囲を-πからπまでとし、π/100毎にm=0, 1, 2, 3に対して計算せよ。

結果を、

float pi;
...
pi=3.14159265;
...
for(i=-100;i<=100;i++){

x=pi*i/100.;

printf("%f %f %f %f %f %f\n", x,

MySin(x,0), MySin(x,1), MySin(x,2), MySin(x,3),sin(x));

}

とする。


全くわからないです。
プログラムをそのまま教えてほしいです。

A 回答 (2件)

#include <stdio.h>


#include <math.h>

float factorial(int n)
{
if (n == 0) return 1;
else return n * factorial(n - 1);
}

float MySin(float x, int n)
{
int sign;

if (n == 0) return x; // is eqauly x^1/1!

sign = (n % 2) ? -1 : 1;

return MySin(x, n - 1) + sign * pow(x, 2 * n + 1) / factorial(2 * n + 1);
}

int main()
{
int i;
float x;

float pi = 3.14159265;
for(i=-100;i<=100;i++)
{

x=pi*i/100.;

printf("%f %f %f %f %f\n", x,
MySin(x,0), MySin(x,1), MySin(x,2), MySin(x,3), sin(x));
}

return 0;

}
    • good
    • 1

シグマの計算なんだから


int n;
float retVal;
for (n=0;n<m;n++){

}
return retVal;
ぐらい書けるでしょ
チートするのではなく、多少の努力は自分でしましょう
このレベルを自分で出来ないなら、単位か何かは分かりませんが危ういです
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!