Форум программистов, компьютерный форум CyberForum.ru

Программирование метода градиентного спуска - проверка кода на корректность - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Разбить файл на части http://www.cyberforum.ru/cpp-beginners/thread90343.html
вот недавно изучил тему про fstream такая задача, нужно разбить файл на столько частей на сколько пожелает пользователь. к примеру на 10 fstream f("f.txt",ios::in); f.seekg(0,ios_base::end); cout<<"Razmer fayla "<<f.tellg()<<" byte"<<endl; int piece=(f.tellg()/10); cout<<"Budem delit` na 10 po "<<piece<<" byte"<<endl; f.seekg(0,ios_base::end);
C++ Переписать символы из файла в файл при считывании из файла(in) , символы выводятся в консоль, а как сделать чтобы они записывались в другой файл(out) а не в консоль?? int main() { ifstream input("in.txt"); ofstream out("out.txt"); char read; while( input.get(read)) { cout<<read; // в консоль http://www.cyberforum.ru/cpp-beginners/thread90288.html
Поправьте код... C++
Помогите поправить код...не пойму в чем ошибка....программы разложения в ряд ln(x+1) #include "iostream" #include "stdafx.h" #include <conio.h> #include <stdio.h> #include <windows.h> #include <math.h> //using CharToOemA func to convert ANSI to OEM char bufRus;
C++ Определить, какая из фигур имеет большую площадь
1) в стене существует квадратное отверстие N на N см. Имеется кирпич с измерениями a,b,c. определить пройдёт ли он в отверстие или нет. если подавать его можно параллельно стенкам отверстия. 2) определить, какая из фигур (круг или квадрат) имеет большую площадь. сторона квадрата A, радиус круга R. вывести на экран название и значение площади наибольшей фигуры.
C++ Замена символа пробела на заданную строку http://www.cyberforum.ru/cpp-beginners/thread90258.html
здрасти, со строками у меня как то плохо все, как заменить все символы пробелов на строку " !##! "? int main() { char probel = ' '; char Buf; FILE *file; file = fopen("in.txt", "w"); while((Buf = fgetc(file)) != EOF) { if (Buf == probel)
C++ Карточная игра из книги Лафоре помогите плиз с парой вопросов. заранее спасибо.(2 вопроса в комментариях) // cardaray.cpp // класс игральных карт #include <iostream> #include <cstdlib> #include <ctime> using namespace std; enum Suit { clubs, diamonds, hearts, spades }; // от 2 до 10 обычные числа подробнее

Показать сообщение отдельно
Artyom
0 / 0 / 0
Регистрация: 30.11.2008
Сообщений: 10
28.01.2010, 02:36     Программирование метода градиентного спуска - проверка кода на корректность
Здравствуйте!
мне необходимо сдать лабораторную работу по методу градиентного спуска. я запрограммировал этот метод поиска минимума функции. работает он корректно и минимум функции находит, но мой преподаватель имеет странную манеру проверять лабы - он задал шаг, кол-во итераций и проверяет по значению функции в заданной точке, сверяя ответ с ответом в своей программе. его ответ и мой значительно отличается, что вряд ли можно объяснить различной разрядностью. я программировал метод четко по алгоритму и сомневаюсь, что у меня есть ошибка в такой маленькой программе, тем более что для функций попроще, чем исследуемая, он работает. помогите доказать преподу, что ошибка в его программе, или укажите, пожалуйста, мне на мою ошибку.
исходные данные:
f(x,y) = y^2+cos(x+1.23*y) //целевая ф-я
x0 = -0,4 //начальное значение х
y0 = 1.9 //начальное значение у
h = 0.002 //шаг
n = 4 //кол-во итераций
ответ препода (значение функции в 4-й точке) = 2,07
мой ответ = 3,22
мой ответ ближе к начальному значению функции (3.25), что по-моему, нормально для такого маленького шага. к тому же я переделал программу, которую нашел в интернете для целевой функции и получил ответ, похожий на свой.
вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <math.h>
#include <conio.h>
#include <iomanip>
#include <fstream>
#include <stdlib.h>
using namespace std;
 
double f(double x, double y)
{
    return  y*y + cos(x + 1.23*y);
};
 
double gradX(double x, double y)
{
    return -sin(x + 1.23*y);
};
 
double gradY(double x, double y)
{
    return  2*y - 1.23*sin(x + 1.23*y);
};
 
double norm(double x, double y)
{
    return sqrt((-sin(x + 1.23*y))*(-sin(x + 1.23*y)) + (2*y - 1.23*sin(x + 1.23*y))*(2*y - 1.23*sin(x + 1.23*y)));
};
 
 
void output(double x, double y)
    {
        cout << setw(4) << fixed << setprecision(5) << x;
        cout << setw(14) << fixed << setprecision(5) << y;
        cout << setw(14) << fixed << setprecision(5) << f(x,y) << endl;
    };
 
void main()
{
    double x0 = -0.4;
    double y0 = 1.9;
    double h = 0.002;
    double M = 6;
    double x = x0;
    double y = y0;
    output(x,y);
    for(int k = 0; k < 4; ++k)
    {   
        double gradx = gradX(x,y);
        double grady = gradY(x,y);
        double Norm = norm(x,y);
        x = x - h*gradx/Norm;
        y = y - h*grady/Norm;
        
        output(x,y);
    };
    _getch();
};
во вложении я прикрепил переделанную чужую программу
Вложения
Тип файла: rar Mydoc.rar (963.4 Кб, 658 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru