שיטת החצייה – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
Matanyabot (שיחה | תרומות)
מ בוט החלפות: \1ליניארי
הוספת קוד, הרחבת הקוד הקיים לפונקציית הפולינום הכללית
שורה 41:
 
== קוד ב-Java ==
על מנת שהתכנית תקבל כקלט כלל העתקה של פולינום <math>\deg p(x) = n</math> ניתן להגדיר לשם הנוחות מערך חד מימדי<math>factor[]</math>בגודל <math>n-1</math> ומשתנה <math>var</math> כך שיתקיים<math>\sum_{i=0}^n a_ix^i = \sum_{i=0}^{n-1}f_i x^{i+1} + var</math> וכך נגדיר את הפולינום <math>p(x)</math> ואת הפעולה <math>f</math><syntaxhighlight lang="java">
<syntaxhighlight lang="java">
public class Polynom {
 
private double[] factor;
main : Bisection.BisectionMethod(1,50, 200,5E-11, 5E-11);
private double var;
 
public Polynom(double[] factor, double var) { //Constructor
 
this.factor = factor;
this.var = var;
}
public double f(double x) { // f(x) = Polynom(x)
 
double f = var;
 
for (int i = 0; i < factor.length; i++) {
 
f = f + factor[i] * Math.pow(x, i + 1);
}
 
return f ;
}
</syntaxhighlight><syntaxhighlight lang="java">
 
public class Bisection {
 
private static double function(double x)
public static void BisectionMethod(Polynom p ,double Xleft,double Xright,
{
int m, double ep, double delta)
return Math.pow(x,2)-4;
{
}
double fXleft= p.f(Xleft);
public static void BisectionMethod(double Xleft,double Xright,
double fXright=functionp.f(Xright);
int m, double ep, double delta)
double interval=Xright-Xleft;
{
double fXleft=function(Xleft)Xmid,fXmid;
if (fXright*fXleft>0)
double fXright=function(Xright);
System.exit(0);
double interval=Xright-Xleft;
for(int i=0;i<m;i++)
double Xmid,fXmid;
{
if (fXright*fXleft>0)
interval=interval/2;
System.exit(0);
Xmid=Xleft+interval;
for(int i=0;i<m;i++)
fXmid=p.f(Xmid);
{
System.out.println("x"+i+" = "+Xmid);
interval=interval/2;
if(Math.abs(interval)<ep && Math.abs(fXmid)<delta)
Xmid=Xleft+interval;
System.exit(0);
fXmid=function(Xmid);
if(fXmid*fXleft>0)
System.out.println("x"+i+" = "+Xmid);
{
if(Math.abs(interval)<ep && Math.abs(fXmid)<delta)
Xleft=Xmid;
System.exit(0);
if(fXmid* fXleft>0)=fXmid;
}
{
else
Xleft=Xmid;
{
fXleft=fXmid;
Xright=Xmid;
}
fXright=fXmid;
else
}
{
}
Xright=Xmid;
}
fXright=fXmid;
}
}
}
}
 
שורה 85 ⟵ 103:
== פלט התוכנית ==
 
נריץ את התכנית עבור הפולינום <math>p(x) = x^2-4</math>. יש לשים לב שככל שנריץ את התוכנית מספר רב יותר של איטרציות כך למעשה נגיע לקירוב טוב יותר.
בתוכנית הנ"ל ההרצה מתבצעת 40 פעמים. והקירוב המרבי שקיבלנו הוא: x40 = 1.9999999999886313 .
 
<syntaxhighlight lang="text">