שיטת החצייה – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
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;
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 {
{
▲ }
double fXleft= p.f(Xleft);
▲ public static void BisectionMethod(double Xleft,double Xright,
▲ int m, double ep, double delta)
▲ double fXright=function(Xright);
▲ double interval=Xright-Xleft;
{
▲ if (fXright*fXleft>0)
▲ System.exit(0);
▲ for(int i=0;i<m;i++)
fXmid=p.f(Xmid);
▲ interval=interval/2;
▲ Xmid=Xleft+interval;
if(fXmid*fXleft>0)
▲ System.out.println("x"+i+" = "+Xmid);
{
▲ if(Math.abs(interval)<ep && Math.abs(fXmid)<delta)
▲ System.exit(0);
}
else
▲ Xleft=Xmid;
{
}
}
▲ Xright=Xmid;
}
▲ fXright=fXmid;
}
שורה 85 ⟵ 103:
== פלט התוכנית ==
נריץ את התכנית עבור הפולינום <math>p(x) = x^2-4</math>. יש לשים לב שככל שנריץ את התוכנית מספר רב יותר של איטרציות כך למעשה נגיע לקירוב טוב יותר.
בתוכנית הנ"ל ההרצה מתבצעת 40 פעמים. והקירוב המרבי שקיבלנו הוא: x40 = 1.9999999999886313 .
<syntaxhighlight lang="text">
|