matlab后赋值解方程,跪求大神帮忙!!
我需要解一个方程,方程中的系数(方程y中系数a是由S替换的)是通过计算得到的,我解方程的部分是这么干的:%================================...
我需要解一个方程,方程中的系数(方程y中系数a是由S替换的)是通过计算得到的,我解方程的部分是这么干的:
%=============================================================================
%新阻抗的计算for i=1:3 S1 = daoshu(Sa);S2 = (S1).*G;%阻抗矩阵生成Sb = Sa.*G;Sz = sum(sum(S2));
S =(1/Sz^2+2953200+12974181.37)/10000; syms x y a;%定义求解变量y=-7.339e+004*x^4+1.417e+004*x^3-1107*x^2+13.3*x+23.97-a*x^2;%联立方程水泵选取KQW200/250-30/4y=subs(y,a,S);%将系数替换至方程内x1=real(double(solve(y,'x'))) ; %求解根并去掉虚数根x0=x1(x1>0);%保留正数根,即工作点流量Q
%=============================================================================
这样的确完成了循环解方程赋系数值,但是solve解的速度有点慢(外部还嵌套了1000次parfor循环),而且貌似是解析解再赋值得到数值解。我想采用fsolve解方程,但是fsolve命令怎么能让待解函数系数后进行赋值呢?X=fsolve('fun(x,a)',[]),这样使用时赋的系数a也不会识别,貌似整体都被单引号变成字符了。
小弟没系统学过Matlab,跪求怎么能用fsolve解后赋系数函数来提高计算速度!!!!!! 展开
%=============================================================================
%新阻抗的计算for i=1:3 S1 = daoshu(Sa);S2 = (S1).*G;%阻抗矩阵生成Sb = Sa.*G;Sz = sum(sum(S2));
S =(1/Sz^2+2953200+12974181.37)/10000; syms x y a;%定义求解变量y=-7.339e+004*x^4+1.417e+004*x^3-1107*x^2+13.3*x+23.97-a*x^2;%联立方程水泵选取KQW200/250-30/4y=subs(y,a,S);%将系数替换至方程内x1=real(double(solve(y,'x'))) ; %求解根并去掉虚数根x0=x1(x1>0);%保留正数根,即工作点流量Q
%=============================================================================
这样的确完成了循环解方程赋系数值,但是solve解的速度有点慢(外部还嵌套了1000次parfor循环),而且貌似是解析解再赋值得到数值解。我想采用fsolve解方程,但是fsolve命令怎么能让待解函数系数后进行赋值呢?X=fsolve('fun(x,a)',[]),这样使用时赋的系数a也不会识别,貌似整体都被单引号变成字符了。
小弟没系统学过Matlab,跪求怎么能用fsolve解后赋系数函数来提高计算速度!!!!!! 展开
2个回答
展开全部
@echo off
echo.
echo.
set/p var1=请输入起始IP:
echo.
set/p var2=请输入终止IP:
echo.
for /f "tokens=1,2,3,4 delims=." %%a in ("%var1%") do (
set var4=%%a.%%b.%%c
set var5=%%d)
for /f "tokens=1,2,3,4 delims=." %%a in ("%var2%") do (
set var6=%%a.%%b.%%c
set var7=%%d)
if not %var4%==%var6% echo ErrorMessage:错误,不在同一网段! & pause>nul & exit
for /L %%i in (%var5%,1,%var7%) do (
ping -n 1 %var4%.%%i)
望采纳!
echo.
echo.
set/p var1=请输入起始IP:
echo.
set/p var2=请输入终止IP:
echo.
for /f "tokens=1,2,3,4 delims=." %%a in ("%var1%") do (
set var4=%%a.%%b.%%c
set var5=%%d)
for /f "tokens=1,2,3,4 delims=." %%a in ("%var2%") do (
set var6=%%a.%%b.%%c
set var7=%%d)
if not %var4%==%var6% echo ErrorMessage:错误,不在同一网段! & pause>nul & exit
for /L %%i in (%var5%,1,%var7%) do (
ping -n 1 %var4%.%%i)
望采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的代码很乱,看不清楚本质。我只看见了一点:
X=fsolve('fun(x,a)',[])
你是想在解的时候就给a赋上具体的值,而不是保留a进行符号计算,对么?
X=fsolve('fun(x,a)',[])
你是想在解的时候就给a赋上具体的值,而不是保留a进行符号计算,对么?
更多追问追答
追问
恩,是的,就是想求数值解,不用符号计算,fsovle解之前对fun里边的方程系数赋值
追答
建议你用匿名函数的方法,不要用符号那一套。简单介绍如下
设已经定义了一个n元函数y = fun(x1, x2, x3);
固定x2=2, x3=1,只变化x1,如此定义:
x2 = 2; x3 = 1;
fun2 = @(x)fun(x, x2, x3);
这样就得到了一个一元函数fun2。当然变量x2和x3的名字可以随便换。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询