50分悬赏一个简单c语言问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 04:28:52
现在想做一个使用积分来计算数值的程序,其式如下:
l(T)=∫(0到T)f (t)dt.
参数t的微小变化为Δt,从t至Δt的积分值可以从f(t)Δt近似计算出来。现在假设将积分范围分成M份,那么得出此式Δt=T/M,利用这个性质,l(T)就可以由下面的式子近似算出来:
l(T)=∑(m=0(下),M-1(上))f(mΔt)Δt.(式A)
当积分函数近似线性的时候,也可用此式近似计算出:
l(T)=∑(m=0(下),M-1(上))(f(mΔt)+f((m+1)Δt/2.(式B)
此式比上式精度要高。
现在要求计算一个物体移动距离的式子,其式如下:
v(t)=根号下{(sin2t/0.5+ln(t+2.5))*200+1800}。
所做的程序要求如下:
1:定义时间T和分割数M
2:由式A计算出的距离值用Length_1表示
3:由式B计算出的距离值用Length_2表示
4:计算对数用函数log或ln来计算
就这些了,希望大哥大姐们指点我一下,谢谢啦!
回答正确的 加50
其实在这里f(t)就等于V(t)把 V(t)带入式子A和B就行了 Δt等于Δt=T/M T和M在程序执行时候 手动输入
这样懂了吧
我刚学c语言初级 ,老师出的这个题.说简单一点也不为过.

就当成(sin2t) /0.5,我用c语言工具执行4楼的好像有错误 ,你执行一下试试.

#include<math.h>
#include<stdlib.h>

int main(int argc,char *argv[])
{
int m;
float Length1,Length2,T,V1,V2,V3,M,L,dt,L1,L2;

if(argc != 3)
{
printf("Usage: <program name> <time> <partition number>\n");
printf("try again!");
exit(1);
}

T = atof(argv[1]);
M = atof(argv[2]);

dt = T / M;
Length1 = 0;

for(m = 0;m <= M-1;m++)
{
V1 = sqrt((200 * sin(2 * m * dt)) / (0.5 + log(m * dt + 2.5))+1800) * dt;
Length1 += V1;
}
printf("Length_1:%f\n",Length1);

L1 = 0;
L2 = 0;

for(m = 0;m <= M-1;m++)
{
V2 = sqrt((200 * sin(2 * m * dt)) / (0.5 + log(m * dt + 2.5))+1800);
L1 += V2;
V3 = sqrt((200 * sin(2 * (m+1)*dt )) / (0.5 + log( (m+1)*dt + 2.5))+1800);
L2 += V3;
}
Length2 = (L1 + L2) * (d