使用c语言编程解决物理问题--质点在二维平面的运动

质点在二维平面的运动问题
此题目为南京师范大学考研题目(第4题)
在这里插入图片描述

#include<stdio.h>
#include<math.h>
#define g 10//重力加速度
#define K 6//假设的空气阻力和速度平分的比值
#define m 2//质量
#define t 0.1//时间增量dt
int main(void)
{
	/*假设方向向上向右为正方向*/
	float vx0 = 20,vy0 = 60,x0 = 0,y0 = 400;//初始速度和位置
	float vx = vx0,vy = vy0,px = x0,py = y0;	
	float v,ay,ax;//瞬时速度、瞬时加速度
	float q,qx,qy;//瞬时空气阻力
	while(py > 0)//若未落到地面
	{
		v = sqrt(vx * vx + vy * vy);//角度随时都在变化,所以利用勾股定理求合速度
		q = K / v * v;//利用合速度求合空气阻力
		qx = q * vx / v;//水平方向空气阻力
		qy = q * vy / v;//竖直方向空气阻力
		/*竖直方向加速度、空气阻力、速度*/
		ay = -g - qy / m;	//向上运动时,阻力向下,f = -(g+q);向下运动时,阻力向上,f = -g-q; 
		py += vy * t;//Pt+dt = Pt + vt * dt
		vy += ay * t;//Vt+dt = Vt + at * dt
		/*水平方向加速度、空气阻力、速度*/
		ax = -qx / m;
		px += vx * t;
		vx += ax * t;
		
		if(py >= 0)//输出每一时间增量的瞬时加速度、速度、位置
			printf("av=%.1f ay=%.1f v=%.1f vx=%.1f vy=%.1f x=%.1f y=%.1f\n",ax,ay,v,vx,vy,px,py);
	}
	return 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撼沧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值