دانلود پروژه درس محاسبات عددی حل دستگاه معادلات خطی روش گاوس سایدل و SOR به زبان برنامه نویسی C (docx) 7 صفحه
دسته بندی : تحقیق
نوع فایل : Word (.docx) ( قابل ویرایش و آماده پرینت )
تعداد صفحات: 7 صفحه
قسمتی از متن Word (.docx) :
پروژه درس محاسبات عددی
روش SOR
عموما برای حل معادلات خطی AX=B از روشهای تکرار استفاده میکنند. فرض میکنیم که Pk یک جواب تقریبی برای این دستگاه باشد. بنابراین تعریف میکنیمRk=B-APk و Rk را خطای محاسبه میخوانیم. اگر که Pk تقریب مناسبی برای جواب اصلی معادله باشد آنگاه خطای محاسبه به سمت صفر میل میکند. اساس روشهای حل دستگاههای معادلات خطی بر کم کردن این خطا از طریق تکرار های متوالی است. عموما روشی که زودتر همگرا شود مناسبتر است. در روش SOR پارامتری به عنوان ω تعریف میشود که این همگرایی را سرعت میبخشد. روش SOR میتواند در حل معادلات خطی با مشتقات جزیی نیز استفاده شود
ماتریس A که یک ماتریس n*n است را میتوان به شکل زیر تجزیه کرد
=
+
+
فرض میکنیم که ماتریس A یک ماتریس قطر غالب است.
روش گوس سایدل برای حل دستگاه معادلات خطی به شکل زیر است.
برای حل دستگاه AX=B از رابطه بازگشتی زیر استفاده میکنیم
PK+1=MSPK+CS
که در آن:
MS= (D-L)-1U and CS=(D-L)-1B
اگر P0 نزدیک به جواب اصلی باشد همگرایی روش سریعتر است.شرط کافی برای همگرایی روش این است که ماتریس A قطر غالب باشد
روش SOR برای حل دستگاه معادلات خطی به شکل زیر است
ابتدا پارامتر ω را به نحوی انتخاب میکنیم که <2ω0< . برای حل این دستگاه از فرمول بازگشتی زیر با مقدار اولیه P0 استفاده میکنیم
PK+1=MωPK+Cω
که در آن
Mω=(D-ωL)-1((1-ω)D+ωU) and Cω=ω(D-ωL)-1B
اگر ω=1 فرض کنیم آنگاه به روش گوس سایدل میرسیم
برنامه نویسی به زبان c برای حل دستگاه معادلات خطی با روش گاوس سایدل
#include
using namespace std;
#include
#include
int main()
{
int n;
double t;
double temp[100]={0},x[50][100]={0},majmoox[50][100]={0};
cout<<"moadele chand majhooli st? :"<>n;
cout<<"lotfan meghdare avaleeye x ra vared konid :"<>x[0][i];
double zarayeb[100][100]={0},zarayeb2[100]={0},majmoo[100]={0};
for(int j=0;j>zarayeb[j][i];
}
cout<<"lotfan adad sabete samte rast tasavi ra vared konid : "<>zarayeb2[i];
for(int j=0;j(majmoo[i]-fabs(zarayeb[i][j])))
{
for(int k=0;k>gam;
for(int i=1;i
using namespace std;
#include
#include
int main()
{
int n;
double t;
double temp[100]={0},x[50][100]={0},majmoox[50][100]={0};
cout<<"moadele chand majhooli st? :"<>n;
cout<<"lotfan meghdare avaleeye x ra vared konid :"<>x[0][i];
double zarayeb[100][100]={0},zarayeb2[100]={0},majmoo[100]={0};
for(int j=0;j>zarayeb[j][i];
}
cout<<"lotfan adad sabete samte rast tasavi ra vared konid : "<>zarayeb2[i];
for(int j=0;j(majmoo[i]-fabs(zarayeb[i][j])))
{
for(int k=0;k> w;
v=1-w;
int gam=0;
cout<<"mikhahid ta gAm e chandom az raveshe S.O.R mohasebe shavad :"<>gam;
for(int i=1;i