Witam, potrzbuje umieścić te wzory na siłę wymuszającą(pierwszy link) i obliczenia dla duzych kątów(drugi link)) w podanym nizej programie.
wzory
http://www.if.pw.edu.pl/~wosinska/am2/w5/segment4/main.htm
#include <stdio.h>
#include <stdlib.h>
double ft(double,double,double,double);
int main(int argc, char **argv) {
const int n=150;
const float pi=3.14;
const double g=9.81;
int i;
double x[n],v[n],t[n],a[n],dt,l,naj,naj1,T,omega;
x[0]=1.0;
v[0]=0.0;
t[0]=0.0;
a[0]=0.0;
dt=0.05;
printf("podaj dlugosc wahadla, rozna od 0\n");
scanf("%lf",&l);
while (l<=0) {
printf("podaj dodatnia dlugosc\n");
scanf("%lf",&l);
}
for (i=0;i<n-1;i++) {
x[i+1]=x[i]+v[i]*dt;
a[i+1]=ft(x[i],v[i],t[i],l);
v[i+1]=v[i]+ft(x[i],v[i],t[i],l)*dt;
t[i+1]=t[i]+dt;
}
printf("\tczas \twychylenie \tpredkosc \tprzyspieszenie\n");
for (i=0;i<n;i++) {
printf("%16lf %16lf %16lf %16lf\n", t[i], x[i], v[i], a[i]);
}
FILE *strumien;
strumien=fopen("czas.txt","wt");
for (i=0;i<n;i++) {
fprintf(strumien,"%16lf\n ", t[i]);
}
strumien=fopen("droga.txt","wt");
for (i=0;i<n;i++) {
fprintf(strumien,"%16lf\n ", x[i]);
}
strumien=fopen("predkosc.txt","wt");
for (i=0;i<n;i++) {
fprintf(strumien,"%16lf\n", v[i]);
}
strumien=fopen("przysp.txt","wt");
for (i=0;i<n;i++) {
fprintf(strumien,"%16lf\n", a[i]);
}
fclose(strumien);
omega=l/g;
omega=sqrt(omega);
T=2*pi*omega;
printf("Okres drgan: %lf\n",T);
naj=x[0];
for (i=0;i<n;i++) {
if(x[i]>naj) {
naj=x[i];
}
}
printf("Najwieksze wychylenie: %16lf\n",naj);
naj1=v[0];
for (i=0;i<n;i++) {
if(v[i]>naj1) {
naj1=v[i];
}
}
printf("Najwieksza predkosc: %16lf\n",naj1);
}
double ft(double x, double v, double t, double l) {
const double g=9.81;
double w0=g/l;
w0=sqrt(w0);
return -w0*w0*x;
}
formatowanie kodu - msm