Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2012, 23:19   #1
Spudka
 
Регистрация: 04.04.2012
Сообщений: 7
По умолчанию решение уравнений

Добрый вечер! Пожалуйста подскажите как написать программку в паскале. Я вообще студент-математик, с программированием знакома по стольку по скольку. НО так вышло, что в дипломе надо написать программку.

задача в следующем: мне необходимо вывести на экран уравнение n степени, коэффициенты которого вводятся в ручную.
Вот мои соображения по этому поводу:
Код:
program stat;

var n,i,x,f:word;
a:array[0..20]of real;
begin
read(n);
writeln ('vvedite n:=',n);
    Begin
write ('vvedite: a[0]=');
read(a[0]);
 for i:=1 to n do
   begin
    write('vvedite: a[i]: a[',i,']=');
    readln(a[i]);
          end;
          f:=a[0]+a[i]*(exp(ln(x)*i));end;
      begin

write('uravnenienimeet vid f=');
read(f)
    end;  end.
ПОдскажите, что не так

Заранее спасибо!!!

Последний раз редактировалось ACE Valery; 04.04.2012 в 23:35.
Spudka вне форума Ответить с цитированием
Старый 04.04.2012, 23:40   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Простите, чего чего вам для диплома надо?
Цитата:
НО так вышло, что в дипломе надо написать программку.

задача в следующем: мне необходимо вывести на экран уравнение n степени, коэффициенты которого вводятся в ручную.
нда уж...
Так ладно!
А теперь пожалуйста по порядку!
Общий вид уравнения? И как оно должно выводиться?
Вид какой его должен быть?
По вашему коду понятно только, то что вы коэффициенты в степень возводите
(Это глупо, разве нет?)
Приведите пример какой-нибудь!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 05.04.2012, 10:32   #3
Spudka
 
Регистрация: 04.04.2012
Сообщений: 7
По умолчанию

Может и так! Говорю же с паскалем на "ВЫ" =)
НО я пыталась написать, что коэффициент a[i]*x в степени i и все это просуммировать, тогда в результате должно получиться алгебраическое нелинейное уравнение, максимальная степень которого i=n


Понятное дело, что в дипломе мне не нужна программа, которая "только" выводит уравнение на экран. Задача состоит в том, чтобы с помощью различного рода итерационных функций найти приближенное решение этого уравнения с определенной точность, и программа должна быть универсальной.
Spudka вне форума Ответить с цитированием
Старый 05.04.2012, 12:26   #4
Alex.Pi
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Spudka Посмотреть сообщение

ПОдскажите, что не так
Привет!
А вы эту программу запускали? Насколько я вижу, она работать не будет.
Во первых,
Код:
read(n);
должно стоять после
Код:
writeln ('vvedite n:=',n);
.
Второе, вы в цикле свои коэффициенты возводите в степень с переменной "х", которая не определена.
Третье, вам не надо возводить коэффициенты в степень, насколько я понял по постановке задачи, хотя вы делаете это в том же цикле
И последнее, у вас нет той части, которая бы выводила на экран ваше уравнение.
Код:
write('uravnenienimeet vid f=');
просто выдаст вам значение f, т.е. одно число. Точнее, отобразит только текст, потому что там ошибка.

Я не смогу помочь вам с паскалем, но для математика это очень простая задача, говорю вам, как математик :-)

Последний раз редактировалось Alex.Pi; 05.04.2012 в 12:30.
Alex.Pi вне форума Ответить с цитированием
Старый 05.04.2012, 14:21   #5
Spudka
 
Регистрация: 04.04.2012
Сообщений: 7
Вопрос

Конечно запускала!!!
до момента где формируется уже само уравнение f все работает великолепно.

Просто хотелось бы, чтоб на экране высветилось:
"ваше уравнение имеет вид"
f=a[0]+a[1]x+a[2]x^2+...

С точки зрения математики, сама задачи,-это обычные численные методы не требующие ума: есть начальное приближение, есть формула, подставил посчитал.

НО КАК ЭТО ЗАПРОГРАМИРОВАТЬ???
Spudka вне форума Ответить с цитированием
Старый 05.04.2012, 14:27   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Просто хотелось бы, чтоб на экране высветилось:
"ваше уравнение имеет вид"
f=a[0]+a[1]x+a[2]x^2+...
Ну так с этого и надо начинать!
Ну вот так можно получить желаемое...
Код:
Readln (n);
for i := 0 to n do
    Read (a[i]);
ReadLn;
Write ('f = ', a[0], '  ');
for i := 1 to n do
    write ( '+ ',  a[i], '*x^, i, ' ');
Writeln;
Если я правильно понял!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 06.04.2012, 19:56   #7
Spudka
 
Регистрация: 04.04.2012
Сообщений: 7
По умолчанию

Спасибо, что откликнулись, но дело в том, что степень x нужно прописывать через (exp(n*ln(x))) , потому что ^ не считывает.

В дальнейшем будут происходить манипуляции с этой функцией f поэтому ее задание должно быть корректным.
Spudka вне форума Ответить с цитированием
Старый 06.04.2012, 20:44   #8
Spudka
 
Регистрация: 04.04.2012
Сообщений: 7
По умолчанию

Что Вы на это скажите? Это имеет право на жизнь?

Код:
program stat;

var n,j,i,x,f:word;
a,y:array[0..20]of real;
begin
writeln ('vvedite n:=');
read(n);
    Begin
write ('vvedite: a[0]=');
read(a[0]);
 for i:=1 to n do
    begin
    write('vvedite: a[i]: a[',i,']:=');
    readln(a[i]);
y[i]:=exp((ln(x))*i);
        Write('f = ', a[0], '  ');
    write ( '+ ',a[i], '* ',y[i]);
          end;
  end; end.

Но программа не работает, ее проблема в красной строчке, через экспоненту оно считать на хочет, а значок ^ не распознает.
Возникает вопрос: "Как еще можно задать х в степени n?"

Помогите пожалуйста, осталось 3 дня

Последний раз редактировалось ACE Valery; 07.04.2012 в 18:09.
Spudka вне форума Ответить с цитированием
Старый 06.04.2012, 22:10   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

ну давай напишем процедурку
Код:
procedure Power (const a : Word; const b : Word; var r : Real);

var
          i : Integer;

begin
          r := 1;       
          for i := 1 to b do 
                  r := r * a;
end;
ну и тогда замени красную строчку
Код:
Power (x, n, y[i]); {где x- число, n- степень числа, y[i] - элемент массива в который заносим результат}
З.Ы. не проверял

Последний раз редактировалось Poma][a; 07.04.2012 в 19:07.
Poma][a вне форума Ответить с цитированием
Старый 06.04.2012, 22:34   #10
Spudka
 
Регистрация: 04.04.2012
Сообщений: 7
По умолчанию

Расскажите, пожалуйста, поподробней про процедуру, что-то типы данных у меня не могут сойтись.
Spudka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение уравнений за $ djendalf Фриланс 0 25.12.2010 18:06
Решение уравнений Guzal Помощь студентам 2 29.09.2010 10:21
Решение уравнений delete Общие вопросы C/C++ 0 01.10.2009 23:06
решение диффиринциальных уравнений XiN Общие вопросы Delphi 1 08.09.2008 00:00
решение трансцендениных уравнений DjRog Паскаль, Turbo Pascal, PascalABC.NET 2 03.04.2008 13:20