24小时热门版块排行榜    

查看: 1429  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

litiantao

新虫 (小有名气)

[求助] 求各位帅哥美女大神指点指点,matlab如何解方程 已有2人参与

解方程:1-2*x/3-(1-x)^(2/3)=0.004846*t,t是一列数,如t=1,2,3,4,5..........,199,200.
我用x=solve(‘1-2*x/3-(1-x)^(2/3)=0.004846*t’,‘x’)解出来
x =

1.5 - 1.5*root(z^3 - (9*z^2)/4 - z*((21807*t)/1000000 - 3/2) + (7269*t)/1000000 - (52838361*t^2)/1000000000000 - 1/4, z, 1) - 0.007269*t
1.5 - 1.5*root(z^3 - (9*z^2)/4 - z*((21807*t)/1000000 - 3/2) + (7269*t)/1000000 - (52838361*t^2)/1000000000000 - 1/4, z, 2) - 0.007269*t
1.5 - 1.5*root(z^3 - (9*z^2)/4 - z*((21807*t)/1000000 - 3/2) + (7269*t)/1000000 - (52838361*t^2)/1000000000000 - 1/4, z, 3) - 0.007269*t

如果把t换成1倒是能得出结果
x =

-0.21847788792997061292054124636069
  0.19908864670058590163107860405944
   1.1225822412293847112894626423012
我要的是中间这个结果,在0-1之间,怎样才能将一列t一次全部解出来,而且结果要中间这个0-1之间的,求大神指点,感激不尽@laosam280
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Klaixiya

新虫 (小有名气)

引用回帖:
5楼: Originally posted by litiantao at 2017-03-01 16:49:45
谢谢,请问你是怎么算出来的呢,可以把matlab程序贴一下么?感激不尽
另外t如果是一列从EXCEL导入的无序的数,要怎样去批量计算呢?...

我是用Mathematica 计算的,只要调用几个内置函数就能得到结果了。
9楼2017-03-12 19:56:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

wurongjun

专家顾问 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
litiantao: 金币+40, ★★★很有帮助 2017-03-02 11:28:58
这是一个例子,可以看一下!
function fidt
i=1
for t=1:40
    s=sprintf('1-2*x/3-(1-x)^(2/3)-0.004846*%f',t);
y=solve(s,'x');
y=double(y);
x(i)=y(0<y&y<1);i=i+1;
end
x
运行结果:
x =

  Columns 1 through 7

    0.1991    0.2758    0.3323    0.3784    0.4178    0.4525    0.4835

  Columns 8 through 14

    0.5117    0.5375    0.5614    0.5836    0.6043    0.6238    0.6421

  Columns 15 through 21

    0.6594    0.6758    0.6913    0.7061    0.7202    0.7336    0.7464

  Columns 22 through 28

    0.7587    0.7704    0.7817    0.7924    0.8028    0.8127    0.8222

  Columns 29 through 35

    0.8314    0.8402    0.8486    0.8568    0.8646    0.8721    0.8794

  Columns 36 through 40

    0.8863    0.8930    0.8995    0.9057    0.9116
但是有一个问题:如果有两个数在0,1之间选哪个,你在修改吧!

» 本帖已获得的红花(最新10朵)

善恶到头终有报,人间正道是沧桑.
2楼2017-03-01 13:14:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Klaixiya

新虫 (小有名气)

{{1, 0.199089}, {2, 0.275789}, {3, 0.332326}, {4, 0.378414}, {5,
  0.417815}, {6, 0.452461}, {7, 0.483499}, {8, 0.511676}, {9,
  0.537512}, {10, 0.561385}, {11, 0.58358}, {12, 0.604319}, {13,
  0.623778}, {14, 0.642101}, {15, 0.659406}, {16, 0.67579}, {17,
  0.691337}, {18, 0.706119}, {19, 0.720196}, {20, 0.733622}, {21,
  0.746444}, {22, 0.758703}, {23, 0.770435}, {24, 0.781674}, {25,
  0.792447}, {26, 0.802783}, {27, 0.812703}, {28, 0.822231}, {29,
  0.831385}, {30, 0.840183}, {31, 0.848641}, {32, 0.856775}, {33,
  0.864599}, {34, 0.872124}, {35, 0.879363}, {36, 0.886327}, {37,
  0.893026}, {38, 0.899468}, {39, 0.905663}, {40, 0.911619}, {41,
  0.917343}, {42, 0.922842}, {43, 0.928122}, {44, 0.93319}, {45,
  0.938051}, {46, 0.942711}, {47, 0.947173}, {48, 0.951443}, {49,
  0.955525}, {50, 0.959422}, {51, 0.963137}, {52, 0.966674}, {53,
  0.970036}, {54, 0.973225}, {55, 0.976243}, {56, 0.979091}, {57,
  0.981771}, {58, 0.984284}, {59, 0.98663}, {60, 0.988808}, {61,
  0.990818}, {62, 0.992658}, {63, 0.994324}, {64, 0.995812}, {65,
  0.997115}, {66, 0.998221}, {67, 0.999111}, {68, 0.99975}, {69,
  0.999999}}

» 本帖已获得的红花(最新10朵)

3楼2017-03-01 13:25:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

litiantao

新虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by wurongjun at 2017-03-01 13:14:14
这是一个例子,可以看一下!
function fidt
i=1
for t=1:40
    s=sprintf('1-2*x/3-(1-x)^(2/3)-0.004846*%f',t);
y=solve(s,'x');
y=double(y);
x(i)=y(0<y&y<1);i=i+1;
end
x
运行结果:
x ...

谢谢,如果t是一串无序的数字呢,实际上我要处理的t=0,0.891,1.801,2.701,3.616······是excel表格里的一列数,导入matlab后要怎样批量处理呢,另外

>> function fidt
i=1
for t=1:40
    s=sprintf('1-2*x/3-(1-x)^(2/3)-0.004846*%f',t);
y=solve(s,'x');
y=double(y);
x(i)=y(0<y&y<1);i=i+1;
end
x
function fidt

错误: 此上下文中不允许函数定义。

这是为什么?(小白用户一脸懵圈)
4楼2017-03-01 16:46:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见