Comp Sci Computational Physics Programming using fortran g95

AI Thread Summary
The discussion focuses on creating a Fortran program to compute the sine function and its integral from 0 to pi using the trapezoid and Simpson methods with varying intervals (N=4, 8, 16, 256, and 1024). Users encounter issues with the "Unclassifiable statement" error, primarily due to incorrect syntax in assignment statements and print formatting. It is emphasized that multiplication must be explicitly indicated with an asterisk (*) in Fortran, unlike in mathematical notation. The program requires calculating sine values at specified intervals and applying both integration methods for comparison. The conversation highlights the need for proper coding practices and understanding of programming syntax to resolve errors.
jhosamelly
Messages
125
Reaction score
0

Homework Statement



Create a program that computes for the value of sine function. Then compute for its
integral from 0 to pi with N intervals, where N=4,8,16,256 and 1024 and compare the
result for the trapezoid and simpson method.


Homework Equations



Trapezoid rule of Integration is (b-a)((f(a)+(f(b))/2)

The Attempt at a Solution


here is the code I made

2lm29mq.jpg


but I'm getting "Unclassifiable statement" at the i1 equation.
Is there something wrong with my code? We are using fortran 90

I'm trying the trapezoid rule 1st.
 
Physics news on Phys.org
Drop the '*' in your print statements for the unit specifier
The format part of the print statement should be enclosed in single quotes ['] instead of double quotes ["].

Thus, the first output should be:
print 'SIN(0) = ', sina
 
OOPS: forgot format descriptor. First output should be:

print '("SIN(0) = ", F6.2)', sina
 
its still not working.. and this is how our prof taught us. we use
print *, "ddd" , ddddd

something wrong with my equation I think.
 
Your i1 "equation" is not an equation - it's an assignment statement. An equation expresses the equality of two expressions. That's not what = is used for in programming. Instead, = is used to assign the value of the expression on the right side to the variable on the left side.

Your compile error "unclassifiable statement" comes from not having a multiplication operator. This assignment statement should be
Code:
i1 = (b - a) [B]*[/B][/color]((sina + sinb)/2)

You could also write this as
Code:
i1 = (b - a) * (sin(angrada) + sin(angradb))/2

In mathematics you can write a product of two numbers by putting them next to each other, with ##2b## meaning 2 times b.

There's no such shortcut in programming, though. If you need to perform a multiplication, you MUST use *.
 
Thank you so much :))))
 
Hmmmm.. I can't seem to finish this program I'm doing. :( What should I do with N?
 
You are a very long way from being done with this program, I'm afraid.

jhosamelly said:
Create a program that computes for the value of sine function. Then compute for its integral from 0 to pi with N intervals, where N=4,8,16,256 and 1024 and compare the result for the trapezoid and simpson method.

The program will need to compute the value of sine(x) at a number of points in the interval [0, ##\pi##]. One part will need to split this interval into four subintervals, and calculate the integral using the trapezoid method and Simpon's method. The next part will need to do the same thing using eight subintervals.

A third part will need to do the same thing, using 16 subintervals. A fourth part will need to do the same thing using 256 subintervals. Finally, the last part will need to do the same thing using 1024 subintervals.
 

Similar threads

Replies
2
Views
1K
Replies
7
Views
2K
Replies
10
Views
2K
Replies
6
Views
5K
Replies
8
Views
3K
Replies
3
Views
7K
Replies
4
Views
3K
Replies
20
Views
3K
Back
Top