数学建模社区-数学中国

标题: matlab求解 [打印本页]

作者: tongweijuan    时间: 2015-10-1 11:41
标题: matlab求解
m=[0.5 0 0 0.5 0 0 0.33;
    0.5 0 0 0.5 0.5 0 0.33;
    0.5 0 0 0.5 0.25 0.5 0.33;
    zeros(4,7);];
k=100;
x=0;
y=0;
for n=1:k
    r=rand();
    if r<=m(1,7)
          a=m(1,1);
            b=m(1,2);
            c=m(1,3);
            d=m(1,4);
            e=m(1,5);
            f=m(1,6);
            g=m(1,7);

    elseif r<=m(1,7)+m(2,7)
            a=m(2,1);
                b=m(2,2);
                c=m(2,3);
                d=m(2,4);
                e=m(2,5);
                f=m(2,6);
                g=m(2,7);
        elseif r<=m(1,7)+m(2,7)+m(3,7)
                 a=m(3,1);
                    b=m(3,2);
                    c=m(3,3);
                    d=m(3,4);
                    e=m(3,5);
                    f=m(3,6);
                    g=m(3,7);
    else
                    a=m(4,1);
                    b=m(4,2);
                    c=m(4,3);
                    d=m(4,4);
                    e=m(4,5);
                    f=m(4,6);
                    g=m(4,7);
     end               
                newx=(a*x)+(b*y)+e;
                newy=(c*x)+(d*y)+f;
                x=newx;
                y=newy;

end
            plot(x,y,'b','LineWidth',2)
想把每次产生的数都保留在一个绘图窗口里,怎么弄?请大神指教


作者: GO雨林木风    时间: 2015-10-1 18:50
楼主的意思是生成一个表格形式的?matlab可以讲矩阵转化为excel,利用函数xlsread。或者你看matlab主窗口旁边有一个当前目录窗口,,双击你想知道的变量。就能出来一个表格。
如果找不到,就加一个0矩阵,每次运行的结果,赋值到这个矩阵对应位置的元素。

作者: 建模人生    时间: 2015-10-1 18:56
在开始建立0矩阵,把每次循环得到的值赋予零矩阵

作者: 士心之约    时间: 2015-10-1 19:01
  1. m=[0.5 0 0 0.5 0 0 0.33;
  2.     0.5 0 0 0.5 0.5 0 0.33;
  3.     0.5 0 0 0.5 0.25 0.5 0.33;
  4.     zeros(4,7);];
  5. k=100;
  6. x=0;
  7. y=0;
  8. for n=1:k
  9.     r=rand();
  10.     if r<=m(1,7)
  11.           a=m(1,1);
  12.             b=m(1,2);
  13.             c=m(1,3);
  14.             d=m(1,4);
  15.             e=m(1,5);
  16.             f=m(1,6);
  17.             g=m(1,7);

  18.     elseif r<=m(1,7)+m(2,7)
  19.             a=m(2,1);
  20.                 b=m(2,2);
  21.                 c=m(2,3);
  22.                 d=m(2,4);
  23.                 e=m(2,5);
  24.                 f=m(2,6);
  25.                 g=m(2,7);
  26.         elseif r<=m(1,7)+m(2,7)+m(3,7)
  27.                  a=m(3,1);
  28.                     b=m(3,2);
  29.                     c=m(3,3);
  30.                     d=m(3,4);
  31.                     e=m(3,5);
  32.                     f=m(3,6);
  33.                     g=m(3,7);
  34.     else
  35.                     a=m(4,1);
  36.                     b=m(4,2);
  37.                     c=m(4,3);
  38.                     d=m(4,4);
  39.                     e=m(4,5);
  40.                     f=m(4,6);
  41.                     g=m(4,7);
  42.      end               
  43.                 newx=(a*x)+(b*y)+e;
  44.                 newy=(c*x)+(d*y)+f;
  45.                 x=newx;
  46.                 y=newy;
  47.                 plot(x,y,'ob','LineWidth',2)
  48.                 hold on
  49. end
复制代码
应该可以实现你的意思,你试试。

作者: 森之张卫东    时间: 2015-10-1 19:07
  1. %想把每次产生的数都保留在一个绘图窗口里,怎么弄?请大神指教
  2. %时间:2015-10-1-国庆节
  3. m=[0.5 0 0 0.5   0      0     0.33;
  4.     0.5  0 0 0.5  0.5    0     0.33;
  5.     0.5  0 0 0.5  0.25  0.5   0.33;
  6.     zeros(4,7);];
  7. k=100;
  8. x=0;
  9. y=0;
  10. for n=1:k
  11.     r=rand;
  12.     if r<=m(1,7)
  13.         a=m(1,1); b=m(1,2); c=m(1,3);
  14.         d=m(1,4); e=m(1,5);f=m(1,6);
  15.         g=m(1,7);
  16.         
  17.     elseif r<=m(1,7)+m(2,7)
  18.         a=m(2,1);  b=m(2,2);   c=m(2,3);
  19.         d=m(2,4);   e=m(2,5); f=m(2,6);
  20.         g=m(2,7);
  21.         
  22.     elseif r<=m(1,7)+m(2,7)+m(3,7)
  23.         a=m(3,1); b=m(3,2);c=m(3,3);
  24.         d=m(3,4); e=m(3,5); f=m(3,6);
  25.         g=m(3,7);
  26.     else
  27.         a=m(4,1); b=m(4,2); c=m(4,3);
  28.         d=m(4,4);e=m(4,5); f=m(4,6);
  29.         g=m(4,7);
  30.     end
  31.     newx=(a*x_me(1,k))+(b*y_me(1,k))+e;
  32.     newy=(c*x_me(1,k))+(d*y_me(1,k))+f;
  33.     x_me(1,k+1)=newx;
  34.     y_me(1,k+1)=newy;
  35.    
  36. end
  37. plot(x,y,'b','LineWidth',2)
复制代码


作者: tongweijuan    时间: 2015-10-22 20:11
士心之约 发表于 2015-10-1 19:01
应该可以实现你的意思,你试试。

谢谢了,就是这样的





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5