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, Супермодераторы



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

Сейчас этот форум просматривают: granit201z


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

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