C/C++ - Цикл
|
Старожил Сообщения: 232 |
Профиль | Сайт | Отправить PM | Цитировать
как данное выражение (см. картинку) считать в цикле???
|
|
Отправлено: 18:21, 24-10-2008 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать ganselo, одним циклом не получится, нужно два. Причём второй вложенный в первый.
Первый для финальное суммирования, второй для просчёта составляющих суммы (отнимание хсов, операции в числители и знаменатели и умножении на y, если сразу его к операции в числитель не закинуть). Что-то типа А значения x0,x1...xn и y0,y1...yn имеют какую-то зависимость например от заданных x и от y, если такой имеется, или их должны вводить на каждом этапе цикла? |
Отправлено: 19:02, 24-10-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Admiral:
Чтобы построить многочлен степени n-1 можно воспользоватся формулой (см. картинку). Если в эту формулу вместо x подставить значение x0, то мы полу4им значение y0 (L(x0)=y0, L(x1)=y1... L(xn)=yn). Вот я никака не соображу как найти этот многочлен. Мб есть у каво какие соображения... хелп) |
|
------- Отправлено: 21:24, 24-10-2008 | #3 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Подставляешь в формулу вместо букв с индексами значения точек xi и yi, получаешь формулу. Если хочешь многочлен в виде a0 + a1*x + a2*x^2... раскрой скобки
|
Отправлено: 15:59, 28-10-2008 | #4 |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать Вот что получилось...
/**Dano n tochek. Postroit' mnogochlen prohodyashiy cherez dannie tochki. (Postroenie interpolyacionnogo mnogochlena v yavnom vide. Metod Lagranja) **/ #include <stdio.h> #include <time.h> #include <graphics.h> #define N 10 int driver=DETECT, mode; int n, xl=80, xr=620, yl=20, yr=430; double a, b, max=-100000, min=100000; double f(double *x, double *y, double X); void OXY(double a, double b, double M, double m); void tochki(double *x, double *y, double kx, double ky, double x0, double y0); void graphic(double kx, double ky, double x0, double y0, double *x, double *y); int main() { int i; double j, Y, kx, ky, x0, y0, m, M; printf ("Vvedite kol-vo tochek :"); scanf ("%d", &n); double x[n], y[n]; srand (time(NULL)); for (i=0; i<n; i++) { x[i]=1+rand()%400; y[i]=1+rand()%400; } m=x[0]; M=x[0]; for (i=0; i<n; i++) { if (M<x[i]) M=x[i]; if (m>x[i]) m=x[i]; } a=m; b=M; initgraph(&driver, &mode, ""); for (j=a; j<b; j=j+0.1) { if (f(x, y, j)>max) max=f(x, y, j); if (f(x, y, j)<min) min=f(x, y, j); } kx=(xr-xl)/(b-a); ky=(yr-yl)/(max-min); x0=xl-a*kx; y0=yr+min*ky; OXY(a, b, max, min); graphic(kx, ky, x0, y0, x, y); tochki(x, y, kx, ky, x0, y0); getch(); closegraph(); return 0; } double f(double *x, double *y, double X) { int i, j; double B, L=0; for(j=0; j<n; j++) { B=y[j]; for(i=0; i<n; i++) { if(i!=j) B=B*(X - x[i])/(x[j] - x[i]); } L+=B; } return L; } void OXY(double a, double b, double M, double m) { int i; double x, y; char h[10]; setcolor (9); rectangle (xl, yl, xr, yr); setcolor (7); for(i=0; i<=N; i++) { x=a+i*(b-a)/N; sprintf(h,"%.1f",x); outtextxy(xl+i*(xr-xl)/N-10,yr+10,h); y=M-i*(M-m)/N; sprintf(h,"%.1f",y); outtextxy(xl-70,yl+i*(yr-yl)/N-5,h); } } void tochki(double *x, double *y, double kx, double ky, double x0, double y0) { double tx, ty; setcolor (5); for (int i=0; i<n; i++) { tx=x0+x[i]*kx; ty=y0-f(x, y, x[i])*ky; circle (tx, ty, 3); circle (tx, ty, 2); circle (tx, ty, 1); } } void graphic(double kx, double ky, double x0, double y0, double *x, double *y) { double xm, ym; for (double j=a; j<b; j=j+0.01) { xm=x0+j*kx; ym=y0-f(x, y, j)*ky; putpixel(xm,ym,7); } } |
|
------- Отправлено: 12:13, 31-10-2008 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Цикл с использованием имен файлов | Bastet | Скриптовые языки администрирования Windows | 5 | 05-07-2010 19:28 | |
не работает цикл php: while ($row = mssql_fetch_row($result)) | zvezda_t | Тест-форум | 1 | 25-01-2010 12:34 | |
Разное - Программа для решения простых Судоку (бесконечный цикл) | m.s.dos | Программирование и базы данных | 3 | 07-01-2009 05:05 | |
C/C++ - [решено] Всего один цикл | Balbec | Программирование и базы данных | 4 | 16-05-2008 15:09 | |
бесконечный цикл. Функция не возвращает FALSE ? | xamelion | Вебмастеру | 5 | 19-09-2005 14:21 |
|