انتگرال عددی(قاعده ذوزنقه ای)-مشکل یه دانشجو!!!

Asghar_

عضو جدید
سلام دوستان
خواستم بدونم این قاعده فقط واسه توابع صعودی و نزولی میباشد ؟یا این که برای توابع زیر هم به کار میرود؟اول از همه انتگرال مورد نظر به صورت زیر می باشد:




برای نمودارهای مثل زیر میتوان از این نوع قاعده استفاده کرد؟باید چکار کنم؟باید تیکه تیکه انتگرال گیری عددی کنم؟اصلا میشه کدشو با فرترن نوشت؟من یه کد نوشتم و خروجیش عدد مناسبی نیست.ممنون میشم برای انتگرال گیری این تابع کمکم کنین.قبلش از اکسل استفاده کرده بودم(توجه به شکل 2 و به بعد آن) یعنی نمودار رو به دو نمودار مجزا تبدیل کردم و ازش نمودار عبور دادم(فیت کردم) که جواب خوبی بهم نداد.به شکل توجه کنین.
این داده ها رو که میبینین خروجی فلوئنت هست خواستم ضریب درگشو با استفاده از یه انتگرال بدست بیارم.تابع زیر انتگرال همون u2(u1-u2) میباشد که ضریب درگ باید نزدیک0.00104 بشه و من یه بار از یه روشی 0.005- و یه بار از روش دیگه 0.6 بدست آوردم..ممنون میشم راهنمایی کنین که چکار کنم واسه این اتتگرال گیری...

داده های زیر برای مش ریز تر هست............
شکل 1:



از طریق اکسل به صورت زیر هست(همانطور که میبینین بعضی از قسمت های نمودار رو در نظر نگرفتم... این داده ها برای مش بزرگتر هست.....:


شکل 2:


 

yosoufe

متخصص خودرو
کاربر ممتاز
سلام دوستان
خواستم بدونم این قاعده فقط واسه توابع صعودی و نزولی میباشد ؟یا این که برای توابع زیر هم به کار میرود؟اول از همه انتگرال مورد نظر به صورت زیر می باشد:




برای نمودارهای مثل زیر میتوان از این نوع قاعده استفاده کرد؟باید چکار کنم؟باید تیکه تیکه انتگرال گیری عددی کنم؟اصلا میشه کدشو با فرترن نوشت؟من یه کد نوشتم و خروجیش عدد مناسبی نیست.ممنون میشم برای انتگرال گیری این تابع کمکم کنین.قبلش از اکسل استفاده کرده بودم(توجه به شکل 2 و به بعد آن) یعنی نمودار رو به دو نمودار مجزا تبدیل کردم و ازش نمودار عبور دادم(فیت کردم) که جواب خوبی بهم نداد.به شکل توجه کنین.
این داده ها رو که میبینین خروجی فلوئنت هست خواستم ضریب درگشو با استفاده از یه انتگرال بدست بیارم.تابع زیر انتگرال همون u2(u1-u2) میباشد که ضریب درگ باید نزدیک0.00104 بشه و من یه بار از یه روشی 0.005- و یه بار از روش دیگه 0.6 بدست آوردم..ممنون میشم راهنمایی کنین که چکار کنم واسه این اتتگرال گیری...

داده های زیر برای مش ریز تر هست............
شکل 1:



از طریق اکسل به صورت زیر هست(همانطور که میبینین بعضی از قسمت های نمودار رو در نظر نگرفتم... این داده ها برای مش بزرگتر هست.....:


شکل 2:


فاصله بین داده هاتون در محور اکس چقدره؟

شما یه سوتی بزرگ دارید می دید! شما با کامپیوتر به صورت عدید انتگرال گیری می کنید! چرا اول از داده هاتون یه چند جمله ای آخه عبور می دید؟ یه ضرب به صورت عددی ازش انتگرال گیری کنید دیگه!
 

Asghar_

عضو جدید
فاصله بین داده هاتون در محور اکس چقدره؟

شما یه سوتی بزرگ دارید می دید! شما با کامپیوتر به صورت عدید انتگرال گیری می کنید! چرا اول از داده هاتون یه چند جمله ای آخه عبور می دید؟ یه ضرب به صورت عددی ازش انتگرال گیری کنید دیگه!

سلام...
فاصله ها یکسان هستن...الان یادم نیست..فک کنم 0.0046 بود...از رو داده ها میشه فهمید.
اول خواستم از اکسل استفاده کنم که دیدم نمیشه درست باهاش کار کرد و خروجی گرفت و بعد به این فک افتادم که باید از انتگرال گیری عددی کنم...حالا باید چکار کنم...از همه روش ها رفتم ...البته دارم روش کار کنم شاید به نتیجه رسیدم.....
از این جا دودی به نظرم بلند نمیشه..
بازم ممنون...
 

amir-sky

کاربر حرفه ای
کاربر ممتاز
سلام...
فاصله ها یکسان هستن...الان یادم نیست..فک کنم 0.0046 بود...از رو داده ها میشه فهمید.
اول خواستم از اکسل استفاده کنم که دیدم نمیشه درست باهاش کار کرد و خروجی گرفت و بعد به این فک افتادم که باید از انتگرال گیری عددی کنم...حالا باید چکار کنم...از همه روش ها رفتم ...البته دارم روش کار کنم شاید به نتیجه رسیدم.....
از این جا دودی به نظرم بلند نمیشه..
بازم ممنون...

داده ها تو فرترن چطوری تعریف میکنی؟
اول اینو بگو تا اشتباهت رو بگم.
 

Asghar_

عضو جدید
داده ها تو فرترن چطوری تعریف میکنی؟
اول اینو بگو تا اشتباهت رو بگم.

بیا اصلا هر چی نوستم اینه:
program reade
implicit none
character(len=8)::filename
integer::nvals=0
integer::sd
real::value,sum=0,f,I
write(*,*)'please inter input file name:'
read(*,*)filename
write(*,1000)filename
1000 format('','the input file name:',A)

open(unit=3,file=filename,status='old',action='read',iostat=sd)

! f=u2(u1-u2)
openif:if(sd==0) then
readloop:do
read(3,*,iostat=sd)f
if(sd/=0) exit
nvals=nvals+1
write(*,1010)nvals,f
1010 format('','line',i6,':f=',f10.4)

! The Trapezoid Rule
! I=(1/2)h(f0+2f1+2f3+........+fn)
! f0=0,fn=0 then only there are (f1,f2,f3,....fn-1)
! h=0.0015,h/2=0.0015/2=0.00075
sum=sum+2*f
end do readloop

write(*,*)'sum:',sum
I=0.00075*(sum)
write(*,*)'I:',I


readif:if(sd>0) then
write(*,1020)nvals+1
1020 format('0','an error occurred reading line',i6)
else
write(*,1030)nvals
1030 format('0','end of file reached.there were',i6,' f in the file.')

end if readif

else openif

write(*,1040)sd
1040 format('','error opening file:iostat=',i6)
end if openif



close(unit=3)

end program reade

گرچه چشمم آب نخوره که بلد باشی داش
 

amir-sky

کاربر حرفه ای
کاربر ممتاز
بیا اصلا هر چی نوستم اینه:
program reade
implicit none
character(len=8)::filename
integer::nvals=0
integer::sd
real::value,sum=0,f,I
write(*,*)'please inter input file name:'
read(*,*)filename
write(*,1000)filename
1000 format('','the input file name:',A)

open(unit=3,file=filename,status='old',action='read',iostat=sd)

! f=u2(u1-u2)
openif:if(sd==0) then
readloop:do
read(3,*,iostat=sd)f
if(sd/=0) exit
nvals=nvals+1
write(*,1010)nvals,f
1010 format('','line',i6,':f=',f10.4)

! The Trapezoid Rule
! I=(1/2)h(f0+2f1+2f3+........+fn)
! f0=0,fn=0 then only there are (f1,f2,f3,....fn-1)
! h=0.0015,h/2=0.0015/2=0.00075
sum=sum+2*f
end do readloop

write(*,*)'sum:',sum
I=0.00075*(sum)
write(*,*)'I:',I


readif:if(sd>0) then
write(*,1020)nvals+1
1020 format('0','an error occurred reading line',i6)
else
write(*,1030)nvals
1030 format('0','end of file reached.there were',i6,' f in the file.')

end if readif

else openif

write(*,1040)sd
1040 format('','error opening file:iostat=',i6)
end if openif



close(unit=3)

end program reade

گرچه چشمم آب نخوره که بلد باشی داش

روال کارت تقریبا درسته ....ولی برای این که عمل سیگما رو درست کنی باید از ماتریس استفاده کنی.اصلا ماتریس تعریف نکردی.این اشتباه اصلیت هست.اشتباه زیاد توش هست،خواستی توضیح میدم.من از تابع x^2 استفاده کردم در واقع مقادیر این تابع رو انتگرال عددی گرفتم.خودت تغییرش بده.نکته ای که باید توجه کنی اینه که باید تعداد مش هاتو زیاد کنی تا جوابت دقیق تر بشه.کل کد به طریقی دیگر(نیاز به این همه نوشتن کد نبود،به نظرم فیزیک مساله رو متوجه نشده بودی):

کد:
program ee
implicit none
integer::i
integer::j
real::sum
integer,dimension(5)::A 
!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Integral(2,-2)x^2.dx=5.3=(h/2)*(f0+2f1+2*f2+2*f3+......+2*fn-1+fn),,,,h=1        

open(7,file='ad.txt',status='old',action='read')        !Should be equal to the numbers of datas with numbers elements arrays......5 elements there is
read(7,*)A
write(*,*)A
write(*,*)'A(1):',A(1)
write(*,*)'A(2):',A(2)
write(*,*)'A(4):',A(4)
sum=A(1)+A(5)
do i=2,4
  sum=sum+2*A(i)
  enddo
  sum=sum*0.5                       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>....>>>>>>>>>>>>h=1,,,(h/2)=0.5
  write(*,*)'sum=',sum

end program ee

یاحق.........
 

Asghar_

عضو جدید
روال کارت تقریبا درسته ....ولی برای این که عمل سیگما رو درست کنی باید از ماتریس استفاده کنی.اصلا ماتریس تعریف نکردی.این اشتباه اصلیت هست.اشتباه زیاد توش هست،خواستی توضیح میدم.من از تابع x^2 استفاده کردم در واقع مقادیر این تابع رو انتگرال عددی گرفتم.خودت تغییرش بده.نکته ای که باید توجه کنی اینه که باید تعداد مش هاتو زیاد کنی تا جوابت دقیق تر بشه.کل کد به طریقی دیگر(نیاز به این همه نوشتن کد نبود،به نظرم فیزیک مساله رو متوجه نشده بودی):

کد:
program ee
implicit none
integer::i
integer::j
real::sum
integer,dimension(5)::A 
!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Integral(2,-2)x^2.dx=5.3=(h/2)*(f0+2f1+2*f2+2*f3+......+2*fn-1+fn),,,,h=1        

open(7,file='ad.txt',status='old',action='read')        !Should be equal to the numbers of datas with numbers elements arrays......5 elements there is
read(7,*)A
write(*,*)A
write(*,*)'A(1):',A(1)
write(*,*)'A(2):',A(2)
write(*,*)'A(4):',A(4)
sum=A(1)+A(5)
do i=2,4
  sum=sum+2*A(i)
  enddo
  sum=sum*0.5                       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>....>>>>>>>>>>>>h=1,,,(h/2)=0.5
  write(*,*)'sum=',sum

end program ee

یاحق.........

ایول داداش:eek::confused::surprised:

پسر کارت خیلی درسته:surprised:

دمت گرم کارمو راه انداختی،اصلا فک نردم اینجا به نتیجه برسه کارم

خیلی گلی:)
 
بالا