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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2009, 14:59   #1
CrankyZone
 
Регистрация: 21.05.2009
Сообщений: 3
По умолчанию

Программа должна обеспечивать рассчет индуктивности по заданным конструктивным размерам и рассчет основных конструктивных размеров по заданной индуктивности.
L-индуктивность, x-сторона квадрата тонкопленочного квадратного витка, b-ширина полоски.
L=8*x*(ln((8*x)/b)-2.583)
Для х=1 см и b=0.01 см L=30.653 нГн
Желательно методом канонического полинома

вот что есть на данный момент:
Код:
unit PressMe;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    StringGrid1: TStringGrid;
    Edit4: TEdit;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure StringGrid1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  x, F, F1, b, L: extended;
  ET, eps: real;
  k: integer;
  Mx: array[1..100] of real;
  Bx: array[1..10] of real;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  x:=strtofloat(edit1.text);
  b:=strtofloat(edit2.text);
  L:=8*x*(ln((8*x)/b)-2.583);
  edit3.text:=floattostr(L);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
b:=strtofloat(edit2.text);
L:=strtofloat(edit3.Text);
eps:=strtofloat(edit4.text);
//F:=-L+8*x*(ln(8*x/b)-2.583);
//F1:=8*ln((8*x)/b)-12.664;
x:=L/(8*(ln(800)-2.583));
k:=1;
Mx[k]:=x;
 begin
  repeat
  Mx[k+1]:=Mx[k]-(-L+8*Mx[k]*(ln((8*Mx[k])/b)-2.583)/(8*ln((8*Mx[k])/b)-12.664));
  k:=k+1;
  if k>100 then
    exit;

  until
  abs(Mx[k+1]-Mx[k])<=eps;
 end;
{ begin
  repeat
  Mx[k+1]:=Mx[k]-(L-8*Mx[k]*(ln((8*Mx[k])/Bx[k])-2.583)/-8*ln((8*Mx[k])/Bx[k])-Bx[k]+20.664);
  k:=k+1;
  until
  abs(-Mx[k]+L-8*Mx[k]*(ln((8*Mx[k])/Bx[k])-2.583))<=eps;
 end;}
edit1.Text:=floattostr(Mx[k]);
end;
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
stringgrid1.colcount:=k;
stringgrid1.rowcount:=2;
stringgrid1.cells[0,k]:=floatToStr(Mx[k]);
stringgrid1.Cells[1,k]:=floatToStr(Bx[k]);

end;

end.
Код:
Mx[k+1]:=Mx[k]-(-L+8*Mx[k]*(ln((8*Mx[k])/b)-2.583))/(8*ln((8*Mx[k])/b)-12.664));
Теперь х нормально считает, но делать еще много. Очень надо, помогите

Последний раз редактировалось MaTBeu; 24.05.2009 в 18:11.
CrankyZone вне форума Ответить с цитированием
Старый 24.05.2009, 15:47   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Если вдруг это поможет, то вот.
Вложения
Тип файла: rar equal.rar (10.0 Кб, 10 просмотров)
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 24.05.2009 в 16:07.
Goodwin98 вне форума Ответить с цитированием
Старый 24.05.2009, 17:17   #3
CrankyZone
 
Регистрация: 21.05.2009
Сообщений: 3
По умолчанию

Спасибо, но с вычислением индуктивности проблем нет. Проблемы с рассчетом остальных характеристик. Хотя бы узнать как в делфи делать системы уравнений(в программе я поставил b как задаваемый параметр, а должно вычислять оба параметра)
CrankyZone вне форума Ответить с цитированием
Старый 24.05.2009, 21:23   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Если честно я не очень понимаю вашу проблему. Формула вроде выводится. Вот набросал функцию и дополнил ею программу, теперь вычисляет и b.
Вложения
Тип файла: rar fpu.rar (11.0 Кб, 11 просмотров)
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 24.05.2009 в 21:46.
Goodwin98 вне форума Ответить с цитированием
Старый 24.05.2009, 22:25   #5
CrankyZone
 
Регистрация: 21.05.2009
Сообщений: 3
По умолчанию

Входные параметры: b,x-ширина и сторона тонкопленочного витка; LH и DL - начальное значение индуктивности L и расстояние между узлами интерполяции соответственно; NP- степень полинома; XP- значение аргумента, для которого надо определить аппроксимирующее значение по полиному; eps-заданная погрешность решения уравнения X:=L/(8*(ln((8*x)/b)-2.583)) (1); TF-массив табличной функции;
PR-признак режимаЖ PR=1 - расчет для заданной функции, PR=2 - расчет для функции заданной с помощью таблицы.
Выходными данными в задаче при PR=1 являются: TZF-массив значений функции, полученных путем решения уравнения (1); YP и YF значения рассчитанные по полиному путем решения уравнения для заданного значения XP; Z - массив значений коэффициентов полинома; таблица, содержащая столбцы: X-значения аргумента для точек с максимальной погрешностью; XFP-значения функции (х), рассчитанные по полиному; YF- значения функции полученные путем решения уравнения (1); TP-значения погрешности.
При PR=1 будем выводить: TF- массив табличной функции;Z-массив значений коэффициентов полинома; TXP-значение функции (у) для заданного значения аргумента XP, рассчитанное по полиному.
CrankyZone вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аппроксимация: выбор оптимальной степени приближения litvin22 Помощь студентам 0 12.05.2009 13:25
аппроксимация функций natasha Общие вопросы Delphi 6 26.08.2008 19:07