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

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

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

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

Q&A

解決済

1回答

707閲覧

オイラー法を用いて投射物体のx, y座標を求めたいのですが、if文の入れ方がわかりません。

tomo.223

総合スコア4

C

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

0グッド

0クリップ

投稿2020/05/18 14:03

前提・実現したいこと

オイラー法を用いて初期条件x=0、y=0、初速度v=10.0、投射角度r=45°、反発係数e=0.7、刻み幅h=0.01、ステップ数n=500の投射物体のx, y座標を求めたいのですが、初期条件でないy=0において物体が再びy>0の方向へ跳ね返り、かつy方向速度がe倍するようなプログラムの組み方がわかりません。

該当のソースコード

C

1#include <stdio.h> 2#include <math.h> 3 4int main(){ 5 int i, n = 500; 6 double x_num[n+1], y_num[n+1], vx_num[n+1], vy_num[n+1], f1, f2, f3, f4, h = 0.01, g = 9.8, r = 0.7854, e = 0.7; 7 FILE *fp; 8 9 x_num[0] = 0.0; 10 y_num[0] = 0.0; 11 vx_num[0] = 10.0 * cos(r); 12 vy_num[0] = 10.0 * sin(r); 13 14 fp = fopen("rep2.txt", "w"); 15 16 for(i = 0; i < n; ++i){ 17 f1 = 0; 18 vx_num[i+1] = vx_num[i] + f1 * h; 19 f2 = vx_num[i]; 20 x_num[i+1] = x_num[i] + f2 * h; 21 f3 = -g; 22 vy_num[i+1] = e * (vy_num[i] + f3 * h); 23 f4 = vy_num[i]; 24 y_num[i+1] = y_num[i] + f4 * h; 25 26 fprintf(fp, "%lf\t%lf\n", x_num[i], y_num[i]); 27 } 28 fclose(fp); 29 return 0; 30} 31

試したこと

f3 = -g; vy_num[i+1] = e * (vy_num[i] + f3 * h); f4 = vy_num[i]; y_num[i+1] = y_num[i] + f4 * h;

の部分を

if{ f3 = -g; vy_num[i+1] = e * (vy_num[i] + f3 * h); f4 = vy_num[i]; y_num[i+1] = y_num[i] + f4 * h; }

としてみたのですがうまくいきませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

初期条件でないy=0において物体が再びy>0の方向へ跳ね返り、かつy方向速度がe倍する

条件と,起こるべき事柄とを,素直に「まともな文法で」書けば良いだけに思いますが,

試したこと
if{

を見る限り,まずは基礎文法から固めていかないとダメな気がします.


y方向の初期位置と初速がその条件ならば、
跳ね返りを行う条件としては,

更新前のy座標 >= 0 且つ 更新先(予定の)y座標<0

とかで良いのではないかと思いますが,その際の「跳ね返り」処理にどこまでを求めるのか?(y方向速度反転だけして,y座標は負の値に更新?)は仕様次第なのかな?

投稿2020/05/19 01:29

fana

総合スコア11996

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問