Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите с заданиями! (http://www.tehnari.ru/f41/t25200/)

кир 07.06.2009 15:02

Помогите с заданиями!
 
:confused:
На языке delphi
10. Пусть задана таблица значений функции, т.е. набор значений аргумента и функции (10..20 значений, хранить их можно в массиве). С помощью линейной интерполяции вывести значения функции для середины каждого интервала. Вычисление искомых значений оформить в виде подпрограммы – процедуры.

11. Пусть задана таблица значений функции, т.е. набор значений аргумента и функции (10..20 значений, хранить их можно в массиве). С помощью линейной интерполяции вывести значения функции для произвольно заданного значения аргумента, которое вводится с клавиатуры. Вычисление искомых значений оформить в виде подпрограммы – процедуры.

12. Составить программу решения уравнения F(x)=0 методом дихотомии. Вычисления прекратить при |F(x)| < t , где t - заданное число. Алгоритм вычислений оформить как подпрограмму- процедуру, вычисление значений F(x) проводить с помощью подпрограммы- функции, имя которой передается через заголовок процедуры в переменной процедурного типа.

Vladimir_S 07.06.2009 15:28

Цитата:

Сообщение от кир (Сообщение 210127)
:confused: На языке delphi

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

кир 07.06.2009 15:44

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

Vladimir_S 07.06.2009 16:10

Цитата:

Сообщение от кир (Сообщение 210127)
:confused:
На языке delphi
10. Пусть задана таблица значений функции, т.е. набор значений аргумента и функции (10..20 значений, хранить их можно в массиве). С помощью линейной интерполяции вывести значения функции для середины каждого интервала. Вычисление искомых значений оформить в виде подпрограммы – процедуры.

На Паскале как-то так. Считаем, что число значений N, массив аргументов, расположенных в порядке возрастания, - X, массив значений - Y. Введем тип
AR=ARRAY[1..N] of REAL; , т.е.

CONST
N=10;
TYPE
AR=ARRAY[1..N] of REAL;
VAR
X,Y,X1,Y1:AR;

PROCEDURE Media_Values(Xm,Ym:AR; VAR X1m:AR; VAR Y1m:AR);
VAR i:INTEGER;
BEGIN
FOR i:=1 TO N-1 DO
BEGIN
X1m[i]:=(Xm[i]+Xm[i+1])/2;
Y1m[i]:=(Ym[i]+Ym[i+1])/2;
END;
END;

BEGIN

{ Enter values of X and Y Arrays }

Media_Values(X,Y,X1,Y1);

END.

кир 07.06.2009 16:30

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

Vladimir_S 07.06.2009 16:44

Цитата:

Сообщение от кир (Сообщение 210127)
11. Пусть задана таблица значений функции, т.е. набор значений аргумента и функции (10..20 значений, хранить их можно в массиве). С помощью линейной интерполяции вывести значения функции для произвольно заданного значения аргумента, которое вводится с клавиатуры. Вычисление искомых значений оформить в виде подпрограммы – процедуры.

CONST
N=10;
TYPE
AR=ARRAY[1..N] of REAL;
VAR
X,Y:AR;
x1,y1:REAL;

PROCEDURE New_Value(Xn,Yn:AR; x1n:REAL; VAR y1n:REAL);
VAR i:INTEGER;
BEGIN
IF (x1n<Xn[1]) OR (x1n>Xn[N]) THEN
Writeln('Value out of range!') ELSE
BEGIN
i:=0;
REPEAT
INC(i);
UNTIL Xn[i]>x1n;
y1n:=(Yn[i]-Yn[i-1])/(Xn[i]-Xn[i-1])*x1n + (Yn[i-1]*Xn[i]-Yn[i]*Xn[i-1])/(Xn[i]-Xn[i-1]);
END;
END;

BEGIN

{ Enter values of X and Y Arrays }

Write('x = ');
Readln(x1);
New_Value(X,Y,x1,y1);
Writeln('y = ', y1);
Readln;

END.

кир 07.06.2009 18:15

Огромное спасибо!!!!!!!!!!!!!!!!!!
:)
:D


Часовой пояс GMT +4, время: 00:07.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.