| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Решение СНАУ методом Ньютона |
| Автор: Tinysik 25.5.2008, 19:34 |
| подскажите кто знает. необходимо решить пример x^3+2x^2+3x+5=0 задав точность e=0,001 вот код программы: #include <iostream.h> #include <math.h> double Nuton(double*p,int n,double*x,double X) { double s=p[n-1]; for(int i=n-2;i>=0;i--) s=p[i]+(X-x[i])*s; return s; } void Nuton1(double*x,double*y,int n,double*p) { for(int j=0;j<n-1;j++) { p[j]=(y[j+1]-y[j])/(x[j+1]-x[j]); // cout<<p[j]<<"\t"; } // cout<<"\n"; int m=n-1; int l=2; int k; for(int i=n-2;i>=1;i--) { k=0; for(j=1;j<=i;j++) { p[m]=(p[m-i]-p[m-i-1])/(x[k+l]-x[k]); // cout<<p[m]<<"\t"; m++; k++; } // cout<<"\n"; l++; } j=0; for(i=1;i<n;i++) { y[i]=p[j]; j=j+(n-i); } } void main() { int const n=5,N=(n-1)*n/2; double x[]={1,2,3,4}; double y[n]; for(int i=0; i<n; i++) y[i]=pow(x[i],3)+2*pow(x[i],2)+3*x[i]+5; double *p=new double[N]; Nuton1(x,y,n,p); //for (i=0;i<n;i++) cout<<y[i]<<'\t'; double z=-2; cout<<Nuton(y,n,x,z)<<'\t'<<pow(z,3)+2*pow(z,2)+3*z+5<<'\n'; } программа все считает,но в коде нужно прописать эту точность е=0,001. как это сделать? |
| Автор: bronislav 25.5.2008, 21:01 |
| Тебе надо считать разницу между предидушим решением и текущим и когда она будет меньше заданной точности (в товем случае 0.001) - решение найдено. |
| Автор: maxim1000 25.5.2008, 21:26 |
совсем необязательно последовательность может и медленно сходиться для начала нужно определиться, какая точность имеется в виду 1. точность равенства функции нулю - тогда просто сравниваем модуль значения полинома с точностью 2. точность решения: тут нужно попробовать оценить расстояние до настоящего решения во втором слуаче нужно детальнее изучать функцию |
| Автор: Tinysik 25.5.2008, 21:52 |
| эййй..ну вы чего? все не так сложно. просто код расчитан был как тестовый. я подставила туда пример. теперь только необходимо,чтобы он считался с заданной точностью |
| Автор: bronislav 26.5.2008, 06:03 |
Ну теперь напиши другой код Если сегодня будет время напишу. |
| Автор: Ziggyrat 11.4.2009, 18:58 | ||
|