Who speaks C?, printf("I'm stuck/n"); |
|
Porsche, and the Porsche crest are registered trademarks of Dr. Ing. h.c. F. Porsche AG.
This site is not affiliated with Porsche in any way. Its only purpose is to provide an online forum for car enthusiasts. All other trademarks are property of their respective owners. |
|
Who speaks C?, printf("I'm stuck/n"); |
MattR |
Jan 22 2006, 10:48 PM
Post
#1
|
Advanced Member Group: Members Posts: 3,279 Joined: 23-January 04 From: SF Bay Area Member No.: 1,589 Region Association: Northern California |
I'm trying to finish up some homework. Its not last minute (due tomorrow night), but I'm stuck. Britt and I have been trying to debug for a little while but with no luck.
The problem: I'm trying to solve the integral 2*sqrt(1-x*x) from -1 to 1 using the trapezoidal rule. Basically I have to solve the equation: h[f(x1) + f(x2) + ... + f(x n-1)] where x1, x2, etc. is the function evaluated at the point x1, x2, etc. along the x axis. the distance between x1 and x2 is a-b/n, which is the distance of the interval. I will need to input the number of intervals and be given an approximation for the function. Here is my code; #include #include int main(void) { int n; int f=0; int J; int x=-1; printf("Please enter the number of subdivisions n:"); scanf("%d",&n); While (x<=1) { x = x+2/n; f = f+2*sqrt(1-x*x); } J=2/n*f; printf("The approximate integration by Trapezoidal Rule is: %d \n",J); return 0; } Does anybody see anything thats glaring? I'm getting an error in line 23 (after the While (x<=1) that wont stop... |
jasons |
Jan 23 2006, 07:55 AM
Post
#2
|
||
Jackstand Extraordinaire Group: Members Posts: 2,002 Joined: 19-August 04 From: Scottsdale, AZ Member No.: 2,573 Region Association: None |
(IMG:http://www.914world.com/bbs2/html/emoticons/agree.gif) You are using int types and division. When you divide int's that should result in fractions, you will truncate the fraction. sqrt probably will not work well with int's either. Its doing some kind of series division itself. Use floats or doubles. Example: 3/5 will result in 0 5/3 will in 1 Also, are you sure about the precedence of this operation... J=2/n*f; ? / and * have the same precedence so your they will operate left to right. Your result is this J=(2/n)*f; If you want this J=2/(n*f); You need to use ()'s |
||
Lo-Fi Version | Time is now: 2nd June 2024 - 06:16 PM |
All rights reserved 914World.com © since 2002 |
914World.com is the fastest growing online 914 community! We have it all, classifieds, events, forums, vendors, parts, autocross, racing, technical articles, events calendar, newsletter, restoration, gallery, archives, history and more for your Porsche 914 ... |