我在MATLAB代码与6个方程和6个变量的系统。我要解决使用命令vpasolve的公式。 6个变量是T11,T12,T13,T21,T22,T23。寻找解决方案为多个变量
有没有一种方法可以为6个变量中的每一个定义解决方案的范围?
例如,我想定义下列范围内:
T11应为10 50
之间
T12应为20 40之间
T13应介于10〜50t21应该在-30到-10之间
t22应该在-10到5之间0
T23应该是-20 0之间
(调整范围之外的任何东西,我不希望得到尽可能即使它解决了方程的解决方案)。
这里是我要解决的方程的MATLAB代码:
clear;
close all;
clc;
syms t11 t12 t13
syms t21 t22 t23
eq1 = ((8922777075240195*t11)/9007199254740992 - 30)^2 + (96876011531181065287337706581037*t11^2)/5192296858534827628530496329220096 == (244*t21^2)/15869 + ((125*15869^(1/2)*t21)/15869 - 30)^2;
eq2 = (12284794394556242997808640319605*t12^2)/1298074214633706907132624082305024 + ((4482238245702333*t12)/4503599627370496 - 30)^2 == (244*t22^2)/15869 + ((125*15869^(1/2)*t22)/15869 - 30)^2;
eq3 = (45861658983305836864232546144709*t13^2)/2596148429267413814265248164610048 + ((1115910933745515*t13)/1125899906842624 - 30)^2 == (244*t23^2)/13469 + ((115*13469^(1/2)*t23)/13469 - 30)^2;
eq4 = ((8922777075240195*t11)/9007199254740992 - 30)*((4482238245702333*t12)/4503599627370496 - 30) - (33484849241113011368045542420311*t11*t12)/2596148429267413814265248164610048 == ((125*15869^(1/2)*t21)/15869 - 30)*((125*15869^(1/2)*t22)/15869 - 30) - (244*t21*t22)/15869;
eq5 = (282621115563350270054313878343*t12*t13)/2596148429267413814265248164610048 + ((1115910933745515*t13)/1125899906842624 - 30)*((4482238245702333*t12)/4503599627370496 - 30) == ((115*13469^(1/2)*t23)/13469 - 30)*((125*15869^(1/2)*t22)/15869 - 30) + (44*13469^(1/2)*15869^(1/2)*t22*t23)/213739561;
eq6 = ((8922777075240195*t11)/9007199254740992 - 30)*((1115910933745515*t13)/1125899906842624 - 30) - (23445242923211415885353539155021*t11*t13)/5192296858534827628530496329220096 == ((115*13469^(1/2)*t23)/13469 - 30)*((125*15869^(1/2)*t21)/15869 - 30) - (44*13469^(1/2)*15869^(1/2)*t21*t23)/213739561;
eqs = [eq1; eq2; eq3; eq4; eq5; eq6];
fprintf('Trying to solve the equations\n');
[t11_sol,t12_sol,t13_sol,t21_sol,t22_sol,t23_sol] = vpasolve(eqs,
[t11,t12,t13,t21,t22,t23])
fprintf('Finished solving the equations\n');
这些都是当前的解决方案:
t11_sol =
0
24.829703667085709792452797768139
-1714.7919752112047717253468263447
28.624266796914077249128523842231
15.001105796927906039239701205905
29.182011950632532749236452699932
30.474785714576283734530215094123
28.923418651100014933562154455752
29.862424638395540307680704064753
t12_sol =
0
32.391753131232910196633469521587
354.90128086865450529250280412221
32.669637807428363812347415161745
42.313425265860487109475748241225
35.77251360055612460919268449666
24.416997056184413504762966564475
32.200102042415756894425066902384
32.737813080348733797113244812407
t13_sol =
0
35.119449427391259768874643471793
-552.15221602531564524976910795555
32.333805237521337277174927681791
30.505819079433077866776605761009
-15.526604986133423038105829796394
30.503860894429235257295153122852
31.531326069780238017082050501478
30.689747387623702773113477696365
t21_sol =
0
34.950843287328625731811203211087
1774.2801076016584748700502034002
27.7309163513567839404453632282
44.586181192433735979455732171841
31.568950443178384558598040442723
31.645983484625245618431014726401
31.66220406339283719149782231373
31.4930547899057272421770424957
t22_sol =
0
28.719384780320222581709652667396
-295.26692316474930126337699876656
31.376616953264529835893660973616
17.528200591527370984833306720326
24.321988649431180122662011217513
34.695990177726174534054308234555
30.175898983099840329616659669692
31.493054789906158785302579540812
t23_sol =
0
24.379180250934429179070181825563
611.61273095943007252746244555442
32.247827126007408413822564919395
30.163585843012112112236997181374
74.982989890274977913497773016932
29.293932179042561861772077117988
28.046073521931256411622489184559
29.014005238849959150140190833736
我MATLAB文档中看到,你可以添加一个范围,但我看到的是一个变量的方程。我没有看到任何地方有多个变量范围方程。我还没有看到任何地方,如果有可能或没有。
任何人都可以告诉我如何为每个变量添加范围(如果可能的话)?
此外,给定的代码为每个变量返回9个解。是否有每个变量的默认范围?我怎么知道它可能会错过哪些变量?以及真正存在多少种解决方案?有什么方法可以知道吗?
谢谢!
感谢。但它似乎没有帮助。因为它仍然错过了范围内的解决方案。有没有办法确保程序能够找到范围内的所有解决方案(即使这意味着计算时间会更长)? – David