Консультация № 183598
12.06.2011, 02:14
71.86 руб.
0 17 1
Здравствуйте уважаемые эксперты! Прошу помощи в следующем вопросе:
Помогите пожалуйста реализовать задачу с решением на языке Pascal в среде turbo!
ссылка на задачу: https://rfpro.ru/upload/5942
если плохо видно формулы решения, они выложены последовательно:
https://rfpro.ru/upload/5943
https://rfpro.ru/upload/5944
https://rfpro.ru/upload/5945
Заранее спасибо!

Обсуждение

давно
Мастер-Эксперт
319965
1463
12.06.2011, 10:31
общий
А что программировать то надо, вычисление (0,477+0,433)...(...+0,341) или что-нибудь более серьезное?
Неизвестный
12.06.2011, 11:23
общий
полностью задачу написать на паскале, чтобы она вычислялась по заданным формулам)
давно
Мастер-Эксперт
319965
1463
12.06.2011, 12:14
общий
Что должно быть входными данными?
Неизвестный
12.06.2011, 14:39
общий
вот условие:
Качество изготовляемой на технологической операции детали формируется тремя независимыми параметрами X, Y, Z. Известно, что система X[3] = {X,Y,Z} имеет нормальное распределение с mx = 2 ед., my = 3ед., mz = 4ед. и sigmax = sigmay = sigmaz = 1. Найдите коэффициент выхода годных изделий на операции, если техническими условиями годная деталь определяется областью D = {0,5 < X < 4; 1 < Y < 5; 2,5 < Z < 6,5 }.

ну отсюда входные данные:
mx = 2 ед., my = 3ед., mz = 4ед. и sigmax = sigmay = sigmaz = 1.
D = {0,5 < X < 4; 1 < Y < 5; 2,5 < Z < 6,5 }.

решение задачи имеется в исходном вордовском файле.
давно
Мастер-Эксперт
319965
1463
12.06.2011, 16:08
общий
Вопрос не в числах, вопрос в том, что что должна делать программа - получать решение именно для mx = 2 ед., my = 3 ед и т.д., или для любых mx, my, и т.д.?
Неизвестный
12.06.2011, 18:25
общий
да да программа должна получать решение именно для mx = 2 ед., my = 3 ед и т.д.
давно
Мастер-Эксперт
319965
1463
13.06.2011, 09:46
общий
Вы написали кучу формул, которые не нужны для решения задачи. Поэтому постановка задачи совершенно неясна.
Неизвестный
13.06.2011, 12:40
общий
Разве?
вообще изначально задание было такое: решить задачу:

Качество изготовляемой на технологической операции детали формируется тремя независимыми параметрами X, Y, Z. Известно, что система X[3] = {X,Y,Z} имеет нормальное распределение с mx = 2 ед., my = 3ед., mz = 4ед. и sigmax = sigmay = sigmaz = 1. Найдите коэффициент выхода годных изделий на операции, если техническими условиями годная деталь определяется областью D = {0,5 < X < 4; 1 < Y < 5; 2,5 < Z < 6,5 }.

и реализовать её с помощью Pascal в среде turbo.
а решение тоже на этом сайте https://rfpro.ru/question/183368
давно
Мастер-Эксперт
319965
1463
13.06.2011, 18:45
общий
13.06.2011, 18:46
изначально задание было такое: решить ........

Ну так для такой задачи никакая программа не нужна, так как все сводится к перемножению (0,477+0,433)...(...+0,341).

Давайте определимся: входные данные - это то, что вы вводите в программу с клавиатуры.
ну отсюда входные данные:
mx = 2 ед., my = 3ед., mz = 4ед. и sigmax = sigmay = sigmaz = 1.
D = {0,5 < X < 4; 1 < Y < 5; 2,5 < Z < 6,5 }

Это означает, что программа должна считать при любых mx, my, mz. и т.д., т.е. Вы вводите свои данные mx = 2, my = 3 и т.д. с клавиатуры и она после этого считает. В этом случае, программа долджна уметь вычислять функцию Лапласа для произвольного аргумента.
Далее Вы говорите:
программа должна получать решение именно для mx = 2 ед., my = 3 ед и т.д.

Это означает, что Вы в программу ничего не вводите, а после запуска она сразу выдает ответ
только для этого специального набора значений. Но тогда все сводится к простому перемножению (0,477+0,433)...(...+0,341) и никакой функции Лапласа вычислять не надо.
Неизвестный
13.06.2011, 19:06
общий
Хорошо, пусть программа содержит входные данные:
mx = 2 ед., my = 3ед., mz = 4ед. и sigmax = sigmay = sigmaz = 1.
D = {0,5 < X < 4; 1 < Y < 5; 2,5 < Z < 6,5 }
и всё решение будет сводится к простому перемножению)
Программа должна выдавать ответ, только для этого набора значений.
никакой функции Лапласа вычислять не надо.
давно
Мастер-Эксперт
319965
1463
13.06.2011, 20:15
общий
Это годится?
Код:
program show;

uses crt;

var
k:Double;

begin
Clrscr;
Writeln('mx=2, my=3, mz=4');
Writeln('sx=sy=sz=1');
Writeln('D={0,5<X<4;1<Y<5;2,5<Z<6,5}');
k:=(0.477+0.433)*(0.477+0.477)*(0.494-0.341);
Writeln('k=',k);
Readln
end.
Неизвестный
14.06.2011, 01:06
общий
ну в исходном файле же есть вычисление тройного интеграла.

сделайте пожалуйста вычисление от начала и до конца (с вычислением тройного интеграла) как в исходном текстовом файле
https://rfpro.ru/upload/5942

© Цитата:
ну отсюда входные данные:
mx = 2 ед., my = 3ед., mz = 4ед. и sigmax = sigmay = sigmaz = 1.
D = {0,5 < X < 4; 1 < Y < 5; 2,5 < Z < 6,5 }
Это означает, что программа должна считать при любых mx, my, mz. и т.д., т.е. Вы вводите свои данные mx = 2, my = 3 и т.д. с клавиатуры и она после этого считает. В этом случае, программа долджна уметь вычислять функцию Лапласа для произвольного аргумента.

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


давно
Мастер-Эксперт
319965
1463
14.06.2011, 09:52
общий
сделайте пожалуйста вычисление от начала и до конца (с вычислением тройного интеграла) как в исходном текстовом файле


Где это Вы видели в решении, что там вычисляется тройной интеграл. Он сводится к вычислению функции Лапласа. Эта процедура сведения программно не осуществима - там нет никаких вычислений и ее можно отнести только к предпрограммной подготовке. Можно лишь вычислять функцию Лапласа для произвольного аргумента, а искомый коэффициент рассчитывать как произведение значений разностей функции Лапласа. Это подходит?
давно
Профессионал
304622
583
14.06.2011, 13:33
общий
14.06.2011, 13:34
Пусть программа будет вычислять функцию Лапласа для произвольного аргумента.


В TurboPacsal вычислить функцию Лапласа можно только численными методами интегрирования (трапеций, Симпсона и т.д.). Вам это нужно? (Вы это изучали?)

Иначе всё сводится к уже приведённой программе.
давно
Мастер-Эксперт
319965
1463
14.06.2011, 14:57
общий
это ответ
Здравствуйте, Руслан Чернов!
Посмотрите такой вариант
program koef;

uses crt;

type
TFun = function(x:Double):Double;

var
mx,my,mz: Double;
sx,sy,sz: Double;
ax,ay,az: Double;
bx,by,bz: Double;
k:Double;

function PLaplas(x:Double):Double;far;
begin
PLaplas:=Exp(-x*x/2)/Sqrt(2*Pi);
end;

function ISimpson(a,b:Double;n:Integer;f:TFun):Double;
var
i:Integer;
h:Double;
y:Double;
begin
h:=(b-a)/n/2;
y:=f(a)+f(b)+f(b-h);
for i:=1 to n-1 do
begin
y:=y+4*f(a+h*(2*i-1))+2*f(a+2*i*h);
end;
y:=y*h/3;
ISimpson:=y;
end;

function FLaplas(x:Double):Double;
var
y:Double;
begin
y:=ISimpson(0,Abs(x),10000,PLaplas);
if x<0 then y:=-y;
FLaplas:=y;
end;

function P(a,b,m,s:Double):Double;
var
x1,x2:Double;
begin
x1:=(a-m)/s;
x2:=(b-m)/s;
P:=FLaplas(x2)-FLaplas(x1);
end;

begin
clrscr;
Write('mx=');Readln(mx);
Write('my=');Readln(my);
Write('mz=');Readln(mz);
Write('sx=');Readln(sx);
Write('sy=');Readln(sy);
Write('sz=');Readln(sz);
Write('ax=');Readln(ax);
Write('bx=');Readln(bx);
Write('ay=');Readln(ay);
Write('by=');Readln(by);
Write('az=');Readln(az);
Write('bz=');Readln(bz);
k:=P(ax,bx,mx,sx)*P(ay,by,my,sy)*P(az,bz,mz,sz);
Writeln('k=',k);
Readln;
end.

5
Я ещё попозже посмотрю, но вроде правильно. Спасибо большое.
Неизвестный
14.06.2011, 16:11
общий
нет но я почитаю материал в интернете)
давно
Мастер-Эксперт
319965
1463
14.06.2011, 17:01
общий
P.S. В том решении, на которое Вы ссылались, допущена ошибка. В границах интервала по переменной z (от 2,5 до 6,5) вместо 2,5 было взято значение 5.
Форма ответа