2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4  След.
 
 Re: Помогите пожалуйста написать программу
Сообщение01.02.2014, 10:37 


24/05/09

2054
1. А вот это ваше NAN не может вызывать ошибку при построении графика? То есть функция, строящая график, ждёт цифру - чтобы точку на координатную сетку поставить, а NAN она не понимает и заканчивается ошибкой.

2. Размерность ваших данных. Если меняется в диапазоне E263 E-310, то какой вы хотите нарисовать график?

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение01.02.2014, 10:43 
Аватара пользователя


26/09/13
648
Таджикистан
Alexu007

Мне разница нету какой оно диапазон.
Еще в Delphi-7 есть такой команда который уменьшается цифры?
Хочу чтобы график получился красива.

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение01.02.2014, 10:59 
Заслуженный участник


11/05/08
32166
Alexu007 в сообщении #821398 писал(а):
NAN она не понимает и заканчивается ошибкой.

2. Размерность ваших данных. Если меняется в диапазоне E263 E-310, то какой вы хотите нарисовать график?

Это никакой не диапазон и не NaNы -- это обычный при отсутствии инициализации восьмибайтовый мусор.

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение01.02.2014, 11:06 
Аватара пользователя


26/09/13
648
Таджикистан
ewert в сообщении #821405 писал(а):
Это никакой не диапазон и не NaNы -- это обычный при отсутствии инициализации восьмибайтовый мусор.

А как по вашему получат

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение01.02.2014, 12:56 


24/05/09

2054
Maik2013 в сообщении #821401 писал(а):
Alexu007
Мне разница нету какой оно диапазон.
Хочу чтобы график получился красива.

Дорогой профессионал программист сделает всё красива.

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение01.02.2014, 13:01 
Аватара пользователя


26/09/13
648
Таджикистан
Alexu007
Спасибо большой но не смогу.

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение01.02.2014, 16:23 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Уважаемый Maik2013.
Покажите, пожалуйста, как сейчас выглядят вычислительные формулы, с учетом замечаний (особенно 6 и 7).

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение01.02.2014, 17:17 
Аватара пользователя


26/09/13
648
Таджикистан
Нажат кнопку "График" дает ошибку
Код:
procedure TForm1.Button1Click(Sender: TObject);
var   u: array [0..20,0..50] of real;
       h,tay:real;
       i,j:integer;
begin
h:=0.05;
tay:=0.25;
  for j:=0 to 50 do u[0,j]:=0;
  for j:=0 to 50 do
  u[1,j]:=0;
  for j:=0 to 50 do
  begin
     for i:=1 to 20 do
     begin
     u[i,j+1]:=u[i,j]+(tay)/(sqr(h))*(u[i+1,j]-2*u[i,j]+u[i-1,j]);
     Memo1.Lines.Add('u('+inttostr(i)+ ','+ IntToStr(j)+  ')=' +FloatToStr(u[i,j+1]));

     end;
  end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var   u: array [0..10,0..30] of real;
       h,tay:real;
       i,j:integer;
begin
h:=0.05;
tay:=0.25;
  form2.Chart1.Series[0].Clear;
  for j:=0 to 30 do u[0,j]:=0;
  for j:=0 to 30 do
  u[1,j]:=0;
  for j:=0 to 30 do
  begin
     for i:=1 to 10 do
     begin
     u[i,j+1]:=u[i,j]+(tay)/(sqr(h))*(u[i+1,j]-2*u[i,j]+u[i-1,j]);
    // Memo1.Lines.Add('u('+inttostr(i)+ ','+ IntToStr(j)+  ')=' +FloatToStr(u[i,j+1]));
     //   FGRAF.Chart1.SeriesList[0].AddY(2,'DSDSDS');// .`  :='SDSD';
  WITH FORM2 DO
  BEGIN
  //   Chart1.Series[0].Add(u[i,j+1],'',clred);
     Chart1.Series[0].Add(u[i,j+1],'',clred);


  END;

     end;
  end;
  FORM2.ShowModal;
end;

end.
[/quote]

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение01.02.2014, 18:07 
Заслуженный участник


11/05/08
32166
Maik2013 в сообщении #821407 писал(а):
А как по вашему получат

Введите для начала в своей программе начальное условие. Вы же его нигде не задаёте.

Потом можете исправлять прочие ошибки. Но это -- потом, потом.

-- Сб фев 01, 2014 19:09:58 --

(Оффтоп)

svv в сообщении #821454 писал(а):
Покажите, пожалуйста, как сейчас выглядят вычислительные формулы,

Да формулы-то у него в первом приближении правильные (во всяком случае, в программе правильнее, чем в тексте). Проблема в первую очередь не в формулах, а в их бессознательном применении.

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение02.02.2014, 00:09 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
ewert
Я хочу добиться от Maik2013, в частности, вот чего:
$$u_{i}^{j+1}=\begin{cases}u_{i}^{j}+\dfrac{\tau}{h^{2}}(u_{i+1}^{j}-2u_{i}^{j}+u_{i-1}^{j}})&\text{если }0<i<N\\\text{отдельная формула без } u_{i-1}&\text{если }i=0\\\text{отдельная формула без } u_{i+1}&\text{если }i=N}$\end{cases}$$Например, в случае краевых условий $u(0,t)=u(L,t)=0$ будет просто $u_0^j=0$ и $u_N^j=0$ для всех $j$. А пока что его программа на краю самозабвенно использует несуществующие значения массива:
Код:
for i:=1 to 20 do
     begin
     u[i,j+1]:=u[i,j]+(tay)/(sqr(h))*(u[i+1,j]-2*u[i,j]+u[i-1,j]);


Maik2013 слабо разбирается в программировании, поэтому пусть сначала хотя бы приведет расчетные формулы к виду, максимально готовому к процессу программирования.

ewert в сообщении #821497 писал(а):
Введите для начала в своей программе начальное условие. Вы же его нигде не задаёте.
Я ему говорил о том же. Язык программирования для него — хуже марсианского. Но он же может для начала учесть это замечание в формулах?

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение02.02.2014, 06:13 
Аватара пользователя


26/09/13
648
Таджикистан
svv
svv в сообщении #821754 писал(а):
for i:=0 to N do
begin
u[i,j+1]:=u[i,j]+(tay)/(sqr(h))*(u[i+1,j]-2*u[i,j]+u[i-1,j]);

как Вы думайте а так сработает?

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение02.02.2014, 09:36 
Заслуженный участник


11/05/08
32166
Maik2013 в сообщении #821811 писал(а):
svv в сообщении #821754 писал(а):
for i:=0 to N do
begin
u[i,j+1]:=u[i,j]+(tay)/(sqr(h))*(u[i+1,j]-2*u[i,j]+u[i-1,j]);

как Вы думайте а так сработает?

А так ещё хуже -- Вы удвоили проблему. Теперь проблема не только справа, но и слева.

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение02.02.2014, 19:55 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Maik2013
Вы понимаете, в чем проблема?
В том, что при $i=0$ вот здесь u[i-1,j] возникнет индекс $-1$, а при $i=N$ вот здесь u[i+1,j] возникнет индекс $N+1$. А значения массива при таких индексах не определены. И решить эту проблему можно было ещё при написании формул.

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение02.02.2014, 20:03 
Аватара пользователя


26/09/13
648
Таджикистан
svv
Спасибо за то, что так показали мне на пальцах. От Вас очень прошу если Вы
хорошо разбирайтесь по пожалуйста можете проста поправит мою программу чтобы он с работал
буду очень благодарен.

 Профиль  
                  
 
 Re: Помогите пожалуйста написать программу
Сообщение02.02.2014, 20:06 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Я могу сделать это, если Вы напишете безупречные вычислительные формулы, которые правильно учитывают начальное и краевые условия (кстати, эти условия мне и неизвестны!).

Вы не знаете программирования, хорошо, я помогу, но математику Вы же знаете?

Как это примерно должно выглядеть, я написал выше.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу Пред.  1, 2, 3, 4  След.

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



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

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


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

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