質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

8374閲覧

斜方投射空気抵抗ありのプログラム

tow

総合スコア20

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2016/11/20 02:35

斜方方向にボールを投げた時のプログラムを教えていただきました。
このプログラムに空気抵抗を入れるとどのようになるのでしょうか。
float kakudo, speed;
float vx0, vy0;
float G = 9.8f;
float t;

printf("投げる角度を入力してください(単位:度) ");
scanf("%f", &kakudo);
printf("投げる速度を入力してください(単位:m/s) ");
scanf("%f", &speed);

/* 初速を計算 */
vx0 = speed * cos(kakudo * 3.1415926536f / 180);
vy0 = speed * sin(kakudo * 3.1415926536f / 180);

for(t=0; t<10; t+=0.2f) {
float vx = vx0;
float x = vx0 * t;
float vy = vy0 - G * t;
float y = vy0 * t - (G * t * t) / 2;
/* 経過秒: X方向の速度, Y方向の速度, X方向の移動距離, Y方向の移動距離 */
printf("t=%5.2f(s): vx=%.2f(m/s), vy=%.2f(m/s), x=%.2f(m), y=%.2f(m)\n", t, vx, vy, x, y);
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

まず考え方。空気抵抗が無い場合。
横方向は等速運動。縦方法は等加速度直線運動。
そこに空気抵抗を導入すると、本来は流体力学で難解になるので単純に速度の一乗に比例するとして解くと、比例係数を'k'とすると速度'v'との単純な一次関数f(v) = kvとなる。縦方向をニュートンの運動方程式に当てはめると質量を'm'としてma=mg-kvになるので、これをループの中で'v'が時間により変化する式を作成して縦方向を解く。但し、速度がある速度(終端速度)になるとmg - k v = 0 でv = mg/kになるのでここからは定速運動。横方向は横方向の初速v'としてみるとma=kv'でa=kv/m分、時間により減速する。
では?

投稿2016/11/20 03:04

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahikoHirata

2016/11/20 10:00

課題ですので’naomi3’さんが同じように解説されましたが、まず何故?を大切にして課題をだされた先生に回答できないと。将来、質問者が後悔されないように。
tow

2016/11/22 09:21

ありがとうございます。
guest

0

終端速度にはなるのですが、正確に終端速度に達するのは無限時間点になります。詳細は失念しましたが、こんな解だったと思います。C0, C1は定数。
v(t) = C0 * (1 - exp(-C1 * t))
現実には、十分に終端速度に近い速度に達したところで「終端速度に達した」と見なしてよいですね。誤差の方が大きくなりますから。

流体内では、速度の一乗に比例する抵抗と共に、速度の二乗に比例する「粘性抵抗」が出てきます。速度の一乗に比例する抵抗だけの場合より複雑ですが、これも解析的に解けます!

運動方程式を示します。
m(d^2/dt^2)r = mg - α((d/dt)r)^2 - β(d/dt)r
αとβは抵抗係数で、正の定数です。

数値的に前進オイラー法で解く場合は、私が回答したhttps://teratail.com/questions/55847をご覧ください。

投稿2016/11/20 09:43

naomi3

総合スコア1105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tow

2016/11/22 09:24

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問