2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Не могу найти ошибку на С++
Сообщение05.06.2013, 11:16 


11/04/13
12
Это программа не дает точный значению, не могу найти где ошибка. Я работаю на компиляторе Dev C++ 5.3.0.4, может проблема в компиляторе??

код: [ скачать ] [ спрятать ]
Используется синтаксис C++
#include <iostream>
#include <conio.h>
#include <math.h>
#include <iomanip>
#include <fstream>
using namespace std;
const float hx=0.01, hy=0.01;
const int a=-1,b=1,c=0,d=2,s=300;
main()
{
        ofstream out("Otvet_trap_h01.txt");
        int nx=(b-a)/hx;
        int ny=(d-c)/hy;
        float y[s],x[s],u[s][s];
   
        x[0]=a;y[0]=c;
        for (int i=0;i<=nx;i++)
      x[i]=x[0]+i*hx;
    for (int j=0;j<=ny;j++)
      y[j]=y[0]+j*hy;
    for (int i=0;i<=nx;i++)
    for (int j=0;j<=ny;j++)
      u[i][j]=cos(M_PI*x[i]/2)*sin(M_PI*y[j]/2);
    for (int i=1;i<nx;i++)
        for (int j=1;j<ny;j++)
          out<<setprecision(8)<<"u["<<i<<","<<j<<"]"<<"   "<<u[i][j]<<endl;
         
     
}


Сама задача вот такой:
$$u\left( x,y \right)=\cos \left( \frac{\pi x}{2} \right)\sin \left( \frac{\pi y}{2} \right),\,\,\,\,\,\,-1\le x\le 1,\,\,\,0\le y\le 2$ $

 Профиль  
                  
 
 Re: Не могу найти ошибку на С++
Сообщение05.06.2013, 12:10 
Аватара пользователя


31/10/08
1244
Что значит точно? Как вы проверяли точность и какую ожидали увидеть?

 Профиль  
                  
 
 Re: Не могу найти ошибку на С++
Сообщение05.06.2013, 12:25 


11/04/13
12
Если $i=1,\,\,\,\,\,\,j=194 $ в отчете дает $
   {{u}_{1,194}^{pribl}}\approx \text{0}\text{.0014771894}  $
точный значений $u_{1,194}^{tochniy}=0.0931694565731314$

 Профиль  
                  
 
 Re: Не могу найти ошибку на С++
Сообщение05.06.2013, 12:51 
Заслуженный участник


16/02/13
4214
Владивосток
abat_1984 в сообщении #732870 писал(а):
Используется синтаксис C++
for (int i=1;i<nx;i++)
Вот последний цикл — правильный. А все предыдущие цепляют лишний элемент.
А M_PI — это $\pi$? А то не описано нигде.
Хорошо бы проверить ещё несколько элементов матрицы. Хотя б с десяток.

 Профиль  
                  
 
 Re: Не могу найти ошибку на С++
Сообщение05.06.2013, 13:49 
Аватара пользователя


31/10/08
1244
abat_1984
1. $u_{1,194}^{tochniy}=0.0931694565731314$ это значение неверное. А вот 0.0014771894 близко к верному. Нетрудно проверить через ряд Тейлора.
2. Точное значение вы получить не можете в принципе. В виду того что sin и cos могут иметь бесконечное число знаков после запятой.
3. Зато можно вычисления построить так чтобы ошибка была минимальной, меньше допустимого значения eps.

-- Ср июн 05, 2013 15:48:53 --

Вот если $i=0$ , $j=194$ то там будет $u_{0,194}\approx 0.094$
Вот только 0 индексы у вас не выводятся.

 Профиль  
                  
 
 Re: Не могу найти ошибку на С++
Сообщение05.06.2013, 15:13 


11/04/13
12
Pavia в сообщении #732955 писал(а):
abat_1984
1. $u_{1,194}^{tochniy}=0.0931694565731314$ это значение неверное. А вот 0.0014771894 близко к верному. Нетрудно проверить через ряд Тейлора.
2. Точное значение вы получить не можете в принципе. В виду того что sin и cos могут иметь бесконечное число знаков после запятой.
3. Зато можно вычисления построить так чтобы ошибка была минимальной, меньше допустимого значения eps.

-- Ср июн 05, 2013 15:48:53 --

Вот если $i=0$ , $j=194$ то там будет $u_{0,194}\approx 0.094$
Вот только 0 индексы у вас не выводятся.


Да спасибо, оказывается я неправильно рассчитал точный значений. :oops:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group