![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
malena |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 6 Пол: Женский Реальное имя: Лена Репутация: ![]() ![]() ![]() |
Здравствуйте!!!!! Не знаю уже что и делать, всю голову себе сломала
![]() 2*x^2+3*x*y+y^2-3=0. Если сможете помочь, буду очень благодарна. |
![]() ![]() |
Smertnik7320 |
![]()
Сообщение
#2
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Репутация: ![]() ![]() ![]() |
помогите плиз исправить ошибки
программа написана на С++ "Метод скорейшего спуска" #include <iostream.h> #include <stdio.h> #include <conio.h> #include <math.h> #define N 2 #define K 2 int l; float absgrad,el,h,hl,z,s[N+1], x[N+1]; float f (float x[N+1]) {float a,b,y; a=x[1]*x[1]+x[2]-11; b=x[1]+x[2]*x[2]-7; y=a*a+b*b; return y;} void graddirection (void) {float gradx, grady; gradx=(4*x[1]*x[1]*x[1]+4*x[1]*x[2]+2*x[2]*x[2]-42*x[1]-14); grady=4*x[2]*x[2]*x[2]+4*x[1]*x[2]+2*x[1]*x[1]- 26*x[2]-22; absgrad=sqrt(gradx*gradx+grady*grady); if(absgrad !=0) {s[1]=gradx/absgrad; s[2]=grady/absgrad; }; }; void scanforonedim (void) {short a; float dl,zl; z=f(x); graddirection(); do {dl=fabs(hl); for (i=l;i<=N;i++) x[i]+=hl*s[i]; zl=f(x); a=(zl<z); if(!a) hl/=-K; z=zl; } while (a||dl>=el); } void pausa() {printf("\n Нажмите любую клавишу для продолжения ...\n"); getch(); } void outputresult(void) {clrscr(); printf("Вектор приближения (O1,O2) на данном шаге"); printf ("вычислений N"); printf ("x1=%f x2=%f\n",x[1],x[2]); printf("f(x1,x2)=%\n",f(x)); pausa(); } void main() {float d,t; char finish; clrscr(); printf("Введите координаты начального"); printf("вектора xl,x2)\n"); for (i=l; i<=N;i++) scanf ("%f",&x[1]); graddirection(); if(!absgrad) {printf("Стационарная точка x1=%f",x[1]); printf("x2=%f",x[2] ); pausa(); goto flnish;}; printf( "Задайте точность"); printf("нахождения точки min f(x)\n"); scanf("%f",&e); outputresult(); h=0.2; el=e/K; do {d=fabs(h); hl=h; scanforonedim(); outputresult(); h/=K; } while (d>=e); printf ("Точка минимума xl=%f x2=%f\n",x[l],x[2]); printf (" Погрешность =%f\n",d); pausa(); finish:; } |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 10:46 |