С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/32: Рейтинг темы: голосов - 32, средняя оценка - 4.94
2 / 2 / 1
Регистрация: 28.11.2010
Сообщений: 102
1

Как решить нелинейную систему уравнений

16.01.2011, 10:00. Показов 5973. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,
есть система уравнений, x вектор

f1(x)=0
...
fn(x)=0

Якобиан можно посчитать.
Как записать это в матлабе, чтоб можно было создать еще dll и использовать полученную функцию в visual studio c++?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2011, 10:00
Ответы с готовыми решениями:

Как решить систему линейных уравнений с трехдиагональной матрицей методом прогонки?
Дана матрица: x0+2x1 =2 3x0+5x1+3x2 =4 2x1+3x2+3x3 =3 ...

Решить систему уравнений
Помогите решить систему уравнений

Решить систему уравнений
G1*C1*T1_0-G1*C1*T1+F*q G2*C2*T2_0-G2*C2*T2+F*(-q) q=K*(T2-T1) С этой системы нелинейных...

Решить систему нелинейных уравнений
Помогите, пожалуйста, найти ошибку Вот сама система: cosy+x=1,5a 2y-sin(x-0,5)=b a=1, b=1 ...

7
2834 / 2131 / 86
Регистрация: 02.05.2010
Сообщений: 3,195
16.01.2011, 10:43 2
Посмотрите здесь

http://matlab.exponenta.ru/opt... 0/1_11.php
http://matlab.exponenta.ru/opt... 10/2_2.php
http://matlab.exponenta.ru/opt... 10/2_1.php
0
2 / 2 / 1
Регистрация: 28.11.2010
Сообщений: 102
16.01.2011, 13:09  [ТС] 3
Взял пример с книги
Matlab M
1
2
3
function у = funsc(х)
y=[x(l)+x(2)-sin(pi*x(l)); х(1)(2)-cos(pi*x(2))];
[х,f] = fsolve(@funsc,[0.2;l],optimset('Display','off))
Пишет

??? Error: File: Untitled2.m Line: 1 Column: 10
The input character is not valid in MATLAB statements or
expressions.

Добавлено через 17 минут
Заменил буквы на латинские,
Matlab M
1
2
3
function y = funsc(x)
y=[x(1)+x(2)-sin(pi*x(1)); x(1)-x(2)-cos(pi*x(2))];
[x,f] = fsolve(@funsc,[0.2;l],optimset('Display','off'))
Теперь пишет
??? Input argument "x" is undefined.

Error in ==> Untitled2 at 2
y=[x(1)+x(2)-sin(pi*x(1)); x(1)-x(2)-cos(pi*x(2))];
0
128 / 127 / 10
Регистрация: 09.11.2010
Сообщений: 200
16.01.2011, 15:15 4
Сохраните первые 2 строки как отдельный файл. Третью строку запишите в новом чистом файле.
Вы записали в первых строках ФАЙЛ-функцию. В последней строке ссылаетесь на ФАЙЛ.
Оба файла должны лежать в одной папке.
1
2834 / 2131 / 86
Регистрация: 02.05.2010
Сообщений: 3,195
16.01.2011, 15:21 5
Matlab M
1
2
3
% ПП-функция. Отдельный m-файл
function y = funsc(x)
y=[x(1)+x(2)-sin(pi*x(1)); x(1)-x(2)-cos(pi*x(2))];
Основная(вызывающая) программа
Matlab M
1
2
3
4
5
clc
 clear
x0 = [-5; -4];
options=optimset('Display','iter');
[x,fval] = fsolve(@funsc,x0,options)
Оба m-файла сохранить в одной папке.
1
2 / 2 / 1
Регистрация: 28.11.2010
Сообщений: 102
21.01.2011, 20:00  [ТС] 6
А как можно создать dll из полученной программы? Так что можно было использовать полученную функцию. Т.е. задаю параметры функции например a,b f(x)=a*x+ln(x)+b. А функция дает решение, вызывается из программы на c++.
0
2834 / 2131 / 86
Регистрация: 02.05.2010
Сообщений: 3,195
21.01.2011, 20:07 7
Посмотрите здесь
http://matlab.exponenta.ru/for... 382&nt=All
1
2 / 2 / 1
Регистрация: 28.11.2010
Сообщений: 102
22.01.2011, 08:34  [ТС] 8
Я все правильно сделал?
f(x)=ln((V-Vn1)/(V*m+Jtc/(ron*exp(-wtc*(pn-p0)))))/wtc-ln(Vn1/(V-V*m))/wn
функция должна находить нули f(x) вблизи точки Vn0.


Matlab M
1
2
3
4
5
function [ Vn1_out ] = fun2( wtc,V,m,Jtc,ron,pn,p0,wn,Vn0 )
Vn1=Vn0;
Vn1=fsolve(ln((V-Vn1)/(V*m+Jtc/(ron*exp(-wtc*(pn-p0)))))/wtc-ln(Vn1/(V-V*m))/wn);
Vn1_out=Vn1;
end

Добавлено через 10 часов 36 минут
Пытаюсь сделать одну функцию которая решает нелинейное уравнение, чтобы сделать одну функцию dll.

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clc
 clear
x0 = 10;
%options=optimset('Display','iter','PlotFcns',@optimplotstepsize);
%[x,fval] = fsolve(@fun,x0,options)
wtc=1e-9;
V=2e4;
m=0.5;
ron=1e3;
pn=1e6;
p0=1e6;
wn=0.5e-9;
Vn0=m*V;
Jtc=1000;
Vn1=fun2(wtc,V,m,Jtc,ron,pn,p0,wn,Vn0)

Matlab M
1
2
3
function [ Vn1_out ] = fun2( wtc,V,m,Jtc,ron,pn,p0,wn,Vn0 )
Vn1_out=fsolve(log((V-Vn1)/(V*m+Jtc/(ron*exp(-wtc*(pn-p0)))))/wtc-log(Vn1/(V-V*m))/wn,Vn0);
end

Пишет
Код
??? Undefined function or variable 'Vn1'.

Error in ==> fun2 at 2
Vn1_out=fsolve(log((V-Vn1)/(V*m+Jtc/(ron*exp(-wtc*(pn-p0)))))/wtc-log(Vn1/(V-V*m))/wn,Vn0);

Error in ==> main at 15
Vn1=fun2(wtc,V,m,Jtc,ron,pn,p0,wn,Vn0)
0
22.01.2011, 08:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2011, 08:34
Помогаю со студенческими работами здесь

Решить систему дифференциальных уравнений
http://s61.***********/i174/1412/25/09176deec44c.jpg Добавлено через 10 минут...

Помогите решить систему уравнений.
Всем привет. Впервые работаю в Matlab`е. Вообще впервые работаю в подобной штуке. Нужно решить...

Решить систему из четырех уравнений
Здравствуйте, помогите пожалуйста решит система уравнения на MatLab. ...

Решить с помощью fzero систему двух уравнений
У меня в задании пишет: найти координаты вершин треугольника, стороны которого описаны уравнением:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru